51单片机实验之LED显示

单片机结构原理图

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结构原理图来自 普某 的单片机结构原理图

发布了20 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jianming21/article/details/92157066