《课程设计:基于单片机AT89C52数字时钟设计说明书.doc》由会员分享,可在线阅读,更多相关《课程设计:基于单片机AT89C52数字时钟设计说明书.doc(24页珍藏版)》请在三一办公上搜索。
1、xxxxxxxx大学课 程 设 计 任 务 书题目 数字时钟 专业、班级 自动化07-2 学号 01 姓名 xxx 主要内容、基本要求、主要参考资料等:主要内容:l 功能要求:24小时制时间显示。可随时使用键盘可调整时间,设置数据应能保存。整点报时,响1S,停1S,前四声为低音,最后一响结束时正好为整点。l 硬件要求:LED或LCD显示器、按键4个(计时、调时、+、-)、蜂鸣器等。上述内容为基本要求,可按照自己的理解增加功能使之更完善。基本要求:l 明确课程设计任务,复习与查阅有关资料。l 按要求对设计进行简要说明,总体设计方案,设计电路,使用计算机绘图,画出详细的电路接线图,列出元器件清单。
2、电路图要求工整、清楚、正确,并标明管脚。l 软件编程必须有流程图,程序必须加注释,各程序段的开始要注明该段功能和作用。l 写出体会和总结。要求使用B5打印稿或16开纸手写,不少于5000字。格式遵照学校规定。 主要参考资料:l “单片机与控制技术” 杨宁主编,北京航空航天大学出版社。l “单片机应用程序设计技术” (修订版) 周航慈主编,北京航空航天大学出版社。l “电子技术应用”、“电子设计应用”、“单片机与嵌入式系统应用”等期刊l (单片机和元器件资料)l www.ICBASE.com (元器件资料)l (电子产品世界)完 成 期 限: 2011年1月21日指导教师签名: 课程负责人签名:
3、 2011年 1 月 21 日目 录摘 要11. 数字时钟的构成21.1 数字时钟的构成21.2 设计方案论证21.2.1 主控制部分方案选择21.2.2 显示部分方案选择32. 主要硬件介绍32.1 AT89C5232.1.1 引脚结构及各端口介绍42.1.2 复位与时钟电路62.2 74HC24473. 硬件电路设计83.1设计框图与说明83.2 数码管显示驱动83.3 按键操作说明104. 系统程序的设计104.1 主程序104.2 显示子程序104.3 定时器T0中断服务程序114.4定时器T1中断服务程序124.5 调时功能程序134.6 秒表计时功能程序134.7 闹钟时间设定功能
4、程序144.8 性能分析145. 总 结14附录 电路原理图16附录 元器件清单17附录 单片机C源程序18参考资料22摘 要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而52单片机是各单片机中最为典型和最有代表性的一种,AT89C52单片机是一种带8K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器。本设计是基于MCS51系列单片机中AT89C52所设计的一种高精度、智能化的数字时钟,可以实现键盘按键与数字动态显示并可以用音乐倒数的数字时钟/计时器。本设计基于单片机技术原理,以单片机芯片AT89C52作为核心控制器,由单
5、片机控制数码管的显示,修改设置时间采用操作方便的按键开关,整点报时系统使用有源蜂鸣器,通过硬件电路制作以及软件程序的编制,设计制作一个简单的数字时钟/计时器,包括以下功能:时、分、秒24小时制输出显示、可随时使用按键实现时、分调整设置、具有秒表计时功能、能整点报时、定时闹铃等。1. 数字时钟的构成1.1 数字时钟的构成数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1MHz时间信号必须做到准确稳定,通常使用石英晶体振荡器电路构成数字时钟。(1)晶体振荡器电路晶体振荡器电路给数字时钟提供一个频率稳定准确的
6、12MHz的方波信号,可保证数字时钟的走时准确及稳定,不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。(2)时间计数器电路时间计数器电路由秒个位和秒十位计数器,分个位和分十位计数器构成。秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器。1.2 设计方案论证1.2.1 主控制部分方案选择采用AT89C52单片机芯片为核心控制器,实现时、分、秒同步显示,这种单片机具有足够的空余硬件资源,可以实现其他的功能扩展。为了使用的方便性,还可以通过设置按键来更改时间和计时。这正是利用了AT89C52单片机的多管脚功能性,4个8位并行I/O口,定时计数端口,中断端口,这使得操作起来更
7、加方便,通过软件可以随时的调整和更改,使得更加精确。1.2.2 显示部分方案选择可以通过数码管来显示时钟的时、分、秒,使用数码管的优点是直观清楚,适合用在光线较暗的地方,且成本较低,使用方便。为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等硬件,接口就相对复杂一些,又考虑到时钟显示只有6位,且系统没有其他复杂的处理任务,所以采用动态扫描法实现LED的显示。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光二极管的余辉和人眼视
8、觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示节省了I/O口。2. 主要硬件介绍2.1 AT89C52AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C52具有以下标准功能:8K字节闪存,256字节RAM,32位I/O接口线,看门狗定时器,2个数据指针,3
9、个16位定时器/计数器,1个6向量二级中断结构,全双工串口,片内晶振及时钟电路。另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.1.1 引脚结构及各端口介绍 VCC:电源GND:地图1 AT89C52引脚结构图P0口:P0口是一个8位漏极开路的双向I/O口,作为输出口,每位能驱动8个TTL逻辑电平,对P0端口写“1”时,引脚用做高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址
10、/数据复用。在这种模式下,P0口具有内部上拉电阻。在Flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作为定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。在Flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一
11、个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在Flash编程校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能
12、驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能使用。在Flash编程和校验时,P3口也能接收一些控制信号。RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA
13、端必须保持低电平(接 地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.1.2 复位与时钟电路复位是单片机的初始化操作,只要给RESET引脚加上两个机器周期以上的高电平信号,就可使AT89C52单片机复位。复位的主要功能是把程序计数器(PC)初始化为0000H,使单片机从0000H单元开始执行
14、程序,同时复位操作还对一些寄存器有影响。AT89C52的复位是由外部的复位电路来实现的,复位电路分为上电复位和按键复位两种方式。其电路如图2所示。图2 复位电路 单片机的时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常见的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。本设计选用内部时钟方式,AT89C52内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器,AT89C52时钟电路如图3所示。电路中电容取值通常为30Pf,由
15、于单片机要进行串行通信,为了获得准确的波特率,选择12MHz的晶振。图3 时钟电路2.2 74HC244 74HC244为八同相三态缓冲器/线驱动器。其功能为:如果输入的数据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。74HC244芯片的引脚排列如图4所示。图4 74HC244芯片的引脚排列芯片使用说明:74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1G和2G作为它们的选通工作信号。当1/OE和2/OE都为低电平时,输出端Y和输入端A状态相同;当1/OE和2/OE都为高电平时,输出呈高阻态。3. 硬件电路设计
16、3.1设计框图与说明此设计的硬件部分主要由主控制器单片机,显示电路,按键电路,蜂鸣器等构成。该电路采用AT89C52单片机最小化应用设计,采用共阳7段LED数码管显示器;P0口输出断码数据;P2.0P2.5口作列扫描输出;P1.0、P1.1、P1.2和P1.3口接4个按钮开关,用于调时及功能选择;P1.7端口接5V的小蜂鸣器,用于按键发音及定时提醒、整点报时提醒等;为了提供共阳数码管的列扫描驱动电压,用三极管9012作电源驱动输出;采用12MHz晶振,可提高秒计时的精确性。数字时钟/计时器电路系统的总体设计框图如图5所示。按键电路蜂鸣器6位LED显示器列驱动AT89C52 P0单片机控制器 P
17、2图5 硬件系统的总体设计框图3.2 数码管显示驱动本设计为了简化电路,降低成本,节省系统资源,将6位数码管并联在一起,由一片74HC244控制。由于所有的LED的段选码皆由一个74HC244并行输出口控制,因此,在每一瞬间,每位数码管会显示相同的字符。想要每位显示不同的字符,就必须采用扫描的方法,即在一瞬间只使用一位显示字符。在此瞬间,74HC244并行输出口输出相应字符段选码,而位选则控制I/O口在该显示送人选通电平,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC244具有锁存功能,而且串行输入段选码需要一定时间,因此不需要延时,即可形成视觉暂留效果。数码管点
18、亮条件:段选和位选。图6为位选电路,PNP型三极管的集电极接数码管的公共端,当P2口对应的引脚输出低电平时三极管导通,对应的数码管显示数据。这样,在同一时间,多位LED中只有选通的那1位显示出字符,而其他5位则是熄灭的,同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示相应的字符,而其他各位则是熄灭的,如此循环,就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻显示的,而在同一时刻,只有一个显示,其他各位熄灭,但由于LED的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多位同时点亮
19、的假象,达到同时显示的效果。图6 数码管位选电路3.3 按键操作说明(1)长按P1.0键进入分调整状态:分单元闪烁,按P1.0键加1,按P1.1键减1。再长按P1.0键进入时调整,时单元闪烁,加减调整同调分,再长按退出调整。(2)按下P1.1键进入秒表计时状态:按P1.2键秒表清0,再按P1.2键秒表启动,再按P1.2键暂停,再按P1.2键又清0,如此循环。按P1.1键退出秒表计时回到时钟显示。(3)按P1.3键进入设定闹钟状态:显示式样为00:00:,可进行分设定,按P1.2键,分加1,按P1.0键,分减1;再按P1.3键为时调整,显示式样为00:00:,按P1.2键,时加1,按P1.0键,
20、时减1;按P1.1键闹钟有效,显示式样变为00:00:0;再按P1.1键闹钟无效,显示式样又变为00:00:;按P1.3键调闹钟结束。(4)在闹钟时可按下P1.3键停闹,不按则闹铃1分钟后自行中止。4. 系统程序的设计4.1 主程序 本设计中计时采用定时器T0中断完成,秒表使用定时器T1中断完成。主程序循环调用显示子程序和查键子程序,当端口有按键按下时,转入相应功能程序。其主程序执行流程如图7所示。4.2 显示子程序时间显示子程序每次显示6个连续内存单元的十进制BCD码数据,首地址在调用显示子程序时先指定。内存中50H55H为闹钟定时单元,60H-5H为秒表计时单元,70H-75H为时钟显示单
21、元。由于采用7段共阳LED数码管动态扫描实现数据显示,所以显示十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。为了显示小数点及“-”、“A”等特殊字符,在显示时间和计时时应采用不同的显示子程序。初始化进入功能程序按时间鸣叫次数调用显示子程序开始键按下整点到YYNN图7 主程序流程图4.3 定时器T0中断服务程序定时器T0用于时间计时。定时溢出中断周期设为50ms,中断进入后先进行定时中断初值校正,当中断累计20次(即50ms*20=1s)时,对秒计数单元进行加1操作。时
22、钟计数单元地址分别在70H-71H(秒)、76H-77H(分)、78H-79H(时)中,最大计时值为23时59分59秒。7AH单元内存放“熄灭符”数据(#0AH),用于时间调整时的闪烁功能。在计数单元中,采用十进制BCD码计数,满十进位。T0中断计时程序流程图如图8所示Y保护现场定时初值校正加1s处理恢复现场,中断返回T0中断1s到?N图8 T0中断计时程序流程图4.4 定时器T1中断服务程序T1中断程序用于指示时间调整单元数字的闪亮或秒表计数,在时间调整状态下,每过0.3s左右,将对应调整单元的显示数据换成“熄灭符”数据(#0AH)。这样,在调整时间时,对应调整单元的显示数据会间隔闪亮。在作
23、秒表计时时,每10ms中断1次,计数单元加1,每100次为1s。秒表计数单元地址在60H-61H(10ms)、62H-63H(秒)、64H-65H(分)中,最大计数值为99分59.99秒。T1中断服务程序流程图如图9所示。秒表时钟调时闪烁保护现场加10ms处理闪烁处理恢复现场,中断返回T1中断秒表/闪烁图9 T1中断服务程序流程图4.5 调时功能程序调时功能程序的设计方法是:按下P1.0口按键,若按下时间小于1s,则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操作,此时计时器停止走动。当再按下P1.0口按键时,若按下时间小于0.5s,则时间加1分钟;若按下时间大于0.5s,则进
24、入小时调整状态。按下P1.1按键时,可进行减1调整。在小时调整状态下,当按键按下时间大于0.5s时,退出时间调整状态,时钟从0s开始计时。4.6 秒表计时功能程序在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表计时显示功能的转换,秒表中断计时程序启动,显示首地址改为60H,LED将显示秒表计时单元60H65H中的数据。按下P1.2口的按键,可实现秒表清0、秒表启动、秒表暂停功能;当再按下P1.1口按键时,关闭T1秒表中断计时,显示首地址又改为70H,恢复正常时间的显示功能。4.7 闹钟时间设定功能程序在正常时钟状态下,若按下P1.3口按键,则进入设定闹钟调分状态,显示首地址改为50H。
25、LED将显示50H55H中的闹钟设定时间,显示式样为00:00:,其中高二位代表时,低二位代表分,在定时闹钟时精确到分。按P1.2键,分加1;按P1.0键,分减1。若再按P1.3键,则进入闹钟时调整状态,显示式样为00:00:,按P1.2键,时加1;按P1.0键,时减1。按P1.1键,闹钟设定有效,显示式样变为00:00:0;再按P1.1键,闹钟无效,显示式样又变为00:00:。再按P1.3键,调整闹钟时间结束,恢复正常显示时间。4.8 性能分析按照设计程序分析,LED显示器动态扫描的频率约为167Hz,通过在Proteus软件上的仿真观察没有感觉到明显的闪烁。由于计时中断程序加了中断延时误差
26、处理,所以实际计时精度较高,可满足多种场合的应用需要。5. 总 结这次数字时钟的课程设计,从开始的方案选择到原理图的设计制作,程序的编写、仿真,在我们三个组员的共同努力以及老师和同学的帮助下,总算有了一定成果。虽然在设计中也出现了这样那样的错误,但我们通过查阅相关资料,同学之间的相互探讨,及使用相关软件的仿真,使得错误逐个得到修正。针对这次课程设计,可以说为我们做毕业设计起到铺垫的作用。虽然之前也有过好几次相关的课程设计了,但感觉这一次要较为系统,课题的要求也相对多一些,同时老师要求更严格。课程设计就是理论与实践的结合,不仅丰富课本的理论知识,同时也是学以致用,让我们平时所学的知识得到了一次施
27、展,加深了我对单片机知识在实际运用的理解,明白了理论知识在电子技术中的重要性。其中使我更进一步掌握51单片机、74HC244等芯片及设计中所用到的相关电子元器件的知识,特别是一些元器件的应用常识、元器件的特性等,也让我对Protel、Proteus、Keilc这些软件的操作使用更加熟练,这在理论学习中是无法体会到的。更重要的是自己在实际中思考问题、解决问题的能力得到了一定的锻炼,提高了我的动手实践能力,加深了知识点的学习。同时这次课程设计有答辩环节,这也是毕业答辩的一次演练从而使我们更加了解答辩流程,答辩方法等。在此,谢谢李老师在设计中的指导与帮助,以及帮助我设计的同学。附录 电路原理图 附录
28、 元器件清单元器件名称封装形式型号数量51单片机MCS51-40AT89C5218同相缓冲/驱动器74HC2441共阳数码管DIGITAL共阳极6电阻AXIAL-1.010K5电阻AXIAL-1.04.7K6电阻AXIAL-1.00.51K8极性电容RB.5/1.047uF1电容RAD-0.410uF1电容RAD-0.430pF2电容RAD-0.40.01uF1晶振XTAL12MHz1蜂鸣器BEEPBEEP1三极管PNP90127按键SW4BSW45附录 单片机C源程序/*/ 采用6位LED动态扫描时钟演示程序/ 使用Keil C51/*/*使用AT89C52单片机,12MHz晶振,P0口输出
29、段码,P2口作列扫描,用共阳LED数码管显示*/key0为调时位选用,key1为加1键,key2为减1键#include “reg51.h”#define char unsigned charchar code dis_711= 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82, 0xF8,0x80,0x90,0xff;/*共阳LED数码管表“0”,“1”,“2”,“3”, “4”,“5”,“6”,“7”,“8”,“9”,“不亮”*/char code scan_con8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/列扫描控制字char
30、 data timedata6=0x00, 0x00, 0x00, 0x00, 0x00, 0x00;/计时单元数据初值char data dis8=0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00;/显示单元数据char data con1s=0x00,con04s=0x00,con=0x00;/秒定时用sbit key0=p10;sbit key1=p11;sbit key2=p12;/*1ms延时函数*/delay1ms(int t)int i,j;for(i=0;it;i+) for(j=0;j=6) con=0; TR1=0;ET1=0;
31、TR0=1;ET0=1; if(con!=0) if(key1=0) delay1ms(10); while(key1=0); timedatacon+; if(timedatacon=10) timedatacon=0; discon=timedatacon;dis6=0x0a; /if(con!=0) if(key2=0) delay1ms(10);while(key2=0); if(timedatacon=0) timedatacon=0x09; else timedatacon-;discon=timedatacon;dis6=0x0a;EA=1;/*显示函数*/scan()char
32、k;for(k=0;k6;k+) P0=dis_disk;P2=scan_conk;delay1ms(1);P2=0xff; /*初始化函数*/clearmen()int i;for(i=0;ik=10) timedata0=0; timedata1+; if(timedata1=6) timedata1=0; timedata2+; if(timedata2=10) timedata2=0; timedata3+; if(timedata3=6) timedata3=0; timedata4+;timedata4=0; timedata5+; if(timedata5=2) if(timed
33、ata4=4) timedata4=0; timedata5=0; dis0= timedata0;dis1= timedata1;dis2= timedata2;dis3= timedata3;dis4= timedata4;dis5= timedata5;ET0=1;/*0.4秒闪烁中断函数*/void time_intt1(void) interrupt 3 EA=0;TR1=0;TH1=0x3C;TL1=0xB0;TR1=1; con04s+;if(con04s=8) con04s=0x00;dis7=discon;discon=dis6;dis6=dis7; EA=1;参考资料【1】张俊谟.单片机中高级教程原理与应用(第2版).北京:北京航空航天大学出版社,2006.【2】楼然苗,李光飞.单片机课程设计指导. 北京:北京航空航天大学出版社,2007.【3】求是科技.单片机典型模块设计实例导航.人民邮电出版社,2004.【4】杨宁.单片机与控制技术.北京航空航天大学出版社.【5】周航慈.单片机应用程序设计技术”(修订版).北京航空航天大学出版社.【6】“电子技术应用”、“电子设计应用”、“单片机与嵌入式系统应用”等期刊.【7】 (单片机和元器件资料)【8】www.ICBASE.com (元器件资料)【9】 (电子产品世界)