版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连交通大学信息工程学院2012届本科毕业生毕业设计(论文)PAGE摘要单片机体积小,功耗小,价格低,用途灵活,无处不在,属于专用计算机。是一种特殊器件,需经过专门学习方能掌握应用,应用中需设计专用的硬件和软件。由于其内部自带两个16位计数器,所以近年来在计数器领域的应用也十分广泛,计数器种类很多,根据构成计数制的不同,可分为二进制计数器和非二进制计数器。根据计数器的增减趋势,又分为加法、减法和可逆计数器。还有可预置数和可编程序功能计数器等等。本设计通过一个由AT89C51单片机控制,结合显示电路、电源电路、LED数码管以及键盘电路等组成的一个简单的秒表系统,对单片机的定时器/计数器的定时和计数原理进行研究。该系统的核心部分是由单片机最小系统构成,在加上一系列外围电路组成。这个多功能秒表系统能够是实现两位LED显示,显示的最大时间为24小时59分钟59秒,每秒自动加1,能正确地进行计时,还具有快加、复位功能。同时还可以当做时钟来使用。通过C语言编写代码并使用Proteus仿真、调试,实现了LED显示屏实时时间显示,按键切换显示内容的显示状态。由于Protues具有很强大的仿真调试功能,使用它可以实现在没有单片机硬件仿真器的情况下仍然可以实现单片机系统的软硬件开发的仿真调试。本系统利用Protues这一功能绘制了LED显示屏原理图、单片机最小系统原理图以及整个完整的秒表系统的工作原理图。向Protues中下载代码,连接调试成功。关键词:单片机秒表protuseABSTRACTMicrocontrollerhasmanyadvantagessuchassmallsize,lowconsumption,
lowprices,beusedwidely,
andbeusedeverywhereandsoon.Itbelongtothe
isinaprivate
computer.
Itisaspecial
device,
afterspecialized
learning
youcan
masterandapplicationit.Inthe
application
wemustbedesigned
in
adedicated
hardwareand
software.Theinterior
comeswith
two16-bit
counter,
soinrecentyearsitbeusedwidely
inthe
counter
field.Therearemanykindsofcounter,Accordingtoconstitutethenotationisdifferent,canbedividedintobinarycounterandthebinarycounter.Accordingtothecounteroftheincreaseanddecreaseofthetrend,anddividedintotheaddition,subtraction,andreversiblecounter.Andpresetnumberandprogrammablefunctioncounterandsoon.ThisdesignthroughtheAT89C51single-chipmicrocomputercontrol,combinedwiththeshowcircuit,thepowersupplycircuit,LEDdigitaltube,andkeyboardcircuitconsistingofasimplestopwatchsystem,thesinglechipmicrocomputertimer/counterofthetimingandcountprincipleforresearch.Thecoreofthesystemisthesmallestpartofmicrocomputersystemstructure,combinedwithaseriesofperipheryofcircuit.Themulti-functionstopwatchsystemcanrealizeistwoLEDdisplay,displaytimefor00-99secondspersecondtobeautomaticadd1,cancorrectlytoadd,subtract(fall)time,alsohasquicklyaddandresetfunction.ThroughtheClanguagewritingcodeanduseProteussimulation,commissioning,realizedtheLEDdisplayreal-timetimetoshow,switchbuttonshowingthecontentsofthedisplaystate.BecauseProtueshasverypowerfulsimulationcommissioningfunction,useitcanrealizeinnomicrocontrollerhardwaresimulationsuppressorcanstillachievetheSCMsystemhardwareandsoftwaredevelopmentofthesimulationtest.ThissystemUSESProtuesthisfunctiontodrawtheLEDdisplayprinciplediagram,singlechipminimizesystemdiagramandthecompleteastopwatchsystemworkprinciplediagram.Protuestodownloadthecode,connectiondebuggingsuccess.Keywords:tuse目录1前言 12单片机控制电路的设计 22.1单片机介绍 32.2单片机的特点和结构原理 42.2.1单片机的特点 42.2.2单片机结构 52.3单片机最小系统电路设计 73系统外围电路的设计 113.1键盘电路的设计 113.1.1按键电路的选择 113.1.2按键电路的故障及解决方法 123.2显示电路的设计 123.2.1显示电路的介绍 123.2.2LED数码管的工作原理 133.3晶振振荡电路的设计 144系统软件的设计 164.1软件设计概述 164.2软件设计流程图 164.3定时中断服务程序流程图 174.3.1中断的介绍 174.3.2定时中断的设置 184.3.3定时中断程序 195Protues软件仿真 205.1Protues软件功能简介 205.2KeiluVision2.0软件编译 215.2.1KeiluVision2.0软件简介 215.2.2KeiluVision2.0软件的使用说明 226系统调试与功能说明 256.1系统性能测试与功能说明 256.2系统误差分析 256.3软件调试问题及解决 25结论 26谢辞 27参考文献 28附录 29大连交通大学信息工程学院2012届本科毕业生毕业设计(论文)PAGE33大连交通大学信息工程学院2012届本科毕业生毕业设计(论文)PAGE11前言随着科学技术的不断发展与进步[10],目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用具有高度现实意义。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。2.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。3.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。4.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。5.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。6.在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。7.单片机在汽车设备领域中的应用单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等。此外,单片机在计数器技术领域也有着十分广泛的用途。随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。本文通过对一个简单的秒表系统设计,对单片机的定时/计数功能、最小系统进行研究。并运用Protues这款强大的仿真工具进行仿真,对单片机的研究和学习真正的做到学以致用把科学技术应用于我们的生活。2单片机控制电路的设计2.1单片机介绍单片机是一种集成在电路芯片[4],是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机内部也用和电脑功能类似的模块[5],比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可.用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影。它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。2.2单片机的特点和结构原理2.2.1单片机的特点AT89C51是ATMEL公司推出的51单片机[9],该系列单片机是采用高性能的静态80C51设计由先进CMOS工艺制造并带有非易失性Flash程序存储器全部支持12时钟和6时钟操作P89C51X2和P89C52X2/54X2/58X2分别包含128字节和256字节RAM32条I/O口线3个16位定时/计数器6输入4优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路此外由于器件采用了静态设计可提供很宽的操作频率范围频率可降至0可实现两个由软件选择的节电模式空闲模式和掉电模式空闲模式冻结CPU但RAM定时器串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复。它除了具有集成芯片的特点外还有许多特点。(l)高度集成,体积小、制作方便。单片机内部集成CUP、内存、1/0口,保证控制功能的实现,双列直插40引脚的单片机尺寸大约只1.srnmxsrnrn,贴片式单片机的尺寸大约有小纽扣大小,给设计制作电路带来了方便。(2)灵活性好、可靠性高。在设计电路时,单片机的最小系统就可以提供电路工作所需的时序,因此在设计电路的时候,只要根据具体要求扩展外围电路就可以达到要求。单片机的工作电压是SV,在单片机内固化不同的程序,实现的功能,它的误差就会控制在可控范围内。(3)易于扩展ROM、RAM等资源,用途广、价格低。单片机的资源一般可以满足小系统的应用,若系统较大,单片机可以扩展资源,它有便于扩展的结构及控制引脚,利用它们容易构成各种规模的单片机系统和单片机应用系统。每片STC89C52单片机的价格大致在8元左右,对于学生和大多数研究开发人员可以承担其开发经费。2.2.2单片机结构1.内部结构框图89C51系列的各单片机的生产厂商和型号的不同,导致其ROM、RAM、中断系统、外围功能模块以及处理器速度等方面有一定的不同[7],但是其基本结构相同,均包括算术逻辑单元ALU、片内RAM、1/0端口、定时器、中断系统等基本的功能单元。89C51单片机的内部结构如图2.1所示。图2.189C51内部结构图2.89C51单片机内部主要部件[1.3.5(l)算数逻辑单元ALU(ArithmeticLogicUnit)。运算器是进行算术/逻辑运算的部件,包括存放操作数和运算结果的累加器和寄存器等。51单片机包含一个8位的算术逻辑单元ALU,它为用户提供了指令系统,在外部时钟频率为12MHz的情况下,多数指令的执行时间仅为lus,乘法指令为4us。它包括运算器、布尔处理器、累加器A、寄存器B、暂存器、程序状态字PSW寄存器等。(2)片内存储器。片内存储器包括数据存储器和程序存储器,即RAM、ROM。51单片机提供了128B片内RAM存储器,提供了4KB的片内ROM存储器。用于存储控制单片机执行操作的代码,或者进行运算的数据。(3)并行I/O口。单片机共有4个8位并行I/O口P1、P2、P3和P4共32根引脚,每个I/O口都有自己寄存器、驱动器和锁存器,保证数据的双向传输的稳定运行。其中P3口具有第二功能,P3口的每位引脚具有特殊功能,其中具体功能如表2.1所示。表2.1P3口特殊功能表I/O口引脚说明P3.0RXD-串行数据接收端P3.1TXD-串行数据发送端P3.2-外部中断0请求端P3.3-外部中断1求端P3.4T0-定时器/计数器0P3.5T1定时器/计数器1P3.6-外部数据存储器写选通信号P3.7-外部数据存储器读选通信号(4)定时/计数系统和中断系统。51单片机内部有两个16位的定时/计数器,通过设置寄存器,实现4种工作模式。中断系统包含5个中断源,即外部中断。、外部中断1、定时器/计数器0溢出中断、定时器/计数器1溢出中断和串口中断。计算机响应中断的先后顺序即中断优先级,系统有默认的级别定义,同时也可以人为设定。具体的89C51/89C52系列单片机主要包括的功能部件如下:(l)l个8位的CPU;(2)片内128/256字节数据存储器RAM/SFR,用以存放可以读/写的数据,如的中间结果、最终结果以及欲显示的数据等;(3)片内4KB/8KB程序存储器ROMEPROM,用以存放程序、一些原始数据和表格;(4)4个8位双向UO口,每个端口既可以用作输入,也可以用作输出;(5)2或3个16位定时/计数器,每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制;(6)具有5个或6个中断源、2个中断优先级的中断控制系统:(7)1个全双工异步串行口,用于实现单片机之间或单片机与PC机之间的串行通信;(8)片内振荡器和时钟电路,但石英晶体和微调电容需要外接,最高允许振荡频率为24MHZ;(9)可寻址外部程序存储器和数据存储器,最大范围均为64KB;(l0)具有位寻址能力。从以上介绍的单片机的功能部件可以看出单片机可以实现基本的处理器功能,是计算机的微型化,但是单片机的体积小,集成化高,给设计电路带来了方便。2.3单片机最小系统电路设计本设计采用的是AT89C51单片机芯片,以它为核心对LED显示屏实现控制。89C51单片机主要由多个基本部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、1/0口(P0-P3口)、串行口、定时/计数器、中断系统及特殊功能寄存器(SFR)。它具有51系列单片机所具有的共同的特点,它有40个引脚,包括8位的I/O口四个:P0、Pl、P2和P3,共32个引脚;电源Vcc引脚,电源地GND引脚,外接晶振引脚XTALI和XTALZ,控制信号引脚:RST、ALE、和[11]。输入/输出端口:P0、Pl、P2和P3,每个P口都有八位,其中P0口是准双向口,作为输出口的时候,要先向该口写入1,P0口的内部不包含内部上拉电阻,因此在对P0口操作的时候要在其外部电路加入上拉电阻。P3口具有第二功能,具体功能详见表2.1,这里不再赘述。P2口可以用在访问外部程序存储器和16位地址的外部数据存储器时,P2口送出的是高8位地址,P0口提供低8位地址,P0口可分时提供8位数据总线。控制信号引脚:RST、ALE、和。RST是单片机的复位引脚,外接硬件电路可以实现单片机的复位操作。ALE是地址锁存允许信号引脚,高电平有效,当单片机访问外部存储器时,ALE输出信号作为锁存低8位地址的控制信号。PSEN是程序存储允许输出信号端,主要应用在对片外存储器的操作方面。EA是外部程序存储器地址允许输入端/固化编程电压输入端,主要应用在访问外部ROM,在实际应用时,保持该引脚是高电平即可。晶振连接引脚:XTAL1和XTAL2,在需要接振荡晶体的时候将两个引脚之间跨接一个晶振,如果需要采用外部时钟电路的时候,XTAL1输入外部时钟脉冲,XTAL2引脚悬空。电源引脚:Vcc为电源端,接+5V电压源,GND是接地端,接电源地。单片机如果要正常工作,需要有时钟脉冲源,使单片机有可以工作的时序脉冲。另外为了防止单片机工作时不稳定,或者出现程序跑飞、死循环等现象,还要有使单片机重新初始化的电路即复位电路,这就组成了单片机的最小系统电路,最小系统电路如图2.2所示。图2.2单片机最小系统电路图时钟电路是由石英晶体及两个电容构成的稳定的自激振荡器,电容通常取值30pF左右,可稳定频率并对振荡频率有微调作用。振荡脉冲频率范围为0-24MHZ,晶体振荡器的频率为fosc,89C51的一个机器周期包括12个振荡周期,如果采用6MHz晶体振荡器,则每个机器周期恰为2脚。每条指令都由一个或几个机器周期组成,在89CRST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期,即二个机器周期以上,单片机晶振选用16MHZ,则复位信号持续时间应该超过2us,才能完成复位操作。复位电路分自动复位和按键手动复位两种方式。上电自动复位是在加电瞬间电容通过充电来实现复位,电路图如图2.3所示。在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲,用以复位。只要Vcc的上升时间不超过1ms,就可以实现上电复位,当采用12MHz晶体的时候,电容C取值为10us,电阻R取值为8.2KΩ。手动复位是通过人为的按键使单片机复位,当程序出现不需要的死循环,或者程序跑飞的时候就需要人为的来使单片机复位初始化,这样就可以通过按键来使单片机复位。单片机复位电路通常是上电复位电路和手动复位电路组合在一起使用。图2.3手动复位电路和上电复位电路3系统外围电路的设计3.1键盘电路的设计为了实现对定时器输入的控制,我们在该设计中加入了按键设置。由于该系统要实现开始计时、停止计时、继续计时、清零、加调时、减调时等功能等6个功能,所以需要6个独立按键满足设计要求。3.1.1按键电路的选择按照键盘与CPU的连接方式可以分为独立式键盘和矩阵式键盘。(l)独立式键盘独立式键盘是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的按键工作状态。独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂,故这种形式适用于按键数量较少的场合。(2)矩阵式键盘在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4×4=16个按键,比直接用端口线连接键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些。无论是独立键盘还是矩阵键盘,单片机检测其是否被按下的依据都是一样的,也就是检测与该键对应的I/O口是否为低电平。独立键盘有一端固定为低电平,单片机写程序检测时比较方便。而矩阵键盘两端都与单片机I/O口相连,因此在检测时需要人为的通过单片机I/O口送出低电平。检测时,先送一列为低电平,其余几列全为高电平,然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平,则我们便可确认当前被按下的键是哪一行那一列的,用同样的方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样即可检测完所有的按键,当有按键被按下时便可判断出按下的键是哪一个键。当然我们也可以将行先置低电平,扫描列是否有低电平。这就是矩阵键盘检测的原理和方法[12]。根据对两种不同键盘电路工作原理的了解,通过对比选择,本系统设计选择采用6个独立式键盘,分别控制切换各种状态。按键接口电路图3.1所示。P2.1-P2.5接6个按键,分别控制开始计时、停止计时、继续计时、清零、加调时、减调时等功能。功能的实现主要是对按键的扫描,主要体现在软件程序编写方面,根据不同的按键值,执行不同的操作,在具体场合应用中可以将按键的功能重新定义,只要在程序中重新编写就可以,使工作更加有效率。图3.1按键接口电路图3.1.2按键电路的故障及解决方法本系统采用的按键的开关为机械弹性开关。当机械触点断开、闭合时,由于弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,有可能伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5-10ms。按键稳定闭合的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次,为了确保对键的一次闭合仅作一次处理,必须去除键抖动。去抖有专用的去抖硬件电路,也有专用的去抖芯片,本系统采用软件方法去除抖动,即检测出键闭合后执行一个延时程序产生5ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平则确认为真正有键按下。延时程序如下所示。voiddelay(uintn){uinty,z;for(z=0;z<n;z++)//250*nus{for(y=0;y<125;y++);//2*125us=250us}}该程序延时250×nus,具体延时多长时间由n决定。3.2显示电路的设计3.2.1显示电路的介绍显示器普遍地用于直观地显示数字的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:发光二极管LED(LiquidCrystalDisplay)显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,发光二极管LED由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。本系统的显示电路采用六位数码管进行显示。3.2.2LED数码管的工作原理数码管分为共阴极、和共阳极之分,由于本系统使用的数码管属于共阴极,所以下面只对共阴极数码管的工作原理进行叙述。数码管的显示原理是靠点亮内部的发光二极管来发光,图3.2为数码管内部电路图,由图可以看出,一位数码管的引脚是10个,显示一个8字需要7小段,另外还有个一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管封装10个引脚,其中第3和第8引脚是连在一起的。图3.2数码管内部原理图对于共阴极数码管来说,其8个发光二极管的阴极在数码管内部全部连在一起,所以称为“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。当我们给数码管的任一个阳极加一个高电平时,对应的这个发光二极管就点亮了。如果想要显示一个8字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想要显示一个0字,那么我们可以除了给“g、dp”这两位送低电平外,其余引脚全部都送高电平,这样就显示出0字了。想让它几,就给相对应的发光二极管送高电平,因此我们在显示数字的时候首先做的就是给0-9十个数字编码,在要它亮什么数字的时候直接把这个编码送到它的阳极就行了。显示电路如图3.3所示。图3.3显示电路3.3晶振振荡电路的设计一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。单片机如果要正常工作,需要有时钟脉冲源,使单片机有可以工作的时序脉冲。时钟电路是由石英晶体及两个电容构成的稳定的自激振荡器,电容通常取值30pF左右,可稳定频率并对振荡频率有微调作用。振荡脉冲频率范围为0-24MHz,晶体振荡器的频率为ƒosc,89C51的一个机器周期包括12个振荡周期,如果采用6MHz晶体振荡器,则每个机器周期恰为2us。每条指令都由一个或几个机器周期组成,在89C51系统中,有单周期指令、双周期指令和4周期指令。指令的运算速度和它的机器周期数第二章单片机控制电路的设计直接相关,机器周期数较少则执行速度快。但是,晶振的振荡频率不能选择过大,超过了单片机的承受能力单片机就会无法执行程序。AT89C51单片机内部的振荡电路是一个高增益反相放大器,引线XYAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器[8]。这里,选用51单片机12MHz的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要使用晶体振荡器X1尽可能接近单片机。图3.4晶振振荡电路4系统软件的设计4.1软件设计概述在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,如:延时、中断服务程序、快加、快减调时等。在软件设计时通常要考虑以下几个问题:(l)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性;4.2软件设计流程图程序的编写主要体现的是模块化,将每个功能分别用独立的子函数编写,然后再调用主函数调用子程序,实现相应的功能,其中子函数包括按键扫描子函数,实时时钟读取子函数以及延时子函数。程序首先初始化所有宏定义和全局变量,以及存储在ROM里的数据,执行按键扫描程序,如果有键按下,则单片机的P2口产生一个低电平,并执行按键消抖程序,使系统的误差变小。如果是Kl键按下,系统则计时开始;若是K2键按下,系统则停止计时;若是K3键按下系统则继续计时;若是K4键被按下,秒表系统被清零;若是K5按键按下,则可以对系统进行加调时;若是K6按键按下,则可以对系统进行减调时;主程序的程序框图如图4.1所示。是否有键按下?开始初始化键盘扫描K1?是否有键按下?开始初始化键盘扫描K1?K2?K3?K4?K5?K6?开始计时停止计时继续计时清零加数调时减数调时NYYYYYYYNNNNNN图4.1系统主程序流程图4.3定时中断服务程序流程图4.3.1中断的介绍CPU在执行程序时,CPU以外的设备请求停止现程序的执行,转去处理外设事件,处理后再回到原地执行,这一过程叫中断。其流程如图4.2所示。中断工作方式的优点:(l)外设与CPU可并行工作CPU与多个外设同时工作,互不干扰(2)实现了实时处理、实时控制CPU能及时处理外部信息,如数据采集,监控(3)能及时处理随机故障图4.2中断流程图4.3.2定时中断的设置51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如表4.3所示。表4.3TMOD寄存器位76543210字节地址:89HGATEC/M1M0GATEC/M1M0TMODGATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。C/:定时/计数模式选择位。C/=0为定时模式;C/=1为计数模式。M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。M1M0工作方式如表4.4所示[5]。表4.4定时/计数器工作方式设置M1M0工作方式说明00方式013位定时/计数器01方式116位定时/计数器10方式28位自动重装定时/定时器11方式3T0分成两个独立的8位定时/计数器;T1此方式停止技术TCON的低4位用于控制外部中断,其高4位用于控制定时/计数器的启动和中断申请。其格式如表4.5所示。TCON中的TF1和TF0是溢出中断请求标志位。有硬件自动设置,这里不做介绍。TCON中的TR0和TR1的运行控制位。TR1置1时,T1开始工作,TR1置0时,T1停止工作。TR1由软件置1或清0.所以,用软件可以控制定时器/计数器的启动与停止。TR0功能与TR1功能类同,这里也不再赘述。表4.5TCON寄存器位76543210字节地址:88TF1TR1TF0TR0M0TCON4.3.3定时中断程序根据前一小节的介绍,要使用定时器/计数器,先应对其进行初始化,其初始化程序如下所示。TMOD=0x10;//定时器1为工作方式1TH1=(65536-50000)/256;//送入初值50msTL1=(65536-50000)%256;EA=1;//打开总中断ET1=1;TR1=1;5Protues软件仿真5.1Protues软件功能简介Proteus就是一款硬件仿真软件[2],它由英国Labcenier公司开发,集51单片机,PIC单片机,MSP430单片机,甚至是ARM和AVR单片机于一起,还配有虚拟仪器仿真平台,使用该软件就可以给自学者和学生、研究人员带来了方便。该软件操作简单,容易学习,在互联网的时代很容易在网络上搜集关于该软件使用方法的介绍。本系统就是在该软件仿真环境下进行设计研发的,仿真结果与实际结果差别较小,操作灵活,给研究工作带来了便利。本设计具体仿真步骤描述如下:(l)打开Proteus7Professional,选择Proteus菜单栏中的打开选项,打开已经绘制好的仿真电路图。打开后,鼠标左键双击单片机芯片,出现如图5.1所示的界面。然后再单击ProgramFile一栏中的“文图5.1Proteus选择界面件夹”图标,出现如图5.2所示的界面。然后再鼠标双击所需的HEX文件后,就完成了程序的加载。图5.2Proteus仿真的HEX文件选择界面(2)完成程序加载后,点击Proteus仿真中的“”按钮,软件便开始了仿真。仿真结束时按“”按钮,则结束仿真。5.2KeilUvision2.0软件编译5.2.1KeilUvision2.0软件简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。用KeilC开发的程序可以在用Proteus设计的仿真电路中调试和交互运行。KeilUvision2.0软件界面如图5.3所示。图5.3KeilUvision2.0软件界面5.2.2KeilUvision2.0软件的使用说明(1)打开Keil软件后,我们先新建一个工程文件,点击“Project->NewProject…”.选择工程文件要存放的路径,并且输入工程文件名,这里我们用test2作为工程文件名,这里就不用在后面加.c了。如图5.4所示。(2)点击Save后弹出选择CPU及型号的对话框,由于本实验板所配的单片是STC公司的,而KEIL中并没有STC公司的产品,不过STC公司的单片机和传图5.4KEIL软件新建工程统的51单片机是兼容的,所以这里我们就选择Atmel公司的AT89C51。如图5.5所示。图5.5芯片CPU及型号的选择(3)新建一个C51文件,单击左上角的NewFile,保存新建的文件,单击保存按钮。(4)输入文件名test2.c,这里必须以**.c为文件名。保存好后我们还需要把文件加入到工程项目中,如图5.6所示在SourceGroup1上单击右键,选择AddFilesto‘GroupSourceGroup1’。图5.6把.C文件添加到工程里(5)然后选择刚才建立的test2.c文件,单击Add。这时我们看左边工程信息窗口中的SourceGroup1下面多了test2.c文件,这说明添加文件成功了。此时就可以在编辑框内输入字符进行编程了。新工程建立好就可以在编辑框内输入字符进行编程了。6系统调试与功能说明6.1系统性能测试与功能说明秒表系统运行时:默认运行状态,按24小时制分别显示“时时-分分-秒秒”有两个动态显示,时间会按实际时间以秒为最小单位变化。该系统如果只按下K1键就可以当做时钟使用,按照24小时制显示时间。秒控制:Kl键按下,系统则计时开始;若是K2键按下,系统则停止计时;若是K3键按下系统则继续计时;若是K4键被按下,秒表系统被清零;若是K5按键按下,则可以对系统进行加调时;若是K6按键按下,则可以对系统进行减调时;6.2系统误差分析时间是一个基本物理量,具有连续、自动流逝、不重复等特性。我国时间基准来自国家授时中心,人们日常使用的时钟就是以一定的精度与该基准保持同步的。结合时间概念和误差理论,可以定义电子钟的走时误差S=S1-S2,S1表示程序实际运行计算所得的秒;S2表示客观时间的标准秒。S>0时表示电子钟秒单元数值刷新滞后,即走时误差为“慢”:反之,S<0表示秒单元数值刷新超前,即走时误差为“快”。本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。6.3软件调试问题及解决软件程序的调试一般可以将重点放在模块调试上,统调时最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。仿真部分采用Protues7Professional软件,次软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。首先打开Protues7Professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制号后再选择Keil已经编译好的.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行Protues7Professional软件观察,直到满足要求。结论这次毕业设计让我受益匪浅。通过这次设计我对自己在大学四年时间里所学的知识得到了全面的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及表达能力,最终完成了这份论文。撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。下面就本次的设计的心得体会做一下简要描述:(1)将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻,对程序的编译过程了解透彻。(2)本次课程设计以自己设计为主,因此培养了学习的积极性,让我能够独立去分析问题、发现问题、解决问题,更增强我与老师同学交流沟通和合作完成任务的能力。(3)由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如Protues和Keil等的基本知识。程序是用C语言来编写的,这次课程设计让我在编程方面得到了提高。总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理更好的运用于实践方面,而且也锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,为我以后的工作打下了一定的基础。谢辞本设计能够顺利的完成是得到了院系领导老师的大力支持和帮助,尤其是在我的导师李文老师的亲切关怀和悉心指导下完成的。在设计的过程中,李老师多次询问研究过程,并认真的帮我改正错误,拓展思路。李老师治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村”的感觉。很高兴,在毕业设计的完成中得到李老师的帮助与指导,这是我在大学生活中的一次很宝贵的经历。我在学校图书馆,本部图书馆搜集资料,并且还在网上查找各类相关资料,将这些宝贵的资料全部记录下来,尽量使我的资料完整、精确、数量多,有利于对本论文的撰写。然后我将收集到的资料仔细整理分类,及时拿给李老师
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体外冲击波疗法临床应用中国疼痛学专家共识(2026版)解读
- 施工现场噪声治理设备使用措施
- 2026年中国刷柄市场调查研究报告
- 2026年医师定期考核试题库及答案
- 混凝土冬季施工方案-技术交底
- 某工程管理消防安全计划
- 基坑监测方案模板
- 金属矿山驾驶员日常检查安全操作规程
- 2026年卫生高级职称考试(职业病)在线题库及答案(副高)
- 物料提升机施工方案模板
- 洁净车间安全知识培训课件
- 2025年医疗保障局职位遴选模拟题及答案解析
- 红星照耀中国周恩课件
- GB/T 17434-2025船用耐火窗技术条件
- 黄石阳新县事业单位招聘考试真题2024
- 石化企业火灾处置流程
- 实验室生物安全管理年度工作计划
- 介入导管室手术交接流程
- 护理人员中医技术使用手册
- DB51T 2790-2021 公路隧道竖井技术规程
- 混凝土结构与砌体结构高职完整全套教学课件
评论
0/150
提交评论