51单片机课程设计电子时钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
课程名称:单片机课程设计
题目名称:单片机电子时钟
学院:电信学院
专业:电子工程
姓名:曾代科
学号: 202120313201
指导教师:杨加国
2021年11月7日
一、课程设计名称:51 单片机电子时钟
二、设计方案:
1、经过单片机内部的计数/ 准时器,采用软件编程来实
现时钟计数,一般称为软时钟,这种方法的硬件线路简单,
系统的功能一般与软件设计相关,平时用在对时间精度要求
不高的场合。
2、采用时钟芯片,它的功能富强,功能部件集成在芯
片内部,拥有自动产生时钟等相关功能,硬件本钱相对较高;软件编程简单,平时用在对时钟精度要求较高的场合。
三、设计内容:
这里采用应用广泛的AT89C52作为时钟控制芯片,利用
单片机内部的准时 / 计数器 T0 实现软时钟的目的。
第一将 T0 设定工作于准时方式,对机器周期计数形成基准时间〔50ms〕,尔后用另一个准时 / 计数器 T1 对基准时间计数形
成秒,妙计60 次形成分,分计60 形成小时,小时计到12。
最后经过数码管把它们的内容在相应的地址显示出来,到达
时、分、秒计时的功能。
其他还要实现对时间的调整功能,89C52 的、、
P1.2 外接三个独立按键,当按下按键时,系统进入调时
间的状态或启动时间显示的功能;当按下P1.1 按键时,对显
示的数码管进行加一的功能;当按下 P1.2 按键时,对显示的
数码管进行减一的功能,到达调整时间的目的。
四、系统软件程序设计
1.主程序
先对显示单元和准时器 / 计数器初始化,尔后重复调用
数码管显示模块和按键办理模块,当有按键按下时,那么转入
相应的功能程序。
2、数码管显示模块
本实验有 8 个数码管,从右到左为妙、横线、分、
横线、时。
在本系统中数码管显示采用软件译码动向显示。
在
储藏器中第一建立一张显示信息的字段码表,显示时,先
从显示缓冲区中取出显示的信息,尔后经过查表程序在
字段表中查出所显示的信息的断码,从P0 端口输出,
同时在 P2 端口进行数码管显示。
3、准时器 / 计数器 T0 中断效劳程序
T0 用于计时,选中方式一,重复准时,准时时间设为50ms,准时时间到那么中断,在中断效劳程序中用一个计数器
对 50ms 计数,计20 次那么对秒单元加一。
秒单元加到60 那么对分单元加一,同时秒单元清0;分单元加到60 那么对时单元加一,同时分单元清 0;时单元加到24 那么对时单元清0,标
志一节气间计满。
在对各单元计数的同时,把他们的值放到储藏器单元的指定地址。
流程图以下:
开始
显示单元清
T0、 T1 设为 16 位计数模式
赞同 T0 中断
调用显示子程序
是
按下键否
进入功能程序
开始
现场保护,重置初值,启动下一个50ms
50ms 计数器加一
NO
50ms 计数器 =20?
秒单元加一, 50ms 计数器清 0
NO
秒单元 =60?
分单元加一,秒单元清0
NO
分单元 =60?
时单元加一,分单元清0
NO
时单元 =24?
时单元清0
中断返回
主程序流程图
T0 中断效劳程序4、按键办理模块
按键设置为:若是没有按键吗,那么时钟正常走时。
当按下 K0 键时,进入调分状态,时钟停止走动;按 K1 和 K2按键可以进行加一和减一操作;连续按K0 键可以分别进行分和小时的调整;最后按K0 键启动计时。
5、汇编语言程序
ORG0000H
LJMP START
ORG000BH
LJMP INIT0
START: MOV R0,#70H;主程序开始
MOV R7,#0CH
INIT:MOV@R0,#00H
INC R0
DJN Z R7,INIT
MOV72H,#10;对连字符进行装值
MOV75H,#10
MOV TMOD,#01H;选择准时器 / 计数器 T0 的方式 1
MOV TL0,#0B0H;对低位赋初值
MOV TH0,#03CH;高位赋初值
SETB EA
SETB ET0
SETB TR0
START1:LCALL SCAN
LCALL KEYSCAN
SJMP START1
DL1MS:MOV R6,#14H;延时 1 子程序
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
DL20MS:ACALL SCAN;延时 20ms 子程序
ACALL SCAN
ACALL SCAN
RET;数码管显示程序开始
SCAN:MOV A,78H
MOV B,#0AH
DIV AB ;时间秒的十位送给 A,时间秒的个位送 B
MOV71H,A;时间秒要显示的十位
MOV70H,B;时间秒要显示的个位
MOV A,79H
MOV B,#0AH
DIV AB;时间分的十位送给 A,时间分的个位送 B
MOV74H,A;时间分要显示的十位送地址
MOV73H,B;时间分要显示的个位送地址
MOV A,7AH
MOV B,#0AH
DIV AB;时间时的十位送给 A,时间时的个位送 B
MOV77H,A;时间时显示的十位送地址
MOV76H,B;时间时要显示的个位送地址
MOV R1,#70H
MOV R5,#0FEH
MOV R3,#08H
SCAN1: MOV A,R5;数码管的显示程序
MOV P2,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR;对字段表取值显示
MOV P0,A
MOV A,R5
LCALL DL1MS
INC R1
MOV A,R5
RL A
MOV R5,A
DJNZ R3,SCAN1
MOV P2,#0FFH
MOV P0,#0FFH
RET;"0~9" 和 "-" 的字段表
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
;准时 /计数器T0 中断程序
INIT0: PUSH ACC
PUSH PSW
CLR ET0
CLR TR0
MOV TL0,#0B0H
MOV TH0,#03CH
SETB TR0
INC7BH
MOV A,7BH
CJNE A,#14H,OUTT0 ;50ms 可否到20 次,没有到就连续执行 50ms 的延时
MOV 7BH,#00
INC78H
MOV A,78H
CJNE A,#3CH,OUTT0 ;一秒的延时可否计到 60 次,没有就连续执行MOV78H,#00
INC79H
MOV A,79H
CJNE A,#3CH,OUTT0
MOV79H,#00
INC7AH
MOV A,7AH
CJNE A,#18H,OUTT0;60 分钟的延时可否计到24 次,没有就
连续执行程序
MOV7AH,#00
OUTT0:SETB ET0;启动准时器 T0
POP PSW
POP ACC
RETI
;按键办理程序
KEYSCAN:CLR EA
JNB P1.0,KEYSCAN0 ;P1.0 有按键按下那么跳转到子程序
JNB P1.1,KEYSCAN1 ;P1.1 有按键按下那么跳转到子程序
JNB P1.2,KEYSCAN2 ;P1.2 有按键按下那么跳转到子程序KEYOUT: SETB EA
RET
KEYSCAN0:LCALL DL20MS;20ms 的延时消抖
JB P1.0,KEYOUT
WAIT0: JNB P1.0,WAIT0;判断按键可否松手,松手就往下执行程序
SETB ET0
SETB TR0
SJMP KEYOUT
KEYSCAN1:LCALL DL20MS;按键加一的程序
JB P1.1,KEYOUT
WAIT1: JNB P1.1,WAIT1
MOV A,7CH
CJNE A,#02H,KSCAN11;若是功能键按下那么对时加一调整
INC 79H
CJNE A,#3CH,KEYOUT;若是加到 60 那么清零
MOV79H,#00
SJMP KEYOUT
KSCAN11:INC 7AH;若是功能键是按下第
二次那么对分进行加一调整
MOV A,7AH
CJNE A,#18H,KEYOUT
MOV7AH,#00
SJMP KEYOUT
KEYSCAN2:LCALL DL20MS;延时消抖程序
JB P1.2,KEYOUT
WAIT2: JNB P1.2,WAIT2;判断可否松开按键
MOV A,7CH
CJNE A,#02H,KSCAN21 ;若是功能键是按下第一次对时进行减一
DEC79H
MOV A,79H
CJNE A,#0FFH,KEYOUT
MOV79H,#3BH
SJMP KEYOUT
KSCAN21:DEC 7AH;若是功能键是按下第二次那么对分进行减一
CJNE A,#0FFH,KEYOUT
MOV7AH,#17H
SJMP KEYOUT
END
6、软件编译环境:Keil uVision2
保证生成". Hex"文件
五、系统硬件电路的设计
系统的硬件主要包括单片机芯片,数码管显
示,按键开关电路,它的硬件电路以以下列图所示,单片
机采用广泛使用的AT89C52,系统时钟采用 12MHz 的晶振,八个数码管显示,小时与分钟与秒钟间用短横线,采用共阳极七段式数码管, P0 口为段选码输出端,P2 口为位选码输出端。
硬件电路以以下列图:
六、课程设计总结
经过一周的时间以及对整本教材的知识总结,把课程设计分成了硬件和软件两大模块。
总的来说,硬件局部很好下手,电路也教简单,主
要涉及的是简单的按键、电容、电阻、晶振和数码管。
在软件局部,细分为了按键模块、显示模块、准时 / 计数模块,最后把几个模块整合在主程序模块中,使
得程序简单了然。
整个设计过程中遇到的最大问题是软件的
编写,由于采用的是汇编语言,此间使用到的各种寄
存器、储藏器地址、变量很多,很难对程序的整体把握。
经过电子钟的设计,对单片机的原理、结构、外
围电路进一步的认识。
在整个设计过程中学到了集体
精神和独立解决问题的重要性。
为今后的求职之路打
下了基础。
七、参照资料
[1]?单片机原理与应用?谢维成杨加国编着
[2] ?单片机应用与仿真调试?严天峰编着
[3]?模拟电子技术〔第三版〕 ? 胡宴如耿苏燕编着
[4]?数字电子技术〔第三版〕 ? 杨志忠卫桦林编着。