导航:首页 > 操作系统 > 单片机跑马灯控制实验报告

单片机跑马灯控制实验报告

发布时间:2022-10-06 07:33:14

① 关于51单片机的跑马灯控制

#include <reg52.h>
////////////////////////////////////////////////////////
void delay(unsigned int cnt) //简单的延时
{
while(--cnt);
}
///////////////////////////////////////////////////////
main()
{
P1=0xfe;//给初始化值
while(1)
{
delay(20);//delay at crystal frequency in 12MHz
P1<<=1;//左移一位
P1|=0x01;//最后一位补1
if(P1==0x7f)//检测是否移到最左端?
{
delay(20);//delay
P1=0xfe;
}
}
}

② 如何用51系列单片机做控制LED跑马灯实验

/*单片机,用定时中断实现每隔0.2秒让接在p1口的8个小灯从左往右循环点亮。*/
#include

#include

#define
uchar
unsigned
char
uchar
a,b;
uchar
b=1;
uchar
a=0xfe;
void
main()
{
ea=1;it1=1;et0=1;
th0=-5000/256;
tl0=-5000%256;
tmod=0x01;
tr0=1;
while(1)
{;}
}
void
timer0(void)
interrupt
1
using
1
{
th0=-5000/256;
tl0=-5000%256;
b=b+1;
if(b==40)
{
b=0;
p1=a;
a=_crol_(a,1);
p1=a;
}
}

③ 51单片机设计跑马灯的程序用(c语言)编写

|P1口接8个发光二极管共阳

#include <AT89X51.H>

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<<i;

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

(3)单片机跑马灯控制实验报告扩展阅读:

Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。

④ 怎么用单片机按键控制循环跑马灯

我刚好写过一个这样的程序,参考一下吧,希望对你有帮助
/*硬件电路连接:流水灯接在P0口, 阳极接高电平,
阴极接P0口,4个按键分别接P3.4,P3.5, P3.6,P3.7 ,按下时是低电平 */
#include <regx51.h>
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
int a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//左流水灯数组
int b[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//右流水灯数组
int c[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; //逐盏点亮,逐盏灭掉数组
//************************************************************************************************************
void delay() //延时子程序
{int i;
for(i=0;i<30000;i++);
}

//**********************************************************************************************************
void aa() //实现要求(1)的子程序(key1按下时流水灯,弹开时全灭)
{ int i=0;
while(!key1) //判断是否有键按下
{P0=a[i];delay();i++;if(i==8)i=0;}//流水灯

}

//*************************************************************************************************************
void bb() // 实现要求(2)的子程序(key2按下时实现计数功能,弹开时停止计数;)
{
while(!key2){P0--;delay();if(P0==0)P0=0xff;} //判断是否有键按下,按下则计数器加1

}

//*************************************************************************************************************
void cc() // 实现要求(3)的子程序(key3按下时实现逐盏点亮,逐盏灭掉)
{ int i=0;

P0=0xff ;// 发光二极管全灭
while(!key3) //判断是否有键按下
{P0=c[i];delay();i++;if(i==16)i=0;}//逐盏点亮,逐盏灭掉
}

//*************************************************************************************************************
void dd() // 实现要求(4)的子程序(key4按第一次按下,左流水,第二次按下,右流水,第三次按下,熄灭)
{ int i=0,j=0,k=0,h=0;
loop:P0=0xff;
if(key4==0) //第一次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
while(1){P0=a[j];delay();j++;if(j==8)j=0; //左流水灯
if(key4==0) //第二次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
while(1){P0=b[k];delay();k++;if(k==8)k=0; //右流水灯
if(key4==0) //第三次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
goto loop; //跳转到LOOP处,即P3=0xff,此时灯全灭
}}}}}}

//****************************************************************************************************************
main()
{while(1){P0=0xff;
while(!key1)aa();

while(!key2)bb();
while(!key3)cc();

while(!key4)dd();

}}

⑤ 单片机跑马灯程序!!!急急急!!!! 要求:P3控制跑马灯(小灯)方向,P0口输出使跑马灯运行

#include <REG51.H>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char cnt = 0; // 中断计数
bit next = 0;
bit dri = 0;
sbit SW = P3^0;
void main(void)
{ EA = 1;
TMOD = 0x01;
ET0 = 1;
TH0 = 0xee;// 晶振11.0592MHz,中断周期5mS
TL0 = 0;
TR0 = 1;
P0 = 0xff;
while(1)
{ if(SW==0)
{ dri = !dri;
while(SW==0);
}
}
}
void timeint(void) interrupt 1
{ static char i;
TH0 = 0xee;
TL0 = 0;
P0 = tab[i];
cnt++;
if(cnt==100)
{ cnt=0;
if(dri==0) i++;
else i--;
if(i<0) i = 7;
else if(i>7) i = 0;
}
}

⑥ 单片机89C51用汇编制作跑马灯P1控制8个LED(D1~D8)灯实现流水灯的效果,高手速度来

很酷的流水灯
#include <reg51.h>
typedef unsigned char uchar;
#define Ton 40
#define LED P0
sbit leds=P1^4;
sbit LED0 = P0^0;
sbit LED1 = P0^1;
sbit LED2 = P0^2;
sbit LED3 = P0^3;
sbit LED4 = P0^4;
sbit LED5 = P0^5;
sbit LED6 = P0^6;
sbit LED7 = P0^7;

unsigned char Maikuan=0;
static unsigned char ledon[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar Occupy_led; //占空比越大,灯越亮
bit light;
uchar m;

void Inittime()
{
TMOD = 0x02; //定时器0,工作方式2,自动重装
TH0 = 256-Ton;
TL0 = 256-Ton;
ET0 = 1;
EA = 1;
TR0 = 1;
}
//定时器0中断
void time0() interrupt 1 using 0
{
Maikuan++;
}

void main()
{
unsigned char i = 0,j = 0; //初始化i,j
leds=0;
Inittime();
while (1)
{
//第1,3,5,7个灯半亮,其余的全亮。
for(i=254; i>0; i--)
{
while ( Maikuan!=20)
{
LED = 0x00;
}

while ( Maikuan!=200)
{
LED = 0x55;
}

Maikuan = 0;
}

//最难的:8个灯从第一个开始依次渐亮,直到最后一个。再从最后一个起渐暗,直到第一个。如此循环往复。

for(j = 0;j<=7;j++)
{
i = 0;
while(i!=255) // 由暗变亮
{
if( Maikuan == 0) // 点亮
{
LED = ledon[j];
}
if(Maikuan == i) // 熄灭
{
LED = 0xff;
}
if( Maikuan== 255)
{
i++;
}
}
}

for(j=7;j>=0;j--)
{
i = 0;
while(i!=255) // 由亮变暗
{
if(Maikuan == 0) // 熄灭
{
LED = 0xff;
}
if( Maikuan == i) // 点亮
{
LED = ledon[j];
}
if( Maikuan == 255)
{
i++;
}
}
}

//所有的灯逐渐从暗到全亮,再由全亮到暗。

for (m=254; m>0; m--)
{
while (Maikuan!=Occupy_led)
{
LED = 0x00;
}

while (Maikuan!=127)
{
LED = 0xff;
}

Maikuan = 0;

if (light)
{
Occupy_led++;
}
else
{
Occupy_led--;
}

if (Occupy_led==128)
{
Occupy_led = 127;
light = !light;
}
if (Occupy_led>128)
{
Occupy_led = 0;
light = !light;
}
}
}
}

⑦ 如何用51系列单片机做控制LED跑马灯实验

这是单片机的一个入门级的实验,你可以到我的博客上去找,那里有一个比较好的参考程序.

⑧ 51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下,好了可以加分

程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END

⑨ 单片机跑马灯

汗-----那么简单的问题也拿出来问!
不知道对你有什么用?
若想学,建议继续去看点基础吧!
#include "reg51.h"
#include"intrins.h"

#define uint unsigned int

void DelayMs(uint t)
{
uint i;

while(t--)
{
for(i=0;i<124;i++)
{;}
}

}

void main()
{
uint ax,bx;
while(1)
{
bx=0x01;

for(ax=0;ax<8;ax++)
{
P1=bx<<ax;
Delay(10000);

}

}

}
临时给你写了一个,还没有备注和调试哦;
8个灯一头接P1口的8个脚,另一头接地;

希望对你有用!

⑩ 单片机实现跑马灯

硬件做好了吗

我做单片机设计的

阅读全文

与单片机跑马灯控制实验报告相关的资料

热点内容
程序员和数字有关系吗 浏览:98
美团收款机出现命令模式 浏览:500
《惊变》高清完整版 浏览:514
java减月份 浏览:63
实变函数与泛函分析基础pdf 浏览:978
在知网下载pdf格式 浏览:392
男的送快递的电影叫什么名字 浏览:647
苹果电脑信任app在哪里设置 浏览:894
当设计师撞程序员 浏览:549
1080p蓝光超清画质影视 浏览:15
ftp是属于什么服务器 浏览:500
素食主义者磁力 浏览:962
免费vip会员电视剧的网址 浏览:718
程序员懂修电脑吗 浏览:309
韩国电影与丈夫 浏览:375
安卓手机怎么打开短信字那么大 浏览:31
服务器如何实现多桌面镜像 浏览:789
上了大嫂韩国电影 浏览:950
java监控命令 浏览:70
极品都市后宫 浏览:386