基于单片机的电子钟设计毕业论文_第1页
基于单片机的电子钟设计毕业论文_第2页
基于单片机的电子钟设计毕业论文_第3页
基于单片机的电子钟设计毕业论文_第4页
基于单片机的电子钟设计毕业论文_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的电子时钟设计摘 要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的 各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产 品性能进一步提高,产品更新换代的节奏也越来越快。现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些 对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码 管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读 数快、时间准确显示到秒。而机械式的依赖于晶体震荡器,可能会导致误差。数字钟是采用数字电路实现对“时”、“分”、“秒”数

2、字显示的计时装置。数字钟的精度、 稳定度远远超过老式机械钟。在这次设计中,我们采用LED数码管显示时、分、秒,以24 小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定 时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。数字 钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱, 因此得到了广泛的使用。关键字:数字电子钟 单片机1.1数字电子钟的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性

3、能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传

4、统控制技术的一次革命。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。1.2数字电子钟的意义数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起

5、闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.3数字电子钟的应用数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。1.4电路及功能说明:电路图如图所示:图A图B图C该数字钟是用一片AT89C51A单片机通过编程去驱动8个数码管实现的。通过6个开关控制

6、,从上到下6个开关KEY1KEY6的功能分别为:KEY1,切换至秒表;KEY2,调节时间,每调一次时加1;KEY3, 调节时间,每调一次分加1;KEY4,从其它状态切换至时钟状态;KEY5,切换至闹钟设置状态,也可以对秒表清零;KEY6,秒表暂停.控制键分别与P1.0P1.5口连接其中:A.通过P2口和P3口去控制数码管的显示如图所示P2口接数码管的ag端,是控制输出编码,P3口接数码管的18端,是控制动态扫描输出B.从P0.0输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,若有乐曲可以去驱动扬声器实现。(图A是时钟运行状态,图B是闹钟运行状态,图C是秒表运行状态)功能说明:1

7、各个控制键的功能:可对时间进行校准调节(只能加);按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加、分加键是在校准时间时或设置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开始计时,按下秒表暂停、复位键就暂停、归零,如果要重新对秒计时则可以按秒表开始、复位;清零键可以对闹钟清零。2 AT89C51单片机,通过编写程序对数码显示进行控制。3 八个7段数码管显示时钟和秒表信号。二, 实验程序流程图:1. 主程序流程图:2. 中断程序流程图2. 秒表中断程序流程图:3. 按键程序流程图:第一图为时钟和闹钟的调节.第二图为进入中断和清零第三章 数字钟的硬件设计

8、3.1 最小系统设计图3-1 单片机最小系统的结构图单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍一下每一个组成部分。1.电源引脚Vcc 40 电源端GND 20 接地端工作电压为5V,另有AT89LV51工作电压则是2.7-6V, 引脚功能一样。2.外接晶体引脚图3-2 晶振连接的内部、外部方式图XTAL1 19XTAL2 18XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz

9、内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与

10、单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。3. 复位 RST 9在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路

11、系统采用的是上电与按钮复位电路。当时钟频率选用6MHz时,C取22F,Rs约为200,Rk约为1K。复位操作不会对内部RAM有所影响。常用的复位电路如下图所示:图3-3 常用复位电路图4.输入输出引脚(1) P0端口P0.0-P0.7 P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2) P1端口P1.0P1.7 P1是一个带有内部上拉

12、电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。(3) P2端口P2.0P2.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3端口P3.0P3.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个

13、TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请看下表。表3-1 P3端口引脚兼用功能表3.2 LED显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如下图所示。图3-4 LED显示器的符号图发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显

14、示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图是共阳式、共阴式LED数码管的原理图和符号.图3-5 共阳式、共阴式LED数码管的原理图和数码管的符号图显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线

15、。LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位LED显示器,通常 都是采用动态扫描的方法进行显示,其硬件连接方式如下图所示。图3-6 数码管的硬件连接示意图数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流 100mA 数码管使用注意事项说明:()数码管表面不要用手触摸,不要用手去弄引角;()焊接温度:度;焊接时间:()表面有保护膜的产品,可以在使用前撕下来。第四章 数字钟的软件设计系统的软件设计也是工具系统功能

16、的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性。4.1 系统软件设计流程图这次的数字电

17、子钟设计用到很多子程序,它们的流程图如下所示。主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。图4-1 主程序流程图按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。图4-2 按键处理流程图定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。图4-3 定

18、时器中断流程图时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。图4-4 时间显示流程图4.2 数字钟的原理图用PROTUES软件,根据要求画出数字电子钟的原理图如下所示。图4-5 数字钟的原理图在此有必要介绍一下数字电子钟的工作原理。工作原理 :数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。8个数码管的段选接到单片机的P0口,位

19、选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出来。4.3 设计主程序。(本次设计我们采用汇编语言编写程序简单明了); P0.0-7口 为数码管段选,采用共阳显示管。; P2.1-6为数码管位选。; 7071H 秒计时和显示单元; 7273H 分显示

20、单元 注意:72H放个位数 73H放十位数; 7475H 小时显示单元; 7677H 分计时单元; 7879H 小时计时单元; 中断入口程序 ;ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行ORG 0003H ;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTTO执行ORG 0013H ;外中断1中断程序入口RETI ;外中断1中断返回ORG 001BH ;定时器T1中断程序入口LJMP INTT1 ;跳至INTT1执行ORG 0023H ;串行中断程序入口地址RETI ;串行中

21、断程序返回; 主 程 序 ;START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH ;CLEARDISP: MOV R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清20H(标志用)MOV 7AH,#0AH ;放入"熄灭符"数据MOV TMOD,#11H ;设T0、T1为16位定时器;用11.0592M初值是4C00H;用12M初值是3CB0HMOV TL0,#00H ;50MS定时初值(T0计时用)MOV TH0,#4cH ;50MS定时初值MOV TL1,#00H ;50MS定时

22、初值(T1闪烁定时用)MOV TH1,#4cH ;50MS定时初值SETB EA ;总中断开放SETB ET0 ;允许T0中断SETB TR0 ;开启T0定时器MOV R4,#14H ;1秒定时用初值(50MS×20)START1: LCALL DISPLAY ;调用显示子程序jnb P1.1,set_h ;此按键是小时加1jnb P1.2,set_M ;此按键是分钟加1SJMP START1 ;P1.0口为1时跳回START1set_h: ljmp set_hhset_m: ljmp set_mm; 1秒计时程序 ;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护P

23、USH PSW ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0;用11.0592M初值是4C00H;用12M初值是3CB0HMOV A,#00H ;中断响应时间同步修正,要精确调整在这里! ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#4CH ;高8位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退出ADDSS: MOV R4,#014H ;20次中断到(1秒)重赋初值 14h MOV R0,#7

24、1H ;指向秒计时单元(70H-71H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60分时中断退出ACALL CLR0 ;大

25、于或等于60分时分计时单元清0 MOV R0,#79H ;指向小时计时单元(78H-79H)ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于24小时中断退出ACALL CLR0 ;大于或等于24小时小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移 MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放T0中

26、断RETI ;中断返回; 加1子 程 序 ;ADD1: MOV A,R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,R0 ;前一地址中数据放入A中低四位ADD A,#01H ;A加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOV R0,A ;数据放入当削地址单元中RET ;子程序返回; 清零程序 ;

27、对计时单元复零用CLR0: CLR A ;清累加器MOV R0,A ;清当前地址单元DEC R0 ;指向前一地址MOV R0,A ;前一地址单元清0RET ;子程序返回; 显示程序 ; 显示数据在70H-75H单元内,用六位LED共阳数码管显示,P1口输出段码数据,P2口作 ; 扫描控制,每个LED数码管亮1MS时间再逐位循环。DISPLAY: MOV R1,#70H ;指向显示数据首址MOV R5,#11011111B ;扫描控制字初值PLAY: MOV a,r5MOV P2,A ;从P2口输出MOV A,R1 ;取显示数据到AMOV DPTR,#TAB ;取段码表地址MOVC A,A+DP

28、TR ;查显示数据对应段码CJNE R5,#0FEH,PLAY_1 ;不是秒低位则转移PLAY_1ANL A,#7FH ;是,则点亮AJMP PLAY_3PLAY_1: CJNE R5,#0FBH,PLAY_2 ;分低位?ANL A,#7FHAJMP PLAY_3PLAY_2: CJNE R5,#0EFH,PLAY_3 ;时低位?ANL A,#7FHPLAY_3:MOV dptr,#00ffh ;将要显示的字型码送74LS273MOVX dptr,a ;段码放入P0口LCALL DL1MS ;显示1MSINC R1 ;指向下一地址MOV A,R5 ;扫描控制字放入AJNB ACC.0,ENDO

29、UT ;ACC.5=0时一次显示结束RR A ;A中数据循环左移MOV R5,A ;放回R5内AJMP PLAY ;跳回PLAY循环ENDOUT: SETB P2.0 ;一次显示结束,P2口复位;MOV P1,#0FFH ;P1口复位RET ;子程序返回TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;共阳段码表 "0" "1" "2" "3" "4" "5" "6" "7&qu

30、ot; "8" "9" "不亮" 延时程序 ;1MS延时程序,LED显示程序用DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象DS20MS: ACALL DISPLAYACALL DISPLAYACALL DISPLAYRET;延时程序,用作按键时间的长短判断DL1S: LCALL DL05SLCALL DL05SRETDL05S: MOV R3,#20H ;8毫秒*32=0.256秒DL05

31、S1: LCALL DISPLAYDJNZ R3,DL05S1RET; 闪动调时 程 序 ;T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护PUSH PSW ;MOV TL1, #00H ;装定时器T1定时初值MOV TH1, #4CH ;DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次) MOV R2,#06H ;重装0.3秒定时用初值CPL 02H ;0.3秒定时到对闪烁标志取反JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"MOV 72H,76H ;02H位为0时正常显示MOV 73H

32、,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场POP ACC ;RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据 MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时 MOV 73H,77H ;显示

33、单元(74H-75H),小时数据将不显示 MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ;转中断退出; P1.1 小时加1调整程序 ;当调小时时P1.1按键按下时进入此程序SET_hh: CLR ET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0MOV R2,#06H ;进入调时间的状态,赋闪烁定时初值 SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SETHH1: JNB P1.1,SET5 ;等待键释放CLR 00H ;清调分标志SETB 01H ;小时调整标志置1SET6: JB P1.1,SET7 ;等待按键按下LCALL D

34、L05S ;有键按下延时0.5秒JNB P1.1,SETOUT ;按下时间大于0.5秒退出时间调整 MOV R0,#79H ;按下时间小于0.5秒加1小时操作 LCALL ADD1 ;调加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#24H,HOUU ;计时单元数据与24比较HOUU: JC SET6 ;小于24转SET6循环LCALL CLR0 ;大于或等于24时清0操作AJMP SET6 ;跳转到SET6循环SETOUT: JNB P1.0,SETOUT1 ;调时退出程序。等待键释放 LCALL DISPLAY ;延时削抖JNB P1.1,SETOUT

35、;是抖动,返回SETOUT再等待 CLR 01H ;清调小时标志CLR 00H ;清调分标志CLR 02H ;清闪烁标志CLR TR1 ;关闭定时器T1CLR ET1 ;关定时器T1中断SETB TR0 ;开启定时器T0SETB ET0 ;开定时器T0中断(计时开始)LJMP START1 ;跳回主程序SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时) AJMP SETHH1 ;防止键按下时无时钟显示SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用 AJMP SET6SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待AJMP

36、SETOUT ;防止键按下时无时钟显示; P1.2 分钟加1调整程序 ;当调分钟时P1.2按键按下时进入此程序SET_MM: CLR ET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0MOV R2,#06H ;进入调时间的状态,赋闪烁定时初值 SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET2: JNB P1.2,SET1 ;P1.2口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1SET4: JB P1.2,SET3 ;等待键按下LCALL DL05S ;有键按下,延时0.5秒JNB P1.2,SETout_m ;按下时间大于0.5秒转退出

37、程序 MOV R0,#77H ;按下时间小于0.5秒加1分钟操作LCALL ADD1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,HHH ;调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环LCALL CLR0 ;调整单元数据大于或等于60时清0 CLR C ;清进位标志AJMP SET4 ;跳转到SET4循环SETOUT_m: JNB P1.2,SETOUT1_m ;调时退出程序。等待键释放 LCALL DISPLAY ;延时削抖JNB P1.2,SETOUT_m ;是抖动,返回SETOUT再等待 CLR

38、 01H ;清调小时标志CLR 00H ;清调分标志CLR 02H ;清闪烁标志CLR TR1 ;关闭定时器T1CLR ET1 ;关定时器T1中断SETB TR0 ;开启定时器T0SETB ET0 ;开定时器T0中断(计时开始)LJMP START1 ;跳回主程序SET1: LCALL DISPLAY ;键释放等待时调用显示程序(调分)AJMP SET2 ;防止键按下时无时钟显示SET3: LCALL DISPLAY ;等待调分按键时时钟显示用AJMP SET4SETOUT1_m: LCALL DISPLAY ;退出分钟调整时键释放等待AJMP SETOUT_m ;防止键按下时无时钟显示END

39、 ;程序结束在这里,我们有必要介绍一下单片机的中断系统,以利于我们的学习。中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以对突发事件处理。所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这是CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。关于中断的概念有下列几个名词:(1)程序A称为主程序,(2)处理事件B的程序称为中断服务程序,(3)主程序中转向中断服务程序的地方称为断点,(4)引起中断的原因即事件B称为中断源,(5)转去执行中断服务程序称为中断响应。关于中断的概念可以打

40、个如下的比喻。领导(CPU)在自己的房间办公(执行主程序),下属(外设)有问题打电话来请示(中断源),领导停下正在进行的工作,通过电话给下属做指示(执行中断服务程序),指示完后,领导挂断电话,继续做自己的工作(返回主程序继续执行)。中断是一个过程,当中央处理器CPU在处理某件事情时,外部又发生了另一紧急事件,请求CPU暂停当前的工作而去迅速处理该紧急事件。处理结束后,再回到原来被中断的地方,继续原来的工作。引起中断的原因或发出中断请求的来源,称为中断源。单片机一般允许有多个中断源,当几个中断源同时向CPU请求中断时,就存在CPU优先响应哪一个中断请求源的问题(优先级问题),一般根据中断源的轻重

41、缓急排队,优先处理最紧急事件的中断请求,于是便规定每一个中断源都有一个中断优先级别,并且CPU总是响应级别最高的中断请求。当CPU正在处理一个中断源请求的时候,又发生了另一个优先级比它高的中断源请求,如果CPU能够暂时中止对原来中断处理程序的执行,转而去处理优先级更高的中断源请求,待处理完以后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套。第五章 系统仿真5.1 PROTUES软件介绍Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的

42、布图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。5.2 电子钟系统PROTUES仿真用PROTUES软件,根据数字电子钟的原理图,画出仿真图,得到的图如下所示。图5-1 数字钟的PROTES仿真第六章调试与功能说明单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。一般的方法是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。6.

43、1 硬盘调试拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。6.2 系统性能测试与功能说明走时:默认为走时状态,按24小时制分别显示“时时-分分-秒秒”,有2个“-”动态显示,时间会按实际时间以秒为最少单位变化。走时调整:按ksec对秒进行调整,按一下加一秒;按kmin对分进行调整,按一下加一分;按khour对时进行调整,按一下加一小时,从而达到快速设定时间的目的。6.3 系统时钟误差分析时间是一个基本物理量

温馨提示

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

评论

0/150

提交评论