




免费预览已结束,剩余35页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西 京 学 院毕 业 设 计 (论 文)成绩题 目: 基于51单片机倒计时器 姓 名: 系 别: 机电工程系 专 业: 机电一体化技术 班 级: 机电0809班 学 号: 0812090901 指导老师: 张永超 日 期: 2011年1月20日 教务处制基于51单片机倒计时器毕业设计摘 要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动着传统控制检测日新月异的更新。由于单片机具有体积小、易于产品化、面向控制、集成度高、功能强、可靠性高、价格低等特点,其在工业控制、机电一体化、智能仪表、通信等诸多领域中得到了广泛的应用。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。但是仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。本论文针对倒计时系统的设计的需求,介绍了MCS-51单片机的部分基本原理,如51单片机的接口功能、中断、定时器等等。倒计时系统需要用到锁存器、矩阵键盘、LED数码显示器等主要模块,通过不同的模块之间相互作用,完成倒计时的初步硬件结构。对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即采用Keil uVision3软件程序进行译码。本次设计采用C语言编程,通过倒计时子程序模块、矩阵键盘扫描模块、中断等子程序的正确调用,完成了可以随时设置初值的基于51单片机控制的9999秒倒计时系统。 【关键词】倒计时器 单片机 矩阵键盘 Keil uVision3 LED数码显示器 目录前 言1第一章 倒计时系统简介21.1设计要求21.2方案说明21.3系统功能3第二章 MCS-51单片机基本原理42.1 MCS-51单片机的组成原理42.1.1 80C51芯片介绍42.2 MCS-51单片机的引脚功能52.3 中断72.4 定时器与计数器9第三章 倒计时器系统设计与调试123.1 硬件电路设计123.2中央处理器模块123.3锁存器143.4 矩阵键盘163.5 LED数码显示模块173.6 软件设计193.7 倒计时模块子程序设计233.8 其他子程序设计24结 论.26致 谢.27参考文献.28附录.29前 言51系列单片机属于总线型单片机,具有硬件架构完整、功能强大、技术成熟、通用性强、可外部扩展、配套芯片齐全、集成开发环境好、实用子程序丰富以及价格低廉等一系列优点,无论是实际工程应用,还是学习单片机原理及其应用技术,51系列单片机都是理想的选择。在社会生活和生产的各个领域中,凡是有自动控制要求的地方都会和单片机扯上关系。无论是从简单到复杂,还是从空中、地面到地下,凡是能想到的地方几乎都有使用单片机的需求,并且达到许多与人方便的操作。尽管现在单片机在社会上的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目。因此,单片机的应用依然大有想象和拓展空间。本次设计采用的是总线型结构的单片机,总线型结构的单片机可以减少不同之间信息传送线的条数,从而使信息传送规格整齐,提高了整机的可靠性。采用总线结构以后,存储器、输入输出等外部设备都通过专门的接口电路独立的挂在总线上,因而使得单片机可扩充能力强,使用方便灵活。另外,还可根据不同的需要增加存储器的容量或增添外部设备,也可以根据不同的需要组成各种专用的单片机,例如专用教学机等。单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等4。但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件(编程)方法实现了。这种以软件取代硬件并提高系统性能的控制系统“软化”技术,称之为微控制技术。微控制技术是一种全新的概念,是对传统控制技术的一次革命。随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。本论文第一章介绍了本次倒计时系统的设计目的、设计方案和开发意义;第二章对MCS-51单片机的部分基本原理和接口技术进行了阐述,其中大部分都是本次设计需要用到,比如中断原理、定时器等;最后一章介绍了本次倒计时系统设计的硬件电路设计和软件程序设计,以及Keil uVision3软件系统调试的步骤和方法,以完成系统设计。第一章 倒计时系统简介1.1设计要求 以MCS-51系统单片机为核心器件,组成一个9999秒以内任意秒数的倒计时系统,即初值为9999秒以内任意秒数,以一秒的速度进行倒计时。 系统有8个LED数码管显示器,选择低四位分别显示千位、百位、十位、个位,而高四位设置为一直是暗的,没有任何显示。 此倒计时设计能够通过矩阵键盘对倒计时器设定任何不大于9999秒的初值,同时设置有开始键、复位键,以达到可以重新设置初值的目的。1.2方案说明本设计的倒计时功能主要通过中央处理模块SST89E516RD、锁存器、矩阵键盘、LED数码显示器四个模块的硬件共同实现,具体如下图1.1。图1.1 倒计时器的硬件模块本系统首先通过中中央处理模块(SST89E516RD)对整个系统的状态进行判断(如定时器、中断等),它的输入输出口是双向接口,所以要通过锁存器来赋给不同的硬件接口不同的值。然后通过键盘扫描原理对键盘进行扫描,返回扫描值,判断是否有键按下,如果有键按下,判断是哪个键被按下。如果是KC键被按下,则进入初值设置阶段,等待初值设置;如果键盘扫描判断到KF键按下,则表示开始倒计时。所有的设置初值、等待状况和倒计时状态都要通过LED数码显示器显示出来,体现本倒计时系统的功能。由于数码管的段选、位选和4*4的矩阵键盘的输入输出都是接到P0.0P0.3口,所以需要锁存器来锁存不同时刻不同模块需要的P0.0P0.3的值。本系统由于数码显示器的8个二极管和位的选择的状态均由SST89E516RD的P0.0P0.7来决定,所以需要锁存器(DM74LS573N)在需要的时候为其锁定相应的值,从而使显示器正确显示倒计时,如果没有锁存器则会出现很多错误并且不能实现功能。同理,锁存器SN74LS244N的功能也是一样的,判断矩阵键盘的输出值从而判断按下的键,实现键盘扫描原理的功能。1.3系统功能由于本来对C语言有一定的了解,再加上C语言的简单等优点,本设计采用的是C语言编程,而未采用汇编语言。通过倒计时系统的要求,逐步写出C语言程序。通过Keil uVision3软件对程序进行编译,在确认程序无误的时候,将实验板插到电脑上(通过USB连接),进行硬件仿真。刚上电时,LED数码显示器显示系统默认初值9999,并立即进行倒计时。如果需要重新设置小于系统初值的其他任何初始值,这个时候可以按下KC键,数码管四位清0并等待初值的设置,通过K0K9(分别表示1,29,0)设置初值。当初值设置完成后,再按下KF键开始进行倒计时。如果需要再一次设置初值的时候再次按下KC键,数码管的低四位又全部清0,重新等待设置初值。第二章 MCS-51单片机基本原理2.1 MCS-51单片机的组成原理单片微型计算机简称单片机,它因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器 CPU、随机存储器RAM、只读存储器ROM、中断系统、定时器计数器以及 IO接口电路等主要微型机部件集成在一个芯片上。虽然单片机只是一个芯片, 但从组成和功能上看,它已具有了计算机系统的属性11不同型号MCS-51单片机CPU处理能力和指令系统完全兼容,只是存储器和I/O接口的配置有所不同。其中8051主要包括算术/逻辑部件ALU、累加器A、只读存储器ROM、随机存储器RAM、程序计数器PC、定时器/计数器、I/O接口电路等,还有堆栈寄存器SP等部件。这些部件集成在一块芯片上,通过内部总线连接,构成完整的微型计算机。2.1.1 80C51芯片介绍MCS-51 的原生产厂商是 Intel 公司,最早推出 80C51 芯片的也是 Intel 公司,并且作为 MCS-51 的一部分,按原 MCS-51 芯片的规则命名,例如 80C31、80C51、87C51 和 89C51,这样我们就能很容易地认识 80C51 的系列芯片。80C51 芯片内部集成了 CPU、RAM、ROM、定时/计数器和I/O口等各功能部件,并由内部总线把这些部件连接在一起。80C51单片机内部包含以下一些功能部件:一个8位CPU;一个片内振荡器和时钟电路;4KB ROM(80C51有4KB掩膜ROM,87C51有4KB EPROM,80C31片内有无ROM); 128B内RAM; 可寻址64KB的外ROM和外RAM控制电路; 两个16位定时/计数器; 21个特许功能寄存器; 4个8位并行I/O口,共32条可编程I/O端线; 一个可编程全双工串行口; 5个中断源,可设置成2个优先级。振荡器及时序 OSC8051CPU程序存储器4KB ROM数据存储器256B2个16位定时器/计数器64K总线扩展控制器可编程I/O可编程全双工串行口图2.1 80C51单片机功能结构框图2.2 MCS-51单片机的引脚功能MCS-51单片机采用40引脚的双列直插封装(DIP)方式。图2.2左边为其引脚图,右边为为其逻辑符号图。在40条引脚中,有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制引脚,3条I/O引脚2。图2.2 左边为MCS-51引脚图,右边为MCS-51单片机逻辑符号图2.3 中断2.3.1中断的概念CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断,如下图2.7。图2.7 中断流程引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B,对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。见下图2.8。图2.8 中断系统2.3.2 8051中断系统结构80C51的中断系统有5个中断源(8052有 6个) ,2个优先级,可实现二级中断嵌套 。4个用于中断控制的寄存器IE、IP、TCON和SCON用于控制中断的类型、中断的开/关和各种中断源的优先级别。5个中断源有两个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序的嵌套。8051单片机中断系统的结构如图2.9所示。图2.9 中断系统结构2.3.3 中断控制(1)、中断允许控制寄存器IE特殊功能寄存器IE为中断允许寄存器,控制CPU对中断系统所有中断以及某个中断源的开放和屏蔽(禁止),以及每个中断源是否允许中断。其格式为: EX0(IE.0):外部中断0允许位;ET0(IE.1):定时/计数器T0中断允许位; EX1(IE.2):外部中断0允许位;ET1(IE.3):定时/计数器T1中断允许位;ES(IE.4):串行口中断允许位;EA (IE.7):CPU中断允许(总允许)位。(2)、中断源优先级设定寄存器IP80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的 。PX0(IP.0):外部中断0优先级设定位;PT0(IP.1):定时/计数器T0优先级设定位;PX1(IP.2):外部中断0优先级设定位;PT1(IP.3):定时/计数器T1优先级设定位;PS (IP.4):串行口优先级设定位;PT2 (IP.5) :定时/计数器T2优先级设定位。同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如表2.1所示:表2.1 同优先级中断源等级序号序号中断源中断标志优先级顺序0外部中断0IE0最高级最低级1定时器T0中断TF02外部中断1IE13定时器T1中断TF14串行口中断RI或TI中断响应条件中断源有中断请求;此中断源的中断允许位为1;CPU开中断(即EA=1)。2.4 定时器与计数器加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值4。二、定时器控制字1、工作方式寄存器TMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:各位功能如下:(1) GATE:门控位。GATE0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。(2) :定时/计数模式选择位。0为定时模式;=1为计数模式。(3) M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。如下表2.2所示:表2.2 定时/计数器工作方式设置表M1M0工作方式说 明00方式013位定时/计数器01方式116位定时/计数器10方式28位自动重装定时/计数器11方式3T0分成两个独立的8位定时/计数器;T1此方式停止计数2、控制寄存器TCONTCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:TOCN各位功能如下:TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。TR0(TCON.4):T0运行控制位,其功能与TR1类同。第三章 倒计时器系统设计与调试3.1 硬件电路设计最小系统是单片机在发挥具体测控功能时所必须的组成部分5。倒计时器由单片机的最小系统就可以构成,单片机的最小硬件系统即倒计时器的硬件系统如图3.1所示。图3.1 单片机的最小系统这次设计的倒计时系统的硬件电路设计主要由中央处理模块、矩阵键盘、锁存器、LED数码显示器四个模块组成,再加上一些基本元器件实现倒计时的功能。其中不同的模块根据自己的的特点实现不同的功能,在整个系统中都起到了不可替代的作用。它们相辅相成,如果缺少任何一个模块或者任何一个元器件,都不可能完成本次设计。根据系统的需求可划分为以下4个部分。3.2中央处理器模块3.2.1 SST89E516RD芯片图3.2是中央处理器(SST89E516RD)在本设计中的引脚图,其功能和前面介绍的MCS-51的功能基本一样。其中本次设计P0P3口用到的是P0.0P0.7口(作为输入输出口)、P1口的P1.0P1.3口(分别是锁存器的使能端,从而控制着锁存器的应用)、左边的一个复位系统等等,各个引脚都实现了其应有的价值,从而实现倒计时系统的功能。P0.0P0.7分别命名为D0D7,由于是双向口,即在作为输入口的同时还可以作为输出口,不过要通过不同的锁存器与不同的器件相连接,通过程序实现各种功能。图3.2 中央处理器(SST89E516RD)引脚图本次设计通过中央处理模块(SST89E516RD)对各个接口进行赋初值,并确定定时器、工作方式、中断等等,以下是详细介绍:本电路应用定时器0方式1工作方式,该方式是一个16 位计数器的计时中断法。所以工作方式寄存器TMOD的M1M0两位为01。设置定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。比如,12M的晶振每秒可产生1M的机器周期1,50ms就是50000个机器周期,定时器0工作方式1工作,计数长度为=65536个外部脉冲,65536-50000周期=初值15536,从15536开始计数,总共累加50000次计数器产生一次溢出,所以定时器的高八位和低八位TH0和TL0的值为:TH0 = (65536-TIME)/256;TL0 = (65536-TIME)%256;其中TIME=50000;其中TL0是低八位当达到256的时候,向高八位进1,然后低八位重新计数,所以高八位对差值求整,低八位对差值求余。由于采用的是定时器0所以TMOD的高四位为0000;选通控制只要用软件使TR0就启动了定时器,所以门控位GATE为0;表示设置为定时方式。所以工作方式TMOD=0000 0001H=0X01H。3.2.2 单片机的复位电路设计复位电路产生复位信号,复位信号送入 RST 后还要送至片内的施密特触发器,由片内复位电路在每个机器周器的S5P2 时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号11。一般的复位电路可分为上电自动复位和按键复位,在本次设计中选用的是按键复位。单片机的第九脚RES为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如上图3-2所示。图中由按键RESET以及电解电容C3构成了复位电路。由于单片机是高电平复位,所以当按下RESET时,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态。当上电后,由于电容缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上复位完毕,系统程序从0000H开始执行。值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值。3.3锁存器锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。在本次设计中,芯片SST89E516RD通过锁存器DM74LS573N(当锁存端LE与P1.0相接时)与LED数码管的段相接时,对数码管的段进行控制(当SEG7SEG0=0111 1001时,如果选择第一位数码管亮的话,应该显示数字E)。当段选锁存器使能端LE=1(高电平)时,打开锁存器,此时SEG0SEG7的值分别等于D0D7(即P0.0P0.7)的值,然后将使能端LE置为低电平,此时便将SEG0SEG7的值锁定为刚才的值,不再随着D0D7值的变而改变。同理,芯片SST89E516RD通过锁存器DM74LS573N(当锁存端LE与P1.1相接时)与LED数码管的位相接时,控制数码管的位进行控制(当DIG7DIG0=0111 1101时,此时则表示选择第二位数码管显示数据),确定是哪一位数码管显示数据。其中当锁存器使能端LE与P1.1相连时的原理图见图3.3,当LE与P1.0相连的时候原理图基本一致。图3.3 DM74LS573N使能端LE与P1.1相连时的原理图而锁存器SN74LS244N所完成的功能是配合完成键盘扫描原理。如图3-4所示,锁存器的是锁存器的使能端,本设计是将P1.3与相连。当时,表示打开该锁存器,此时锁存器的输入值等于输出值(即A1A4的值等于D0D3的值);当时,表示关闭该锁存器,此时锁存器的输出端的值不再随输入端值的改变而改变,完成一次操作。图3.4 SN74LS244N使能端与P1.3相连时的原理图3.4 矩阵键盘矩阵键盘又称为行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率,从而节约系统资源12。图3.5 实验板键盘布局实验板的键盘布局如图3.5所示,本次倒计时系统的设计一共用到了09号、C号、F号共12个按键。其中:09号键其中08号键分别代表数字19,9号键代表数字0,这10个键用来设置初值,键盘代号为K0K9。C号键等待初值设置键,即无论在任何倒计时的过程中,若按下改建,则数码显示器四位清0,等待设置初值,键盘代号为KC。F号键开始键,即当初值设置后,按下该键,则开始减1倒计时,键盘代号为KF。本设计实验板的4*4矩阵键盘的内部电路如图3.6示,矩阵键盘的行线直接与DIG0DIG3口相连接,列线A1A4是通过锁存器SN74LS244N的输出口Y1Y4与芯片SST89E516RD的P0.0P0.3(即D0D3)口相连,通过锁存器的控制实现矩阵键盘扫描原理。图3.6 本设计的矩阵键盘图当无按键闭合时,A1A4与DIG0DIG3之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:扫描第一行:置行线DIG3DIG0输入为1110,观察列线输出数据A4A1的值,如果输出的A4A1为1110,则表示K0键被按下,如果值为1101,则表示K1键被按下,这样即确定了第一行是否有键按下。用扫描第一行的的方法进行逐行扫描,确定16个按键哪些键被按下,每次扫描出现按下的键的时候,返回扫描值,完成相应的操作和显示。虽然综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。3.5 LED数码显示模块单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(58、88点阵等)。3.5.1 LED 数码显示器的结构LED 数码显示器是一种有 LED 发光二极管组合显示字符的显示器件。它使用了 8 个 LED 发光二极管,其中 7 个用于显示字符,剩下的一个用于显示小数点,故通常称之为 7 段发光二极管数码器。在数码管中,若将二极管的阳极连在一起,称为共阳极数码管;若将二极管的阴极连在一起,称为共阴极数码管。如图3.7所示。图3.7 (a)为a到g在数码管的编排,(b)分别为共阴极、共阳极电路当发光二极管导通时,它就会发光。每个二极管就是一个笔画,若干个二极管发光时,就构成了一个显示字符。若将单片机的I/O口与数码管的ag及h相连,高电平的位对应的发光二极管亮,即I/O输出不同的代码,就可以控制数码管显示不同的字符。例如:当I/O输出得代码为0011 1111时,数码管显示的字符为0。这样形成的显示字符的代码称为显示代码或者段选码。本次设计的实验板用的共阴LED显示器,根据电路连接图16进制数字的显示代码如表3.1所示2。表3.1 16进制数字的显示代码16进制hgfedcba显示代码0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FHA0111011177HB011111007CHC0011100139HD010111105EHE0111100179HF0111000171H.1000000080H3.5.2 LED数码管显示方式LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。本次设计采用的是动态显示方式。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 3.6 软件设计倒计时器的设计时可采用模块化程序设计的方法,模块化程序设计时应注意以下事项:首先,每个模块应具有独立的功能,能产生一个明确的结果;其次,模块之间的控制参数应尽量简单,数据参数应该尽量少。控制参数是指模块进入和退出的条件和方式,数据参数是指模块间的信息交换方式、交换量的多少及交换的频繁程度。最后,模块长度适中。模块语句长度通常在20100条适合。如果模块太长时,分析和调试比较困难,失去了模块化程序的功能性;如果模块太短则信息交换太频繁,也不合适16。由以上原则,本次设计的倒计时软件系统如下图3.8所示:图3.8 倒计时设计软件框图由上述硬件电路分析可知,本次设计采用的是定时器0、工作方式1,MAXTIME为9999秒的倒计时计数器。其中最重要的就是主程序的设计,因为无论多少个子程序模块,如果主程序没有能够合理正确的调用子程序的话,那么子程序就如同虚设。主程序的设计分为:主程序的初始化内容。所谓初始化,就是对用到的单片机内部部件或者扩展芯片进行工作状态设定,本设计调用了一个初始化的子程序init()。引入键盘扫描程序,对按键key进行判断,判断哪个按键被按下,本系统设计调用的键盘扫描程序是keyscan()。然后对返回值进行判断:若key=0x18,则表示按下的键是KC(设置初值键)。然后关定时器0,等待初值并与最大值相比进行判断,引入初值设置子程序set-func()。若key=0x88,则表示按下的键是KF,开始计数。调用显示子程序display()对以上操作和后面的倒计时进行显示。display()对倒计时在数码管上显示出来,引入中断子程序,根据中断子程序和主程序的语句开始进行倒计时。最后,根据主程序语句判断倒计时是否自减到0,并进行相应的操作。主程序流程图如图3.9所示。图3.9 主程序流程图3.6.1 程序准备通过程序开始的赋初值和主程序的赋初值函数init()对系统进行赋值:TMOD = 0x01;TH0 = (65536-TIME)/256;TL0 = (65536-TIME)%256; /设置初值ET0 = 1; /允许T0中断EA = 1; /开总中断TR0 = 1; /开定时器T0由前面可知工作方式寄存器TMOD的值和TH0、TL0的值,ET0是T0溢出中断允许位,所以ET0=1表示允许T0中断;要引入中断,所以必须开总中断,所以EA=1;TR0是T0定时器运行控制位,置1表示启动T0。3.6.2 键盘扫描程序设计矩阵键盘的扫描程序keyscan()设计:if(P0&0x0f)!=0x0f) /判断是否有有键按下delay(1);if(P0&0x0f)!=0x0f) /再次判断列中是否是干扰信号,不是则向下执行sccode = 0xfe; /逐行扫描初值(即先扫描第1行)while(sccode&0x10)!=0) /行扫描完成时(即4行已经全部扫描完成)sccode为1110 1111停止while首先,根据列判断是否有键按下,没有返回则为0。若有值返回,则逐行扫描以确定按键所在的行,再确定按键所在列,从而最终确定该按键。其次,若有键按下,则延时去建抖动(delay(1);),然后进行扫描,找到闭合键并计算键值。最后,返回键值,并进行判断,建立有效标志,以对主程序的进行。流程图见图3.1014所示。图3.10 键盘扫描程序3.6.3 倒计时初值设置倒计时初值设置程序中重要语句:case 0x11: /1-K0temp = temp*10 + 1;break;通过键盘扫描的返回值,确定即将执行的状态。若返回值为0x18,则表示按下的键为KC,由前面阐述可知,此时数码管四位清0,等待设置初值。同时,通过返回值也可以确定倒计时系统的初值,比如,返回值为0x11,则表示按下的键为K0,K0键表示数字1,则数码管显示数字1。同理,若返回值为0x21,则表示按下的键为K1,代表的值为2。但是由于之前,所以此时,则显示12完成初值设置,数码管上显示已设置好的初值。此时若返回值为0x88,则按下的位开始键KF,此时开始进行减1倒计时。3.7 倒计时模块子程序设计中断程序:void timer0() interrupt 1TH0 = (65536-TIME)/256; /50ms产生一次中断TL0 = (65536-TIME)%256;count+;倒计时程序模块:if(count = 20)count = 0;data_set-; if(data_set = 0)stop_timer0(); 倒计时模块设计:首先,初值设置。对计数值count赋初值0,对定时器0的高八位TH0和低八位TL0设置初值,然后开中断。其次,根据中断子程序及初值,50ms产生一次中断,计数器则加1,当计数器count加到20的时候,倒计时器减1,并且count清0依次循环程序。判断值是否为0,如果不为0,继续倒计时;如果为0,则关中断程序stop-timer0(),倒计时结束。倒计时模块设计流程图如图3.11所示。 图3.11 倒计时流程图3.8 其他子程序设计本次设计的倒计时系统,除了上述的子程序外,还有显示子程序、延时子程序delay()、锁存器的正确控制等。其中显示子程序display()的编写很简单,以下语句实现了显示的四位数字:led_data3 = Data/1000;led_data2 = (Data/100)%10;led_data1 = (Data/10)%10;led_data0 = Data%10; /将四位数字分别赋给led_data3 led_data0temp = 0xfe;for(i=0;i4;i+)P0 = tableled_datai;LEDS = 0;temp = (temp1)+0x01;delay(5); 首先将初值的四位通过程序分别赋给led_data3 led_data0,然后通过for语句的调用将四位数字在数码管上呈现出来。比如,当i=0时,通过前面的数组定义可知,P0= tableData%10,显示个位。然后通过temp = (temp1)+0x01语句可知,接下来显示十位每个子程序在主程序的调用过程中完成不同的功能,从而使主程序能够顺利的执行,以顺利完成9999秒的倒计时器的设计。结 论通过对MCS-51单片机原理和接口技术的初步了解,结合自己的专业知识和对C语言的基本认识,在导师的帮助指导下完成了基于单片机控制的9999秒倒计时系统的设计和这篇论文,本论文完成了以下几个方面的工作:介绍了本次倒计时系统的设计目的、设计方案和开发意义。对MCS-51单片机的部分基本原理和接口技术进行了阐述,其中大部分都是本次设计需要用到,比如中断原理、定时器等;首先介绍了本次倒计时系统设计的硬件电路设计,包括中央处理模块、LED数码显示器模块、锁存器模块、矩阵键盘模块的设计;其次是软件程序设计,包括主程序设计和各个模块的子程序设计;最后是Keil uVision3软件系统调试的步骤和方法,以完成系统设计。系统功能:一切就绪后,通过KC键等待初值设置,其次通过矩阵键盘设定任何小于9999的初值,然后通过KF键开始倒计时,同时设置有复位键,以达到可以重新设置初值的目的。通过本次设计,使我在对单片机一无所知的情况下了解了单片机的部分原理和一些简单的设计,同时,也增强了对单片机的兴趣。但是由于本次设计我对单片机是从头开始学,对知识了解的局限性,使得这个倒计时系统在功能上不完善,对开发有一定的影响,恳请各位老师原谅!致 谢在本次毕业设计过程中,我学到了很多东西,也接触到了一些以前没有遇到过的问题,在不停的解决问题的时候真是受益颇多!在这里,我首先要感谢我尊敬的张永超导师,在毕业设计的这2个多月的时间里,从设计选题到整个论文的完成,无不凝聚着张老师的汗水与心血。张老师要指导很多同学的毕业设计,加上本来教学任务和科研项目,无论他工作量有多大,可总是还在百忙之中抽出大量的时间来指导我们。无论何时我们有疑问,他总是抽出时间为我们解答。他身上散发出渊博的专业知识,精益求精的工作作风,宽以待人的崇高风范,将成为我以后再社会上工作、学习的榜样。在我的毕业设计论文期间,老师为我提供了各种专业知识上的指导,他时常关注我的进展情况,给出一些创造性的建议。如果没有张老师帮助和关怀,我不会这么顺利的完成毕业设计和论文写作。在此我要再一次向我的导师张永超老师表示深深的感谢和崇高的敬意,谢谢您!在整个设计和论文的写作过程中,张永超老师给了我很多论文写作的建议和意见,我的很多和朋友们帮着查资料、一起讨论问题也给我带来了很多帮助,受到了很大的启发。在他们的帮助下,我才顺利的完成了毕业设计和论文写作。最后,我要特别的感谢我的家人对我无时无刻的支持和关怀,让我不断的走向成功,不断的去实现人生的价值!参考文献1 郭天祥.51单片机视频教程.2 马家辰. 孙玉德. 张颖. MCS51单片机原理及接口技术(修订版)哈尔滨工业大学出版社20043 李光飞. 楼然苗. 胡佳文. 谢象佐. 单片机课程设计实例指导. 北京航空航天大学出版社. 20044 张培仁. 张志坚. 高修峰. 十六位单片微处理器原理及应用(凌阳SPCE061A). 清华大学出版社. 20055 李广第 单片机基础 第1版北京:北京航空航天大学出版社,19996 石东新. 温淑鸿. 单片机原理与应用实验指导书. 中国传媒大学. 信息工程学院7 鲁云飞. 任志禄等. 51单片机在全自动倒计时控制器中的应用. 沈阳建筑工程学院学报(自然科学版). 2002年1月第18卷第1期8 PDF文档. 单片机开发与典型运用设计9 郭天祥. PPT. 十天学会单片机和C语言10 何立民从Cygnal 80C51F看8位单片机发展之路 单片机与嵌入式系统应用,2002年,第5期11 张志良编著.单片机原理与控制技术.第2版. 机械工业出版社12 贵国庆. 单片机学习开发系统应用之三4*4矩阵键盘的工作原理与编程.山西太原13 刘定良. 用AT89C2051设计的秒倒计时器. 长沙民政职业技术学院学报. 第12卷第1期. 200514 刘文奇. 基于单片机的电子倒计时器设计. 重庆电子工程职业学院. 2009附录源程序#include #define uint unsigned int#define uchar unsigned char#define TIME 50000#define INIT_TIME 9999#define MAXTIME 9999sbit LEDS = P10; /段选sbit LEDD = P11; /位选sbit END = P12;sbit KEY = P13; /开关使能选择uchar code table = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar count = 0;void delay(uint z) /延时子程序uint x,y;for(x=z;x0;x-)for(y=110;y0;y-); /延
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年劳动法试题及答案
- 2025年焊工(初级)证模拟考试题及答案
- 2025年大学国内安全保卫专业题库- 社会安全教育的渗透力度
- 2025年大学社会体育指导与管理专业题库- 大学生社会体育活动安排
- 2025年大学国内安全保卫专业题库- 经济发展与国内安全保卫
- 2025年大学人文教育专业题库- 当代大学人文教育的实践策略与方法
- 2025年大学警卫学专业题库- 突发事件处理流程与警卫学
- 2025年大学华文教育专业题库- 华文教育的学生学业成就与自我认知
- 2025年大学国内安全保卫专业题库- 社会治安问题与预防策略
- 2025年大学华文教育专业题库- 华文阅读材料设计与实践
- 【知识解析】分析生态脆弱区成因的基本思路
- 学前教育专业钢琴弹唱PPT全套教学课件
- 清华大学风景介绍
- SB/T 11004-2013电子提单(物权凭证)使用规范
- GB/T 16294-2010医药工业洁净室(区)沉降菌的测试方法
- GB/T 14486-2008塑料模塑件尺寸公差
- 《国际公法》全册配套完整课件
- 第三单元名著导读《朝花夕拾-二十四孝图》课件(15张PPT) 部编版语文七年级上册
- 特种设备管理台帐(5个台账)
- l领导干部心理健康知识讲座课件
- 经口鼻吸痰技术新版
评论
0/150
提交评论