基于单片机的多功能智能定时器—软件设计.doc_第1页
基于单片机的多功能智能定时器—软件设计.doc_第2页
基于单片机的多功能智能定时器—软件设计.doc_第3页
基于单片机的多功能智能定时器—软件设计.doc_第4页
基于单片机的多功能智能定时器—软件设计.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

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

文档简介

摘 要本系统采用单片机技术进行设计,以89C51为核心,并附加了显示电路,采用单独的显示芯片MAX7219显示。此系统具有定时,提醒,显示等功能,非常适用于对精度要求不高,外设数量多的场合。本文论述了该系统的软件设计思路,方案和设计过程。同时对抗干扰部分进行了程序方式的解决,加入了看门狗技术,以此来使设计具有抗干扰的同时又具有实际使用的功能。 关键词 :单片机 中断 定时 计时 抗干扰Abstract This system uses the monolithic integrated circuit technology to carryon the design, take 89C51 as the core, and attached the displaycircuit, uses the independent demonstration chip MAX7219demonstration.This system has fixed time, the reminder, demonstrated and so on thefunction, extremely is suitable to is not high to the precisionrequest, outside supposes quantity many situations.This article elaborated this system software design mentality, theplan and the design process.Simultaneously resisted the disturbance partially to carry on theprocedure way solution, has joined WATCHDOG the technology, enablethe design by this to have the antijamming at the same time also tohave the actual use the function.Keywords : Monolithic integrated circuit, Severance,Fixed time,Time, anti-jamming 目 录1 绪论12 系统原理概述12.1 软件总体设计方案12.2 单片机介绍12.3 单片机定时原理22.4 单片机定时方式23 软件程序设计33.1 主程序与初始化33.2显示子程序43.3 按键扫描与处理53.4定时初始化及时钟程序53.5控制子程序73.6 抗干扰程序83.6.1看门狗程序83.6.2软件陷阱程序94 硬件设计104.1 显示电路104.2 电源电路104.3 CPU主电路与键盘电路104.4输出控制电路104.5抗干扰部分114.6 操作流程115 总结116 谢辞127 主要参考文献与资料 13附录一:软件设计清单141 绪论 定时器是机器运转中一个很重要的部分,其精度的高低直接关系到生产中生产线是否能按时完成生产量,其产品的质量的是否能够达到标准。尤其是在单片机广泛应用的今天,定时器的作用更是发挥的淋漓尽致,由于精度得到进一步的提升,所以大到工厂小到日常生活,都有定时器的身影。但是专业的单片机定时器由于其程序过于复杂,电路烦琐,生产成本过高,不易推广。所以本文设计一种精度适当,电路简单,成本低的定时器。其主要部分由89C51为核心构成,再加入显示芯片MAX7219进行显示,并调用各个子程序来实现其对应的各种功能,其指令简单通用,设计明了,其功能足以满足人们日常生活的需要,从而能够更快的普及。 2 系统原理概述2.1 软件总体设计方案该设计功能强大,即可以设置时间使被控制设备在指定时间动作,也可以检测设备工作时间并记录下来,供调试人员读取数据。本文讨论的单片机多功能定时器的核心是目前应用极为广泛的51系列单片机,该单片机的指令集是比较通用的,基础的,使用方便,功能强大。本系统的所有功能都以子程序的方式编写,并采主程序调用若干子程序的方法实现相应的各功能(如:显示,键盘扫描,外设控制,外设时间采样,时间值存储)。查询方式检测键盘输入,把输入的时间值以一定的压缩方式存储在单片机内部的RAM中,内部定时器工作,调用显示程序屏幕显示当前时间值,在主程序中调用比较程序,依次比较RAM中的时间与当前时间值,如果相同则P2口输出外设索引码给3/8译码器达到控制的目的。2.2 单片机介绍单片机即单片微型计算机,是把中央处理器、存储器、定时/计数器、输入输出接口都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。本文使用的是一块ATMEL公司的AT89C51单片机,兼容MCS-51指令系统。2.3 单片机定时原理单片机定时既是利用单片机内部固有的定时/计数器(t0和t1),根据单片机的震荡频率,计算出单片机定时器(t0或t1)的最大定时时间,通过对最大定时时间的计数,得到系统所需要的定时,来控制设备的工作。在设置为定时方式时,定时器计数89C51片内振荡器输出的经12分频后的脉冲即每个机器周期使定时器(T0或T1)的数值加1直至计满溢出。当89C51采用12MHZ晶振时,一个机器周期为1s,计数频率为1MHZ。2.4 单片机定时方式当前单片机定时主要有以下3种实现方式: (1)纯软件循环技术方式此方式需根据单片机的震荡频率计算出每条指令的指令周期,通过对执行指令(通常是NOP指令)的循环执行,得到定时所需时间。如:在12兆晶震下,NOP指令的周期为1微秒,那么想得到1秒的定时时间就需对NOP循环执行1000次。由于这种定时方式计算烦琐,精度差,系统占用率高,所以本文不采用。(2)利用单片机内部定时器的定时方式 这种方式下首先设置t0或t1的定时方式,启动定时器,这时有单片机内部为t0,t1提供信号,使之做累加操作,当t0或t1计满溢出时,系统产生定时中断,置中断位,可采用中断或查询方式检测中断位是否被置位。由于单片机内部定时器最大定时时间短,所以一般还需用程序对定时溢出进行计数,得到所需时间。定时时间计算方法如下: 定时时间T=机器周期(65536-记数初值) =(振荡周期12)(65536-记数初值)(3)利用单片机记数器的定时方式 这种方式其实是一个软硬件结合的定时方式,把定时器t0或t1设置为记数方式,由控制字TMOD 的C/T位来确定在这种方式下,计数脉冲来自外部引脚(T0对应P34脚,T1对应P35脚)。当T0脚(或T1脚)发生从高电平到低电平的跳变时,计数器加1。对外部信号进行记数,若外部输入为固定频率的信号,通过记数便可达到定时的作用,通过对初值寄存器赋值即可得到所需的时间。 定时时间计算方法如下:定时时间=(外部信号周期12)(65536-记数初值)3 软件程序设计3.1 主程序与初始化主程序用初始化给有关单元赋初值,设定t0,t1工作方式并赋予初值,打开定时器中断并设置优先级。初始化显示芯片并设置工作方式。分别调用显示子程序,定时子程序和键盘扫描子程序,重复循环。单元初始化显示初始化调用显示子程序 定时器累加按键处理程序按键扫描 Y时间每到一秒N Y 图1 主程序流程图3.2显示子程序由于本系统采用专用的显示芯片MAX7219,此芯片为可编程芯片,内部寄存器可对芯片进行设置。所以需要对芯片写入控制字初始化,设定芯片工作方式。设置译码方式,亮度,扫描界限,工作方式的控制字地址分别为09H,0AH,0BH,0CH。芯片采用串行输入方式,我们在显示子程序中用P1口模拟串行时钟,先把P1.0清零,插入两条空指令使数据输入稳定,以移位方式将一个数据位输入数据输入,然后把P1 .0置1,以此来模拟时钟的上升沿。循环8次既输入一个字节。输入数据时先输入8位地址信息,显示第一位地址既为01H,然后输入时间值。其流程图显示如下:显示初始化暂存地址,数据置CLK端低电平左移地址CY送DIN置CLK端高电平Y=Y+1提数据YY=8N图2 显示程序流程图3.3 按键扫描与处理按键扫描有2种方式,一种是行列扫描方式,一种是独立扫描方式。行列扫描方式,它是为了减少键盘与单片机接口时所占用的I/O线的数目,此方式适用于按键较多的情况下使用。但此方式编程比较复杂,本系统不于采用。独立式按键是指各按键相互独立的接通一条输入数据线这是最简单的键盘结构。此方式适用于按键较少的情况,我们采用此方式。采用独立方式依次扫描各个按键,其中加入了延时20ms的去抖程序,如下:NN延时20MS去抖按键处理程序返回按键按下按键按下开始图3 按键扫描流程图3.4定时初始化及时钟程序初始化:采用T0定时器,设置为定时方式,软件启动,使用模式1,此模式为16位正记数方式,其中T0由两个8位特殊功能寄存器TH0和TL0构成,T1由TH1构成,每个定时器都可由软件设置为定时工作方式或计数工作及其他灵活多样的可控方式。这些功能都由工作模式寄存器TMOD和控制寄存器TCON控制。定时时间:t=(65536-初值)振荡周期12在12M晶振下最大定时时间65ms,为方便计算定为50ms,每循环20次时为1秒。下图为定时器各控制寄存器关系框图:T0(P3。4)D0D7D0D7T1(P3。5)D0D7D0D7T1运行状态T0工作方式T1工作方式T1溢出标志T0运行状态CPU TH1 TL1 TH0 TL0 TCON TMOD溢出标志T1T0图4 定时器寄存器关系框图由于本系统没有小时显示,只有秒和3位的分显示,最大999分59秒,每个时间用两个字节存储,如果按时,分,秒方式存储无法存下,所以这里采用已总秒数的方式存储,第一字节逢240进1(恰为4分),第二字节逢250复位。这样总存储最大值恰为1000分。设置T0的初始为50MS,并为37H,38H,39H赋予初始值0,37H内存储循环次数,38H内存储秒值,当满240时向38H进位,当进位够250时,则进行复位,此时达到最大值1000分钟。下图为时钟工作流程图:N设置T0状态50MS返回开中断37H单位加138H单元加139H单元加1有中断Y=20为1秒秒=240NN图5 时钟工作流程图3.5控制子程序当通过键盘输入的时间值存储在数据存储器中以4EH开始的单元中,程序取外设的索引号(01到24),因每个时间值用两字节存储,所以通过公式:实际地址=索引号2+4EH 可得。再判断存储空间中是否为0,为0表无定时或已动作,再与当前时间比较,若相等,表定时已到,存储空间清0并控制相应外设动作。NY通断外设存储区清0取当前时间取存储的时间值计算相应存储空间取索引外设号索引号加1存储时间=0存储时间=当前时间开始图6 控制子程序流程图3.6 抗干扰程序3.6.1看门狗程序定时器程序在经过调试成功后在进行实际的工作中却往往产生许多意外,这就是因为在实际的工作中会遇到各种各样的干扰,所以必须加入抗干扰技术来让定时器稳定的工作。若在工作中,系统陷入了死循环,为了使程序能跳出死循环,我们引用了软件看门狗程序,我们用定时器1来做WATCHDOG,将它的溢出中断设定为高级优先级中断(掉电中断选用INTO时,也可设为高级中断,并享有比定时中断更高的优先级),系统的其他中断均设为低优先级中断。 我们设置T1为16位定时器,优先级设计为高级,并设置定时初始值使T1每16MS产生一次中断,程序如下:MOV TMOD,#10H SETB ET1SETB PT1MOV TH1,#0E0HSETB TR1SETB EA并在主程序中每隔一段插入如下喂狗程序:MOV TH1,#0E0HMOV TL1,#00HSETB TR1RETI 3.6.2软件陷阱程序当CPU受到干扰后,往往将一些操作数当作指令码来执行,造成程序执行混乱。这时,首先要尽快将程序纳入正规(执行真正的指令序列)。我们将单片机内部未使用的程序存储空间都填充以下几条指令,强行将捕获的程序引向一个指定的地址:NOPNOPLJMP ERR ERR指令为转移指令:LJMP ERR转向主程序综上二者进行比较,在应用于程序区里时,一般不能在这些指令串中间任意安排陷阱,否则将会影响程序的正常运行,所以当出现错误时就只能进行手工复位,这样与WATCHDOG比较起来就显得很被动了,所以我们在设计时采用WATCHDOG来进行抗干扰。并且其有如下的优秀特性:本身能够独立的工作,基本不依赖于CPUCPU在一个固定的时间间隔和该系统打一次交道,以表明系统正常当CPU陷入死循环后,能够及时的发觉并使系统恢复。所以WATCHDOG抗干扰更符合实际应用。4 硬件设计4.1 显示电路 本系统采用专用的显示芯片MAX7219配合7位数码管来显示时间值,该芯片是市场上比较流行的显示芯片,最多可以驱动8位的数码管,支持级连功能来驱动更多的数码管。并且可以通过设置控制字来选择工作方式,调节亮度,设置显示位数。该芯片采用了串行输入,节省了CPU有限的I/O口,使用方便。使用此芯片,省去了CPU控制显示的工作,可大大提高定时的精度。我们采用了7位数码管来显示,其中的5位显示的是定时时间值,三位为分值,两位为秒值,最大可以定时1000分钟,最后两位数码管显示当前定时的是哪个外设。4.2 电源电路采用基本的稳压电路,有交流变压器,整流桥,滤波电容,稳压芯片7805和7812组成,可提供CPU的工作电压5v,和控制继电器电压12v。4.3 CPU主电路与键盘电路采用通用的AT89C51为CPU,其中p0口的p0.0送显示芯片数据串行入端(DATA IN),p0.1为片选控制端送MAX7219的片选端(CS),p0.1模拟震荡信号送MAX7219的时钟输入端(CLK)。使用p1口的两个端直接连接按键,分别为加一和减一功能。由于p0口不具有驱动能力,所以需接上拉电阻。P2口其中的5位连接3片级连的3/8译码器,既可控制24路输出。4.4输出控制电路由三片74HS138级连组成,由CPU 的5位输入位选择信号,相应的该位便会已低电平输出,其他位为高电平。由于是低电平,需经过三极管反向器变为高电平,来控制继电器的通断,从而控制外设的工作与否。4.5抗干扰部分输出通道采用光电隔离器,它把微机系统与外设隔离开来,很大一部分干扰被阻挡,本系统采用光电隔离器4N33。每个集成电路芯片都应安置一个0.01mF的陶瓷电容器,可以消除大部分高频干扰。4.6 操作流程(1)单片机上电复位后,数码管全显示0,并开始记时(2)当有外设时间到,单片机自动记录时间(3)按“加一”或“减一”键数码管最后两位作加一或减一操作,此时数码管前5位显示该外设的时间值,无时间值显示全0(4)当后两位数码管显示到00时,前5位数码管回到当前时间值的显示,即回到了表的状态。5 总结本次设计的定时器是由89C51芯片为核心,配上相应的软程序,再附加看门狗软件抗干扰技术组成。能够具体实现基本的定时功能,控制外设功能,和调用查询定时功能。在应用了看门狗抗干扰技术后基本上能够实现定时后无人管理的理想工作状态。使用89C51中的程序设计和显示芯片的作用能精确定时,抗干扰技术使定时器在具体的使用中也能使干扰减少到最低得以在具体的生产中应用。我在设计的过程中遇到了很多意想不到的情况,但是在同学的帮助下,使整个所学得到了融会贯通,并且设计出了比较合理的子程序,比如时钟程序,显示程序,按键扫描程序等,使整个定时器软件设计紧凑,电路控制精确、性能稳定,可毕竟所学有限,所以本设计在完成以后还是存在着很多的不足和错误,我会在以后的学习过程逐步进行弥补。但是通过做此次的论文,对我自身却有很大的帮助,一方面让我看到了自己在这方面的知识的欠缺,是自己在以后的学习中可以做到很好的有的放矢,另一方面在做的过程了也通过同学的帮助,使自己在短期内在单片机方面的知识得到了提升。 6 谢辞非常感张伟老师在毕业设计及论文写作中给予我们的指导与帮助。从毕业设计和论文写作一开始,张老师就给我们制订了详尽却又环环相扣的计划,并且在每周都进行检查和指导,使我们循序渐进、有条不紊地展开论文设计。在这个实用性很强的课题中,张老师由点到面的指导让我们少走了很多弯路,也让我们学到很多书本上没有的内容。同时感谢张勇等同学在毕业设计期间与我紧密的合作和支持。在设计中,虽然各有侧重,但我们几乎每天都要一起在实验室里研究相关资料与文献、讨论软硬件的结合、构思程序在电路上的实现方式。他们的踏实肯干以及连贯的专业知识让我印象深刻,非常值得我的学习。7 主要参考文献与资料 1何立民.MCS-51系列单片机应用系统设计M. 北京航空航天大学出版社.19992李广弟.单片机基础M. 北京航空航天大学出版社.20013李朝青.单片机原理及接口技术M. 北京航空航天大学出版社.2005 4何立民.单片机高级教程M. 北京航空航天大学出版社.19995杜树春.单片机C语言和汇编语言混合编程实例详解M. 北京航空航天大学出版社.20026赵文博.单片机语言C51程序设计M.人民邮电出版社.20067李广弟.单片机技术M. 中央广播电视大学出版社.20038孟凤果.单片机应用M. 中国电力出版社.20029张静.基于单片机数字钟的设计J.办公自动化杂志.200610尹授远.基于单片机的多功能智能控制器J.设计师笔记.199911张桂涛.基于单片机的多功能智能钟的设计J.电子质量.200312张景元.基于单片机的多用途定时器的设计与实现J.电子工程师.200013王振宇.基于单片机设计的多功能定时器J.贵州教育学院学报.200514 梁光福.计算机数据采集系统中光电耦合器件非线形补偿问题的研究.哈尔滨工业大学科学研究报告.227期.15 徐令元.低价格单片机系统监控电路MAX 703709/831L及其应用.电子技术应用.1994附录一:软件设计清单 DIN EQU P1.0 LOAD EQU P1.1 CLK EQU P1.2 ORG 0000H LJMP MAIN ORG 000BH ;定时器0中断服务程序 MOV TH0, #3CH MOV TL0, #0B0H INC 37H RETI ORG 004BHMAIN:MOV SP, #20H ;定义堆栈从位寻址开始 CLR EA ;关中断 MOV R7,#96 ;初始化所有存储区 MOV R0, #20H ON: MOV R0, #00H INC R0 DJNZ R7, ON SETB LOAD ;初始化MAX7219 MOV A, #0BH MOV R4, #06H LCALL WRIT MOV A, #0AH MOV R4, #08H LCALL WRIT MOV A, #09H MOV R4, #0FFH LCALL WRIT MOV A, #0CH MOV R4, #01H LCALL WRIT MOV R0, #30H ;让开机LED显示全0 MOV R1, #01H MOV R3, #07HLOP3: MOV A, R0 MOV R4, A MOV A, R1 LCALL WRIT INC R0 INC R1 DJNZ R3, LOP3 MOV TMOD, #01H ;设置定时器0,方式1,定时50ms MOV TH0, #3CH MOV TL0, #0B0H SETB EA SETB ET0 SETB TR0 ;以上程序开机只运行一次MAINON:MOV A, 37H ;检查是否到一秒,37H 50ms计数 CJNE A, #20, ONO LJMP ON1 ONO:JC JIAN ;判断是否大于20 ON1: MOV 37H, #00H INC 38H MOV A, 38H CJNE A, #240, MIAO ;38H,39H,单元存储当前的时间值,单位为秒 MOV 38H, #00H ;38H 为240进1,39H到250清零,即总共有240*250=60000秒 INC 39H MOV A, 39H CJNE A, #250, MIAO MOV 39H, #00H MIAO: JB F0, JIAN MOV 3AH, 38H MOV 3BH, 39H LCALL TIME ;每秒调用一次显示子程序 LCALL TIME1JIAN:JB P1.4, JIAN1 ;键盘扫描部分 LCALL DAYLL JB P1.4, JIAN1 INC 3CH ;3CH存储当前显示的是第几个外设的时间 MOV A, 3CH CJNE A, #25, JI ;判断当前显示的外设是否是第0个, CLR F0 ;因为没有第0个外设,所以当为第0个时置标志位F0 MOV 3CH, #00H MOV 35H, #00H MOV 36H,#00H ;表示回到显示秒表,置标志F0 LJMP CHA2 JI: SETB F0JIX: MOV A, 3CH MOV B, #10 DIV AB MOV 35H, A ;把外设个数传输给相应的显示存储区 MOV 36H, B MOV A, 3CH ;把外设只做*2+4E 运算,得外设时间存储地址 RL A ADD A, #4EH MOV R0, A MOV 3AH, R0 INC R0 MOV 3BH, R0 ;将时间送3AH,供TIME使用 LCALL TIME LCALL TIME1JIAN1: JB P1.7, CHA LCALL DAYLL JB P1.7, CHA MOV A, 3CH CJNE A, #00H, JI1 MOV 3CH, #24 SJMP JI11JI1: DEC 3CHJI11: MOV A, 3CH CJNE A, #00H, JI111 CLR F0 ;表示回到显示秒表,置标志位F0 MOV 35H,#00H MOV 36H,#00H SJMP CHA JI111: SETB F0JI11X: MOV A, 3CH MOV B, #10 DIV AB MOV 35H, A ;把外设个数传输给相应的显示存储区 MOV 36H, B MOV A, 3CH ;把外设做*2+4E 运算,得外设时间存储地址 RL A ADD A, #4EH MOV R0, A MOV 3AH, R0

温馨提示

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

评论

0/150

提交评论