可预置数的倒计时钟.docx
- 文档编号:10509583
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:23
- 大小:598.17KB
可预置数的倒计时钟.docx
《可预置数的倒计时钟.docx》由会员分享,可在线阅读,更多相关《可预置数的倒计时钟.docx(23页珍藏版)》请在冰豆网上搜索。
可预置数的倒计时钟
江西机电职业技术学院
单片机课程设计报告
课题:
可预置数的倒计时钟
班级:
10机电(4)班
姓名:
学号:
指导老师:
实训时间:
2012.5.21~2012.5.25
项目成员情况
组数:
第一组
组长:
成员:
分工情况:
硬件设计:
软件设计:
调试:
电子稿:
目录
第一章:
51单片机的熟悉···············3
第二章:
汇编程序的应用···············4
第三章:
主控模块·····················5
第四章:
动态扫描·····················5
第五章:
键值处理·····················6
第六章:
硬件设计·····················7
第七章:
软件设计·····················12
第八章:
调试运行·····················17
第九章:
运行结果·····················17
第十章:
设计体会·····················18
第十一章:
参考文献···················19
项目说明
一、设计说明
1、51单片机的熟悉
51单片机是对目前所有兼容Intel8031指令系统的单片机的统称。
该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。
51单片机是基础入门的一个单片机,还是应用最广泛的一种。
需要注意的是52系列的单片机一般不具备自编程能力。
当前常用的51系列单片机主要产品有:
*Intel的:
80C31、80C51、87C51,80C32、80C52、87C52等;
*ATMEL的:
89C51、89C52、89C2051等;
*Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品
目前,国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。
2、汇编程序的应用
1.寄存器寻址方式
寄存器寻址方式的寻址范围包括:
①寄存器寻址的主要对象是通用寄存器,共有四组共32个通用寄存器,但寄存器寻址只能使用当前寄存器组,因此指令中的寄存器名称只能是R0~R7。
在使用本指令前,有时需通过对PSW中RS1、RS0位的状态设置,来进行当前寄存器组的选择。
②部分专用寄存器。
例如累加器A、B寄存器对以及数据指针DPTR等。
2.直接寻址方式
指令中操作数直接以单元地址的形式给出,就称之为直接寻址。
例如指令:
MOVA,3AH
3.寄存器间接寻址方式
寄存器寻址方式,寄存器中存放的是操作数,而寄存器间接寻址方式,寄存器中存放的则是操作数的地址,即操作数是通过寄存器间接得到的,因此称之为寄存器间接寻址。
4.立即寻址方式
所谓立即寻址就是操作数在指令中直接给出。
为了与直接寻址指令中的直接地址相区别,在立即数前面加“#”标志。
5.变址寻址方式
变址寻址是为了访问程序存储器中的数据表格。
MCS-51的变址寻址是以DPTR或PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成的16位地址作为操作数地址,以达到访问数据表格的目的。
注意A中的数为无符号数。
6.位寻址方式
MCS-51有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。
位寻址指令中可以直接使用位地址。
7.相对寻址方式
相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。
在相对寻址的转移指令中,给出了地址偏移量(在MCS-51指令系统中以“rel”表示),把PC的当前值加上偏移量就构成了程序转移的目的地址。
但这里的PC当前值是指执行完该转移指令后的PC值,即转移指令的PC值加上它的字节数。
因此转移的目的地址可用如下公式表示:
目的地址=转移指令地址+转移指令字节数+rel
二、任务要求
1、主控模块
主程序首先调用键盘扫描程序,判断是否有键按下。
否则从新进行判断,是则可以进行秒、分、时的调整。
调整完后,按调整后的进行倒计时。
当秒为0时,分减一,秒为59。
当分为0时,时减一,分为59。
当时为0时,在判断分、秒是否为0,当全为0时,程序循环,然后调用显示程序。
主程序流图如下图所示。
主控流程图
2、动态扫描
INT_N2:
ORLP2,#11111100B
MOVA,Counter
MOVDPTR,#BitTab
MOVCA,@A+DPTR
ANLP2,A
MOVA,#DISPBUF
ADDA,Counter
MOVR0,A
MOVA,@R0
MOVDPTR,#DISPTAB
MOVCA,@A+DPTR
MOVP0,A
INCCounter
MOVA,Counter
CJNEA,#6,DISPEXIT
MOVCounter,#0
DISPEXIT:
POPPSW
POPACC
RETI
3、键值处理
KEYPROC:
MOVA,KEYVAL
JZKEYRUN
DECA
JZKEYSTOP
DECA
JZKEYLEFT
JMPKEYRIGHT
KEYRUN:
SETBSTARTRUN
JMPLOOP
KEYSTOP:
CLRSTARTRUN
JMPLOOP
KEYLEFT:
CLRSTARTRUN
INCMETVAL
MOVA,METVAL
CJNEA,#60,LEFT0
MOVMETVAL,#00
LEFT0:
MOVB,#10
DIVAB
MOVA,DISPBUF
MOVB,DISPBUF+1
MOVMINUTE,METVAL
JMPLOOP
KEYRIGHT:
CLRSTARTRUN
INCSETVAL
MOVA,SETVAL
CJNEA,#60,REFT0
MOVSETVAL,#00
REFT0:
MOVB,#10
DIVAB
MOVA,DISPBUF+2
MOVB,DISPBUF+3
MOVSCOUNT,SETVAL
JMPLOOP
课题的设计与调试
一、硬件设计
1、AT89S51芯片
AT89S51芯片共有40个引脚,其中31、40引脚为电源引脚,20引脚为接地引脚,9引脚为复位引脚,XTAL1、XTAL2为时钟引脚,P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口除了作为普通I/O口,还有第二功能P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(T0定时器的外部计数输入)
P3.5T1(T1定时器的外部计数输入)
P3.6/WR(外部数据存储器的写选通)
P3.7/RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
89C51的P0、P1、P2、P3口作为输入时都是准双向口。
除了P1口外P0、P2、P3口都还有其他的功能。
RST:
复位输入端,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
2、可预置数的倒计时钟原理图
图中共分为电源电路,复位电路,时钟电路,按键电路,显示电路。
3、显示电路原理图
如果要点亮第1位数码管,P2.7必须输出0,这样,PNP型三极管导通,通过第1位数码管的COM端向第1位数码管供电;如果要点亮第2位数码管,P2.6必须输出0,这样,PNP型三极管导通,通过第2位数码管的COM端向第2位数码管供电;以此类推,可以分时点亮这六个LED数码管。
在编程时要注意,不能让P2.2~P2.7引脚中的两个或两个以上同时为0,否则会造成混乱
4、复位电路
工作原理:
通电时,电容C1两端相当于短路,RST引脚上为高电平,然后电源通过电阻R9对电容C1充电,RST端电压慢慢下降,降到一定电压值以下,即为低电平,单片机开始工作。
5、按键电路
实现一个用键盘设置的倒计时钟。
其功能是:
从一个设置值开始倒计时到0。
然后回到这个设置,再次开始倒计时,如此不断循环,该设置可以用键盘来设定,共有4个按键S1、S2、S3和S4,其功能分别是:
S1:
开始运行;
S2:
停止运行;
S3:
高位加1,按一次,数码管的十位加一,从0~5循环变化;
S4:
低位加1,按一次,数码管的个位加一,从0~9循环变化。
6、时钟电路
在单片机内部,有以一个高增益的反相放大器,用于构成振动器。
其输入端接至单片机内部,即XTAL1引脚;其输出端接至单片机外部,即XTAL2引脚;在TXAL1和XYAL2两端跨接一个晶振、两个电容,构成一个稳定的自激式振动电路。
7、电源电路
单片机使用5V电源,其中正极接40引脚,负极(地)接20引脚。
31EA/VPP引脚,该引脚接到正电源端。
二、软件设计
KEYOKBIT01H
STARTRUNBIT02H
SCOUNTEQU21H
MINUTEEQU23H
MSEQU29
SETVALEQU22H
METVALEQU26
TCOUNTEQU24H
TCOUNTEREQU2
KEYVALEQU28H
DISPBUFEQU58H
COUNTEREQU57H
HIDDENEQU10H
TMRVAREQU60536
ORG0000H
JMPSTART
ORG0*8+3
RETI
ORG1*8+3
JMPINT_T0
ORG2*8+3
RETI
ORG3*8+3
RETI
ORG4*8+3
RETI
START:
MOVSP,#5FH
MOVMS,#0
MOVMETVAL,#9
MOVSCOUNT,#00
MOVSETVAL,#59
MOVMINUTE,#00
MOVMETVAL,#59
MOVSCOUNT,SETVAL
MOVMINUTE,METVAL
MOVDISPBUF+4,#HIDDEN
CLRSTARTRUN
CLRKEYOK
CALLINIT_T0
SETBEA
LOOP:
CALLKEY
JBKEYOK,KEYPROC
NEXT:
MOVA,SCOUNT
MOVB,#10
DIVAB
NEXT1:
MOVDISPBUF+2,A
MOVDISPBUF+3,B
NEXT2:
MOVA,MINUTE
MOVB,#10
DIVAB
NEXT3:
MOVDISPBUF,A
MOVDISPBUF+1,B
NEXT4:
MOVA,MS
MOVB,#10
DIVAB
MOVDISPBUF+5,B
JMPLOOP
KEYPROC:
MOVA,KEYVAL
JZKEYRUN
DECA
JZKEYSTOP
DECA
JZKEYLEFT
JMPKEYRIGHT
KEYRUN:
SETBSTARTRUN
JMPLOOP
KEYSTOP:
CLRSTARTRUN
JMPLOOP
KEYLEFT:
CLRSTARTRUN
INCMETVAL
MOVA,METVAL
CJNEA,#60,LEFT0
MOVMETVAL,#00
LEFT0:
MOVB,#10
DIVAB
MOVA,DISPBUF
MOVB,DISPBUF+1
MOVMINUTE,METVAL
JMPLOOP
KEYRIGHT:
CLRSTARTRUN
INCSETVAL
MOVA,SETVAL
CJNEA,#60,REFT0
MOVSETVAL,#00
REFT0:
MOVB,#10
DIVAB
MOVA,DISPBUF+2
MOVB,DISPBUF+3
MOVSCOUNT,SETVAL
JMPLOOP
KEY:
MOVP3,#0FFH
CLRKEYOK
MOVA,P3
ORLA,#11000011B
CPLA
JZKEY_RET
CALLDELAY
MOVA,P3
ORLA,#11000011B
CPLA
JZKEY_RET
SETBKEYOK
JNBACC.2,KEY_1
MOVKEYVAL,#0
JMPKEY_RET
KEY_1:
JNBACC.3,KEY_2
MOVKEYVAL,#1
JMPKEY_RET
KEY_2:
JNBACC.4,KEY_3
MOVKEYVAL,#2
JMPKEY_RET
KEY_3:
MOVKEYVAL,#3
KEY_RET:
MOVA,P3
ORLA,#11000011B
CPLA
JNZKEY_RET
RET
DELAY:
PUSHPSW
SETBRS0
MOVR7,#50
D1:
MOVR6,#10
D2:
DJNZR6,D2
DJNZR7,D1
POPPSW
RET
INIT_T0:
MOVTMOD,#01H
MOVTH0,#HIGH(TMRVAR)
MOVTL0,#LOW(TMRVAR)
SETBET0
SETBTR0
RET
INT_T0:
PUSHACC
PUSHPSW
MOVTH0,#HIGH(TMRVAR)
MOVTL0,#LOW(TMRVAR)
INCTCOUNT
MOVA,TCOUNT
CJNEA,#TCOUNTER,INT_N2
MOVtCOUNT,#0
MOVA,MS
INT_N3:
JNBSTARTRUN,INT_N2
DECMS
SUBBA,#0
JNZINT_N2
MOVMS,SETVAL
JNZINT_N1
INT_N1:
JNBSTARTRUN,INT_N2
DECSCOUNT
MOVA,SCOUNT
SUBBA,#0
JNZINT_N2
MOVSCOUNT,SETVAL
JNZMINU
MINU:
JNBSTARTRUN,INT_N2
DECMINUTE
MOVA,MINUTE
SUBBA,#0
JNZINT_N2
MOVMINUTE,METVAL
INT_N2:
ORLP2,#11111100B
MOVA,Counter
MOVDPTR,#BitTab
MOVCA,@A+DPTR
ANLP2,A
MOVA,#DISPBUF
ADDA,Counter
MOVR0,A
MOVA,@R0
MOVDPTR,#DISPTAB
MOVCA,@A+DPTR
MOVP0,A
INCCounter
MOVA,Counter
CJNEA,#6,DISPEXIT
MOVCounter,#0
DISPEXIT:
POPPSW
POPACC
RETI
DISPTAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,81H,0FFH
BitTab:
DB7Fh,0BFH,0DFH,0EFH,0F7H,0FBH
END
三、调试运行
开机打开软件后,输入指令程序,保存项目后开始进行调试,调出仿真版。
刚开始整个程序的数码管只显示静态的“595909”仅仅后面一位再走,而且并没有实现消隐功能。
讨论后觉得是应加入秒计数器,秒值存储单元,分计时器,分值存储单位,毫秒存储单位,和秒预设值,分预设值。
并且加入消隐码“DIHHEN”主程序显示消隐还应该在硬件上实现消隐,故在“DISPTAB.......90H”后面加入“88H,83H,0C6H,0A1H,86H,8EH,0FFH”后才能实现消隐显示。
之后觉得一毫秒的速度要走六圈后秒表的各位才显示进位,所以改“TCOUNTEREQU2”后感觉速度慢了很多。
暂时比较符合标准!
运行结果
设计体会
通过单片机课程设计,我们不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我们还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。
使之不断地战胜别人,超越前人。
同时,更重要的是,我们在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
这个设计过程中,我们遇到过许多次失败的考验,就比如,对倒计时钟的设置,LED灯的消隐,动态扫描,计时子程序等的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我们明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。
于是,我们坚持了下来。
当然最终,这个设计完成了,但还存在着不如意的地方。
一个星期过去了,课程设计也接近尾声了,我们这个团队已经初步的完成了设计要求,只是有些地方有错误,但这并没有打击到我们,因为过程也很重要,在设计的同时也巩固了我们的理论知识,所以我们还是有收获的。
一个团队的协作也是很关键的,我们在遇到问题时,都会经过讨论解决的,再有错误时也会相互提醒,相互勉励,分工合作,共同完成这次课程设计。
我们能够完成这次课程设计,也缺少不了老师的指导,同学的帮助!
参考文献
【1】肖洪兵.跟我学用单片机.北京:
北京航空航天大学出版社,2002.8
【2】何立民.单片机高级教程.第1版.北京:
北京航空航天大学出版社,2001
【3】赵晓安.MCS-51单片机原理及应用.天津:
天津大学出版社,2001.3
【4】李广第.单片机基础.第1版.北京:
北京航空航天大学出版社,1999
【5】徐惠民、安德宁.单片微型计算机原理接口与应用.第1版.北京:
北京邮电大学出版社,1996
【6】何立民.从Cygnal80C51F看8位单片机发展之路.单片机与嵌入式系统应用,2002年,第5期:
P5~8
【7】张志良单片机原理与控制技术第二版机械工业出版社
【8】XICOR.X5054DataSheet.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 预置 时钟