Proteus仿真单片机实验 联系客服

发布时间 : 星期五 文章Proteus仿真单片机实验更新完毕开始阅读33d88333743231126edb6f1aff00bed5b9f37300

LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表2

“0” “1” “2” “3” “4” “5” “6” “7” 3FH 06H 5BH 4FH 66H 6DH 7DH 07H “8” “9” “A” “b” “C” “d” “E” “F” 7FH 6FH 77H 7CH 39H 5EH 79H 71H (2) 由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。

4.程序框图

图2

5. 汇编源程序

ORG 0

START: MOV R1,#00H NEXT: MOV A,R1

MOV DPTR,#TABLE MOVC A,@A+DPTR

精选

MOV P0,A

LCALL DELAY INC R1

CJNE R1,#10,NEXT LJMP START

DELAY: MOV R5,#20 D2: MOV R6,#20 D1: MOV R7,#248

DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

精选

实验5 按键识别方法之一

1. 实验任务

每按下一次开关SP1,计数值加1,通过AT89S51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。

2. 电路原理图

3程序设计方法

(1)其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的 过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,

精选

图2

要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰

信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图所示:

从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。

由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。

(1)对于按键识别的指令,我们依然选择如下指令JB BIT,REL指令是用来检测BIT是否为高电平,若BIT=1,则程序转向REL处执行程序,否则就继续向下执行程序。或者是 JNB BIT,REL指令是用来检测BIT是否为低电平,若BIT=0,则程序转向REL处执行程序,否则就继续向下执行程序。

(2)但对程序设计过程中按键识别过程的框图如右图所示:

图3

精选