电子时钟设计单片机原理与应用.docx
- 文档编号:9991439
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:26
- 大小:110.01KB
电子时钟设计单片机原理与应用.docx
《电子时钟设计单片机原理与应用.docx》由会员分享,可在线阅读,更多相关《电子时钟设计单片机原理与应用.docx(26页珍藏版)》请在冰豆网上搜索。
电子时钟设计单片机原理与应用
目录
第一章课程设计要求的目的与意义1
第二章总体设计方案选择与说明2
2.1设计方案2
第三章系统结构框图和工作原理3
3.1系统结构框图3
3.2系统工作原理3
第四章各单元的硬件设计及说明4
4.1键盘接口电路4
4.2显示电路4
4.374LS373作用6
第五章软件设计与说明7
5.1软件设计7
5.2主程序流程图9
第六章调试结果与调试说明10
第七章总结11
第八章参考文献12
附录………………………………………………………………………13
第1章课程设计要求的目的与意义
通过单片机课程设计,加深对单片机的更深层次的理解,熟悉单片机的内部硬件资源,掌握单片机的编程及技巧,要学会对单片机的各部硬件资源的控制,分配,特别是对单片机中断,定时器的编程方法。
且需要学会利用所学单片机只是独立设置系统的能力。
作为一个电气工程及其自动化专业大三的学生,做这次课程设计的意义是很大的。
这能让我们把我们在课堂上学的知识能够运用到实践当中。
在这次课程设计我们能够学会对一些软件的使用,如proteus和Keiluvision等。
这次我们将所学知识汇聚到了一起,并适当的加入了一些其它的知识,让我们自己动手动脑完成一次课程设计是很有意义的。
第2章总体设计方案选择与说明
2.1设计方案
本电子时钟采用AT89C51单片机为核心器件,将可编程芯片8255A与6个LED数码管连接,用于显示时钟与跑秒。
PA口输出显示段码,PB口输出位码,单片机的P1.0-P1.4、P3.2、P3.3接K1-K6,用于实现表的清零/启动/复位/调整/暂停功能,其可由软件来完成。
由于数码管要显示时钟,还要显示跑秒,利用T0定时器定时1s,T1定时器定时100ms,即0.1s,用R6和R7作为扫描的短延时数据地址。
因此,分别用30H、31H、32H、33H、34H、35H计时钟,即时钟计数器;用40H、41H、42H、43H、44H、45H计跑表,即秒表计数器。
当要显示时钟的时候,就把时钟地址中的数据通过8255A的PA口输出给显示器显示;当要显示跑秒的时候,就把跑秒地址中的数据通过8255A的PA口输出给显示器显示。
第3章系统结构框图和工作原理
3.1系统结构框图
单片机
6个按键输入电路
LED显示器段码驱动电路
6位LED显示电路
LED显示器位码驱动电路
时钟电路
复位电路
图3.1系统结构框图
3.2系统工作原理
利用单片机定时器完成计时功能,定时器1计时中断程序每隔10ms中断一次并当作一个计数,设定定时1秒的中断计数初值阀值为100,每中断一次中断计数加1,当加到100时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。
为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。
由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。
第4章各单元的硬件设计及说明
4.1键盘接口电路
单片机的P1.0-P1.4、P3.2、P3.3分别接6个按键,用于实现电子时钟的清零/启动/复位/暂停/分钟调节/秒钟调节,独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。
I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低,I/O口内部有上拉电阻时,外部可不接上拉电阻。
图4.1键盘借口电路
4.2显示电路
本次需用到六个LED数码管用来分别显示时、分、秒。
将可编程芯片8255A的PB0、PB1、PB2、PB3、PB4、PB5接数码管的1、2、3、4、5、6,然后数码管的A-G分别接74LS245的B0-B7。
8255A的PA口输出显示段码,由一个74LS245驱动输出给LED数码管,PB口输出段码直接输出给LED数码管显示。
时间显示功能通过LED数码管动态扫描来实现,在显示器上进行动态扫描。
图4.2显示电路
4.374LS373作用
当三态允许控制端OE为低电平时,Q0~Q7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,Q0~Q7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,Q随数据D而变。
当LE为低电平时,D被锁存在已建立的数据电平。
图4.374LS373引脚图
第5章软件设计与说明
5.1软件设计
本设计的软件程序包括主程序、中断子程序、时钟显示子程序等。
在整个系统中,在单片机的30H、31H和32H中存储当前时间的小时、分钟和秒。
用LCD显示当前的时间,必须用到分字和合字,因此在33H、34H、35H、36H、37H和38H中存储当前时间的时十位、时个位、分十位、分个位、秒十位和秒个位,方便显示。
本设计有由四个轻触按键组成的小键盘,这些按键可以任意改变当前的状态。
按SECOND键触发秒钟位加1,按MINUTE键触发分钟位加1,按HOUR键触发时钟位加1。
按电平复位电路开关则触发LCD显示复位。
控制子程序数据表为:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。
我们可把定时器的定时时间定为50ms。
这样,计数溢出20次即可得到时钟的最小计时单位:
秒。
而计数20次可以用软件实现。
秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。
从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。
要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。
实时时钟程序设计步骤:
(1)选择工作方式,计算初值;
(2)采用中断方式进行溢出次数累计;
(3)从秒——分——时的计时是通过累加和数值比较实现的;
(4)时钟显示缓冲区:
时钟时间在方位数码管上进行显示,为此在内部;RAM中要设置显示缓冲区,共6个地址单元。
显示缓冲区从左到右依次存放时、分、秒数值;
(5)主程序:
主要进行定时器/计数器的初始化编程,然后反复调用显示子程序的方法等待中断的到来,流程如图4-1所示;
(6)中断服务程序:
进行计时操作;
(7)加1子程序:
用于完成对时、分、秒的加操作,中断服务程序在秒、分、时加1时共三次调用加1子程序,包括:
合字、加1并进行进制调整、分字。
5.2主程序流程图
图5.2主程序流程图
第6章调试结果与调试说明
过proteus仿真,开始后数码管可以正常显示时间,按【暂停】键可以让时钟停止走动,此时按下【调整分钟】和【调整时钟】可以分别调整分钟和时钟,每按一下便增加一。
这时候再按下【复位清零】键,即把时钟显示清零了,然后按【显示秒表】键,可切换到秒表模式并开始计时,最小值为10ms。
按【暂停】键可以暂停计时,按【复位清零】键可以清零秒表,以便开始下一轮的计时。
调试过程中的截图如下:
图6调试过程截图
第7章总结
通过本次的单片机课程设计—电子时钟的设计,我学到了很多课本上无法学到的知识,也让我们对仿真软件等的使用也更熟练了。
在程序方面,我借鉴了实验课本上的程序进行了改进,让自己的程序更优秀。
而且我觉得写程序注释写得越详细越好、不要怕麻烦。
这样方便自己读懂程序,也是有利于让别人能读懂你写的程序。
在反复确认自己的程序正确无误之后,接下来要做的就是模拟仿真了。
我们在书上、网上都查阅了相关芯片的功能、管脚等信息。
也自己研究了一下proteus仿真软件的使用,仔细研究芯片的主要功能及管脚接法,这也就为我们后面比较成功地仿真出结果打好了基础。
当仿真出错时我们反复检查线路连接是否有误,仔细的观察相应管脚在运行时的电位的变化。
我相信,不管是什么电路,经过如此仔细的检查后,任何错误不会遗漏。
当然,这也是我们最终走向成功的原因。
而且在肖老师的辛勤的指导下,最后我们顺利地完成了这次的课程设计。
看见到课本所学知识得以应用,一股成就感油然而生。
这次课程设计加强了我的实际操作能力,提高了我解决实际问题的能力,也锻炼了和同学之间的合作能力,并对本专业的课程充满了浓厚的兴趣,相信有了兴趣,我在以后对本专业的学习会更加得心应手。
第8章参考文献
1、《单片机原理与应用》王迎旭等编机械工业出版社
2、《51系列单片机设计实例》楼然苗等编北京航空航天大学出版社
3、《计算机硬件技术基础实验教程》黄勤等编重庆大学出版社
4、《微型计算机接口技术及应用》刘乐善主编华中科技大学出版社
5、《单片微型计算机原理及接口技术》陈光东等编华中科技大学出版社
附录
附录A系统原理图
系统原理图
附录B程序清单
ORG0000H
LJMPSTART
ORG0003H;INT0中断入口
LJMPS5
ORG000BH;T0中断入口
LJMPY0
ORG0013H;INT1中断入口
LJMPS6
ORG001BH;T1中断入口
LJMPY1
ORG2000H
START:
MOVDPTR,#0FF7FH;8255A初始化
MOVA,#89H;PA口PB口输出方式
MOVX@DPTR,A;方式控制字送控制字入口
S1:
MOV30H,#0
MOV31H,#0
MOV32H,#0
MOV33H,#0
MOV34H,#0
MOV35H,#0
S2:
MOVR0,#14H
MOVTMOD,#11H;T0/T1工作方式
SETBEA;开放总中断
SETBTR0;启动T0
SETBET0;启动定时中断T0
SETBET1;启动定时中断T1
;*******************************时钟主程序*******************
LOOP:
CLRTR1;关闭T1计时
MOVA,#0DFH
MOVDPTR,#0FF7DH;取位控信号(8255A的PB口地址)
MOVX@DPTR,A;显示值转换显示码
MOVA,35H
MOVDPTR,#DIRTAB;七段数码管显示断码首地址
MOVCA,@A+DPTR;查表
MOVDPTR,#0FF7CH;送PA口显示(8255A的PA口地址)
MOVX@DPTR,A
ACALLD1MS;延时1MS
MOVA,#0EFH
MOVDPTR,#0FF7DH;动态扫描循环
MOVX@DPTR,A
MOVA,34H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0F7H
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,33H
MOVDPTR,#DIRTAB1
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FBH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,32H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FDH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,31H
MOVDPTR,#DIRTAB1
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FEH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,30H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
JNBP1.0,Z4;K1键按下进入秒表显示程序
JNBP1.3,S3
JNBP1.2,S4
SJMPLOOP
******************时钟定时中断服务程序************************
Z4:
AJMPZ1
S3:
CLRTR0
SETBIT0
SETBEX0
SETBIT1
SETBEX1
AJMPLOOP
S4:
SETBTR0
CLREX0
CLREX1
AJMPLOOP
S8:
AJMPKEY
Y0:
MOVTH0,#1EH
MOVTL0,#0CFH
DJNZR0,S8;R0初值为14,循环14次,即为1s若不为零则跳转到S8
MOVR0,#14H;到1S则重新给R0赋值14
INC35H;让秒数加1
MOVA,#10
CJNEA,35H,KEY;如果没加到10就跳转到KEY
MOVR0,#14H
MOV35H,#0
INC34H
MOVA,#6
CJNEA,34H,KEY
MOVR0,#14H
MOV35H,#0
MOV34H,#0
MOVR0,#14H
S5:
INC33H
MOVA,#10
CJNEA,33H,KEY
MOVR0,#14H
MOV35H,#0
MOV34H,#0
MOV33H,#0
INC32H
MOVA,#6
CJNEA,32H,KEY
MOVR0,#14H
MOV35H,#0
MOV34H,#0
MOV33H,#0
MOV32H,#0
S6:
INC31H;INT0中断入口
MOVA,#4
CJNEA,31H,L3
MOVA,#2
CJNEA,30H,L3
SJMPL4
L3:
MOVA,#10
CJNEA,31H,KEY
MOVR0,#14H
MOV35H,#0
MOV34H,#0
MOV33H,#0
MOV32H,#0
MOV31H,#0
INC30H
RETI
L4:
MOVR0,#14H
MOV35H,#0
MOV34H,#0
MOV33H,#0
MOV32H,#0
MOV31H,#0
MOV30H,#0
KEY:
RETI
;***********************秒表主程序*****************************
Z1:
SETBTR0
CLREX0
CLREX1
MOV40H,#0
MOV41H,#0
MOV42H,#0
MOV43H,#0
MOV44H,#0
MOV45H,#0
LOOP1:
CLRTR1
MOVA,#0DFH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,45H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0EFH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,44H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0F7H
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,43H
MOVDPTR,#DIRTAB1
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FBH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,42H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FDH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,41H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FEH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,40H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
JNBP1.0,Z3
JNBP1.1,X0
JNBP1.2,M2
M5:
AJMPLOOP1
M2:
AJMPLOOP
Z3:
AJMPZ1
;**********************************************************
X0:
SETBTR1
MOVA,#0DFH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,45H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0EFH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,44H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0F7H
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,43H
MOVDPTR,#DIRTAB1
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FBH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,42H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FDH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,41H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
MOVA,#0FEH
MOVDPTR,#0FF7DH
MOVX@DPTR,A
MOVA,40H
MOVDPTR,#DIRTAB
MOVCA,@A+DPTR
MOVDPTR,#0FF7CH
MOVX@DPTR,A
ACALLD1MS
JNBP1.0,M3
JNBP1.2,M2
JNBP1.3,M5
AJMPX0
Y1:
MOVTH1,#0D8H
MOVTL1,#0F0H
INC45H
MOVA,#10
CJNEA,45H,M4
MOV45H,#0
INC44H
MOVA,#10
CJNEA,44H,M4
MOV45H,#0
MOV44H,#0
INC43H
MOVA,#10
CJNEA,43H,M4
MOV45H,#0
MOV44H,#0
MOV43H,#0
INC42H
MOVA,#10
CJNEA,42H,M4
MOV45H,#0
MOV44H,#0
MOV43H,#0
MOV42H,#0
INC41H
MOVA,#10
CJNEA,41H,M4
MOV45H,#0
MOV44H,#0
MOV43H,#0
MOV42H,#0
MOV41H,#0
INC40H
MOVA,#10
CJNEA,30H,M4
MOV45H,#0
MOV44H,#0
MOV43H,#0
MOV42H,#0
MOV41H,#0
MOV40H,#0
M4:
AJMPKEY
M3:
AJMPZ1
DIRTAB:
DB3FH,06H,5BH,4FH
DB66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH
DB39H,5EH,79H,71H
DIRTAB1:
DB0BFH,86H,0DBH,0CFH
DB0E6H,0EDH,0FDH,87H
DB0FFH,0EFH,0F7H,0FCH
DB0B9H,0DEH,0F9H,0F1H
D1MS:
MOVR7,#4
DEL1:
MOVR6,#30
NOP
DEL2:
DJNZR6,DEL2
DJNZR7,DEL1
RET
END
电气信息学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
________________
日期:
________________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时钟 设计 单片机 原理 应用