您的位置:首页 > 其它

51单片机实验之LED显示

2019-06-15 19:17 204 查看

单片机结构原理图

LED模块结构图

  • LED共阳极,阴极输入低电平能使LED发光。单片机P2端口输入对应的低电平,使对应的LED发光。

LED流水显示代码

;利用定时器定时一秒,产生中断来时LED流水显示
;定时一秒,时钟频率为11.0592,每0.01s产生一次溢出中断
;利用r2来对定时器0中断计数,r2为100时,就定时1s了
COUNT equ 9217 ;11.0592*1*10000/12
org 0000h
ljmp main
org 000bh
ajmp TIM0	;定时器0中断入口
org 0030h
main:
mov r2, #0
mov TMOD, #01h	;选择定时方式,设置模式1,16位
mov TH0, #HIGH(65536 - COUNT)	;定时器0初始化
mov TL0, #LOW(65536 - COUNT)
setb TR0	;开启定时器0
setb ET0	;开启定时器中断
setb EA	    ;开启总中断
clr TF0	;清除TO溢出标志位
mov p2, #0ffh
mov a, #0feh
sjmp $	;等待中断
org 000bh	;定时器0中断入口地址
TIM0:
clr TF0	;清除TO溢出标志位
inc r2
mov TH0, #HIGH(65536 - COUNT)
mov TL0, #LOW(65536 - COUNT)
cjne r2, #100, return ;不相等跳转到return,相等继续执行
mov p2, a	;控制LED灯显示
jnb acc.7, clear	;LED流水显示,当(A) = 0111 1111时,跳转到clear中
RL a	;循环左移一位
mov r2, #0
return:
reti	;返回中断
clear:
mov a, #0feh
reti
end

LED闪烁显示代码

;中断计数100次为一秒
org 0000h
ljmp main
org 000bh	;定时器中断0入口地址
ajmp TIM0
org 0030h
main:
mov r2, #0
mov TMOD, #01h	;选择定时功能,模式1
mov TH0, #HIGH(65536 - 9217)	;初始化定时器
mov TL0, #LOW(65536 - 9217)
setb TR0	;开启定时器0
setb ET0	;开启定时器0中断
setb EA	    ;开启总中断
clr TF0		;清中断标志
mov p1, #0ffh
sjmp $	;等待中断
org 000bh
TIM0:
clr TF0	;清中断标志,一定要有
inc r2
mov TH0, #HIGH(65536 - 9217)
mov TL0, #LOW(65536 - 9217)
cjne r2, #100, return	;判断中断计数是否100次,100次就对LED进行取反,没有,则中断返回,从定时器0中断入口地址进入
cpl p2.5
mov r2, #0
return:
reti
end

声明:LED结构原理图来自 普某 的单片机结构原理图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: