单片机课程设计数字电子钟设计_第1页
单片机课程设计数字电子钟设计_第2页
单片机课程设计数字电子钟设计_第3页
单片机课程设计数字电子钟设计_第4页
单片机课程设计数字电子钟设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机技术课程设计说明书 数 字 电 子 钟系 、 部: 电气与信息工程系 学生姓名: 游天乐 指导教师: 王韧 职称 副教授 专 业: 电子信息工程 班 级: 自本0902 完成时间: 2012-01-02 摘 要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位8段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的

2、时间进行蜂鸣报时。该电子钟设有四个按键S1、S2、S3和S4键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。关键词 电子钟;AT89S52;硬件设计;软件设计ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a sin

3、gle chip AT89S52 of ATMELs as its core to control The crystal oscillator clock,using of E-12MHz is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 8-segment LED digital tube (two four in one digital tube) displays hours, minut

4、es and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons S1, S2, S3 and S4 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, a

5、larm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.显示对应的拉丁字符的拼音字典 - 查看字典详细内容 Key words electronic clock;AT89S52;hardware design;software design目 录1 设计课题任务、功能要求说明及方案介绍11.1 设计课题任务 11.2 功能要求

6、说明 11.3 设计总体方案介绍及原理说明 12 设计课题硬件系统的设计 22.1 设计课题硬件系统各模块功能简要介绍 22.2 设计课题电路原理图、PCB图、元器件布局图22.3 设计课题元器件清单 33 设计课题软件系统的设计43.1 设计课题使用单片机资源的情况 43.2 设计课题软件系统各模块功能简要介绍 43.3 设计课题软件系统程序流程框图 53.4 设计课题软件系统程序清单 84 设计结论、仿真结果、误差分析、教学建议 194.1 设计课题的设计结论及使用说明194.2 设计课题的仿真结果194.3 设计课题的误差分析204.4 设计体会204.5 教学建议20结 束 语 21致

7、 谢 22参考文献 23附 录A 24附 录B 25附 录C 271 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。具有时间显示、报时等功能。并有时间设定,时间调整功能。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.3 设计课题总体方案介绍及工作原理说明本电子钟主要由单片机

8、、独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示: 图1 总体设计方案图本电子钟的所有的软件、参数均存放在AT89S52的Flash ROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。(1)单

9、片机最小系统模块:包括低功耗、高性能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)

10、口线,说明它们可以独立实现相应的电子钟功能。(3)输出模块:本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。数码管用8个PNP三极管驱动。(4)电源模块:现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。2.1设计课题电路原理图、PCB图、元器件布局图 电路原理图见附录A,PCB附录B,元器件布局图见附录C2.2 设计课题元器件清单设计课题元器件清单如表1所示。表1 设计所用元器件清单序号名称、大小数量1电阻2001个2电阻47024个3电阻1K

11、3个4电阻4.7K1个5电容22F1个6电容33pF2个718B201个8AT89S521个9单排插40个11四位一体共阳极数码管2个12LED9个13PNP9个14四脚按钮9个15六脚开关1个16USB电源接口1个17下载口1个18晶振12MHz1个19短路帽2个3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况设计课题使用单片机资源的情况如下:P0口输出数码管段选信号,P3口输出数码管位选信号;晶振12MHz;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:P1.1;按一次使选中位加1;减少键DEC_KEY:P1.2;按一次使选中位减

12、1;P2.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元; 50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;5EH 用于秒十位;5DH 用于分个位;5CH 用于分十位;5BH 用于时个位;5AH 用于时十位;54H 用于控制调时闪烁;堆栈栈底:70H。3.2 设计课题软件系统个模块功能简要介绍 本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。中断服务程序

13、:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键盘输入程序模块:主要是用于确定按键并得到特定的键码值。数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。3.3 设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteus 进行仿真,读出显示数据。主程序流程框图如图1所示;加1子程序如图2所示;中断服务程序程序如图3所示;键盘扫描子程序框图如图4所示;显示子程序框图如图5所示; 图2 主程序流程框图图3 加1子程序

14、流程框图图4 中断子程序流程框图图5 键盘扫描子程序流程框图图6 显示子程序流程框图3.4设计课题软件系统程序清单;*;项目名称:电子钟的设计;设计者:游天乐;设计日期:2011年12月24日;*;堆栈栈底7FH;*;LED数码管显示器设定;段控线,接LED的显示段dp,g,f,e,d,c,b,a位控线,从左至右(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个按键

15、S2至S9分别依次接在P1.0至P1.7口线; ;* ;子程序;DISP(数码管显示子程序);DL(1毫秒延时子程序,晶振频率12MHz);*;常数表格;TAB(共阳数码管字型代码表);DISBH(系统提示符P.字型代码序号表);*;中断服务程序;*;键功能程序;*;数据存储器变量及常量单元定义;*;伪指令定义区 ;*;系统起始程序区 ORG 0000H START: LJMP MAIN;*;系统监控程序区 ORG 000BH LJMP PIT0 ORG 0100H; MAIN: MOV SP, #7FH ;确立堆栈区 MOV R0, #78H ;显示缓冲区首址 MOV R7, #08H ;显

16、示位数 ML1: MOV R0, #00H ;时钟显示缓冲单元清0 INC R0; DJNZ R7, ML1 MOV 7AH, #12H MOV 7DH, #12H MOV TMOD, #01H ;设置T/C0工作方式1 MOV TL0, #0DCH ;装载计数初值 MOV TH0, #0BH; SETB EA; SETB ET0 CLR TR0; MOV 30H, #14H ;计数溢出次数,即循环次数 ML0: LCALL GEXING LCALL DISP ;调显示子程序 LCALL KEY ;调键扫描子程序ML3: LCALL ANJIANG; ML2: JNB TR0, PARK LC

17、ALL DISP FFT: SJMP ML0;*;独立式键盘设定; ANJIANG:JB 20H.0, KEYAA ;是KEYA键,转KEYAA执行 JB 20H.1, KEYBB ;是KEYB键,转KEYBB执行 JB 20H.2, KEYCC; JB 20H.3, KEYDD RET ;*;键功能程序;KEYAA: MOV R0, #75H ;给加一子程序赋初值 LCALL DADD1 ;时加一 MOV 25H, 75H ;时的十位送位单元 MOV 26H, 74H ;时的个位送位单元 JB 25H.1, LOOP7 ;判断十位是否加到2 LJMP ML2 ;KEYBB: MOV R0,

18、#73H ;给加一子程序赋初值 LCALL DADD1 ;分加一 MOV 24H, 73H ;分的十位送位单元 JB 24H.2, LOOP5 ;判断是否为6 LJMP ML2 KEYCC: SETB TR0 ;开始按键LJMP ML2 ;KEYDD: CLR TR0 ;停止按键 LJMP ML2 ; PARK : MOV P2, #0FEH ;显示P. MOV P0, #0CH ; LCALL KEY AJMP ML3 LOOP5: JB 24H.1, LOOP6 ;判断是否为6 ,分到达60,转LOOP6分清零LJMP ML2 ; LOOP6: MOV 73H, #00H ;分清零 MOV

19、 72H , #00H; LJMP ML2 LOOP7 : JB 26H.2, LOOP8 ;判断个位是否加到4 ,时到达24 转LOOP8,让时清零 LJMP ML2 ; LOOP8: MOV 75H, #00H ;时清零 MOV 74H, #00H; LJMP ML2 ; ;*;键盘扫描子程序KEY: LCALL KEYCHULI ;调P1口数据处理子程序 JZ EXIT ;没有键按下,转返回 LCALL DISP ;调显示子程序去抖动 LCALL DISP LCALL KEYCHULI ;调P1口数据处理子程序 JZ EXIT ;没有键按下,转返回 MOV B, 20H ;保存取反后的键

20、值 KEYSF: LCALL KEYCHULI ;调P1口数据处理子程序 JZ KEY1 ;键释放,转恢复键值 LCALL DISP ;调显示子程序延时 LJMP KEYSF ;等待键释放 KEY1: MOV 20H, B ;键值送20H保存 EXIT: RET KEYCHULI: PUSH PSW ;保护现场 MOV P1 ,#0FFH ;先向P1口写1 MOV A, P1 ;读P1口数据 CPL A ;P1口数据取反 ANL A, #0FFH; MOV 20H , A POP PSW ;恢复现场 RET ;子程序返回;*;常数表格区;系统初始化后提示符“P.”字符代码表DISBH:DB 1

21、0H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序号;显示字符段选码表(共阳极代码)TAB:DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH ;9,A,B,C,D,E,F,灭,;*;中断服务程序;PIT0: PUSH PSW ;现场保护 PUSH ACC; MOV A, #40H; MOV TL0, #0DCH ;装载计数初值 MOV TH0, #0BH SETB PSW.3 ;选第1组通用寄存器 MOV A, 30H

22、 ;循环次数减1 DEC A; MOV 30H, A; JNZ RET0 ;不满20次,转RET0返回MOV 30H, #14H ;满20次,开始计时操作 MOV R0, #71H ;秒十位显示缓冲单元地址 ACALL DADD1 ;秒加1 MOV A, R2 ;加1后秒值在R2中 XRL A, #60H ;判是否到60秒 JNZ RET0 ;不到,转RET0返回 ACALL CLR0 ;到60秒,秒显示缓冲单元清0 MOV R0, #73H ;分十位显示缓冲单元地址 ACALL DADD1 ;分加1 MOV A, R2 ;加1后分值在R2中 XRL A, #60H ;判是否到60分 JNZ

23、RET0 ;不到,转RET0返回 ACALL CLR0 ;到60分,分显示缓冲单元清0 MOV R0, #75H ;时十位显示缓冲单元地址 ACALL DADD1 ;时加1 MOV A, R2 ;加1后时值在R2中 XRL A, #24H ;判是否到24小时 JNZ RET0 ;不到,转RET0返回 ACALL CLR0; RET0: POP ACC ;现场恢复 POP PSW; RETI;*;子程序区;数码管显示子程序DISP7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0) DISP: PUSHD

24、PH PUSHDPL PUSHACC PUSHPSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲存储单元首地址 MOV R2, #0FEH ;从右至左显示 MOV R5, #08H ;循环次数,即驱动数码管的位数 DISP1: MOV A, R1 MOVDPTR, #TAB MOVC A, A+DPTR MOVP0, A;送段控 MOVP2, R2 ;送位控 LCALLDL ;延时1毫秒 MOVA, R2 ;位控码送A RLA;获得新的位控码 MOV R2, A;保存新的位控码 INCR1;获得新的显示缓冲单元地址 DJNZ R5, DIS

25、P1;循环没有结束则继续DISP2: POPPSW ;恢复当前寄存器组的组号 POPACC POPDPL POPDPH RET;延时1ms子程序(晶振频率12MHz)DL DL: MOVR7, #02HDL1:MOV R6, #0FFHDL2:DJNZ R6, DL2DJNZ R7, DL1RET;*;更新缓冲区内容子程序GEXING:MOV 78H, 70H MOV 79H, 71H MOV 7BH, 72H MOV 7CH, 73H MOV 7EH, 74H MOV 7FH, 75H RET ;*;加一子程序 DADD1: MOV A, R0 ;十位数送A DEC R0 SWAP A ;十

26、位数占高4位 ORL A, R0 ;个位数占低4位 ADD A, #01H ;加1 DA A ;十进制调整 MOV R2, A ;全值暂存R2中 ANL A, #0FH ;屏蔽十位数,取出个位数 MOV R0, A ;个位值送显示缓冲单元 MOV A, R2; INC R0; ANL A, #0F0H ;屏蔽个位数,取出十位数 SWAP A ;使十位数占低4位 MOV R0, A ;十位值送显示缓冲单元 RET ;子程序返回;* CLR0: CLR A MOV R0, A ;十位数缓冲单元清0 DEC R0 MOV R0, A ;个位数缓冲单元清0 RET END4 设计结论、仿真结果、误差分

27、析、教学建议4.1 设计课题的设计结论及使用说明本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中S1为启动/选择调整位置,S2为加控制键 S3为减控制键,当整点时间到时,蜂鸣器报警。这样的结果与设计要求完全相符,本设计成功。完成了设计任务。4.2 设计课题的仿真结果在Proteus ISIS的Debug菜单中

28、选择Execute,运行程序,系统仿真结果如图4.1与4.2所示。实现功能:可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。 (1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按S2、S3键均无效,按S1键有效,进入运行状态; (2)、运行状态,在此状态下,按S2、S3键均无效,只有按S1键有效,按下S1键后,退出运行状态,进入调整状态; (3)、调整状态,按S1键进入时、分、秒的闪烁,在此状态下,按S2(+1键)、S3(-1键)键均有效;调整结束后必须按S1键,即可退出调整状态,进入运行状态。在调整状态时长按S2、S3时可以连加及连减。时间显示格式为:时-分-秒; 图7 “P.”运行状态仿真图8 时钟运行状态仿真4.3 设计课题的误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到11.0592MHz的晶振,计算是满20次为一秒

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论