基于at89s51的数字秒表设计_第1页
基于at89s51的数字秒表设计_第2页
基于at89s51的数字秒表设计_第3页
基于at89s51的数字秒表设计_第4页
基于at89s51的数字秒表设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

基于AT89S51的数字秒表设计摘要数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动和停表电路等。主控制器采用单片机AT89S51,显示电路采用共阴极LED数码管显示计时时间。文中设计了一种以单片机为控制核心的数字秒表。该数字秒表采用C语言开发,通过数码管显示计时结果。关键字AT89S51;数字秒表;LED数码管显示ABSTRACTDIGITALELECTRONICSTOPWATCHDISPLAYINTUITIVE,READTHECONVENIENT,HIGHPRECISIONOFADVANTAGES,WIDELYUSEDINTIMETHEDESIGNOFDIGITALELECTRONICSTOPWATCHBYSINGLECHIP,ANDSTRIVETOSIMPLESTRUCTURE,HIGHPRECISIONFORTHETARGETDESIGNINCLUDINGTHEDESIGNOFTHESYSTEMHARDWARECIRCUITANDTHEDESIGNOFTHEPROGRAMTHEMAINHARDWARECIRCUITISTHEMAINCONTROLLER,TIMINGANDDISPLAYCIRCUITANDBACKTOZERO,STARTANDSTOPWATCHCIRCUIT,ETCLORDAT89S51SINGLECHIPCONTROLLER,SHOWCIRCUITOFTHECATHODELEDDIGITALPIPEDISPLAYTIMECLOCKTHISPAPERDESIGNSAWITHTHESINGLECHIPPROCESSORASTHECORETOCONTROLTHEDIGITALSTOPWATCHTHEDIGITALSTOPWATCHUSINGCLANGUAGEDEVELOPMENT,THROUGHTHEDIGITALPIPEDISPLAYTHETIMEKEYWORDSAT89S51DIGITALSTOPWATCHTHELEDDIGITALDISPLAY目录摘要IABSTRACTII前言IV1绪论111单片机的背景112单片机的应用领域22总体方案的设计421系统的组成模块422工作原理43系统的硬件电路设计631单片机的选择632显示电路的选择与设计933按键电路的选择与设计1034时钟电路的选择与设计1135复位电路的选择与设计144系统的软件电路设计1641程序设计思想1642主程序设计1643中断程序设计1844系统的程序设计21结论25参考文献26致谢27附录28前言秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。自首届现代奥运会在希腊雅典举办以来,奥运计时技术一直在不断地向前发展。一百多年过去了,首届现代奥运会上计时所用的跑表如今换成了一系列高科技计时装置,如高速数码摄像机、电子触摸垫、红外光束、无线应答器等等。鉴于当今计时技术的快速发展,即便千分之一秒为眨眼的40倍的毫微差距,也决定着冠军的归属。在现在的体育竞技比赛中,随着运动员的水平不断提高,差距也在不断缩小。有些运动对时间精度的要求也越来越高,有时比赛冠亚军之间的差距只有几毫秒,因此就需要高精度的秒表来记录成绩。一、从大型钟向小型钟演变。二、从小型钟向袋表过渡。三、从袋表向腕表发展。每一阶段的发展都是和当时的技术发明分不开的。1088年,当时我国宋朝的科学家苏颂和韩工廉等人制造了水运仪象台,它是把浑仪、浑象和机械计时器组合起来的装置。它以水力作为动力来源,具有科学的擒纵机构,虽然几十年后毁于战乱,但它在世界钟表史上具有极其重要的意义。1656年,荷兰的科学家惠更斯应用伽利略的理论设计了钟摆,第二年,在他的指导下年轻钟匠SCOSTER制造成功了第一个摆钟。1675年,他又用游丝取代了原始的钟摆,这样就形成了以发条为动力、以游丝为调速机构的小型钟,同时也为制造便于携带的袋表提供了条件。18世纪期间发明了各种各样的擒纵机构,为袋表的进一步产生与发展奠定了基础。20世纪初,尤其是第一次世界大战的爆发,袋表已经不能适应作战军人的需要,腕表的生产成为大势所趋。许多新的设计和技术也被应用在腕表上,成为真正意义上的带在手腕上的计时工具。紧接着的二战使腕表的生产量大幅度增加,价格也随之下降,使普通大众也可以拥有它。腕表的年代到来了1998年建立超冷铯原子钟,比微微秒又要精确10万倍。从我国水运仪像台的发明到现在各国都在研制的原子钟这几百年的钟表演变过程中,我们可以看到,各个不同时期的科学家和钟表工匠用他们的聪明的智慧和不断的实践融合成了一座时间的隧道,同时也为我们勾勒了一条钟表文化和科技发展的轨迹。1绪论11单片机的背景单片机即单片机微型计算机。用专业语言讲,单片机就是在一块硅片上集成了微处理器、存储器及各种输入输出接口的芯片。这样一块芯片就具有了计算机的属性,因为被称为单片机微型计算机,简称单片机。单片机的前身叫做单板机,是将CPU芯片、存储芯片、I/O接口和简单的I/O设备等装配在一快印刷电路板上,在配上监控程序,就构成一块单板机。单片机基本用于数学,后来发展为单片机。现在这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到是产品更新换代的功效,常在产品名称前冠以形容词“智能型”。现在可以说单片机是百花齐放的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势。111、低功耗CMOS化MCS51系列的8031推出时的功耗达630MW,而现在的单片机普遍都在100MW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS互补金属氧化物半导体工艺。80C51就采用了HMOS即高密度金属氧化物半导体工艺和CHMOS互补高密度金属氧化物半导体工艺。CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗,电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。112、微型单片化现在常规的单片机普遍都是将中央处理器CPU、随机存取数据存储RAM、只读程序存储器ROM、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW脉宽调制电路、WDT看门狗、有些单片机将LCD液晶驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD表面封装越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。113、主流与多品种共存现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的WINBOND系列单片机。所以C8051为核心的单片机占据了半壁江山。而MICROCHIP公司的PIC精简指令集RISC也有着强劲的发展势头,中国台湾的HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。114、大容量、高性能以往单片机内的ROM为1KB4KB,RAM为64128B。但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。目前,单片机内ROM最大可达64KB,RAM最大为2KB。另外单片机进一步改变CPU的性能,加快指令运算的速度和提高系统控制的可靠性。采用精简指令集RISC结构和流水线技术,可以大幅度提高运行速度。现指令速度最高者已达100MIPSMILLIONINSTRUCTIONPERSECONDS,即兆指令每秒,并加强了位处理、中断和定时控制功能。这类单片机的运算速度比标准的单片机高出10倍以上。由于这类单片机有极高的指令速度,可以使用软件模拟其I/O功能,由此引入了虚拟外设的新概念。12单片机的应用领域单片机改变了我们生活,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机,单片机有着广阔的应用前景。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴1、智能仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,例如精密的测量设备。2、在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。3、在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,无所不在。4、在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,现在的通信设备基本上都实现了单片机智能控制,例如手机,电话机、列车无线通信。5、单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。6、在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。从无线电世界到单片机世界。本设计利用AT89S51单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P20P27口作列扫描输出,P11、P12、P13、P14、P30、P31、RST分别接七个按钮开关,分别实现开始、暂停、存储、清除当前数据、全部清零和查看上次时间和复位功能,显示电路由八位共阴极数码管组成。2总体方案的设计设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,显示电路和回零、启动、查看、停表电路等。主控制器采用单片机AT89S51,显示电路采用共阴极LED数码管显示计时时间,七个按键均采用触点式按键。21系统的组成模块系统总电路是由控制电路,显示电路,时钟电路,按键电路和复位电路组成,只要将单片机与以上各部分电路合理的连接就组成了系统总电路。系统总电路图如附表所示。AT89S51单片机为控制电路的核心部分,各个电路均和单片机相连接,由单片机统筹和协调各个电路的运行工作。AT89S51单片机提供了XTAL1和XTAL2两个专用引脚接晶振电路,因此只要将晶振电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。复位电路同晶振电路,单片机设有一个专用的硬件复位接口,并设置为高电平有效。按键电路与单片机的端口连接可以由用户自己设定,本设计中软件复位键和查看键分别接单片机的RST和P31,均设为高电平有效。显示电路由八位数码管组成,采用动态显示方式,因此有8位段控制端和8位位选控制端,八位段控制接P0口,P00P07分别控制数码显示管的A、B、C、D、E、F、G、DP显示,AT89S51的P0口没有集成上拉电阻,高电平的驱动能力很弱,所以需要接上拉电阻来提高P0的高电平驱动能力。八位位控制则由低位到高位分别接到P20P27口,当P20P27端口任意一个端口为高电平时,与其相对应的数码管导通显示。22工作原理本设计利用AT89S51单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,口作列扫描输出,P11、P12、P13、P14、P30、P31、RST分别接七个按钮开关,分别实现开始、暂停、存储、清除当前数据、全部清零和查看上次时间和复位功能,电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。根据要求知道秒表设计主要实现的功能是计时和显示。因此设置了七个按键和八位数码管显示时间,七个按键分别是开始,暂停、存储、清除当前数据、全部清零、复位和查看上次计时时间按键。利用这七个建来实现秒表的全部功能,而八位数码管则能显示最多99分59999秒的计时。计时采用定时器T0中断完成,定时溢出中断周期为1MS,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对毫秒计数单元进行加一,达到10次就对十毫秒位进行加一,依次类推,直到99分59999秒重新复位。再看按键的处理。这七个键可以采用中断的方法,也可以采用扫描的方法来识别。复位键和查看主要功能在于数值复位和查询上次计时时间,对于时间的要求不是很严格。而开始和停止键则是用于对时间的锁定,需要比较准确的控制。因此可以对复位和查看按键采取扫描的方式。而对开始和停止键采用外部中断的方式。3系统的硬件电路设计31单片机的选择本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了ATMEL公司的AT89S51。ATMEL公司的89系列单片机以其卓越的性能、完善的兼容性、快捷便利的电擦写操作,低廉的价格、超强的加密功能,完全替代87C51/62和8751/52,低电压、低电源、低功耗,有DIP、PLCC、QFP封装,有民用型、工业级、汽车级、军品级等多种温度等级,是当今世界上性能最好、价格最低、最受欢迎的八位单片机3。AT89S51为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的80C51相同,下面介绍一下单片机的外部结构AT89S51单片机采用40引脚的双列直插封装方式。图1为引脚排列图,40条引脚说明如下主电源引脚VSS和VCCVSS接地VCC正常操作时为5伏电源外接晶振引脚XTAL1和XTAL2XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。EA/VP31XTL928RSD76WIN045OGCND图1单片机引脚图控制或与其它电源复用引脚RST/VPD,ALE/,和/VPPRST/VPD当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在VCC掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。ALE/正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE端可以驱动(吸收或输出电流)八个LSTTL电路。对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲(功能)外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,在每个机器周期内两次有效。同样可以驱动八LSTTL输入。/VPP、/VPP为内部程序存储器和外部程序存储器选择端。当/VPP为高电平时,访问内部程序存储器,当/VPP为低电平时,则访问外部程序存储器。对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编程电源(VPP)。输入/输出引脚P00P07,P10P17,P20P27,P30P37。P0口(P00P07)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。P1口(P10P17)是一个带有内部提升电阻的8位准双向I/O口。能驱动吸收或输出电流四个LSTTL负载。P2口(P20P27)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。P2口可以驱动吸收或输出电流四个LSTTL负载。P3口(P30P37)是一个带有内部提升电阻的8位准双向I/O口。能驱动吸收或输出电流四个LSTTL负载6。AT89S51具有以下标准功能8K字节FLASH,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S51可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。CPU是单片机的核心部件。它由运算器和控制器等部件组成2。(1)运算器运算器的功能是进行算术运算和逻辑运算。可以对半字节(4位)、单字节等数据进行操作。例如能完成加、减、乘、除、加1、减1、BCD码十进制调整、比较等算术运算和与、或、异或、求补、循环等逻辑操作,操作结果的状态信息送至状态寄存器。AT89S51运算器还包含有一个布尔处理器,用来处理位操作。它是以进位标志位C为累加器的,可执行置位、复位、取反、等于1转移、等于0转移、等于1转移且清0以及进位标志位与其他可寻址的位之间进行数据传送等位操作,也能使进位标志位与其他可移位寻址的位之间进行逻辑与、或操作5。(2)程序计数器PC程序计数器PC用来存放即将要执行的指令地址,共16位,可对64K程序存储器直接寻址。执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。(3)令寄存器指令寄存器中存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送入指令寄存器,经译码后由定时与控制电路发出相应的控制信号,完成指令功能。本设计采用ATMEL的AT89S51微处理器,主要基于以下几个因素AT89S51为51内核,仿真调试的软硬件资源丰富。性价比高,货源充足。功耗低,功能强,灵活性高。DIP40封装,体积小,便于产品小型化。为EEPROM程序存储介质,1000次以上擦写周期,便于编程调试。工作电压范围宽27V6V,便于交直流供电。32显示电路的选择与设计对于数字显示电路,通常采用液晶显示或数码管显示。对于一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性差,不适合远距离观看;对于具有驱动电路和单片机接口的液晶显示模块字符或点阵,一般多采用并行接口,对单片机的接口要求较高,占用资源多;另外,AT89S51单片机本身无专门的液晶驱动接口。而数码管作为一种主动显示器件,具有亮度高、响应速度快、防潮防湿性能好、温度特性极性、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或是远距离操作。因此,本设计的显示电路采用7段数码管作为显示介质。数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用八位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂。所以采用动态显示。动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。数码显示管分为共阳数码管和共阴数码管两种,共阴极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阴极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。本设计采用共阴极数码显示管做显示电路,数码管引脚图如图2所示ABCDEFGPOM134USR056K图2数码管引脚图由于采用的是共阴的数码显示管,所以只要数码管的A、B、C、D、E、F、G、H引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示09的编码见表1。表1共阴极数码显示管字型代码字型共阴极代码字型共阴极代码03FH56DH106H67DH25BH707H34FH87FH466H96FH动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。图中,8个数码管的8段段选线分别与外接上拉电阻的单片机P0口对应相连,而8个数码管的位控制端则和单片机的P2口相连。单片机的P20P27口则分别对应数码显示管的最低位到最高位,另外数码管显示是采用动态显示。由于数码管是有P0口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较弱,不能点亮数码显示管,因此P0口必须接上拉电阻来提高驱动能力。另外一位共阴数码管的驱动电流一般为20MA左右,如果电流太大容易造成数码管损坏,所以也需要根据电源的电压值来确定上拉电阻的大小。如果电阻过小,势必会形成灌电流过大,造成单片机IO的损坏,如果电阻过大,那么对拉电流没有太大的影响。电源供电电压为5V,当上拉电阻选用220电阻时灌电流为22MA。不会损坏单片机的I/O口,同时也可以为数码显示管起到限制电流的保护作用。33按键电路的选择与设计本设计中有七个按键,分别实现开始、暂停、存储、清除当前数据、查看、全部清零复位功能。这七个键可以采用中断的方法,也可以采用查询的方法来识别。对于复位和查看键,主要功能在于数值复位和对上次计时时间的查看,对于时间的要求不是很严格,而开始和暂停键主要用于时间的锁定,需要比较准确的控制。因此可以考虑,对复位键和查看键采用查询的方式,而对于开始和暂停键采用外部中断。七个按键均采用低电平有效。当按键没有按下时,单片机的I/O口直接连接电源,因此需要接上拉电阻来进行限流,本设计中选取阻值为2K的电阻作为上拉电阻,根据计算可知此时的灌电流为25MA,查看AT89S51的资料得知次电流在安全范围内,符合安全设计要求。按键电路中由于采用了外部中断,所以需要用到P3口的第二功能。P3口引脚的第二功能如表2表2P3口引脚第二功能表P3口引脚特殊功能P30RXD(串行输入口)P31TXD(串行输出口)P32INT0(外部中断0请求输入端)P33INT1(外部中断1请求输入端)P34T0(定时器/计数器0计数脉冲输入端)P35T1(定时器/计数器1计数脉冲输入端)P36WR片外数据存储器写选通信号输出端P37RD(片内数据存储器读选通信号输出端)34时钟电路的选择与设计单片机的时钟信号用来提供单片机内各种微操作的时间基准,AT89S51片内设有一个由反向放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入和输出端,AT89S51单片机的时钟信号通常用两种电路形式得到内部振荡方式与外部振荡方式。外部方式的时钟很少用,若要用时,只要将XTAL1接地,XTAL2接外部振荡器就行。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHZ的方波信号。时钟发生器把振荡频率两分频,产生一个两相时钟信号P1和P2供单片机使用。P1在每一个状态S的前半部分有效,P2在每个状态的后半部分有效。本设计采用的内部振荡方式,内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。本设计系统的时钟电路如图3所示。只要按照图3所示电路进行设计连接就能使系统可靠起振并能稳定运行。图中,电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为533PF。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路的对称性,尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可能低。本设计中采用大小为30PF的电容和12MHZ的晶振8。YXTAL30PF4图3内部振荡电路(4)时序AT89S51典型的指令周期(执行一条指令的时间称为指令周期)为一个机器周期,一个机器周期由六个状态(十二振荡周期)组成。每个状态又被分成两个时相P1和P2。所以,一个机器周期可以依次表示为S1P1,S1P2,S6P1,S6P2。图4AT89S51时序图4给出了AT89S51单片机的取指和执行指令的定时关系。这些内部时钟信号不能从外部观察到,所用XTAL2振荡信号作参考。在图中可看到,低8位地址的锁存信号ALE在每个机器周期中两次有效一次在S1P2与S2P1期间,另一次在S4P2与S5P1期间。对于单周期指令,当操作码被送入指令寄存器时,便从S1P2开始执行指令。如果是双字节单机器周期指令,则在同一机器周期的S4期间读入第二个字节,若是单字节单机器周期指令,则在S4期间仍进行读,但所读的这个字节操作码被忽略,程序计数器也不加1,在S6P2结束时完成指令操作。图4的A和B给出了单字节单机器周期和双字节单机器周期指令的时序。AT89S51指令大部分在一个机器周期完成。乘(MUL)和除(DIV)指令是仅有的需要两个以上机器周期的指令,占用4个机器周期。对于双字节单机器周期指令,通常是在一个机器周期内从程序存储器中读入两个字节,唯有MOVX指令例外。MOVX是访问外部数据存储器的单字节双机器周期指令。在执行MOVX指令期间,外部数据存储器被访问且被选通时跳过两次取指操作。图4中C给出了一般单字节双机器周期指令的时序9。35复位电路的选择与设计关于单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。当AT89S51单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态。而本系统选用的是12MHZ的晶振,因此一个机器周期为1S,那么复位脉冲宽度最小应为2S。在实际应用系统中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必须有足够的余量。根据应用的要求,复位操作通常有两种基本形式上电复位、手动复位。上电复位要求接通电源后,自动实现复位操作。AT89S51单片机的上电复位POR(POWERONRESET)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时。上述一系列的延时,都是利用在单片机RST引脚上外接一个RC支路的充电时间而形成的。典型复位电路,其中的阻容值是原始手册中提供的。在经历了一系列延时之后,单片机才开始按照时钟源的工作频率,进入到正常的程序运行状态。在电源电压以及振荡器输出信号稳定之后,又等待了一段较长的延时才释放RST信号,使得CPU脱离复位锁定状态;而RST信号一旦被释放,立刻在ALE引脚上就可检测到持续的脉冲信号8。由于标准AT89S51的复位逻辑相对简单,复位源只有RST一个(相对新型单片机来说,复位源比较单一),因此各种原因所导致的复位活动以及复位状态的进入,都要依靠在外接引脚RST上施加一定时间宽度的高电平信号来实现。标准AT89S51不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因此必须借助于外接阻容支路来增加延时环节,其实,外接电阻R还是可以省略的,理由是一些CMOS单片机芯片内部存在一个现成的下拉电阻RRST。例如,AT89系列的RRST阻值约为50200K。在每次单片机断电之后,须使延时电容C上的电荷立刻放掉,以便为随后可能在很短的时间内再次加电作好准备。否则,在断电后C还没有充分放电的情况下,如果很快又加电,那么RC支路就失去了它应有的延迟功能。手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。本设计采用上电且开关复位电路,如图5所示上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C1030F,本设计采用的电容值为10F的电容和电阻为47K的电阻。4K7R1ES20UFAPPOLVSWBR下图5单片机复位电路4系统的软件电路设计41程序设计思想本设计采用了C语言编写,C语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。C语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用C语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。C语言的特点1面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。2保持了机器语言的优点,具有直接和简捷的特点。3可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。4目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。5经常与高级语言配合使用,应用十分广泛。在程序设计过程中,为了有效地完成任务,把所要完成的任务精心的分割成若干个相互独立但相互又仍可有联系的任务模块,这些任务模块使得任务变得相对单纯,对外的数据交换相对简单,容易编写,容易检测,容易阅读和维护。这种程序设计思想称为模块化程序设计思想。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。因此,本医院病床呼叫系统在软件的设计上,运用了模块化程序的结构对软件进行设计,使得程序变得更加直观易懂。程序的主要模块有主程序、显示程序、定时溢出中断服务程序、外部中断服务程序。42主程序设计本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。系统(上电)复位后,进入主程序,主程序流程图如图6。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。显示一次就对各个按键进行一次扫描,查询复位键RST是否按下,当复位键按下后,程序返回开始,重新对系统进行初始化。当没有按下复位键时,程序则扫描各个接口按键,若没有按下则返回显示程,不断地调用显示缓存区的数据进行显示。使用户能清楚的看到当前电子秒表所记录的时间。当查询到有按键按下后则跳转到另外一段显示程序并调用最红缓存区的数据进行显示,此时显示的时间即为上一次计时的时间。与此同时,在按键按下后单片机执行显示程序的同时也在对当前按键进行扫描,当该按键断开后立即跳转回之前的显示程序显示当前的计时时间。在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务程序。并在执行完后返回主程序。开始数码显示赋初始值其他按键是否按下否按下RST键是否按下调用缓存数据进行显示按键是否抬起是否否是是否图6主程序流程图43中断程序设计现在方案中采用了一个中断,外部中断INT0。CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。例如当CPU正在处理一个中断申请时,有出现了另一个优先级比它高的中断请求,这是,CPU就暂停终止对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。,合理分配中断对本设计的实现是至关重要的。另外由于数字式电子秒表的最小精度位1MS,属于高精度电子秒表。定时器T0的定时周期也为1MS,为了使电子秒表暂停键按下后CPU能马上去响应中断程序,必须将暂停的外部中断级别高于定时计数器的中断级别。避免出现CPU执行完定时溢出中断程序后再响应外部中断程序,影响计时精度。AT89S51的自然优先级顺序排列如下外部中断0、定时/计数器0、外部中断1、定时/计数器1、串行口中断。(1)外部中断0服务程序外部中断0服务程序结合外部停止键实现数字电子秒表的停止功能,具体流程图如图7。当有按键按下向CPU发出外部中断请求,CPU转向外部中断0服务程序执行,停止定时器。另外将当前显示的时间进行一次存储,存进中间寄存区,最后中断返回。图7外部中断0服务程序流程图(2)定时中断服务程序当定时/计数器T0器溢出后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行,具体流程如图8。定时中断程序是一个进位程序,主要负责对1MS的加一。1MS位没有满十就跳出中断程序,返回显示程序。当1MS位满十后就对1MS位清零,向10MS位加一,同时检测10MS位是否满十,没有满十就跳出中断程序,返回显示程序。如果满十就向100MS位加一,依次类推,最终达到99分59999秒后归零,从零开始再次计时。定时/计数器T0工作在方式0下,TH0和TL0组成一个13位的二进制数计数器。单片机开机或复位时,它的值为00H,当T0启动后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从0000000000000开始计数到1111111111111,再计数一个脉冲时TH0和TL0组成的13位计数器将会从13个1变成13个0,并产生溢出,溢出位将被送到TF0标志位,通过溢出标志产生溢出中断请求。显然,T0定时器在方式0下引起一次中断所允许计数的最多脉冲个数为213个。但如果定时计数器如果每次都固定从0开始计数,到计满后,再向CPU发出溢出中断请求信号那是毫无意义的。为了使定时计数器在规定的计数脉冲个数字之后(此时应小于213个脉冲),向CPU发出溢出中断请求,可采取预先向TH0和TL0中放入一个初值X的方法,使计数器以X值为起始值开始计数,即X1,X2,直至计数器计满,从1全变为0。设需要计数的脉冲个数为Y,则有XY213在定时方式下定时时间间隔位T(213X)振荡周期12现在本设计要求1MS实现一次中断,选择定时器T0工作在方式0。所以需要根据以上条件计算出T0的初值。设T0的初值为X,则(213X)12/121061103转换位十六进制数X71921110000011000B即TH00E0H(取X的高8位)TL018H(取X的低5位)。由于定时1MS只是一个理想化的时间,其中并没有考虑到中断后单片机执行语句所花的时间。虽然执行语句所花的时间很短只有即微秒,但积少成多,数字秒表一秒中要溢出中断1000次,积累起来误差就能达到毫秒级,这对于精度到达毫秒级的数字电子秒表来说是很大的误差。所以要在后期编程时还要将单片机读程序的时间考虑进去,在对定时器赋初值时将单片机需要执行的语句所花的时间加上,这样就能使数字电子秒表的误差达到最小。图8定时中断服务程序44系统的程序设计INCLUDEDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTSBITBEGINP11SBITSTOPP12SBITSAVEP13SBITCLEARP14SBITDOTP07SBITL_AP37SBITL_BP36SBITL_CP35SBITL_DP34SBITS_SAVEP31SBITS_CP30UCHARA0,A1,A2,A3,A4,A5,A6UCHARJ0,I0,S_F0UCHARCODEDIS_SEG7110XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBFUNSIGNEDCHARSTORE107VOIDDELAYUINTB/005SUCHARB0,B1FORB00B0BB0FORB10B1100B1VOIDSHOWUCHARA0,UCHARA1,UCHARFP20XFFP0DIS_SEG7A0IFF1DOT1P2A1DELAY1VOIDMAINTMOD0X01TL0655361000256TH0655361000/256ET01TR00EX01IT00EA1WHILE1SHOWA0,0XFE,0SHOWA1,0XFD,0SHOWA2,0XFB,0SHOWA3,0XF7,1SHOWA4,0XEF,0SHOW10,0XDF,0/SHOWA5,0XBF,0SHOWA6,0X7F,0IFS_SAVE0S_F1TR00J0I0IFS_C0S_F0I0SWITCHICASE0L_A1L_B1L_C1L_D1BREAKCASE1L_A0L_B1L_C1L_D1BREAKCASE2L_A1L_B0L_C1L_D1BREAKCASE3L_A0L_B0L_C1L_D1BREAKCASE4L_A1L_B1L_C0L_D1BREAKCASE5L_A0L_B1L_C0L_D1BREAKCASE6L_A1L_B0L_C0L_D1BREAKCASE7L_A0L_B0L_C0L_D1BREAKCASE8L_A1L_B1L_C1L_D0BREAKCASE9L_A0L_B1L_C1L_D0BREAKCASE10L_A1L_B0L_C1L_D0BREAKCASE11L_A0L_B0L_C1L_D0BREAKCASE12L_A1L_B1L_C0L_D0BREAKCASE13L_A0L_B1L_C0L_D0BREAKCASE14L_A1L_B0L_C0L_D0BREAKCASE15L_A0L_B0L_C0L_D0BREAKDEFAULTL_A1L_B1L_C1L_D1BREAKVOIDA_MINTERRUPT0DELAY10P00X00P20XFFIFBEGIN0ELSEIFSTOP0TR00IFS_F1A0STOREJ0A1STOREJ1A2STOREJ2A3STOREJ3A4STOREJ4A5STOREJ5A6STOREJ6JIFJ11J0IJELSEIFSAVE0STOREI1A1STOREI2A2STOREI3A3STOREI4A4STOREI5A5STOREI6A6A00A10A20A30A40A50A60IIFI11I0ELSEIFCLEAR0A00A10A20A30A40A50A60STOREI0A0STOREI1A1STOREI2A2STOREI3A3STOREI4A4STOREI5A5STOREI6A6WHILEBEGIN|STOP|SAVE|CLEARVOIDSPEALINTERRUPT1TL0655361000256TH0655361000/256A0/0001SIFA010A00A1/001SIFA110A10A2/01SIFA210A20A3/1SIFA310A30A4/10SIFA46A40A5/分IFA510A6IFA610A60结论本设计的数字电子秒表是由AT89S51单片机、共阴数码显示管、控制按键、三极管等器件构成的,设有八位计时显示,开始、暂停、存储、清除当前数据、查看、全部清零按键以及一个系统整机复位按钮。计时精度能到达1MS,能调看上一次计时时间,设计精简,使用简

温馨提示

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

评论

0/150

提交评论