㈠ 用单片机控制LED灯要怎样编写
举一个简单例子:
#include<reg51.h>
#include<intrins.h>
sbitkey=P1^0;
unsignedcharled=0xfe;
voiddelay(inta)
{
while(a--);
}
main()
{
while(1)
if(key)
{
P0=led;
led=_crol_(led,1)
delay(30000);
}
else
{
P0=led;
led=_cror_(led,1)
delay(30000);
}
}
㈡ 如何用单片机点亮LED灯
接好单片机的硬件电路,然后编写程序,再然后烧写程序,然后就可以程序了,没问题的话就可以按你的要求点亮了
㈢ 在单片机应用系统中。LED数码管显示电路通常有什么显示方式
动态扫描。
LED灯是继电器工作状态指示灯,点亮代表继电器启动中,熄灭代表继电器关闭,LED1是伴同蜂鸣器报警的指示灯,只要数码管不处于设置时间状态,都能够用E归零键进行清零操作,数码管就会显示00:00 (此时不是对主芯片进行复位,只是对状态进行清零) 。
(3)单片机led扫描灯扩展阅读:
注意事项:
检查时若发光暗淡,说明器件已老化,发光效率太低。如果显示的笔段残缺不全,说明数码管已局部损坏。
对于型号不明、又无管脚排列图的LED数码管,用数字万用表的h距挡可完成下述测试工作:判定数码管的结构形式(共阴或共阳),识别管脚,检查全亮笔段。预先可假定某个电极为公共极,然后根据笔段发光或不发光加以验证。
㈣ 单片机控制的LED动态扫描显示原理
现已DS8为个位来讨论,十、百、千为分别为DS7、DS6、DS5。 1、首先要了解的是此数码管为共阴极数码管,即三极管Q16、Q15、Q14、Q13导通时数码管才能点亮,亦即相应的单片机P23、P22、P21、P20为低电平。 2、动态扫描显示原理如下: (1)P23、P22、P21、P20输出高电平,关闭所有数码管; (2)显示个位——把要显示的数据送到P10~P17,P23送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P23送高电平; (3)显示十位——把要显示的数据送到P10~P17,P22送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P22送高电平; (4)显示百位——把要显示的数据送到P10~P17,P21送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P21送高电平; (5)显示千位——把要显示的数据送到P10~P17,P20送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P20送高电平。 (6)以此顺序循环,把它做成子程序,在主循环中调用。
㈤ 51单片机 LED点阵实现文字呼吸灯 应该怎么做
点阵的话,我想应该可以通过修改扫描的延时来实现呼吸效果。
例如:行扫描,行切换之间的延时修改,亮度会不一样。
其实扫描对于每个led来说,也是占空比的方波。
㈥ 如何用51单片机控制多个led灯
51单片机可以一次对一个端口的8个引脚赋值 对于这种LED矩形阵列 你只能用扫描的方法做 不可能一次就显示出想要的图形
㈦ 用汇编语言编写 80c51单片机 用定时中断延时方式键盘扫描并led灯显示
KEYVAL EQU30H
KEYTM EQU31H
KEYSCAN EQU32H
DAT EQU33H
DCNT EQU37H
T0L EQU38H
T0H EQU39H
SPEED EQU3AH
SCANLED EQU3BH
CHKCNT EQU3CH
DLYCNT EQU3DH
KEYCNT EQU3EH
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0ISR
ORG0030H
MAIN:
MOVSP,#5FH
MOVTMOD,#01H
MOVT0L,#0F0H
MOVT0H,#0D8H
MOVTH0,#0D8H
MOVTL0,#0F0H
MOVKEYVAL,#0
MOVP2,#00H
MOVDCNT,#0
MOVSCANLED,#0
MOV33H,#10H
MOV34H,#10H
MOV35H,#10H
MOV36H,#10H
MOVCHKCNT,#11H
MOVSPEED,#100
MOVDLYCNT,#0
MOVKEYCNT,#3
SETBEA
SETBET0
SETBTR0
LOOP:
; LCALLKEYSEL
MOVA,KEYVAL
CJNEA,#0FFH,LOOP1
SJMPLOOP
LOOP1:
CJNEA,#10,LOOP2 ;“ON”启动LED测试
MOVDCNT,#0FFH
SJMPLOOP
LOOP2:
CJNEA,#11,LOOP3 ;“=”停止测试,接受数字键
MOV33H,#10H
MOV34H,#10H
MOV35H,#10H
MOV36H,#10H
MOVDCNT,#0
SJMPLOOP
LOOP3:
CJNEA,#10,LOOP4 ;数字键
LOOP4:
JCLOOP5
LJMPLOOP
LOOP5:
MOV33H,34H
MOV34H,35H
MOV35H,36H
MOV36H,KEYVAL
LJMPLOOP
;------------------
KEYSEL:
MOV KEYVAL,#0
MOV KEYSCAN,#0EFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS1
MOV KEYVAL,A
SJMP KEYRTN
KEYS1:
MOV KEYSCAN,#0DFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS2
CLR C
ADD A,#4
MOV KEYVAL,A
SJMP KEYRTN
KEYS2:
MOV KEYSCAN,#0BFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS3
CLR C
ADD A,#8
MOV KEYVAL,A
SJMP KEYRTN
KEYS3:
MOV KEYSCAN,#7FH
LCALL GETKEY
MOV A,KEYTM
JZ KEYRTN
CLR C
ADD A,#12
MOV KEYVAL,A
KEYRTN:
LCALLCHGKEY
RET
;--------------------
GETKEY:
MOVKEYTM,#0
MOV A,KEYSCAN
MOV P3,A
NOP
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
DJNZKEYCNT,NOKEY
MOVKEYCNT,#3
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK1
MOV KEYTM,#1
SJMP NOKEY
NK1:
CJNE A,#0DH,NK2
MOV KEYTM,#2
SJMP NOKEY
NK2:
CJNE A,#0BH,NK3
MOV KEYTM,#3
SJMP NOKEY
NK3:
CJNE A,#07H,NOKEY
MOV KEYTM,#4
NOKEY: RET
;--------------------
T0ISR:
PUSHACC
CLRTR0
MOVTH0,T0H
MOVTL0,T0L
SETBTR0
LCALLKEYSEL ;扫描键盘
MOVDPTR,#LEDTAB
MOVA,DCNT ;段显示
JZT000
MOVA,CHKCNT
MOVCA,@A+DPTR
MOVP2,#0FH
CPLA
MOVP0,A
INCDLYCNT
MOVA,DLYCNT
CJNEA,SPEED,T021
MOVDLYCNT,#0
INCCHKCNT
MOVA,CHKCNT
CJNEA,#1AH,T020
T020:
JCT021
MOVCHKCNT,#11H
T021:
POPACC
RETI
T000: ;数字显示
MOVR0,#DAT
MOVA,SCANLED
ADDA,R0
MOVR0,A
MOVA,SCANLED
JNZT001
MOVP2,#01H
SJMPT0DIS
T001:
DECA
JNZT002
MOVP2,#02H
SJMPT0DIS
T002:
DECA
JNZT003
MOVP2,#04H
SJMPT0DIS
T003:
MOVP2,#08H
T0DIS:
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP0,A
INCSCANLED
MOVA,SCANLED
ANLA,#03H
MOVSCANLED,A
POPACC
RETI
;--------------------
CHGKEY:
MOVA,KEYVAL
JZKV16
DECA
JNZKV01
MOVKEYVAL,#7
RET
KV01:
DECA
JNZKV02
MOVKEYVAL,#4
RET
KV02:
DECA
JNZKV03
MOVKEYVAL,#1
RET
KV03:
DECA
JNZKV04
MOVKEYVAL,#10
RET
KV04:
DECA
JNZKV05
MOVKEYVAL,#8
RET
KV05:
DECA
JNZKV06
MOVKEYVAL,#5
RET
KV06:
DECA
JNZKV07
MOVKEYVAL,#2
RET
KV07:
DECA
JNZKV08
MOVKEYVAL,#0
RET
KV08:
DECA
JNZKV09
MOVKEYVAL,#9
RET
KV09:
DECA
JNZKV10
MOVKEYVAL,#6
RET
KV10:
DECA
JNZKV11
MOVKEYVAL,#3
RET
KV11:
DECA
JNZKV12
MOVKEYVAL,#11
RET
KV12:
DECA
JNZKV13
MOVKEYVAL,#12
RET
KV13:
DECA
JNZKV14
MOVKEYVAL,#13
RET
KV14:
DECA
JNZKV15
MOVKEYVAL,#14
RET
KV15:
DECA
JNZKV16
MOVKEYVAL,#15
RET
KV16:
MOVKEYVAL,#0FFH
RET
;--------------------
LEDTAB: DB0FCH ;"0" 00H
DB60H ;"1" 01H
DB0DAH ;"2" 02H
DB0F2H ;"3" 03H
DB66H ;"4" 04H
DB0B6H ;"5" 05H
DB0BEH ;"6" 06H
DB0E0H ;"7" 07H
DB0FEH ;"8" 08H
DB0F6H ;"9" 09H
DB0EEH ;"A" 0AH
DB3EH ;"B" 0BH
DB9CH ;"C" 0CH
DB7AH ;"D" 0DH
DB9EH ;"E" 0EH
DB8EH ;"F" 0FH
DB00H ;"" 10H
DB80H
DB40H
DB20H
DB10H
DB08H
DB04H
DB02H
DB01H
DB0FFH
;--------------------
㈧ 单片机控制LED灯。
嘿嘿
这两种方法
都是可以的
都可以驱动LED指示灯。
1
关于你的LED怎么都不亮:
原因可能是连接的方法不太对,你可以参考下述连接方式,检查一下你的电路。
方法1:
用8050的三极管做开关电路,三极管的基极接P2.0,然后用集电极通过LED接5v电源,发射极通过220欧姆电阻接地。执行SETB
P2.0
指令可以点亮led。
方法2:
是用P1.0直接驱动led,应该让led另一端通过220欧姆电阻接5v电源,执行CLR
P1.0
指令
会点亮led。
呵呵
赶快再试试吧
满意后要选满意回答啊
㈨ 单片机控制LED小灯
从你的图看:
1。单片机输出低电平时灯亮。灯暗只能说那些限流电阻过大,470Ω-2K之间选择
2.你的按键按下后单片机扫描到高电平,如果你程序里没有对其判断然后让连接灯的几个管脚输出高电平的话,是没有办法灭的。