① 单片机 发光二极管循环点亮的程序
程序:
ORG
0000H
LJMP
MAIN
ORG
4000H
MAIN:MOV
R5,#04H
LOOP:MOV
R1,#00H
MOV
A,#0FEH
L1:MOV
P1,A
LCALL
DELAY
RL
A
INC
R1
CJNE
R1,07H,L1
MOV
R2,#00H
MOV
A,#01H
L2:MOV
P1,A
LCALL
DELAY
RR
A
INC
R2
CJNE
R2,07H,L2
DJNE
R5,LOOP
DELAY:MOV
R6,#02H
D1:MOV
R7,#0FFH
D2:DJNZ
R7,D2
DJNE
R6,D1
RET
END
电路:
连接灯的阴极至P1口上即可,复位和震荡电路不需要我说了吧
说明一下,延时时间不准确,不过基本接近1ms的
t=(256*2+1)*2+1+2=1028
如果想做到精确延时的话建议在DELAY中使用NOP指令调理,自己试一下吧
最好是用Keil仿真一下确定延时时间。
很久没有汇编了,仔细检查一下,估计有Bug也不一定。
② 单片机上怎么接发光二极管
这主要看你是想要高电平时亮还是低电平时亮,如果是端口高电平时亮时,可以通过一个1K的电阻将发光管接到GND就可以了。如果是输出低电平时亮的话,就需要接在电源和端口之间。
可以直接焊接,可能要注意一下静电防护!
请参考!
③ 单片机上怎么接发光二极管
用导线,一端接5V电源,接一个1K电阻,再接到到LED的正极,LED的负极接到单片机的管脚。
这样就可以通过程序控制LED
的亮与不亮了。
中间需要用烙铁焊接,用锡丝,松香。
④ 各位单片机达人帮个忙 用汇编语言做一个 发光二极管循环点亮的程序 要求 使八只发光二极管做循环点亮一次
发光二极管循环点亮
八只发光二极管左循环点亮一次、然后右循环点亮一次。
循环。
仿真试验成功。
⑤ 用51单片机控制八个发光二极管
// 51单片机控制八个发光二极管 左右循环。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; // 改变这里 LED 各种花样
uchar t,i;
void main()
{
TMOD=0x10;
TH1=(65535-50000)/256; // 50ms一次
TL1=(65535-50000)%256;
EA=1;
ET1=1;//开定时器1中断
TR1=1;//启动定时器1
t=0;
i=0;
while(1)
{
}
}
void timer1() interrupt 3
{
TH1=(65535-50000)/256; // 50ms一次
TL1=(65535-50000)%256;
t++;
if(t==20)
{
t=0;
P2=TAB[i];
i++;
if(i==18) { i=0;}
}
}
⑥ 用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)
#include<reg51.h>
voiddelay(void)
{
unsignedinti,j;
for(i=0;i<200;i++)
for(j=0;j<1000;j++)
;
}
voidmain(void)
{
while(1)
{
P3=0xfe;//第一个灯亮
delay();//延时
P3=0xfd;//第二个灯亮
delay();
P3=0xfb;//第三个灯亮
delay();
P3=0xf7;//第四个灯亮
delay();
P3=0xef;//第五个灯亮
delay();
P3=0xdf;//第六个灯亮
delay();
P3=0xbf;//第七个灯亮
delay();
P3=0x7f;//第八个灯亮
delay();
}
}
(6)单片机发光管视频教程扩展阅读
单片机C语言16种方式流水灯
voidmain()
{
while(1)
{
P1=0xfe;//点亮第一个发光管
Delay(5000);
P1=0xfd;//点亮第二个发光管
Delay(5000);
P1=0xfb;
Delay(5000);
P1=0xf7;
Delay(5000);
P1=0xef;
Delay(5000);
P1=0xdf;
Delay(5000);
P1=0xbf;
Delay(5000);
P1=0x7f;//点亮第八个发光管
}
}