定时器实现时钟送数码管显示+独立键盘设置时间.docx
《定时器实现时钟送数码管显示+独立键盘设置时间.docx》由会员分享,可在线阅读,更多相关《定时器实现时钟送数码管显示+独立键盘设置时间.docx(15页珍藏版)》请在冰豆网上搜索。
定时器实现时钟送数码管显示+独立键盘设置时间
电子时钟主要由显示模块、校时模块和时钟运算模块三大部分组成。
其中校时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。
这样,才能循环记时。
设计要求:
1)设计一款电子时钟,用共阴极七段数码管显示时间;
2)6个数码管分别显示时、分、秒;可以利用四个键盘调整时间,小时键每次调整一小时,分钟用两个键调整十位和各位,秒钟键调整秒显示的十位;
3)硬件电路的调试;
4)写出详细的课设报告。
1方案的选择
1.1键盘的设计
考虑到时间误差的存在以及调整时间的方便性,采用独立式键盘。
提高CPU的工作效率,采用中断工作方式
四个键盘接于P1口,用74ls21与门接于外部中断0,实现了调整时间的快速性,当四个键盘有中断发生,首先判断四个键哪个按下,向CPU发一个中断请求信号,然后调用相应的中断程序。
参考电路如下:
键盘的工作过程可分为两步:
第一步是CPU首先检测键盘上是否有按键被按下,第二步是识别哪一个减按下。
检查键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。
查询工作方式(例如用8155扩展I/O组成的行列式键盘):
键盘上有无键按下是有列线送出全扫描字,然后读入行线状态来识别的。
其方法是PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中,如果有键按下,总会有一根行线拉置低电平,从而使行输入状态不全为“1”。
键盘中哪一个键按下是有列线逐列置低电平后,检查行输入状态,称为逐列扫描。
方法是:
从PC口读入行线状态,如果全为“1”,则所按下之键不在此列,如果不全为“1”,则在此列,并且是与“0”电平行线相交的交点上的那个键。
1.2门电路的设计
为了达到调整时间的快速性与准确性,采用中断方式,四个键盘采用与门芯片74LS21。
当四个键盘有一个按下后就会向CPU申请中断。
1.3显示电路
显示采用led动态显示方式,共阴极端由P2口线控制,分为段选线和位选线,利用人的视觉停留达到显示的效果,段选线控制字符选择,位选线控制显示位的亮或暗。
从段选线I/O口上按位次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),选通位就显示相应字符,并保持几毫秒的延时,为选通不显示字符(保持熄灭)。
这样,对各位显示就是一个循环过程。
从计算机工作来看,在一个瞬间只有一位显示字符,而其他位都是熄灭的。
但由于人的视觉停留,这种动态变化是察觉不到的。
从效果上看,各位显示器能连续而稳定地显示不同的字符。
Y
Y
N
键盘扫描子程序流图
2硬件电路和参考程序
2.1基于proteus仿真的硬件电路
截屏视图如下
:
2.2参考程序:
ORG0000H
AJMPSTART
ORG0003H
LJMPST1
ORG000BH
AJMPTT0
ORG0030H
START:
MOV30H,#00H;秒个位内存单元
MOV31H,#00H;秒十位内存单元
MOV32H,#00H;分个位内存单元
MOV33H,#00H;分十位内存单元
MOV34H,#00H;时个位内存单元
MOV35H,#00H;时十位内存单元
MOVTMOD,#01H;定时器T0,工作方式1,
MOVTH0,#3CH;定时50MS
MOVTL0,#0B0H;
MOVR0,#30H;指针指向显示单元
MOVR5,#0FEH;选中秒个位
MOVR1,#20;
MOV36H,#00H;时位键盘判断时用
MOVR3,#6;秒十位判断时用
MOVR2,#6;分十位判断时用
MOVR4,#10;
MOV40H,#10
MOVIE,#81H;
SETBEA;开中断
SETBET0;开T0中断
SETBTR0;记时开始
MAIN:
LCALLDIS
LJMPMAIN
;#################显示子程序###################
DIS:
MOVA,R5;先位码
MOVDPTR,#7FFFH;位码选择p2.7
MOVX@DPTR,A
MOVA,@R0;再段码
MOVDPTR,#TAB;表地址
MOVCA,@A+DPTR;查表
MOVDPTR,#0BFFFH;段码选择p2.6
;###############显示小数点###################
CJNER0,#32H,GO111;小数点选择(R0)=/=32H转移
ORLA,#80H
GO111:
CJNER0,#34H,MIN
ORLA,#80H
MIN:
MOVX@DPTR,A;送出去显示
LCALLDELAY;1MS延时
LCALLDELAY
LCALLDELAY
INCR0;修改指针指向下一显示单元
MOVA,R5;也可写为XCHA,R5
JNBACC.5,LH;判断显示完否?
?
RLA;也可写为XCHR5,A
MOVR5,A
AJMPENR;返回循环显示
LH:
MOVR0,#30H;重心定义显示指针
MOVR5,#0FEH;重设位码,形成循环ACC.0-ACC.3
ENR:
RET
;###############定时中断###########################
TT0:
MOVTH0,#3CH;
MOVTL0,#0B0H;
DJNZR1,FANHUI;判断1秒到否?
未到跳转
MOVR1,#20;
INC30H;秒个位加一
DJNZR4,FANHUI;判断10秒到否?
未到跳转
MOVR4,#10;
MOV30H,#00H;
INC31H;
DJNZR3,FANHUI;
MOVR3,#6;
MOV31H,#00H;
INC32H
DJNZ40H,FANHUI;
MOV40H,#10
MOV32H,#00H
INC33H
DJNZR2,FANHUI
MOVR2,#6
MOV33H,#00H
INC36H;时位判断时用
MOVA,36H
CJNEA,#24,JUMP
MOV36H,#00H
JUMP:
MOVA,36H
MOVB,#10
DIVAB
MOV34H,B
MOV35H,A
FANHUI:
RETI
;*********键盘处理程序***********
ST1:
CLREX0;键盘1判断时用
PUSHB
PUSHACC
JBP1.0,ST2
LCALLDELAY111
JNBP1.0,$
LCALLDELAY111
DJNZR3,GO
MOVR3,#6
GO:
INC31H
MOVA,31H
CJNEA,#6,$+3
JNBP1.0,$
JCST2
MOV31H,#00H
MOVA,31H
ST2:
JBP1.1,ST3;键盘2判断时用
LCALLDELAY111
JNBP1.1,$
LCALLDELAY111
DJNZ40H,GO1
MOV40H,#10
GO1:
INC32H
MOVA,32H
CJNEA,#10,$+3
JNBP1.1,$
JCST3
MOV32H,#00H
MOVA,32H
ST3:
JBP1.2,ST4;键盘3判断时用
LCALLDELAY111
JNBP1.2,$
LCALLDELAY111
DJNZR2,GO2
MOVR2,#6
GO2:
INC33H
MOVA,33H
CJNEA,#6,$+3
JNBP1.2,$
JCST4
MOV33H,#00H
MOVA,33H
ST4:
JBP1.3,ST6;键盘4判断时用
LCALLDELAY111
JNBP1.3,$
LCALLDELAY111
INC36H
MOVA,36H
CJNEA,#24,JUMP1
MOV36H,#00H
JUMP1:
MOVA,36H
MOVB,#10
DIVAB
MOV34H,B
MOV35H,A
ST6:
POPACC;键盘中断返回
POPB
SETBEX0
RETI
;##########延时1MS子程序###########
DELAY:
MOVR7,#02H
DE1:
MOVR6,#0FEH
DE2:
DJNZR6,DE2
DJNZR7,DE1
RET
;########键盘延时消抖程序#########
DELAY111:
MOV50H,#2;键盘消抖程序
DE1111:
MOV51H,#255
DJNZ51H,$
DJNZ50H,DE1111
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
END
5心得体会
随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。
智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。
而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。
传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的基础上设计而成的。
因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。
这次单片机课程设计我们历时数个星期,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!
在三个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多!
作为一名电子系专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业基础课理论知识运用到实践中去呢?
我想做类似的课程设计就为我们提供了良好的实践平台。
在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。
最后,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。
单片机课程设计虽然结束了,但通过设计所学到的东西将长久存在。
相信这次设计带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。
通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。