单片机课程设计数字电子钟设计.docx
- 文档编号:9704762
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:27
- 大小:134.25KB
单片机课程设计数字电子钟设计.docx
《单片机课程设计数字电子钟设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计数字电子钟设计.docx(27页珍藏版)》请在冰点文库上搜索。
单片机课程设计数字电子钟设计
单片机技术课程设计说明书
数字电子钟
摘要
电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz晶振与单片机AT89S52相连接,通过软件编程的方法实现以24小时为一个周期,同时8位8段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键S1、S2、S3和S4键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词电子钟;AT89S52;硬件设计;软件设计
ABSTRACT
Clockiswidelyusedinlife,andasimpledigitalclockismorewelcomedbypeople.Sotodesignasimpledigitalelectronicclockisnecessary.ThesystemuseasinglechipAT89S52ofATMEL’sasitscoretocontrolThecrystaloscillatorclock,usingofE-12MHzisconnectedwiththemicrocontrollerAT89S52,throughthesoftwareprogrammingmethodtoachievea24-hourcycle,andeight8-segmentLEDdigitaltube(twofourinonedigitaltube)displayshours,minutesandsecondsrequirements,andinthetimecourseofatimingfunction,whenthetimearrivedaheadofscheduledtimetobuzzagoodtimekeeping.TheclockhasfourbuttonsS1,S2,S3andS4key,andmaketheappropriateactioncanbeachievedwhentheschool,timing,reset.Withatimedisplay,alarmclocksettings,timerfunction,correctiveaction.Accuratetraveltime,displayandintuitive,precision,stability,andsoon.Withahighapplicationvalue.
显示对应的拉丁字符的拼音
字典-查看字典详细内容
Keywordselectronicclock;AT89S52;hardwaredesign;softwaredesign
目录
1设计课题任务、功能要求说明及方案介绍………………………………………1
1.1设计课题任务………………………………………………………………1
1.2功能要求说明………………………………………………………………1
1.3设计总体方案介绍及原理说明……………………………………………1
2设计课题硬件系统的设计………………………………………………………2
2.1设计课题硬件系统各模块功能简要介绍…………………………………2
2.2设计课题电路原理图、PCB图、元器件布局图…………………………2
2.3设计课题元器件清单………………………………………………………3
3设计课题软件系统的设计…………………………………………………………4
3.1设计课题使用单片机资源的情况…………………………………………4
3.2设计课题软件系统各模块功能简要介绍…………………………………4
3.3设计课题软件系统程序流程框图…………………………………………5
3.4设计课题软件系统程序清单………………………………………………8
4设计结论、仿真结果、误差分析、教学建议…………………………………19
4.1设计课题的设计结论及使用说明…………………………………………19
4.2设计课题的仿真结果………………………………………………………19
4.3设计课题的误差分析………………………………………………………20
4.4设计体会……………………………………………………………………20
4.5教学建议……………………………………………………………………20
结束语……………………………………………………………………………21
致谢……………………………………………………………………………22
参考文献……………………………………………………………………………23
附录A…………………………………………………………………………24
附录B…………………………………………………………………………25
附录C…………………………………………………………………………27
1设计课题任务、功能要求说明及方案介绍
1.1设计课题任务
设计一个具有特定功能的电子钟。
具有时间显示、报时等功能。
并有时间设定,时间调整功能。
1.2功能要求说明
设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
1.3设计课题总体方案介绍及工作原理说明
本电子钟主要由单片机、独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:
图1总体设计方案图
本电子钟的所有的软件、参数均存放在AT89S52的FlashROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
2设计课题硬件系统的设计
2.1设计课题硬件系统各模块功能简要介绍
本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。
(1)单片机最小系统模块:
包括低功耗、高性能CMOS8位微控制器AT89S52;复位电路;晶振电路。
本本模块AT89S52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。
通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。
这样就构成一个稳定的自激振荡器。
(2)输入模块:
本模块共用到了5个按键,1个电源开关,1个复位键,单片机运行期间,利用按键完成复位操作。
3个按键独立式键盘,S1键控制电子钟的启动\调整状态,S2键为加1键,S3键为减1键。
且S1、S2、S3任一键都独自连一个I/O(P1.0、P1.1、P1.2)口线,说明它们可以独立实现相应的电子钟功能。
(3)输出模块:
本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。
数码管用8个PNP三极管驱动。
(4)电源模块:
现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。
2.1设计课题电路原理图、PCB图、元器件布局图
电路原理图见附录A,PCB附录B,元器件布局图见附录C
2.2设计课题元器件清单
设计课题元器件清单如表1所示。
表1设计所用元器件清单
序号
名称、大小
数量
1
电阻200Ω
1个
2
电阻470Ω
24个
3
电阻1KΩ
3个
4
电阻4.7KΩ
1个
5
电容22μF
1个
6
电容33pF
2个
7
18B20
1个
8
AT89S52
1个
9
单排插
40个
11
四位一体共阳极数码管
2个
12
LED
9个
13
PNP
9个
14
四脚按钮
9个
15
六脚开关
1个
16
USB电源接口
1个
17
下载口
1个
18
晶振12MHz
1个
19
短路帽
2个
3设计课题软件系统的设计
3.1设计课题使用单片机资源的情况
设计课题使用单片机资源的情况如下:
P0口输出数码管段选信号,P3口输出数码管位选信号;晶振12MHz;调整选择键SET_KEY:
P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:
P1.1;按一次使选中位加1;减少键DEC_KEY:
P1.2;按一次使选中位减1;P2.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元;
50H用于控制秒基准时钟源的产生;51H清零秒寄存器;
52H清零分寄存器;53H清零时寄存器;
5FH用于秒个位;5EH用于秒十位;
5DH用于分个位;5CH用于分十位;
5BH用于时个位;5AH用于时十位;
54H用于控制调时闪烁;堆栈栈底:
70H。
3.2设计课题软件系统个模块功能简要介绍
本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。
主程序:
主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。
中断服务程序:
主要是用于电子钟的准确运行、数据输入过程中的闪烁。
键盘输入程序模块:
主要是用于确定按键并得到特定的键码值。
数码管及其驱动模块:
主要是用于驱动数码管及利用数码管显示时间。
延时模块:
程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。
3.3设计课题软件系统程序流程框图
系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程
序转变成十六进制程序语言,接着使用Proteus进行仿真,读出显示数据。
主程序流程框图如图1所示;加1子程序如图2所示;
中断服务程序程序如图3所示;
键盘扫描子程序框图如图4所示;
显示子程序框图如图5所示;
图2主程序流程框图
图3加1子程序流程框图
图4中断子程序流程框图
图5键盘扫描子程序流程框图
图6显示子程序流程框图
3.4设计课题软件系统程序清单
;***********************************************************************
;项目名称:
电子钟的设计
;设计者:
游天乐
;设计日期:
2011年12月24日
;***********************************************************************
;堆栈栈底7FH;
;***********************************************************************
;LED数码管显示器设定;
;P0.7---P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a
;P2.7---P2.0位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)
;显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)
;***********************************************************************
;独立式键盘设定;
;8个按键S2至S9分别依次接在P1.0至P1.7口线;
;***********************************************************************
;子程序;
;DISP(数码管显示子程序)
;DL(1毫秒延时子程序,晶振频率12MHz)
;***********************************************************************
;常数表格;
;TAB(共阳数码管字型代码表)
;DISBH(系统提示符P.字型代码序号表)
;***********************************************************************
;中断服务程序;
;***********************************************************************
;键功能程序;
;***********************************************************************
;数据存储器变量及常量单元定义;
;***********************************************************************
;伪指令定义区
;***********************************************************************
;系统起始程序区
ORG0000H
START:
LJMPMAIN
;***********************************************************************
;系统监控程序区
ORG000BH
LJMPPIT0
ORG0100H;
MAIN:
MOVSP,#7FH;确立堆栈区
MOVR0,#78H;显示缓冲区首址
MOVR7,#08H;显示位数
ML1:
MOV@R0,#00H;时钟显示缓冲单元清0
INCR0;
DJNZR7,ML1
MOV7AH,#12H
MOV7DH,#12H
MOVTMOD,#01H;设置T/C0工作方式1
MOVTL0,#0DCH;装载计数初值
MOVTH0,#0BH;
SETBEA;
SETBET0
CLRTR0;
MOV30H,#14H;计数溢出次数,即循环次数
ML0:
LCALLGEXING
LCALLDISP;调显示子程序
LCALLKEY;调键扫描子程序
ML3:
LCALLANJIANG;
ML2:
JNBTR0,PARK
LCALLDISP
FFT:
SJMPML0
;***********************************************************************
;独立式键盘设定;
ANJIANG:
JB20H.0,KEYAA;是KEYA键,转KEYAA执行
JB20H.1,KEYBB;是KEYB键,转KEYBB执行
JB20H.2,KEYCC;
JB20H.3,KEYDD
RET
;**********************************************************************
;键功能程序;
KEYAA:
MOVR0,#75H;给加一子程序赋初值
LCALLDADD1;时加一
MOV25H,75H;时的十位送位单元
MOV26H,74H;时的个位送位单元
JB25H.1,LOOP7;判断十位是否加到2
LJMPML2;
KEYBB:
MOVR0,#73H;给加一子程序赋初值
LCALLDADD1;分加一
MOV24H,73H;分的十位送位单元
JB24H.2,LOOP5;判断是否为6
LJMPML2
KEYCC:
SETBTR0;开始按键
LJMPML2;
KEYDD:
CLRTR0;停止按键
LJMPML2;
PARK:
MOVP2,#0FEH;显示P.
MOVP0,#0CH;
LCALLKEY
AJMPML3
LOOP5:
JB24H.1,LOOP6;判断是否为6,分到达60,转LOOP6分清零
LJMPML2;
LOOP6:
MOV73H,#00H;分清零
MOV72H,#00H;
LJMPML2
LOOP7:
JB26H.2,LOOP8;判断个位是否加到4,时到达24转LOOP8,让时清零
LJMPML2;
LOOP8:
MOV75H,#00H;时清零
MOV74H,#00H;
LJMPML2;
;**********************************************************************
;键盘扫描子程序
KEY:
LCALLKEYCHULI;调P1口数据处理子程序
JZEXIT;没有键按下,转返回
LCALLDISP;调显示子程序去抖动
LCALLDISP
LCALLKEYCHULI;调P1口数据处理子程序
JZEXIT;没有键按下,转返回
MOVB,20H;保存取反后的键值
KEYSF:
LCALLKEYCHULI;调P1口数据处理子程序
JZKEY1;键释放,转恢复键值
LCALLDISP;调显示子程序延时
LJMPKEYSF;等待键释放
KEY1:
MOV20H,B;键值送20H保存
EXIT:
RET
KEYCHULI:
PUSHPSW;保护现场
MOVP1,#0FFH;先向P1口写1
MOVA,P1;读P1口数据
CPLA;P1口数据取反
ANLA,#0FFH;
MOV20H,A
POPPSW;恢复现场
RET;子程序返回
;***********************************************************************
;常数表格区
;系统初始化后提示符“P.”字符代码表
DISBH:
DB10H,10H,10H,10H,10H,10H,10H,11H;提示符“P.”字符序号
;显示字符段选码表(共阳极代码)
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;0-8
DB90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH;9,A,B,C,D,E,F,灭,
;***********************************************************************
;中断服务程序;
PIT0:
PUSHPSW;现场保护
PUSHACC;
MOVA,#40H;
MOVTL0,#0DCH;装载计数初值
MOVTH0,#0BH
SETBPSW.3;选第1组通用寄存器
MOVA,30H;循环次数减1
DECA;
MOV30H,A;
JNZRET0;不满20次,转RET0返回
MOV30H,#14H;满20次,开始计时操作
MOVR0,#71H;秒十位显示缓冲单元地址
ACALLDADD1;秒加1
MOVA,R2;加1后秒值在R2中
XRLA,#60H;判是否到60秒
JNZRET0;不到,转RET0返回
ACALLCLR0;到60秒,秒显示缓冲单元清0
MOVR0,#73H;分十位显示缓冲单元地址
ACALLDADD1;分加1
MOVA,R2;加1后分值在R2中
XRLA,#60H;判是否到60分
JNZRET0;不到,转RET0返回
ACALLCLR0;到60分,分显示缓冲单元清0
MOVR0,#75H;时十位显示缓冲单元地址
ACALLDADD1;时加1
MOVA,R2;加1后时值在R2中
XRLA,#24H;判是否到24小时
JNZRET0;不到,转RET0返回
ACALLCLR0;
RET0:
POPACC;现场恢复
POPPSW;
RETI
;***********************************************************************
;子程序区;
;数码管显示子程序DISP
7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)
DISP:
PUSHDPH
PUSHDPL
PUSHACC
PUSHPSW
CLRRS1;改变当前寄存器组为组1
SETBRS0
MOVR1,#78H;显示缓冲存储单元首地址
MOVR2,#0FEH;从右至左显示
MOVR5,#08H;循环次数,即驱动数码管的位数
DISP1:
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A;送段控
MOVP2,R2;送位控
LCALLDL;延时1毫秒
MOVA,R2;位控码送A
RLA;获得新的位控码
MOVR2,A;保存新的位控码
INCR1;获得新的显示缓冲单元地址
DJNZR5,DISP1;循环没有结束则继续
DISP2:
POPPSW;恢复当前寄存器组的组号
POPACC
POPDPL
POPDPH
RET
;延时1ms子程序(晶振频率12MHz)DL
DL:
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 数字 电子钟 设计