单片机课程设计(论文)基于单片机的电子计时器设计.doc
课程设计(论文)题 目 名 称 基于单片机的电子计时器设计 课 程 名 称 单片机原理及其在电气测控学科中的应用 学 生 姓 名 学 号 系 、专 业 电气工程系 09电气测控类 指 导 教 师 2011年 6月30日邵阳学院课程设计(论文)任务书年级专业09电气测控学生姓名学 号题目名称基于单片机的电子计时器设计设计时间2011年6月20日2011年7月1日课程名称单片机原理及其在电气测控学科中的应用课程编号121200105设计地点数字控制与PLC实验室(305)一、 课程设计(论文)目的课程设计是在校学生素质教育的重要环节,是理论与实践相结合的桥梁和纽带。单片机课程设计,要求学生更多的完成软硬结合的动手实践方案,解决目前学生课程设计过程中普遍存在的缺乏动手能力的现象。单片机课程设计是继电子技术、和单片机原理与应用课程之后开出的实践环节课程,其目的和任务是训练学生综合运用已学课程“电子技术基础”、“单片机原理及应用”的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计、调试和应用电路设计、分析及调试检测。二、 已知技术参数和条件1、利用89C51设计一时钟,要求具有计时,设置闹钟时间,带秒表功能,可调时等功能;2、89C51系列单片机;3、电源、电阻,导线,LED7段数码显示,发光二极管等;4、KEIL 软件;Wave软件;Proteus仿真软件;5、THKSCM-1型单片机实验系统。三、 任务和要求一、 任务和要求设计简易数字电子计时器,要求如下:1. 显示时、分、秒。2. 可以正确计时。可在以上基础上任意发挥。注:1此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;2此表1式3份,学生、指导教师、教研室各1份。四、参考资料和现有基础条件(包括实验室、主要仪器设备等)1、单片机课程设计指导,中南大学出版社,张一斌等2009年9月2、单片机实验与实践教程,北京航空航天大学出版社,何立民等2004年7月3、THKSCM-1型单片机实验系统实验指导书、KEIL 软件,WAVE 软件4、数字控制与PLC实验室”THKSCM-1型单片机实验系统”。五、进度安排2011年6月20日-21日:收集和课程设计有关的资料,熟悉课题任务何要求2011年6月22日:总体方案设计2011年6月23日-24日:硬件电路设计2011年6月25日-26日:软件设计2011年6月27日-29日:系统调试改进2011年6月30日:整理书写设计说明书2011年7月1日:答辩并考核六、教研室审批意见教研室主任(签名): 年 月 日七|、主管教学主任意见 主管主任(签名): 年 月 日八、备注指导教师(签字): 学生(签字):邵阳学院课程设计(论文)评阅表学生姓名 学 号 0941201222 系 电气工程系 专业班级 电本三班 题目名称 基于单片机的电子计时器设计 课程名称 单片机原理及其在电气测控学科中的应用 一、学生自我总结通过对单片机课程设计的学习和设计,使我了解到单片机这门课程的深奥,我们应该更加努力的去学习和实践我们所学的知识,加强我们的动手能力,并能提升我们将来在学习工作中遇到单片机问题的解决能力。在这里感谢各位老师给我们设计单片机这次实践机会。 学生签名: 年 月 日二、指导教师评定评分项目平时成绩论文答辩综合成绩权 重304030单项成绩指导教师评语: 指导教师(签名): 年 月 日注:1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。摘 要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。关键词:单片机;AT89C51;电子时钟;数码管目 录摘 要I1 绪论12 系统概述及总体设计22.1系统概述22.2总体设计23 硬件设计33.1系统工作原理33.2 单片机的复位电路33.3单片机的晶振电路43.4按键电路43.5 时钟显示电路54 软件设计65 系统仿真调试说明116 仿真结果与分析12参考文献13致 谢14附录(电路原理图)15附录(程序清单)161 绪论电子计时器,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子计时器,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。电子计时器电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。本文主要介绍用单片机内部的定时/计数器来实现电子计时器的方法,本设计由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子计时器。2 系统概述及总体设计2.1系统概述 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机具有体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。电子计时器是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到电子钟。在城市的主要营业场所、车站、码头等公共场所使用的电子计时器已经成为一种时尚。但目前市场上各式各样的电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点。因此有必要对数字电子钟进行改进。2.2总体设计 微处理器的设计选择89C51;显示电路的设计选用数码显示,将数码显示与驱动集成在一块芯片上;校时电路的设计,通过两个按钮来控制,一个使时钟加一,另一个使分钟加一;闹铃的设计,软件方面需通过不断比较当前时间与闹铃设定的时间来实现闹铃;硬件方面,同样需要用到一个按钮来设置闹铃时间以及停闹铃;秒表的设计,硬件通过一个按钮控制秒表的开、停,软件利用外部中断0来实现停秒表。还有一些其他控制电路如复位电路、时钟电路等。通过这些控制电路的连接构成了完整的电路。本系统是一个多功能电子计时器,数码管显示时间,具有通过多个按钮对对应的时、分进行加一调节,设闹钟,开、停秒表以及复位。3 硬件设计3.1系统工作原理 AT89C518 位LED显 示 器LED显示器段码驱动5个独立式按钮按 钮LED显示器位码驱动按键复位蜂鸣器图3.1 系统结构图对定时器T0设置一个50ms的脉冲,设定一计数功能的单元地址20H,其内容是20。通过当20H中值减为0时秒加一。当秒、分值为60时,该位清零,且高位加一。该系统是通过P2口控制时、分、秒的位的选择,通过P0口由74LS245锁存器实现时、分、秒具体的09的显示。分、时的调节是通过P1.1、P1.2口两个按钮,每一个按钮按下,对应端口由高电平变为低电平,程序进入一个相对应的加一程序。进入闹铃设置是通过 P3.3口按钮来控制的,闹铃的调整要调用闹铃的时间调整程序,闹铃响起后要停止闹铃,只要按下P3.3口的按钮则外部中断1来申请中断来实现停闹铃。按下P3.2口的按钮则开启秒表,再按一下按钮则由外部中断0申请中断来停止秒表。P1.0口接按钮实现清零功能。按下后,时钟从零时零分零秒显示。复位电路我们采用了上电复位和手动复位相结合的形式,设置了一个复位按钮。3.2 单片机的复位电路我们采用上电复位和手动复位相结合的方式。图3.2 复位电路3.3单片机的晶振电路在晶振两侧各接一个30pf的瓷片电容接地,用来削减偕波对电路的稳定性的影响。图3.3 单片机的晶振电路3.4按键电路按下键后对应的端口被拉成低电平以实相应的功能。其中的秒表按键以及闹钟按键功能比较强大,他们须分别实现秒表的开、停和设置闹钟时间的进入以及停止闹铃。图3.4 电子时钟的按键电路3.5 时钟显示电路我们选用了8个共阴极的数码管来显示时钟。因为段选端需要接一个锁存器以稳定显示,而P0口的驱动能力最大,所以我们选P0口为段选段。P2口为位选。不选P3口是因为我们要用外部中断0、1来实现停秒表和停闹铃的功能。图3.5 时钟显示电路4 软件设计程序流程YYN响闹铃NY闹铃比较,(18H)=1Y设置各中断程序入口地址设置初始时钟,(19H)=1T0初始化开中断,启动T0显示时钟按键扫描有键按下否外部中断1是否响应停闹铃功能程序N开始 图4.1 主程序流程图程序开始后,设置各中断路口的首地址,然后开启中断,启动后将其与闹钟设定数值相比较,若没有达到闹钟设定数值则显示时钟然后再按键扫描,并执行相应的功能程序。若达到了闹钟设定数值,则向闹钟。当外部中断相应时,闹钟停止。开始显示时钟P1.1是否按下(调分)显示P1.2否按下(调时)显示闹铃比较处调时钟 Y N 回到闹铃比较处图4.2 调时钟流程图当按下P1.1或P1.2时,分别对分和时加一,然后再显示,当所调时与闹钟时间比较没有达到时,则回到闹钟比较处。开始 设置闹钟时间 显示原闹钟时间显示,(19H)=0P1.1是否按下(调分)显示,(19H)=0P1.2是否按下(调时)是否退出? 回到闹铃比较处闹铃比较处图4. 设闹钟流程图开始对闹钟时间进行调节,按P1.1和P1.2分别对分钟和时钟加一,查看显示值,查看(19H)中的值是否为零,再判断是否退出回到闹铃比较处。重置初值,启动下一个50ms(20H)=0?秒单元加1,(20H)=14H秒单元=60?分单元加1,秒单元清零分单元=60?时单元加1,分单元清零时单元=24?时、分、秒单元清零中断返回进入主时钟中断 开始N Y N N Y N Y Y 图4. 主时钟计时流程图本程序是主时钟中断程序,首先对其设定初值,查看(20H)中的值是否为零,为零时秒单位加一,当秒为60时,分加一。当分为60时,时加一。当时为24时,对秒分时都清零。然后返回中断。5 系统仿真调试说明在WAVE中编好一个功能程序,编译无误后,添加到PROTEUS仿真软件中的AT89C51芯片中,保存,运行,观察是否得到想要的结果,如果不是则回到WAVE中改进程序,再编译、仿真,直至所有功能均可实现。 显示时钟功能,要能显示时、分、秒,并能显示之间的分隔符。秒表功能,按下相应按钮开秒表,再次按下则停秒表。清零功能,按下清零键当前时间从零时零分零秒走起。设置闹铃时间功能,按下相应的键要进入调闹铃,此时只显示时、分以及其间的分隔符,按下调分键进行调分,按下调时则调时。闹铃功能,到了设定的时间后蜂鸣器发出有规则的断、续的声音,按下设置闹铃的键则停止鸣叫。 6 仿真结果与分析图6.1仿真结果图刚开始仿真是遇到了困难,数码管不显示,原来是程序出错,不能达到指定的功能经过反复修改程序,终于实现了其基本功能,按各个开关都能实现指定的功能,调时,调秒表,调闹钟等。仿真的成功,让我收获到成功的喜悦。让我懂得了硬件和软件的功能,使我受益匪浅。参考文献1李朝青.单片机原理及接口技术.(第三版),北京航空航天大学出版社,1999:18-47页2朱清慧 张凤蕊 翟天嵩 王志奎.Proteus 教程电子线路设计·制版与仿真.M,清华大学出版社,2008:1-116页3李维祥.单片机原理与应用M.天津大学出版社,2001:1-96页4钱逸秋.单片机原理与应用M.电子工业出版社,2002:1-102页5华成英,童诗白.模拟电子技术基础(第四版).高等教育出版社,2006:39-222页致 谢首先要感谢辅导老师的细心教导,教会了我们如何写论文,后面我们终于搞出了像样的论文,对所学知识也有了更深入的了解,并且能够将所学知识融会贯通,这些都归功于指导老师孜孜不倦的教导。在整个设计过程中,我们充分发挥了人的主观能动性,自主学习,学到了许多课本上没法学到的知识,较好的完成了作品,达到了预期的目的,完成了最初的设想。通过这次设计,认识到对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,查阅了很多资料,理清了思路,渐渐开始得心应手。在此次设计中,知道了无论做什么事要有一颗平常的心,不要想着走捷径,一步一个脚印才是硬道理。通过这次设计,会让我以后的学习和办事变得更加严谨、更加有耐心、更加有条理。最后,再次要感谢我们的老师,是他教给了我们全面的基础知识,如果没有精湛的基础知识作为后盾,一切都是不可能的附录(电路原理图) 电路原理图 电路原理图 附录(程序清单) ORG 0000H LJMP MAIN ORG 0003H LJMP RUNHOLD ;停秒表中断 ORG 000BH LJMP RUN ;秒表计时中断 ORG 0013H LJMP STOP ;停闹铃鸣叫 ORG 001BH LJMP TIMER ;主时钟计时中断 ORG 0100HMAIN:MOV SP,#60H ;设置堆栈 SETB RS0 ;设置当前工作组 CLR RS1 CLR IT0 ;设置外部0中断方式 CLR IT1 ;设置外部1中断方式 MOV TMOD,#11H ;T0主时钟计时,T1秒表计时 MOV 20H,#14H ;主时钟计时循环次数 CLR A MOV 30H,A ;主时钟计时数据存放单元,秒十六进制存储单元 MOV 31H,A ;分十六进制存储单元 MOV 32H,A ;时十六进制存储单元 MOV 72H,#10H ;分秒分隔符 MOV 75H,#10H ;时主时钟计时循环次数 MOV 76H,A MOV 77H,A MOV 51H,A ;设置闹铃时间 MOV 52H,A SETB ET1 ;开放T0中断 SETB EA MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 ;开T0 CLR 19H ;设置调闹钟标志 * 闹钟比较 *ALARMC:JB 19H,KEYSCAN SETB EX1 SETB 18H ;设置停闹铃鸣叫标志 MOV A,32H CJNE A,52H,KEYSCAN MOV A,31H CJNE A,51H,KEYSCAN SET3:JNB 18H,KEYSCAN SETB 19H CLR P1.7 ;闹铃鸣叫 LCALL LED_BCD SETB P1.7 LCALL LED_BCD AJMP SET3 * 按钮扫描 * KEYSCAN:CLR EX1 LCALL LED_BCD JB P1.1,SET5 MADD1:LCALL DEL05S ;调分 JNB P1.1,SET4 CLR ET1 CLR TR1 MOV A,#1H ADD A,31H DA A MOV 31H,A CJNE A,#60H,SET5 MOV 31H,#00H MOV A,#1H ADD A,32H DA A MOV 32H,A AJMP SET5 SET4:JNB P1.1,$ SET5:LCALL LED_BCD SETB ET1 SETB TR1 JB P1.2,SET9 HADD1:LCALL DEL05S ;调时 JNB P1.2,SET8 MOV A,#1H ADD A,32H DA A MOV 32H,A CJNE A,#24H,SET9 MOV 32H,#00H AJMP SET9 SET8:JNB P1.2,$ SET9:LCALL LED_BCD SETB ET1 SETB TR1 JB P3.2,CLEAR LCALL DEL05S JNB P3.2,SET10 SETB ET0 ;进入秒表 SET16:MOV TH0,#3CH MOV TL0,#0B0H MOV 21H,#02H MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 01H,#01H SETB TR0 SET11:LCALL DISPRUN SETB EX0 JB 01H,SET11 MOV 75H,#10H LCALL LED_BCD LCALL LED_BCD LCALL LED_BCD AJMP CLEAR SET10:JNB P3.2,$ CLEAR::LCALL LED_BCD JB P1.0,AJUSTALARM ;清零 LCALL DEL05S JNB P1.0,SET15 LJMP SET19 SET15:JNB P1.0,$ AJMP AJUSTALARM SET19:CLR TR1 CLR A MOV 30H,A MOV 31H,A MOV 32H,A SETB TR1 LCALL LED_BCD LCALL ALARMCAJUSTALARM:JB P3.3,SET31 ;调闹铃 LCALL DEL05S JNB P3.3,SET32 SET33:LCALL DISPALARM JNB P1.1,SET36 JB P1.2,SET33 LJMP SET37 SET36:LJMP SET34 SET37:LJMP SET35 SET31:LJMP ALARMC SET32:JNB P3.3,$ LJMP ALARMC STOP:PUSH PSW ;停闹铃中断 PUSH A SETB P3.3 CLR 18H CLR EX1 CLR P1.4 POP A POP PSW RETI RUNHOLD:PUSH PSW ;停秒表 PUSH A CLR ET0 CLR TR0 MOV 00H,#150 SET13:LCALL DISPRUN DJNZ 00H,SET13 CLR 01H CLR EX0 POP A POP PSW RETI RUN:PUSH PSW ;秒表计时中断 PUSH A MOV TH0,#3CH MOV TL0,#0B0H DJNZ 21H,RETURN MOV 21H,#02H MOV A,#1H ADD A,40H DA A MOV 40H,A CJNE A,#10H,RETURN MOV 40H,#00H MOV A,#1H ADD A,41H DA A MOV 41H,A CJNE A,#10H,RETURN MOV 41H,#00H MOV A,#01H ADD A,42H DA A MOV 42H,A CJNE A,#10H,RETURN MOV 42H,#00H MOV A,#01H ADD A,43H DA A MOV 43H,A CJNE A,#10H,RETURN MOV 43H,#00H RETURN:LCALL DISPRUN POP A POP PSW RETI DISPRUN:PUSH 08H ;秒表计时中断 PUSH A MOV R0,#42H MOV 22H,#2H MOV P2,#0FEH MOV A,40H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A LCALL DEL10MS MOV A,P2 RL A MOV P2,A MOV A,41H MOV DPTR,#TAB1 MOVC A,A+DPTR MOV P0,A LCALL DEL10MS MOV A,P2 RL A MOV P2,A NEXT:MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A LCALL DEL10MS MOV A,P2 RL A MOV P2,A INC R0 DJNZ 22H,NEXT POP A POP 08H RET SET34:LCALL DEL05S ;开始调闹钟,调分 JNB P1.6,SET25 MOV A,#01H ADD A,51H DA A MOV 51H,A CJNE A,#60H,SET23 MOV 51H,#00H AJMP SET23 SET25:LCALL DISPLAY JNB P1.1,$ AJMP SET33 SET