❶ 用单片机汇编语言制作广告灯。利用取表的方法。
ORG0000H
MOVDPTR,#TAB
LP1:
MOVR2,#4
LP:MOVA,R2
MOVCA,@A+DPTR
MOVP0,A
DJNZR7,$
DJNZR6,$-2
DJNZR2,LP
SJMPLP1
TAB:
DB0,18H,24H,42H,81H
END
❷ 单片机广告灯程序(89C51)
接电路注意,二极管正极接电源VCC,是低电平驱动
ORG 00H
SJMP STAR
STAR: ORG 30H
LOOP: MOV P1,#00H
LCALL DELAY
MOV P1,#AAH
LCALL DELAY
MOV P1,#55H
LCALL DELAY
MOV P1,#0F0H
LCALL DELAY
MOV P1,#0FH
LCALL DELAY
LJMP LOOP
DELAY:MOV R7,#250 ;延时0.5秒需要更长的话多加几个LCALL DELAY
D1: MOV R6,#250
D2:NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
RET
END
❸ 单片机广告灯的设计C语言程序<分数不多 但求大神告知 好人一生平安>
#include<reg51.h>
#define uchar unsigned char
uchar ledt[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar ledi[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7e);
uchar nt=0,ni=0;
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
switch(nt)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
P1=ledt[nt];break;
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
p1=ledt[14-nt];break;
case 15:
P1=0x00;break;
case 16:
P1=0xff;break;
default:
nt=0;break;
}
nt++;
}
void ext0() interrupt 0
{
switch(ni)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
P1=ledt[ni];break;
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
P1=ledt[14-ni];break;
case 15:
P1=0xff;break;
case 16:
P1=0x00;break;
default:
ni=0;break;
}
}
void delay(uchar a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EX0=1;
IT0=0;
EA=1;
TR0=1;
while(1)
{
while(P3_2)
{
TR0=0;
delay(50);
ni++;
}
TR0=1;
}
❹ 请大虾帮我分析单片机的程序(花样广告灯)!最后那一段DB的程序是什么意思呢那些16进制的数据有什么用
DB是汇编里的伪指令之一,后面跟的是单字节的数据。
DB后面放的就是流水灯的数据,控制灯亮灭的。程序从第一个数取起,取出后送P1口,延时,再取下一个。比如取到第3 个,0AAH就是1010 1010 ,这个数送到P1口,那么灯就是亮一个灭一个间隔的。再取第4 个,55H就是0101 0101 ,那原来亮的就灭了,灭的亮了。。。。
❺ MCS-51系列单片机制作广告灯程序和电路设计
明白你的需求我来完成你的任务
你把重点内容告诉我
我到时候怎样发给你
的
❻ 单片机广告灯设计,所使用的应用软件叫什么除了51的编译软件Keil C!
伟副跟KEIL一样,不过没有keil强大,你说的那个应该是PROTEUS.专门的单片机仿真,应该来讲没有软件可以跟它抗衡
❼ 在单片机的开发板上,制作一个广告灯,要求低四位led灯从低到高(从右
这对咱们信息这个广告一定要注意,LED灯的功率19 85
❽ 51单片机实现广告灯控制系统
:广告灯控制系统
❾ 单片机控制广告灯课题设计程序
#include<reg51.h>
unsigned char time=0;
void delay(unsigned long w)
{
while(w--);
}
void zuoxunhuan()
{
unsigned char C;
for(C=0x80;C!=0;C>>=1) //左移
{
P1=C;
delay(30000);
}
}
void youxunhuan()
{
unsigned char C;
for(C=0x01;C!=0;C<<=1) //右移
{
P1=C;
delay(30000);
}
}
void zengti() //递增
{
unsigned int C;
for(C=0xFE;C!=0;C<<=1)
{
P1=~C;
delay(30000);
}
}
void jiaoti() //交替
{
P1=0x55;
delay(30000);
P1=0xaa;
delay(30000);
}
void init_init()
{
EX0=1;
EA=1;
}
void into_into() interrupt 0 //P3.2外接一个按键底电瓶有效切换程序
{
if((time+=1)==5) time=0;
delay(400000);
}
void main()
{
init_init();
while(1)
{
if(time==1) zuoxunhuan();
if(time==2) youxunhuan();
if(time==3) zengti();
if(time==4) jiaoti();
if(time==0)
{
zuoxunhuan();
youxunhuan();
zengti();
jiaoti();
}
}
}
❿ 广告灯左移右移的单片机程序
八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环,晶振12M:
这是汇编:
ORG
0
START:
MOV
R2,#8
MOV
A,#0FEH
SETB
C
LOOP:
MOV
P1,A
LCALL
DELAY
RLC
A
DJNZ
R2,LOOP
MOV
R2,#8
LOOP1:
MOV
P1,A
LCALL
DELAY
RRC
A
DJNZ
R2,LOOP1
LJMP
START
DELAY:
MOV
R5,#20
;
D1:
MOV
R6,#20
D2:
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
END
当然,还可以用C语言来编写:
#include
<reg52.h>
#include
<intrins.h>//包含位移函数
#define
uint
unsigned
int
#define
uchar
unsigned
char
uchar
temp,i;
//数据类型unsigned
char为8位
void
delay(uint);
void
main()
{
temp=0xfe;
P1=temp;
while(1)
{
for(i=0;i<8;i++)
{
temp=_cror_(temp,1);
//右移一位
delay(800);
//设置延时的时间
P1=temp;
}
for(i=0;i<8;i++)
{
temp=_crol_(temp,1);
//左移一位
delay(800);
//设置延时的时间
P1=temp;
}
}
}
void
delay(uint
z)
//延时程序
{
uint
y;
for(;z>0;z--)
for(y=248;y>0;y--)
;
}