单片机课程设计.docx
- 文档编号:6362350
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:23
- 大小:242.89KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
单片机课程设计
《单片机技术》课程设计任务书
一、设计题目:
基于单片机的电子钟的设计、基于单片机的频率计的设计
摘要
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?
这就要求人们不断设计出新型时钟。
数字电子钟的设计方法有多种,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点,同时可以用该电子钟发出各种控制信号。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S52芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能等特点。
该电子钟可以做到的功能:
上电或按键复位后能自动显示系统提示符“P.”进入时钟准备状态2.第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态。
再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
通过设置的A、B、C、D四个键来调整运行,并且利用了8位LED显示时分秒。
此电子钟严格按照要求设计,最终达到预期的效果,能够正确显示“P”点以及时分秒的计时,算是一次比较成功的设计了。
关键词:
电子钟,单片机,汇编
目录
第1章电子钟功能及总体方案的介绍1
1.1电子钟功能介绍1
1.1.1基本功能要求1
1.1.2扩展功能要求1
1.2总体方案介绍2
1.2.1计时方案2
1.2.2键盘/显示方案2
第2章电子钟的工作原理3
2.1实现时钟计时的基本方法3
2.2电子钟的时间显示3
2.3电子钟的启、停及时间调整3
第3章电子钟原理图及元件清单4
3.1电子钟电路原理图4
3.2元件清单4
第4章软件系统设计5
4.1电子钟程序流程框图5
4.1.1主程序流程框图5
4.1.2键扫子程序流程框图6
4.1.3中断服务程序流程框图7
4.1.5显示子程序流程框图9
4.1.6加一子程序流程框图10
4.2电子钟总体程序清单11
第5章电子钟的使用说明及调试运行19
5.1使用说明书19
5.1.1操作说明19
5.2电子钟运行结果19
5.2.1待机19
5.2.2启动19
5.2.3运行20
第6章误差分析21
第7章设计体会22
教学建议23
参考资料24
附录25
致谢26
第1章电子钟功能及总体方案的介绍
1.1电子钟功能介绍
1.1.1基本功能要求
可调整运行的电子钟具有三种工作状态:
“P.”状态、运行状态、调整状态。
(1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按B、C、D键均无效,按A键有效,进入运行状态;
(2)、运行状态,按奇数次A键进入,在此状态下,按B、C、D键均无效,只有按A键有效,按下A键后,退出运行状态,进入调整状态;
(3)、调整状态,按偶数次A键进入,在此状态下,按A、B、C、D键均有效。
如按下A键,则退出调整状态,进入运行状态;按下B、C、D键,则分别对时、分、秒加1,调整结束后必须按A键,即可退出调整状态,进入运行状态。
基本功能要求:
“P.”稳定地显示在LED显示器的最左端数码管(LED5)上,无A键按下(在“P.”状态下,按下B、C、D键无效),则不进入电子钟的运行状态,继续显示“P.”。
按下A键后,电子钟以起始时间:
00时00分00秒开始运行。
再次按下A键后,电子钟退出运行状态,进入调整状态,利用B、C、D键把电子钟的显示时间修改为当前实时时间,时间修改正确后可再次按下A键,电子钟则退出调整状态,进入运行状态。
注意:
每次按下B、C、D键,只允许加一,不允许连加。
1.1.2扩展功能要求
(1)、在调整状态下,按下B、C、D键,允许连加,而A键无论在何种状态下,均不允许连击;
(2)、时、分、秒的间隔符“。
”以一定频率闪烁;
(3)、时间显示以“灭零”方式进行;
(4)、可调整运行的电子钟用两个按键(例如:
A键、B键)来控制。
1.2总体方案介绍
1.2.1计时方案
利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。
1.2.2键盘/显示方案
AT89S52的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口,P2口作六个LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。
AT89S52是一种低功耗,高性能的CMOS8位微型计算机。
它带有8KFlash可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂的问题,且成本较低。
简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本书中采用此的设计方案,结构如图1-1如示。
第2章电子钟的工作原理
2.1实现时钟计时的基本方法
利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。
(1)计数初值计算:
把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足(216-X)×1/12MHz×12μs=50000μs
X=15536→0011110010110000→3CB0H
(2)采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);
(3)从秒到分和从分到时的计时是通过累加和数值比较实现。
2.2电子钟的时间显示
电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。
LED8LED7LED6LED5LED4LED3LED2LED1
37H36H35H34H33H32H31H30H
时十位时个位分隔分十位分个位分隔秒十位秒个位
2.3电子钟的启、停及时间调整
电子钟设置4个按键通过程序控制来完成电子钟的启、停及时间调整。
A键控制电子钟的启、停;
B键调整时;
C键调整分;
D键调整秒。
第3章电子钟原理图及元件清单
3.1电子钟电路原理图
电子钟原理图(见附录1)
3.2元件清单
电子钟元件清单如表1所示:
表1 电子钟元器件清单
元件名称
规格型号
数量(个)
单片机
AT89S52
1
显示驱动芯片
74LS245
2
8位一体的共阳LED显示器
7SEG-MPX8-CA-BLUE
1
晶振
12MHz
1
电容
33pF
2
电容
22μF
1
按键
BUTTON
5
电阻
0.2K
1
电阻
1K
1
上拉电阻
10K
4
限流电阻
0.1K
8
排阻
RESPACK-8/10K
1
第4章软件系统设计
4.1电子钟程序流程框图
4.1.1主程序流程框图
图4-1主程序流程框图
见图4-1所示
4.1.2键扫子程序流程框图
见图4-2所示
4.1.3中断服务程序流程框图
见图4-3所示
4.1.4“P.”点显示子程序流程框图
见图4-4所示
4.1.5显示子程序流程框图
见图4-5所示
4.1.6加一子程序流程框图
见图4-6所示
4.2电子钟总体程序清单
ORG0000H
AJMPMAIN
ORG000BH
LJMPINTT0
ORG0030H
MAIN:
MOVSP,#60H;确立堆栈区
MOVPSW,#00H;
MOVR0,#20H;RAM区首地址
MOVR7,#5FH;RAM区单元个数
QL:
MOV@R0,#00H;RAM清零
INCR0
DJNZR7,QL
MOVIP,#02H;IP初始化,优先定时器0
MOVIE,#82H;IE初始化,
MOVTMOD,#01H;定时器0方式1工作
LCALLPP;调P.子程序
NEXT:
LCALLKEY;按键检测子程序
JBACC.0,RUNF;A键按下运行
LCALLDISP;调用显示子程序
SJMPNEXT
RUNF:
LCALLOUTT;调传送子程序
LCALLTIME;开电子钟
JK:
LCALLDISP;调用显示子程序
LCALLKEY;按键检测子程序
JZJK
LCALLANKEY
LCALLDISP;调用显示子程序
SJMPJK
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;P点显示;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PP:
MOV37H,#12;P点编码送寄存器
MOVR0,#30H;P点编码送寄存器
MOVR7,#07H
PPP:
MOV@R0,#10
INCR0
DJNZR7,PPP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;键扫子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY:
LCALLKEYS;调键值处理子程序
JZEXIT;没有键按下转到返回
LCALLDISP
LCALLDISP;调显示去抖动
LCALLKEYS
JZEXIT
MOVB,20H;保存键值
KEYSF:
LCALLKEYS;调键值处理子程序
JZKEYY;键释放,转到恢复键值
LCALLDISP;调显示子程序延时
AJMPKEYSF;等到键释放
KEYY:
MOVA,B;键值送20H单元保存
EXIT:
RET;返回
KEYS:
MOVP1,#0FFH;先向P1口写1
MOVA,P1;P1口值送累加器A
CPLA;A值取反
ANLA,#0FH;保存P1口的低4位
MOV20H,A;A值送20H保存
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;键功能子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ANKEY:
CLREA;关中断
CHECK:
JBTR0,YXZ;判断是否运行
K0:
CJNEA,#01H,K1
AJMPRUN;转运行
K1:
CJNEA,#02H,K2
AJMPKEY1;转时调整
K2:
CJNEA,#04H,K3
AJMPKEY2;转分调整
K3:
CJNEA,#08H,OUT
AJMPKEY3;转秒调整
YXZ:
JBACC.0,STOP
AJMPOUT
KEY1:
MOVR0,#45H;时调整
LCALLADD1
CLRC
CJNEA,#24H,OUTT
ACALLCLR0
AJMPOUTT
KEY2:
MOVR0,#43H;分调整
LCALLADD1
CLRC
CJNEA,#60H,OUTT
ACALLCLR0
AJMPOUTT
KEY3:
MOVR0,#41H;秒调整
ACALLADD1
CLRC
CJNEA,#60H,OUTT
ACALLCLR0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;传送显示数据;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OUTT:
MOV30H,40H;秒显示单元41H-42H
MOV31H,41H
MOV32H,#11;"-"
MOV33H,42H;分显示单元43H-44H
MOV34H,43H
MOV35H,#11;"-"
MOV36H,44H;时显示单元44-45H
MOV37H,45H
RET
STOP:
CLRTR0;关电子钟并跳出
RET
RUN:
LCALLTIME;运行电子钟
OUT:
SETBEA;无键按下或完成功能跳出
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;运行电子钟;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIME:
SETBEA
MOVTL0,#0B0H
MOVTH0,#3CH;3CB0H
MOVR4,#20;50ms,20次循环
SETBTR0;启动定时器0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;定时中断;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVTL0,#0B0H;重新设定定时初值
MOVTH0,#3CH
SETBTR0;启动定时器0
DJNZR4,OUTT0;1秒到
ADDSS:
MOVR4,#14H;20次计数
MOVR0,#41H;秒十位
ACALLADD1;加1程序
CLRC
CJNEA,#60H,ADDMM;1分到
ADDMM:
JCOUTT0
ACALLCLR0
MOVR0,#43H
ACALLADD1;加1程序
CLRC
CJNEA,#60H,ADDHH;1小时到
ADDHH:
JCOUTT0
ACALLCLR0
MOVR0,#45H
ACALLADD1;加1程序
CLRC
CJNEA,#24H,HOUR;1天到
HOUR:
JCOUTT0
ACALLCLR0
OUTT0:
MOV30H,40H;秒显示单元41H-42H
MOV31H,41H
MOV32H,#11;"-"
MOV33H,42H;分显示单元43H-44H
MOV34H,43H
MOV35H,#11;"-"
MOV36H,44H;时显示单元44-45H
MOV37H,45H
POPPSW
POPACC
SETBET0
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;时间清零子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR0:
CLRA
MOV@R0,A
DECR0
MOV@R0,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;加一子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADD1:
MOVA,@R0;取十位
DECR0
SWAPA
ORLA,@R0;组合十位与个位
ADDA,#01H;加1
DAA;十进制调整
MOVR3,A;暂存
ANLA,#0FH;屏蔽十位
MOV@R0,A;放入个位单元
MOVA,R3;取值
INCR0
SWAPA
ANLA,#0FH;屏蔽个位
MOV@R0,A;放入十位单元
MOVA,R3;数值放入A中等待判断
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;显示子程序30H;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISP:
MOVR1,#30H;显示缓冲存储单元首地址
MOVR2,#80H;从右至左显示
DISP1:
MOVP2,R2;送位控
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A;送段控
ACALLDL;延时
MOVA,R2
JBACC.0,DISP2
RRA
INCR1
MOVR2,A
AJMPDISP1
DISP2:
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0CH
DL:
MOVR6,#14H;显示延时子程序
DL1:
MOVR7,#19H;
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
END
第5章电子钟的使用说明及调试运行
5.1使用说明书
5.1.1操作说明
(1)时间显示:
电子钟上电后,8个数码管显示初始状态即最左边的一个数码管显示P.。
如果未显示P.,只需按一下复位键即可使其显示出P.。
按下A键后电子钟进入自动计时状态,电子钟显示00时00分00秒并开始运行。
(2)时间调整:
若要进行时间调整,则需再次按下A键,进入时间调整状态,然后分别按下B键调时,按下C键调分,按下D键调秒,按下B、C、D键并松开可使电子钟的时,分,秒分别加一。
调整好时间后,按下A键就可以回到调整好的时间为基础的自动计时状态。
无论是在自动计时,还是在调整校正时,都可按下复位键使系统回到显示P.的初始状态。
其中B键显示范围为0-23,0为24点;C,D键显示范围为0-59,0为60分。
5.2电子钟运行结果
5.2.1待机
(如图5-1所示)
5.2.2启动
(如图5-2所示)
图5-2启动
5.2.3运行
(如图5-3所示)
第6章误差分析
在调试运行过程中,在所有参数正确的情况下,我的结果仍出现运行缓慢情况。
产生误差的主要原因是我们用软件计时,计时1秒是采用定时器的中断服务程序。
当电子钟运行1秒,执行中断程序需要一定时间,这个时间就是所产生的误差,这个误差是不可避免的。
同时,单片机工作也会受到环境的影响,比如温度、湿度,以及其它电子设备的干扰。
因此,应该让电子钟工作在适度温度、干燥和电子干扰较少的环境下,还有一种方法就是采用实时时钟芯片,这样可以使误差降低到最少。
第7章设计体会
这次课程设计持续了几周时间,开始一直就想着等别人做出来再去请教别人,没想到,自己做出来的人并不多,也没有谁能够帮我的,于是就和吴娟去图书馆借书自己琢磨。
借了胡辉主编的《单片机应用系统设计与训练》,细细阅读了里面关于电子钟设计的介绍,学到了蛮多知识的。
后来在二班汪宇那里又弄来了王老师关于电子钟设计的的课件包,借鉴了相当一部分内容,不管怎么样我也终于是自己搞定了。
但是自己还是去认真再次学习了汇编语言的,还有熟练了PROTEUS和KEIL软件的运用,还用了蛮久没用的PROTEL99SE画了电路原理图,还更好的锻炼了用VISIO画流程图。
虽然大部分都是借鉴的,只是照着描描但自己还是用心去弄懂了。
有时间还是会更多锻炼的。
感觉这些软件都越来越顺手了。
挺开心。
发现自己真是不逼就不学的人啦。
教学建议
所谓的教学建议是第一次写,也不知道应该写些什么。
只知道自己没学好,也似乎不爱学这方面的东西。
王老师您是个好老师,虽然我感觉您上学期的教学比这学期的吸引人,当然这其中的大部分的原因也都是因为这学期时间太松,加上我们这些大四学生太放任自流了的原因吧。
如果要我提出建议,我想,以下这些不成熟也没条理性可言的语句就算是我的所谓“建议”吧。
教学,教与学,本来就时老师与学生的互动。
老师教得再好,学生没去认真有什么用处?
所以我觉得一个好老师可能应该更多的去带动学生去学,勾起学生学习的兴趣。
虽然王老师您在这方面已经下了很多功夫,但似乎成效并不大,适得其反,一部分根本不想学的人反而还觉得您逼迫得太紧了,对您意见颇多。
形成了这样的局面,我想也不时您所希望见到的,所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)