当前位置:文档之家› 基于单片机的时钟控制器设计

基于单片机的时钟控制器设计

时钟控制器设计任务书1.设计目的与要求设计出一个用于数字时钟的控制器,准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:(1)显示:可以显示时、分和秒(2)调时功能:时(0-24)、分和秒(0-60)可以连续可调(3)时间日误差< 2秒(4)增加整点报时功能(5)增加闹钟任意设定功能2.设计容(1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;(5)PCB文件生成与打印输出;3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。

4.答辩在规定时间,完成叙述并回答问题。

目录1.引言 (1)2 总体设计方案 (1)2.1 设计思路 (1)2.2 方案确立 (1)2.3 设计方框图 (2)3 设计原理分析 (2)3.1 系统硬件电路设计 (2)3.2 主控器件AT89S51 (2)3.3 译码器74HC245 (3)3.4 显示电路…………………………………………………………………3-3.5 按键电路 (4)3.6 复位电路 (4)3.7 蜂鸣电路 (5)3.8 时钟电路 (5)3.9 总体原理图 (5)3.10程序框图 (5)4 结束语 (7)参考文献 (8)附录1 电路总原理图 (9)附录2 总程序 (10)基于单片机控制的时钟控制器摘要:本设计以Atmel公司的AT89S51单片机为控制系统的核心,模型采用单片机作为主控制器,以汇编语言为程序设计的基础,设计的一个用两个四位一体数码管串口显示的时钟控制电路,包含了时钟控制电路的基本功能:数码显示,时间调整,闹钟设定,秒表显示等,按照二十四小时循环,具有调节方便,简单实用,可靠性强的优点,有很高的利用价值。

关键词:单片机AT89C51 74LS245 数码管1 引言数字钟是采用数字电路实现对时、分、秒及数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

为了适应时代的潮流,本设计采用AT89S51单片机为核心,使得计时的精度有了很大的提高,而且调节也变的简单实用,采用数字显示也跟加的直观方便。

2 总体设计方案2.1 设计思路本设计采用AT89S51单片机为控制核心,产生精确的时钟震荡,来控制数码管显示电路来进行数码显示,外围电路主要有复位电路,震荡电路,按键电路,显示电路,蜂鸣电路组成;复位电路可及时的对单片机进行复位,恢复到初始的状态,震荡电路主要用于计数,定时,产生合适的波特率,按键电路主要是给人们提供一个合适的人机对话的界面,方便人们进行实时的调节,显示电路主要用于数码的显示,蜂鸣电路用于闹铃设定等辅助功能。

2.2 方案确立本设计主要有包含了时钟电路,按键扫描,显示电路等几个部分。

由单片机实现时钟功能单片机部具有定时器,可方便实现定时功能。

按键电路:键盘分为矩阵式键盘扫描电路和独立式按键电路。

矩阵式键盘电路,此类键盘是采用行列扫描方式,优点是当按键较多时可以降低占用单片机的I/O口数目,缺点是电路复杂且会加大编程难度。

独立按键电路,每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。

缺点是当按键较多时占用单片机的I/O数目较多,优点是电路设计简单,且编程极其容易。

由于该系统采用了常规钟表式的校对方式,用键较少,系统资源足够用,故采用了独立按键电路。

显示电路分为:静态显示法与动态显示法,由于静态显示法需要数据锁存器等硬件,接口复杂一些,又考虑到时钟显示只有6位,且系统没有其它复杂的处理任务,所以决定采用动态显示法。

2.3 硬件设计方框图电路的设计以AT89S51单片机为核心,包含了按键电路,复位电路,震荡电路,数码显示电路,整点报时电路等一系列独立环节,下面介绍一下电路设计过程中的总体框图,如图1所示。

图1 时钟电路总体框图3 设计原理分析用AT89S51单片机控制的数字时钟电路,外接震荡电路,按键电路,显示电路,蜂鸣电路等:用单片机电路P0口来输出7段码数据,P2.0~P2.5口作列扫描输出;按键用P1口控制,分别用于调节时,分,以及秒表和闹钟的设定;P1.7口接5V的小蜂鸣器,用于按键发音以及定时提醒,整点报时提醒等;采用74HC245作为数码管的段码驱动,为了提供共阳LED数码管的列扫描驱动电压,用三极管8550做电源的驱动输出;采用12MHZ晶振,可提高秒计时的精确性;在软件设计方面,应完成时钟控制电路的各项要求。

3.1 系统硬件电路设计系统硬件电路主要组成:主控制器AT89S52、译码器74HC245、显示电路、蜂鸣器电路,复位电路时钟电路。

3.2 主控器件AT89C51AT89S51是一款低功耗,高性能CMOS 8位单片机,片含4k Bytes ISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。

管脚如图2所示。

图2 DIP-40封装89C51引脚图3.3译码器74LS24574LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。

74LS245还具有双向三态功能,既可以输出,也可以输入数据。

当89S51单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。

当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。

P0口与74LS245输入端相连,E端接地,保证数据线畅通。

管脚如图3所示。

图3 74LS245管脚图3.4 显示电路LED显示块是由发光二极管显示字段的显示器件。

这种显示块有共阴与共阳两种结构。

共阴极LED显示块的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,发光二极管点亮。

共阳极LED显示块的放光二极管阳极并接。

显示块与单片机接口非常容易,只要将一个8位并行输出口语显示块的发光二极管引脚相连即可(AT89S51需要加上拉电阻)。

此次电路采用2个4位共阳LED数码管,从P0口输出段码,列扫描用P2.0~P2.7来实现。

如图4所示。

图4 74LS245驱动段码显示电路图3.5 按键电路按键调节电路有四个独立的按键接到P1口的P1.0—P1.3端口,控制着电路的调时,调分以及秒表功能和闹钟的设定。

具体电路如下图5所示。

图5 按键电路图3.6 复位电路AT89S51单片机的复位电路,如图5所示中左边电路。

在RESET输入端出现高电平时实现复位和初始化。

在震荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期的高电平。

在CPU在第二个机器周期执行部复位操作,以后每一个机器周期重复一次,直至RST端电平变低复位期间不产生ALE信号。

当RST引脚返回低电平以后,CPU从0地址开始执行程序。

3.7 蜂鸣电路蜂鸣器是广泛应用于各种电子产品的一种元器件,它用于提示、报警、音乐等许多应用场合。

三极管8550作蜂鸣器的驱动,增加了蜂鸣器的驱动电流。

蜂鸣器的正极性的一端接到三极管的集电极,另一端连接到地,三极管的基极由单片机的P1.7管脚控制,底电平时蜂鸣器响,高电平时不响。

另外,蜂鸣器的声音大小及音调可以通过调整P1.7管脚的置低时间及输出的波形进行控制。

蜂鸣器的连接电路的原理图如图5所示。

3.8 时钟电路AT89S51部片有一个由反相放大器构成的振荡电路,XTAL1和XTAL2分别为震荡电路的输入端和输出端。

时钟可以由部方式产生或外部方式产生。

在XTAL1和XTAL2引脚上外接定时元件,部震荡电路就产生自己震荡。

定时元件通常采用石英晶体和电容组成的并联谐振回路。

外部方式的时钟电路,XTAL1接地,XTAL2接外部振荡器。

一般要求输入方波信号的频率低于33Mhz。

本文设计的系统采用的是部方式的时钟电路。

如图6所示。

图6 时钟电路原理图3.9 总体原理图见附录13.10程序框图主程序如图7所示首先是初始化部分,主要是计时单元清零,中断初始化,启动定时器工作,然后是调用显示子程序,接着是判断有无按键。

无按键则回到调用显示子程序处;有按键,则执行按键处理子程序,执行完后回到调用显示子程序处,重复循环。

定时器T0中断如图8所示图7 主程序流程图图8 中断程序流程图4 结束语三周实习很快就过去了,通过自行设计、焊接和调试一个单片机系统,我熟悉了单片机基本的开发流程和单片机的深入学习。

在完成这个设计的同时,我复习了书本上的许多相关容,受益匪浅。

因此我在获得理论知识的同时,实践中也获得了许多书本上没有的东西。

提高了调试以及查找并解决问题的能力,我深入了解了焊普通元件与电路元件的技巧、数字时钟的工作原理及其它各电路元件的作用等。

这些知识不仅在课堂上有效,对以后的学习工作有很大的指导意义,在日常生活中更是有着现实意义;也对自己的动手能力是个很大的锻炼。

实践出真知,纵观古今,所有发明创造无一不是在实践中得到检验的。

没有足够的动手能力,就奢谈在未来的科研尤其是实验研究中有所成就。

最后,感老师对我们这次实习的辛勤指导和帮助。

参考文献[1] 光飞,楼然苗,佳文编著.单片机课程设计实例指导.:航空航天大学. 2004[2] 黄仁欣主编.单片机原理及应用技术. :清华大学. 2005.[3] 高吉祥主编.电子技术基础实验与课程设计.:电子工业. 2002[4] 肖玲妮.印刷电路板设计教程.[M].:清华大学,2003.[5] 康华光.电子技术基础.[M].;高等教育,2006.[6] 余小平等.电子系统设计.[M].:航空航天大学,2007.附录1:电路总原理图附录2:总程序ORG 0000HLJMP STARTORG 000BHLJMP INIT0START: MOV 70H,#0MOV 71H,#0MOV 72H,#0MOV 73H,#0MOV 74H,#0MOV 75H,#0MOV 76H,#0MOV 77H,#0MOV 78H,#0MOV 79H,#0MOV 7AH,#0MOV 7BH,#0MOV 7CH,#0MOV 7DH,#0MOV 7EH,#0MOV 72H,#0AH ;对连字符进行装值MOV 75H,#0AHMOV 60H,#0MOV 61H,#0MOV 63H,#0MOV 64H,#0CLR P1.7MOV TMOD,#01H ;选择定时器/计数器T0的方式1MOV TL0,#0B0H ;对低位赋初值MOV TH0,#03CH ;高位赋初值SETB EASETB ET0SETB TR0START1: LCALL SCANLCALL KEYSCANSJMP START1DL1MS: MOV R6,#14H ;延时1子程序DL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET DELAY: MOV R6,#10D1: MOV R7,#30DJNZ R7,$DJNZ R6,D1RETDL20MS: ACALL SCAN ;延时20ms子程序ACALL SCANACALL SCANRET;整点报时将秒和分的单元与零比较SCAN: MOV A,7EH ;7F单元的容为0CJNE A,79H,NEXTMOV A,7DHCJNE A,7AH,NEXTSETB P1.7AJMP NEXT1NEXT: CLR P1.7NEXT1:MOV A,79HCJNE A,#0,NEXT2MOV A,78HCJNE A,#0,NEXT2SETB P1.7LJMP NEXT3NEXT2:CLR P1.7;数码管总显示程序开始分两部分;校正时间和数码管正常工作的显示程序NEXT3: MOV A,78HMOV B,#0AHDIV AB ;时间秒的十位送给A,时间秒的个位送BMOV 71H,A ;时间秒要显示的十位MOV 70H,B ;时间秒要显示的个位MOV A,79HMOV B,#0AHDIV AB ;时间分的十位送给A,时间分的个位送BMOV 74H,A ;时间分要显示的十位送地址MOV 73H,B ;时间分要显示的个位送地址MOV A,7AHMOV B,#0AHDIV AB ;时间时的十位送给A,时间时的个位送BMOV 77H,A ;时间时显示的十位送地址MOV 76H,B ;时间时要显示的个位送地址MOV R1,#70HMOV R5,#0FEHMOV R3,#09HSCAN1: MOV A,R5 ;数码管正常工作的显示程序MOV P2,AMOV A,R1MOV DPTR,#TABMOVC A,A+DPTR ;对字段表取值显示MOV P0,AMOV A,R5LCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#00HMOV P0,#00HJB P1.3,QQLCALL DL1MSJB P1.3,QQHERE: JNB P1.3,HERESJMP LOOP1QQ: LJMP LASTLOOP1:JB P1.1,LOOP2LCALL DL1MSJB P1.1,LOOP2HERE1:JNB P1.1,HERE1INC 7DHMOV A,7DHCJNE A,#18H,LOOP2MOV 7DH,#00H LOOP2:JB P1.2,LOOP3LCALL DL1MSJB P1.2,LASTHERE3:JNB P1.2,HERE3INC 7EHMOV A,7EHCJNE A,#3CH,LOOP3MOV 7EH,#00H;调制闹铃的时间显示LOOP3: MOV DPTR,#TAB MOV A,7DHMOV B,#10DIV ABMOV 64H,AMOV 63H,BMOV A,7EHMOV B,#10DIV ABMOV 61H,AMOV 60H,BMOV P2,#0F7HMOV A,60HMOVC A,A+DPTRMOV P0,ALCALL DELAYMOV P2,#0EFHMOV A,61HMOVC A,A+DPTRMOV P0,ALCALL DELAYMOV P2,#0DFHMOV P0,#40HLCALL DELAYMOV P2,#0BFHMOV A,63HMOVC A,A+DPTRMOV P0,ALCALL DELAYMOV P2,#07FHMOV A,64HMOVC A,A+DPTRMOV P0,ALCALL DELAYJB P1.3,LOOP4LCALL DL1MSJB P1.3,LOOP4HERE4:JNB P1.3,HERE4LJMP LASTLOOP4:LJMP LOOP1LAST: RET ;"0~9"和"-"的字段表TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7 FH,6FH,40H;定时/计数器T0中断程序INIT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTT0;50ms是否到20次,没有到就继续执行50ms的延时MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0;一秒的延时是否计到60次,没有就继续执行MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0 ;60分钟的延时是否计到24次,没有就继续执行程序MOV 7AH,#00OUTT0: SETB ET0 ;启动定时器T0POP PSWPOP ACCRETI;按键处理程序KEYSCAN:CLR EAJNB P1.0,KEYSCAN0 ;P1.0有按键按下则跳转到子程序JNB P1.1,KEYSCAN1 ;P1.1有按键按下则跳转到子程序JNB P1.2,KEYSCAN2 ;P1.2有按键按下则跳转到子程序KEYOUT: SETB EARETKEYSCAN0:LCALL DL20MS ;20ms的延时消抖JB P1.0,KEYOUTWAIT0: JNB P1.0,WAIT0;判断按键是否松手,松手就往下执行程序INC 7CHMOV A,7CHCLR ET0CLR TR0CJNE A,#04H,KEYOUT ;按下第一次和第二次对时、分选定MOV 7CH,#00 ;按下第三次时就启动计时SETB ET0SETB TR0LJMP KEYOUTKEYSCAN1:LCALL DL20MS ;按键加一的程序JB P1.1,KEYOUTWAIT1: JNB P1.1,WAIT1MOV A,7CHCJNE A,#03H,KSCAN11 ;如果功能键按下则对时加一调整INC 78HMOV A,78HCJNE A,#60,KEYOUTMOV 78H,#00LJMP KEYOUTKSCAN11: CJNE A,#02H,KSCAN12INC 79HMOV A,79HCJNE A,#60,KEYOUT ;如果加到60则清零MOV 79H,#00LJMP KEYOUTKSCAN12:CJNE A,#01H,KEYOUTINC 7AH;如果功能键是按下第二次则对分进行加一调整MOV A,7AHCJNE A,#18H,KEYOUTMOV 7AH,#00LJMP KEYOUTKEYSCAN2:LCALL DL20MS ;延时消抖程序JB P1.2,KEYOUTWAIT2: JNB P1.2,WAIT2 ;判断是否放开按键MOV A,7CH;如果功能键是按下第一次对时进行减一CJNE A,#03H,KSCAN22DEC 78HMOV A,78HCJNE A,#00H,KEYOUTMOV 78H,#3BHLJMP KEYOUTKSCAN22:CJNE A,#02H,KSCAN23DEC 79HMOV A,79HCJNE A,#00H,KEYOUT1MOV 79H,#3BHLJMP KEYOUTKSCAN23:CJNE A,#01H,KEYOUT1DEC 7AHMOV A,7AH;如果功能键是按下第二次则对分进行减一CJNE A,#00H,KEYOUT1MOV 7AH,#17HLJMP KEYOUT1KEYOUT1: SETB EARETEND。

相关主题