毕业设计(论文)基于单片机的数字秒表设计_第1页
毕业设计(论文)基于单片机的数字秒表设计_第2页
毕业设计(论文)基于单片机的数字秒表设计_第3页
毕业设计(论文)基于单片机的数字秒表设计_第4页
毕业设计(论文)基于单片机的数字秒表设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

摘要21世纪,单片机的发展非常的迅速。单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。它是一种集计数和多种接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而51单片机是个单片机中最为典型和最有代表性的一种。本设计的数字电子秒表系统采用STC89C52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及独立键盘来设计秒表,将软、硬件有机地结合起来。本设计的软件系统是用C语言编写的包括一个定时器中断,4个独立键盘及软件消抖等。最后做成一个具有打开、关闭、复位、记忆功能的数字秒表。关键字单片机;数字电子秒表;仿真,STC89C52ABSTRACTABSTRACTINTHE21STCENTURY,THETECHNOLOGYOFSCMDEVELOPSVERYQUICKLYSCMWHICHISAMAJORPIECEOFCOMPUTERCOMPONENTSISINTEGRATEDINTOTHECHIPMICROCOMPUTERITISAMULTIINTERFACEANDCOUNTINGONTHEMICROCONTROLLERINTEGRATION,ANDINTELLIGENCEPRODUCTSAREWIDELYUSEDININDUSTRIALAUTOMATION,ANDMCS51MICROCONTROLLERISATYPICALANDREPRESENTATIVETHISDESIGNOFDIGITALELECTRICSTOPWATCHSYSTEMEMPLOYSSTC89C52SINGLECHIPMICROCOMPUTERASTHECOREPARTBASEDONTHEPRINCIPLEOFTIMINGANDCOUNTING,THESTOPWATCHISDESIGNEDBYINTEGRATINGDISPLAYELECTRICCIRCUIT,LEDDIGITALPIPEANDINDEPENDENTKEYBOARD,COMBININGBOTHSOFTWAREANDHARDWARETHESOFTWARESYSTEMOFTHISDESIGNISWRITTENINCTHEDESIGNINCLUDESATIMERINTERRUPTANDFOURINDEPENDENTKEYBOARDS,SOFTWAREAWAYSHAKINGANDSOONFINALLYITMAKESADIGITALSTOPWATCHWITHFUNCTIONSOFOPENING,CLOSING,RESTINGANDMEMORYKEYWORDSINGLECHIPMICROCOMPUTER;DIGITALSTOPWATCH;SIMULATION;STC89C52目录第1章引言111概述112课程设计的目的及意义213课程设计的要求2第2章整体设计方案321单片机的基本结构322单片机的选择8第3章数字秒表的硬件设计1132键盘控制电路1433译码器的使用1534单片机晶振和复位电路16第4章数字秒表的软件设计1841C程序整体设计思路1842主程序设计1943中断设计20第5章软件调试和结果2551软件调试与烧写2552硬件仿真26结论29参考文献30附录31致谢37第1章引言11概述单片机即单片机微型计算机。用专业语言讲,单片机就是在一块硅片上集成了微处理器、存储器及各种输入输出借口的芯片,这样一块芯片就具有了计算机的属性,因为被称为单片机微型计算机,简称单片机。单片机的前身叫做单板机,是将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备等装配在一块印刷电路板上,再配上监控程序,就构成一块单板机。单片机基本用于教学,后来发展为单片机。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械里。它在整个装置中,起着至关重要的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机、智能手机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。将8位单片机的推出作为起点,单片机的发展历史大致可分为以下几个阶段1第一阶段(19761978)单片机的控索阶段。以INTEL公司的MCS48为代表。MCS48的推出是在工控领域的控索,参与这一控索的公司还有MOTOROLA等,都取得了满意的效果。这就是SCM的诞生年代,“单机片”一词即由此而来。2第二阶段(19781982)单片机的完善阶段。INTEL公司在MCS48基础上推出了完善的、典型的单片机系列MCS51。它在以下几个方面奠定了典型的通用总线型单片机体系结构1)完善的外部总线。MCS51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。2CPU外围功能单元的集中管理模式。3体现工控特性的位地址空间及位操作方式。4)指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。3第三阶段(19821990)8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。INTEL公司推出的MCS96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。4第四阶段(1990)微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。12课程设计的目的及意义这样的课程设计是为了丰富学生的课余生活,让学生能深入地了解单片机知识的应用,并且还能帮助学生培养对单片机的兴趣。课程设计结束后,让学生在知识、能力、素质等综合能力上能得到充分的提高,为以后走上工作岗位奠定坚实的专业基础。13课程设计的要求本设计采用单片机为核心,设计。具体设计要求使用两位数码管显示,显示时间0099秒;正常计数时,每秒自动加一;一个开始按键,一个复位按键,一个暂停按键和一个快加按键;实现计数,复位,清零和快加功能;单片机通电后,首先初始化,然后进行对按键扫描。开始键用来控制秒表工作的开始;暂停键是用来对程序复位用的,当程序出现死循环或想从00开始重新计时,按下复位键可返回程序开始,重新执行。第2章整体设计方案21单片机的基本结构单片机是一种可通过编程控制的微处理器,单片机芯片自身不能单独运用于工程或者产品上,它必须要依靠外围数字器件或者模拟器件的协调才能发挥自身的强大功能。单片机内部包含中央处理器CPU、程序存储器ROM、数据存储器RAM、I/O口、定时计数器、外部中断、串行通信等内部结构。1中央处理器CPU中央处理器CPU是整个单片机的核心部件,是整个单片机最重要的部件。由运算与控制逻辑组成,还有终端系统与部分外部特殊功能寄存器等。是负责控制、指挥和调度整个单元系统的工作。22运算器运算器的功能是进行算术运算和逻辑运算。可以对半字节(4位)、单字节等数据进行操作。例如能完成加、减、乘、除、加1、减1、BCD码十进制调整、比较等算术运算和与、或、异或、求补、循环等逻辑操作,操作结果的状态信息送至状态寄存器。89C52运算器还包含有一个布尔处理器,用来处理位操作。它是以进位标志位C为累加器的,可执行置位、复位、取反、等于1转移、等于0转移、等于1转移且清0以及进位标志位与其他可寻址的位之间进行数据传送等位操作,也能使进位标志位与其他可移位寻址的位之间进行逻辑与、或操作。3程序计数器PC程序计数器PC用来存放即将要执行的指令地址,共16位,可对64K程序存储器直接寻址。执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。4令寄存器指令寄存器中存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送入指令寄存器,经译码后由定时与控制电路发出相应的控制信号,完成指令功能。本设计采用ATMEL的AT89C52微处理器,主要基于以下几个因素1AT89C52为51内核,仿真调试的软硬件资源丰富。2性价比高,货源充足。3功耗低,功能强,灵活性高。4DIP40封装,体积小,便于产品小型化。5为EEPROM程序存储介质,1000次以上擦写周期,便于编程调试。6工作电压范围宽27V6V,便于交直流供电。5数据存储器RAM数据存储器用于存放各种运算的中间结果,用作缓存和数据暂存,以及设置特征标志等。分为片内数据存储器和片外数据存储器。8052内部有128个8位用户数据存储单元和128个专用寄存器单元,他们是统一编址的。56程序存储器ROM程序存储器用于存放程序代码和表格常数。像我们用的STC89C52单片机,它的ROM大小为8KB。7I/O口I/O口为4并行输入输出口。对于输入,是检测外部有没有在控制它。对于输入,是在写程序的时候控制其管脚的输出为高电平还是低电平。8T/C对于89C52单片机,有2个16位的可编程定时/计数器,用来实现定时或者计数产生中断用于控制程序转向。9中断系统8052要比8051的中断系统更加完善。有2个外部中断,2个定时/计数器中断和一耳光串行中断,可满足不同的控制要求,并且具有2级优先级别选择。910UART一个全双工UART(通用于异步接收发送器)的串口I/O口。用于实现单片机间和单片机与计算机之间的串口通信,11时钟电路片内振荡器与时钟产生电路,8052内置最高频率高达12MHZ的时钟电路,但是石英晶体与微调电容仍需外接。而且一般最高震荡频率取决于单片机的型号与性能。总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。如图1所示,外部总线是指CPU与其它部件之间的连线。外部总线有三种数据总线DB(DATABUS),地址总线AB(ADDRESSBUS)和控制总线CB(CONTROLBUS)。如图1,为8051内部结构。对于8051来说,ROM为4KB;对于8052来说,ROM为8KB。单片机总共有40个引脚,如图2所示,每个引脚都有其不同的功能,有的引脚还有第二功能作用。8051时钟数据总线地址总线控制总线程序存储器数据存储器定时计数器并行I/O口串行通信口中断系统图18051内部结构1I/O口引脚P0口、P1口、P2口、P3口对于P0口是一双向8位三态I/O口,每个口可以独立控制。P0口内部没有上拉电阻,为高阻态,一般选择10欧姆的上拉电阻。对于其他的3组引脚,为准双向8位I/O口,每个口可以独立控制,内带上拉电阻。因为内带上拉电阻,所以这种借口输出没有高阻状态,输入也不能锁存,所以不是真正的双向I/O口。因为在使用前,要先进行写1操作,然后单片机内部才可以正确独处外部信号,有一个准备的过程,所以称为准双向口。对于P3口,不仅有输入输出功能,还有第二功能。RXD为串口输入,RXD为串口输出。INR0为外部中断0输入,INT1为外部中断1输入。T0为定时器0外部输入,T1为定时器1外部输入,WR为外部写控制,RD为外部读控制。31)P0口P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。2)P1口P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL。与AT89C51不同之处是,P10和P11还可分别作为定时/计数器2的外部计数输入(P10/T2)和输入(P11/T2EX)。3)P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVXRI指令)时,P2口输出P2锁存器的内容。FLASH编程或校验时,P2亦接收高位地址和一些控制信号。4)P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号2电源和时钟、复位引脚RST为单片机的复位引脚。当输入连续两个时钟周期以上高电平有效,用来完成单片机的复位初始化操作。VCC、GND为单片机的电源引脚,一个接高电平,一个接低电平。XTAL1和XTAL2为外接时钟引脚。一个是片内震荡电路输入端,一个是输出端。对于8052时钟有2种方式。一个为两个引脚外接石英晶体和震荡电容,另一个是1接地,2输入。P10VCCP11P00P12P01P13P02P14P03P15P04P16P05P17P06RST/VPDP07P30/RXD/VPPEAP31/TXDPROGP32/0INTSNP33/P201P34/T0P21P35/T1P22P36/P23WRP37/P24DXTAL2P25XTAL1P26VSSP27STC89C5212345678910111213141516171819204030383736353433323130292827262524232221图2单片机的引脚结构3PSEN全称是程序存储器允许输入控制端。在度外部程序存储器时低电平有效,以实现外部程序存储器单元的读操作。当内部ROM读取时候,该引脚不动作;外部ROM读取时,每个机器周期会动作2次;外部RAM读取时,2个脉冲被跳过PSEN不会输出;外接ROM时,与ROM的OE脚相接。4ALE/PROG在单片机扩展外部RAM时,ALE用于控制把P0口得输出低8位地址送锁存器锁存起来,以实现地位地址和数据的隔离。ALE为高电平时,允许地址锁存信号;ALE为低电平时,P0口上的内容和锁存器输出一致。为编程脉冲的输入端,PROG单片机的内部有程序存储器,用来存放用户需要执行的程序,我们可以通过编程脉冲输入写入ROM。5/VPPEA接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完内部ROM后自动读取外部ROM。接低电平时,单片机直接读取外部EOM。单片机内部本身就各种周期设置。像机器周期、指令周期等。如果单片机的定时器/计数器为定时功能的时候,计数器记录的就是单片机内部的机器周期。101)振荡周期也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,TX实验板上为110592MHZ。2)状态周期每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。3)机器周期一个机器周期包含6个状态周期S1S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。4)指令周期它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。MCS51系统中,有单周期指令、双周期指令和四周期指令。22单片机的选择单片机微型计算机是微型计算机的一个重要分支,也是颇具有生命力的机种。单片机微型计算机简称单片机,特别适用控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可称为一个单片机控制系统。单片机经过4代发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性发展方向。其发展趋势不外乎一下几个方面1多功能单片机中尽可能的把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWD、PCA可片成计数器阵列、WDT(监视定时器)、高速I/O口及计数器的捕获和比较逻辑等。有的单片机针对某一个应用领域、集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器,SMARTCARD借口、MPS解码器,CAN或者IIC总线控制器、LED、LCD或者VFD显示驱动器也开始集成在8位单片机中。2高效率和高性能为了提高执行速度和实行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高。比如,单片机的时钟频率得到提高;童谣的平率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。由于系统资源和系统复杂程度的增加,开始使用高级语言(入C语言)来开发单片机的程序,使用高级语言可以降低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3低电压和低功耗单片机的嵌入式应用决定了低电压和低功耗特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作。这些特性使得单片机系统可以在更小的电源的支持下工作更长的时间。4低价格单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品价格。选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了STC89S52。因为STC89C52是一个低电压,高性能CMOS8位单片机,片内含8KBYTES的可反复擦写的FLASH只读程序存储器和256BYTES的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和FLASH存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。89系列单片机以其卓越的性能、完善的兼容性、快捷便利的电擦写操作,低廉的价格、超强的加密功能,完全替代87C51/62和8751/52,低电压、低电源、低功耗,有DIP、PLCC、QFP封装,有民用型、工业级、汽车级、军品级等多种温度等级,是当今世界上性能最好、价格最低、最受欢迎的八位单片机。STC89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8XC52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程S系列的才支持在线编程。其将通用的微处理器和FLASH存储器结合在一起,特别是可反复擦写的FLASH存储器可有效地降低开发成本。第3章数字秒表的硬件设计31LED显示电路单片机系统中常用的显示器有发光二极管LEDLIGHTEMITTINGDIODE显示器、液晶LCDLIQUIDCRYSTALDISPLAY显示器、CRT显示器等。LED、LCD显示器有两种显示结构段显示(7段、米字型等)和点阵显示(58、88点阵等)。这里我们采用的是发光二管LED。发光二极管简称为LED。由镓(GA)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。如图3所示,按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。1共阳数码管共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极COM的数码管。共阳数码管在应用时应将公共极COM接到5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。2共阴数码管共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极COM的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。本次设计中,采用的是共阴极数码管。将共阴极数码管一端接地,一端接在单片机上,通过操纵单片机的高低电平,去控制数码管。ABCDEFGDPPPABCDEFGDP图3共阴极和共阳极数码管5VLED显示器工作方式有两种静态显示方式和动态显示方式。1静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。2数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“A,B,C,D,E,F,G,DP“的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12MS,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低,如表1,为数码管显示的16进制代码。表18段数码管显示数表0X3F00X0610X5B20X4F30X6640X6D50X7D60X0770X7F80X6F90X77A0X7CB0X39C0X5ED0X79E0X71F0X00无显示动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;由于数码管是有P0口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较弱,不能点亮数码显示管,因此P0口必须接上拉电阻来提高驱动能力。另外一位共阴数码管的驱动电流一般为20MA左右,如果电流太大容易造成数码管损坏,所以也需要根据电源的电压值来确定上拉电阻的大小。如果电阻过小,势必会形成灌电流过大,造成单片机IO的损坏,如果电阻过大,那么对拉电流没有太大的影响。电源供电电压为5V,当上拉电阻选用220电阻时灌电流为22MA。不会损坏单片机的I/O口,同时也可以为数码显示管起到限制电流的保护作用。32键盘控制电路键盘是指经过系统安排操作一台机器或设备的一组键(如打字机、电脑键盘),主要的功能是输入资料从编码的功能上,键盘又可以分成编码键盘和非编码键盘两种。1编码键盘键盘上闭合健的识别由专用的硬件编码器实现,并产生键编码号或键值(计算机键盘靠软件编码来识别)。编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由全编码电路产生一个唯一对应的编码信息如ASCII码。非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU将位置码通过查表程序转换成相应的编码信息。2非编码键盘靠软件编码来识别的键盘。非编码键盘的速度较低,但结构简单,并且通过软件能为某些键的重定义提供很大的方便。单片机一般都是编码键盘。而对于单片机的非编码键盘,又分为独立键盘和行列式键盘。行列式键盘又可称为矩阵键盘。1)独立键盘因为对于P3口来说,是准双向I/O口。因此不能直接识别输入,但是可以直接进行输出。要对其进行赋值为1让P3口全部为高电平。对于P3口来说,全部为位与的关系当P3口和其连接的借口都为高电平时,结果是高电平;如果一个为高电平一个为低电平,则结果为电平;如果两个都是低电平,则结果为低电平。有上图电路图可以看到,4个独立键盘一段连接的是P3,1、P32、P33、P34,另外一端口全部接地。当按键按下后,因为其两端一端为电平,一端为高电平,则结果为电平,所以此时结果为低电平。由此P3口的变化判断按键有没有被按下。2矩阵键盘矩阵键盘分为很多种,我们这里用的是44的矩阵键盘。很明显,共有16个按键,如果每个都当做是独立键盘使用的话,当应该有16个借口与此相连接,对于总共就40的借口的AT89C52单片机来说,实在是浪费资源。如果按键更多的话,则更加不好使用。所以出现了矩阵键盘。8矩阵键盘,只用8个I/O接口,也就是P3口就控制了全部的16个键盘,十分的节省资源。对于这16个按键,我们可以把他们分成4行、4列。其中的4行分别接P30、P31、P32、P3、3。而他们的4列则接在P34、P35、P36、P37上。这样可以通过行与列的高低电平来判断哪个键盘被按下了。举个例子,我们现在按下了第一个键盘,但是计算机并不知道是哪个按键按下,这样计算机当然无法进行相应的操作。此刻,可以在程序中,对P3口分别赋值,进行4次判断,先判断到底是哪行被按下,这样就可以把范围缩小到某一行。然后在改行的判断语句中,再进行4次比较,找出是哪一列的键盘发生变化,这样就可以轻松的找到到底按下的是哪一个按键了。不过在程序中需要进行多次判断,也就是说,每一次按下按键后,计算机必须对所有的程序扫描一遍才可以。33译码器的使用译码器是组合逻辑电路的一个重要的器件,其可以分为变量译码和显示译码两类。变量译码一般是一种较少输入变为较多输出的器件,一般分为2N译码和8421BCD码译码两类。显示译码主要解决二进制数显示成对应的十、或十六进制数的转换功能,一般其可分为驱动LED和驱动LCD两类。译码是编码的逆过程,在编码时,每一种二进制代码,都赋予了特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器。或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其原来含义的电路根据需要,输出信号可以是脉冲,也可以是高电平或者低电平。译码器的种类很多,但它们的工作原理和分析设计方法大同小异,其中二进制译码器、二十进制译码器和显示译码器是三种最典型,使用十分广泛的译码电路。译码器是典型的组合数字电路,译码器是将一种编码转换为另一种编译码器码的逻辑电路,学习译码器必须与各种编码打交道。从广义的角度看,译码器有四类二进制码译码器,也称最小项译码器,N中取一译码器,最小项译码器一般是将二进制码译为十进制码;代码转换译码器,是从一种编码转换为另一种编码;显示译码器,一般是将一种编码译成十进制码或特定的编码,并通过显示器件将译码器的状态显示出来。编码器,一般是将十进制码转换为相应的其它编码,其实质与代码转换译码器一样,编码是译码的反过程。1对于数码管的为选,我采用译码器与其连接。用Y0到Y7分别连接在8个数码管的为选,然后A0、A1、A2分别连接在P20、P21、P22口。这样可以对P2口赋值,实现控制数码管的过程,如表2,为译码器编译的二进制代码。表2译码器编译表输入输出A2A1A0Y7Y6Y5Y4Y3Y2Y1Y0000001010011100101110111000000010000001000000100000010000001000000100000010000001000000034单片机晶振和复位电路对于单片机来说,想让单片机运行必须要有电源、晶振和复位电路。如果没有这几个必备条件,单片机无法正常运行。1晶振单片机系统里都有晶振。全称叫做晶体振荡器,如图4所示,他结合单片机内部电路产生所需的时钟频率,单片机晶振提供的时钟频率越高,哪儿单片机运行的速度就越快,单片机接的一切指令的执行都是建立在单片机晶振提供的时钟频率。X1X2024M30PC130PC2图4晶振电路单片机晶振的作用是为系统提供基本的时钟信号,晶振通常和锁相环电路配合作用,以提供系统所需的时钟频率。对于89S52来说,片内设有一个由反向放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入和输出端,89S52单片机的时钟信号通常用两种电路形式得到内部振荡方式与外部振荡方式。电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为533PF。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路的对称性,尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可能低。本设计中采用大小为30PF的电容和12MHZ的晶振。62复位电路关于单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现,如图5所示。VCCC322UF接RSETR4200R4R51K图5复位电路当AT89C52单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态。而本系统选用的是12MHZ的晶振,因此一个机器周期为1S,那么复位脉冲宽度最小应为2S。第4章数字秒表的软件设计41C程序整体设计思路一个程序应该包括两方面的内容。一个是对数据的描述,一个是对操作的描述。对数据的描述是指在程序中要指定数据的类型和数据的组织形式,即数据结构;对操作的描述即操作步骤,也就是算法。数据是操作的对象,操作的目的是对数据进行加工处理,已得到期望的结果。4一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且某一种计算机语言表示,在设计一个程序的时候要综合运用这几方面的知识。对于一个算法应该包括以下特点1有穷性一个算法应包含有限的操作步骤,而不能是无限的。当然,比如一个程序让计算机计算1000年也是不合理的,不能当做是有效地算法。究竟什么是有限合理的,并没有严格标准,由人们的常识和需要而定。2确定性算法中的每一个步骤都应当是确定的,而不应该是含糊、模棱两可的。不能出现有歧义的语句。3有零个或多个输入所谓输入是指在执行算法的时候需要从外界取得必要的信息。一个算法也可以没有输入。4有一个或多个输出算法的目的是为了求解,求解就是解出。但算法的输出不一定就是计算机的打印输出,一个算法得到的结构就是算法的输出。没有输出的算法是没有意义的。5有效性算法的每一个步骤都应当能够有效地执行,并且得到确定结果的。简单介绍下计算机语言。计算机的发展规律是离硬件越来越远,离人类的自然语言越来越近。计算机语言的发展是机器语言,汇编语言,高级语言,第四代语言,和自然语言。对于机器语言,只能识别二进制。而二进制就是0和1,0和1代表的是开关。比如1代表关闭,0代表打开。那么每一台进算计的开关都不一样,也就是硬件都不一样,所以机器语言没有移植性。对于汇编语言,就是把机器语言用助记符来代替。比如,机器语言,如果是个8位的,11001010,都很难记。更别说16位的了。那么用助记符来代替他们,会容易些。比如用ADD,表示加,那么不用记那么长的数了。其他的两者并没有什么太大的区别。也没有移植性。对于高级语言,比如说C语言,他具有很强的可移植性。因为他有专门的编译器。可以把C语言编译成机器语言。所以对于高级语言,只有在编译的时候才去操作硬件。第四代语言,就是面向问题的语言了。就是指需要告诉电脑需要怎么做,不需要告诉电脑应该怎么做,离硬件更远了。第五代语言,就是自然语言。自然语言顾名思义,就是我们人类说得语言。这也是最高级的语言。我们在这个设计中,采用的就是C语言。42主程序设计在本软件设计中,用到了4个数码管,3个独立键盘,一个定时器中断,还有一些复位电路等等。对于本程序设计的结果首先,当硬件上电后在数码管上显示了4个零,最右边的两位数为秒位,最前面2位每一次循环是60次,没循环一次的时间是一秒钟。程序定义的3个独立键盘,第一个是启动秒表,按下去后,经过软件判断,秒表开始启动。第二个按键是停止按键,按下后,秒表停止,此刻显示的时间就是停止的时候的时间。最后一个按键是复位按键,按下后,时间归零,再按下第一个按键可以从新开始计时。以上是程序的大概要求。那么对于程序设计思路是首先,开始,运行程序,接着进入主函数。第一步就是对程序的初始化了,对刚开始的数码管显示以及定时器的打开,定时器的高八位和第八位的复制,定时器的启动等进行初始化。完成了这个工作后,进入一个大循环,在该循环里,就是本程序的主要部分了。因为我是同时亮4个数码管,必然采用的是动态显示;因为有一个定时器中断,则必然有一个中断程序,由于采用的是T0定时器,所以优先级别是1在主程序中,主要部分就是对按键的判别,因为有3个按键,所以要判别3次。对第一个按键,首先判定按键有没有按下,如果按下,什么也不做,直接判断有没有松开按键,一旦松开后,则立刻启动定时器,此刻定时器开始运行。对于第二个按键,还是首先判断有没有按下,一旦按下,立刻停止定时器,同时对16位定时计数器的高八位和第八位再赋值一次,和以前的赋值是一样的。此刻,数码管上的数字不再改变,秒表停止。接着是最后一个按键,还是判断有没有按下按键,一旦按下,对数码管运行的数全部清零,清零后,数码管再次显示4个零。如果此时再按下第一个按键,秒表从新开始运行,以此类推如图6所示。开始赋初值判断KEY0是否按下判断KEY1是否按下判断KEY2是否按下判断KEY3是否按下显示数码管开启定时器关闭定时器数码管复位存储此刻的数值是是是是否否否否图6程序流程图43中断设计中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。对于51单片机内部一共有5个中断源,也就是说,有5中情况发生的时候,会使单片机去处理中断程序。而对于52单片机,多了一个T2定时器中断。对于单片机来讲,中断是指CPU在处理某一件事情A时候,突然发生了另外一件事B,请求CPU迅速去处理;CPU暂时停止当前的工作,转而去处理事件B;待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A。引起CPU中断的根源,称为中断源,如表3所示,该过程就叫做中断系统。中断的开启和关闭,设置启用那一个中断等都是由单片机内部的一些特殊功能寄存器决定的。同时,与中断有关的还有一个中断嵌套单片机在处理事件A,此刻有了一个中断B,程序接着执行B,这个时候,又有了一个中断C,那么如果该C中断优先级高于B中断的话,可以先去执行C中断,执行完后再返回B,接着把B执行完,然后再返回A程序,继续执行以下内容。对于51单片机可以实现2级中断嵌套,对于52单片机可以实现4级中断嵌套。表3单片机中断源如表3就是关于中断的优先级。这里介绍5个中断源。最高的为外部中断0,这个是P32口的第二功能引脚,低电平或者下降沿有效;其次为定时/计数器0,此为P34口得第二功能引脚有T0计数器计数满回零引起;第三位是外部中断1,此为P33口的第二功能引脚,低电平或者下降沿有效;第四是定时/计中断源中断标志中断服务程序入口优先级顺序外部中断0IE00003H0定时/计数器TF0000BH1外部中断1IE10013H2定时/计数器1TF1001BH3串行口EI或TI0023H4数器1,此为P35口得第二功能引脚,有T1计数器计满回零引起。TI/RI串行口中断,串行口完成一系字符发送/接收后引起。对于AT89C52来说,还多了一个T2定时/计数器2中断,是由T2计数器计满回零引起。对于单片机的中断来说,有4个寄存器至关重要,分别是中断允许寄存器IE;中断优先级寄存器IP;定时/计数器工作方式寄存器TMOD;定时/计数器控制寄存器TCON。71IE该IE中断允许存器,用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8HAFH,该寄存器可以进行位寻址,可以对该寄存器的每一位进行单独操作,如表4所示。表4IE寄存器位序号D7D6D5D4D3D2D1D0位符号EAET2ESET1EX1ET0EX0位地址AFHADHACHABHAAHA9HA8H1)对于EA,是全局中断允许位。所有中断的开启都和此位有关。如果该位为低电平,那么所有的中断都不能用,没有开启。除非该位为高电平,开启总中断,其他中断才有可能开启。具体情况要根据具体的程序。2对于ET2是定时器/计数器0中断允许位。当EA打开时,如果ET2为高电平,则开启定时/计数器0,如果ET2为低电平,则关闭定时/计数器。3)对于ES,是串口中断允许位。当EA打开后,如果ES为高电平,那么串口中断打开,如果ES为低电平,那么串口中断关闭。4对于ET1,是定时器/计数器1中断允许位。当EA打开后,如果ET1为高电平,则开启定时/计数器1中断,如果ET1为0,则关闭该位。5)对于EX1,是外部中断1中断允许位。在EA开启后,如果EX1为高电平,则开启外部中断1,如果EX1为低电平,则关闭外部中断。6对于ET0是定时器/计数器0中断允许位。当EA打开时,如果ET0为高电平,则开启定时/计数器0,如果ET0为低电平,则关闭定时/计数器。7)对于EX0是外部中断0允许位。当EA打开时,如果EX0为低电平,则开启外部中断0,如果EX0为低电平,则关闭定时/计数器。2IP对于中断优先级寄存器IP是在特殊功能寄存器中,字节是B8H,位地址从B8H到BFH,IP用来设定各个中断源属于二级中断中的哪一级。该寄存器可进行位寻址,既可以对该位寄存器的每一位进行单独操作,如表5所示。1PS为串行口中断优先级控制位。如果串行口中断定义为高电平则为高优先级中断,若定义为低电平则为低优先级中断。2)PT1为定时器/计数器1中断优先级控制位。如果PT1为高电平则其为高优先级中断,若为低电平则为低优先级中断。3)PX1为外部中断1中断优先级控制位。若PX1为高电平则为高优先级控制位,若为低电平则为低优先级控制位。4)PT0为定时器/计数器1中断优先级控制位。如果PT0为高电平则其为高优先级中断,若为低电平则为低优先级中断。5)PX0为外部中断1中断优先级控制位。若PX0为高电平则为高优先级控制位,若为低电平则为低优先级控制位。表5IP寄存器3TMODTMOD为定时器/计数器的工作方式寄存器,确定工作方式和功能。定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,MOD用来确定定时器的工作方式及功能选择。由表6可以看出,TMOD的高四位用于设置定时器1,第四位用于设置定时器0,下面直说下后四位。表6TMOD寄存器1GATE为门控制位。当GATE为0时,定时器/计数器启动与停止仅受TCON寄存器中的TRX来控制。如果GATE为高电平,则其启动与停止由TCON寄存器中的TRX何外部中断引脚共同控制位。位序号D7D6D5D4D3D2D1D0位符号PSPT1PS1PT0PS0位地址BCHBBHBAHB9HB8HTMOD位D7D6D5D4D3D2D1D0字节地址GATEC/TM1M0GATEC/TM1M02)C/为定时器模式和计数器模式的选择位。如果为高电平,则为计数器模T式,如果为低电平则为定时器模式。3)MIM0为工作方式选择位。当M10且M00的时候,为方式0,是13位定时/计数器;当M10且M01的时候,为方式1,是16位的定时/计数器。M11且M00的时候,为方式2,是8位初值自动重装的8位定时器/计数器当M11且M01的时候,为方式3,是仅适用于T0,分成两个8位计数器,T1停止计数。4TCONTCON为定时/计数器控制寄存器,也在特殊功能寄存器中,字节地址为88H,位地址分别是从88H到8FH,该寄存器可以进行位寻址。TCON寄存器用来控制定时器的启动、停止、标志定时器的溢出和中断情况,如表7所示。表7TCON寄存器1)TF1为定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置1,

温馨提示

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

评论

0/150

提交评论