以at89s52单片机为核心_设计出功能较强的新型单片机实验系统毕业设计_第1页
以at89s52单片机为核心_设计出功能较强的新型单片机实验系统毕业设计_第2页
以at89s52单片机为核心_设计出功能较强的新型单片机实验系统毕业设计_第3页
以at89s52单片机为核心_设计出功能较强的新型单片机实验系统毕业设计_第4页
以at89s52单片机为核心_设计出功能较强的新型单片机实验系统毕业设计_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

摘要目前单片机应用已渗透到各个领域,单片机技术的发展也因此日新月异。传统的单片机实验系统,需要频繁拔插烧写单片机芯片来编程,依赖于仿真机调试,实验成本高且效率低,已不适应现代科技开发需求。本文从微处理器、嵌入式系统和C语言等三个方面着手,以AT89S52单片机为核心,设计出功能较强的新型单片机实验系统。以AT89S52为核心,设计出12种实验的原理图。采用电子CADPROTEL99SE软件、PROTEUS等软件。利用C语言调整软件DEVCIDE、编译器KEILC(UVISION51)软件等技术创新,实现了PROTEUS仿真调试功能,将嵌入式技术融入到单片机实验系统开发与应用中,极大地提高了程序开发的效率,达到优化单片机实验系统功能的目的。关键词微处理器嵌入式系统AT89S52单片机实验系统调试与仿真PROTEUSABSTRACTATPRESENTTHEMONOLITHICINTEGRATEDCIRCUITMICROCONTROLLERUNIT,MCUAPPLICATIONSHAVEPENETRATEDINTOALLFIELDSTHETRADITIONALMONOLITHICINTEGRATEDCIRCUITEXPERIMENTSYSTEM,NEEDSFREQUENTLYTOPULLOUTINSERTSTHEFEVERTOWRITETHEMONOLITHICINTEGRATEDCIRCUITCHIPTOPROGRAM,RELIESONTOTHESIMULATIONMACHINEDEBUGGING,THEEXPERIMENTALCOSTHIGHALSOTHEEFFICIENCYISLOW,ALREADYUNSUITABLEMODERNSCIENCEANDTECHNOLOGYDEVELOPMENTDEMANDTHISARTICLEFROMTHEMICROPROCESSOR,EMBEDDEDSYSTEMSANDTHECLANGUAGEANDSOONTHREEASPECTSBEGINS,TODRAWUPTAKETHEAT89S52MONOLITHICINTEGRATEDCIRCUITASACORE,DESIGNSTHEFUNCTIONSTRONGERNEWMONOLITHICINTEGRATEDCIRCUITEXPERIMENTSYSTEMTOOKAT89S52ASTHECORE,DESIGNED12EXPERIMENTSAFTERUSESELECTRONICCADPROTEL99SESOFTWARE,PROTEUSSOFTWAREUSINGCLANGUAGEADJUSTMENTSOFTWAREDEVCIDE,COMPILERKEILCUVISION51AND,TECHNICALINNOVATIONANDSOONPROTEUSSOFTWARE,HASREALIZEDTHEPROTEUSONLINESIMULATIONDEBUGGINGFUNCTION,INSERTSTHEEMBEDDEDTECHNOLOGYTOMELTINTOTOINTHEMONOLITHICINTEGRATEDCIRCUITEXPERIMENTSYSTEMDEVELOPMENTANDTHEAPPLICATIONKEYWORDSMICROPROCESSOREMBEDDEDSYSTEMSAT89S52MCUEXPERIMENTALSYSTEMDEBUGGINGANDSIMULATIONPROTEUS目录摘要IABSTRACTII第一章概述1第二章PROTEUS介绍321PROTEUS的工作过程【2】322用PROTEUS软件虚拟单片机实验的优点423本章小结4第三章单片机介绍631功能特征描述632引脚功能【4】633存储器结构9331程序存储器9332数据存储器934看门狗定时器9341WDT的使用10342掉电和空闲方式下的WDT1035UART1036定时器0和定时器11037定时器211371捕捉方式11372自动重载【6】1138波特率发生器1239可编程时钟输出13310中断13311晶振特性14312空闲模式14313掉电模式14314本章小结14第四章基于PROTEUS的单片机系统设计与仿真1541虚拟实验室的构建1542虚拟实验实例15实验一彩灯控制器15实验二定时器/计数器应用实验【10】17实验三按键实验19实验四利用中断,动态数码管显示21实验五利用中断,音乐演奏23实验六1602液晶显示的DS1302实时时钟25实验七DS1621温度传感器实验27实验八按键控制步进电机正反转实验29实验九ADC0809模数转换与显示32实验十D/A转换实验35实验十一ADC0808PWM实验39实验十二可编程并行接口芯片8255的应用试验4143本章小结43第五章结论45参考文献46附录(程序)47致谢67第一章概述随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。如图11所示,用户程序需要在硬件完成的情况下才能进行联调,如果在调试过程中发现需修改硬件,则要重新制板。因此无论从硬件成本还是开发周期来看,其高风险、低效率的特性显露无遗。来自英国LABCENTERELECTRONICS公司的PROTEUS软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优势。它包括PROTEUSVSM(VIRTUALSYSTEMMODELLING)、PROTEUSPCBDESIGN两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程。本文讲述PROTEUSVSM单片机系统的PROTEUS设计与仿真功能,图12为基于PROTEUS仿真软件的单片机系统设计流程,它极大地简化了设计工作,得到众多设计师的青睐1。根据系统功能设计原理图PCB的设计及制作元器件的焊接目标板上仿真与调试调试通过设计完成硬件问题软件问题源程序设计生成目标代码PROTEUS电路设计源程序设计生成目标代码基于PROTEUS仿真调试调试通过设计完成软件问题硬件问题NYNY图11传统单片机设计流程图图12基于PROTEUS的单片机系统设计第二章PROTEUS介绍PROTEUS与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。21PROTEUS的工作过程2(1)运行PROTEUS的ISIS程序后,进入该仿真软件的主界面。在工作前,要设置VIEW菜单下的捕捉对齐和SYSTEM下的颜色、图形界面大小等项目。通过工具栏中的P从库中选择元件命令,在PICKDEVICES窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在SOURCE菜单的DEFINECODEGENERATIONTOOLS菜单命令下,选择程序编译的工具、路径、扩展名等项目;在SOURCE菜单的ADD/REMOVESOURCEFILES命令下,加入单片机硬件电路的对应程序;通过DEBUG菜单的相应命令仿真程序和电路的运行情况。(2)PROTEUS软件所提供的元件资源PROTEUS软件所提供了30多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。(3)PROTEUS软件所提供的仪表资源对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。在PROTEUS软件包中,不存在同类仪表使用数量的问题,其提供的仪表。除了测试仪表外,PROTEUS还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。(4)PROTEUS软件所提供的调试手段PROTEUS提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,PROTEUS提供了两种方法一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。对于总体执行效果的调试方法,只需要执行DEBUG菜单下的EXECUTE菜单项或F12快捷键启动执行,用DEBUG菜单下的PAUSEANIMATION菜单项或PAUSE键暂停系统的运行;或用DEBUG菜单下的STOPANIMATION菜单项或SHIFTBREAK组合键停止系统的运行。其运行方式也可以选择工具栏中的相应工具进行。对于软件的分步调试,应先执行DEBUG菜单下的START/RESTARTDEBUGGING菜单项命令,此时可以选择STEPOVER、STEPINTO和STEPOUT命令执行程序可以用快捷键F10、F11和CTRLF11,执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了START/RESTARTDEBUGING命令后,在DEBUG菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调试时分析和查看3。22用PROTEUS软件虚拟单片机实验的优点采用PROTEUS仿真软件进行虚拟单片机实验,具有比较明显的优势,如涉及到的实验实习内容全面、硬件投入少、学生可自行实验、实验过程中损耗小、与工程实践最为接近等。当然其存在的缺点也是有的。(1)内容全面内容全面包括其能实验的内容包括软件部分的汇编、C51等语言的调试过程,也包括硬件接口电路中的大部分类型。对同一类功能的接口电路,可以采用不同的硬件来搭建完成。(2)硬件投入少,经济优势明显对于传统的采用单片机实验教学板的实验,由于硬件电路的固定,也就将单片机的CPU和具体的接口电路固定了下来。在单片机的实际学习中,如果要涉及到51系列,也要涉及到PIC16系列,那么为了学习必然要投入两种单片机的实验教学板;同时在教学过程中所涉及到的接口电路,也需要有较大的投入和储备,以利于实验的进行和在实验过程中元件损毁后的更换。PROTEUS所提供的元件库中,大部分可以直接用于接口电路的搭建,同时该软件所提供的仪表,不管在质量还是数量上,都是可靠和经济的。如果在实验教学中投入这样的真实的仪器仪表,仅仪表的维护来讲,其工作量也是比较大的。因此采用软件的方式进行学习,其经济优势是比较明显的。(3)学生可自行实验,锻炼解决实际工程问题的能力实验能力和实验能力的培养,是工科学生解决实际工程问题能力中较为重要的。传统的实验教学中,忽视了学生实验设计能力的培养,对于实验设计能力的培养,则很少涉及到。因此学生学习了理论,要想将其应用到实际的工程实践中,其难度是比较大的。还有,学生毕业后想对单片机控制技术或智能仪表等有较深的研究和学习,如果采用传统的实验学习方法,则学生需要购置的设备比较多,增加了他们学习和研究的投入。采用仿真软件后,学习的投入变得比较的小,而实际工程问题的研究,也可以先在软件环境中模拟通过,再进行硬件的投入,这样处理,不仅省时省力,也可以节省因方案不正确所造成的硬件投入的浪费。23本章小结传统的实验教学方法,是学生通过做验证实验加深对原理的理解,实验的内容、步骤、电路、仪器等都是事先安排好的,有时,整个电路都是连接好的,学生只须按部就班,机械的完成实验,每次实验后,学生的实验报告基本上都是大同小异,没有创新点,效果一般。通过PROTEUS在实验教学中的应用,设备要求简单,只有一台装有PROTEUS的计算机就可以了,原来受实验条件限制无法开设的实验也可进行仿真实验了,这样使得学生有更多的锻炼与学习的机会,加强了实验能力提高。在虚拟实验室中学生可提出各种方案进行仿真,不受硬件条件的限制,并能很快获得仿真结果,做到及时发现问题,解决问题,从而可以提高学生分析问题,解决问题的能力,激发他们的求知欲和创新精神。综合上述,PROTEUS应用到实验教学,能取得巨大的成效。第三章单片机介绍主要性能与MCS51单片机产品兼容8K字节在系统可编程FLASH存储器1000次擦写周期全静态操作0HZ33HZ三级加密程序存储器32个可编程I/O口线三个16位定时器/计数器八个中断源全双工UART串行通道低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针掉电标识符31功能特征描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程FLASH存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能8K字节FLASH,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。32引脚功能4VCC电源GND接地P0口P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在FLASH编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P10和P12分别作定时器/计数器2的外部计数输入(P10/T2)和时器/计数器2的触发输入(P11/T2EX),具体如下表所示。在FLASH编程和校验时,P1口接收低8位地址字节。表1引脚号第二功能P10T2(定时器/计数器T2的外部计数输入),时钟输出P11T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P15MOSI(在系统编程用)P16MISO(在系统编程用)P17SCK(在系统编程用)P2口P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVXDPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVXRI)访问外部数据存储器时,P2口输出P2锁存器的内容。在FLASH编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口P3口是一个有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在FLASH编程和校验时,P3口也接收一些控制信号。表2引脚号第二功能P30RXD(串行输入)P31TXD(串行输出)P32外部中断0INT0P33外部中断11P34T0(定时器0外部输入)P35T1定时器1外部输入)P36外部数据存储器写选通WRP37外部数据存储器写选通DRST复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR地址8EH上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的PROG输出脉冲。在FLASH编程时,此引脚也用作编程输入脉冲。在一般情况下,ALEPROG以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。外部程序存储器选通信号是外部程序存储器选通信号。当AT89S52从外PSENPSEN部程序存储器执行外部代码时,在每个机器周期被激活两次,而在访问外部数据存储器时,将不被激活。/VPP访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读EA取指令,必须接GND。为了执行内部程序指令,应该接VCC。在FLASH编程期间,EA也接收12伏VPP电压。EAXTAL1振荡器反相放大器和内部时钟发生电路的输入端。XTAL2振荡器反相放大器的输出端。33存储器结构MCS51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。331程序存储器如果引脚接地,程序读取只从外部存储器开始。对于89S52,如果接VCC,程EAEA序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为2000HFFFFH。332数据存储器AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV0A0H,DATA使用间接寻址方式访问高128字节RAM。例如,下面的间接寻址方式中,R0内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOVR0,DATA堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。34看门狗定时器WDT是一种需要软件控制的复位方式。WDT由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT在默认情况下无法工作;为了激活WDT,户用必须往WDTRST寄存器(地址0A6H)中依次写入01EH和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚一个高个电平输出。341WDT的使用为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H和0E1H。当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT溢出。当计数达到81911FFFH时,13位计数器将会溢出,这将会复位器件。晶振正常工作、WDT激活后,每一个机器周期WDT都会增加。为了复位WDT,用户必须向WDTRST写入01EH和0E1H(WDTRST是只读寄存器)。WDT计数器不能读或写。当WDT计数器溢出时,将给RST引脚产生一个复位脉冲输出,这个复位脉冲持续96个晶振周期(TOSC),其中TOSC1/FOSC。为了很好地使用WDT,应该在一定时间内周期性写入那部分代码,以避免WDT复位。342掉电和空闲方式下的WDT在掉电模式下,晶振停止工作,这意味这WDT也停止了工作。在这种方式下,用户不必喂狗。有两种方式可以离开掉电模式硬件复位或通过一个激活的外部中断。通过硬件复位退出掉电模式后,用户就应该给WDT喂狗,就如同通常AT89S52复位一样。通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间,使得晶振稳定。当中断拉高后,执行中断服务程序。为了防止WDT在中断保持低电平的时候复位器件,WDT直到中断拉低后才开始工作。这就意味着WDT应该在中断服务程序中复位。为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复WDT。在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。默认状态下,在待机模式下,WDIDLE0,WDT继续计数。为了防止WDT在待机模式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,喂狗,再重新进入待机模式【5】。35UART在AT89S52中,UART的操作与AT89C51和AT89C52一样。为了获得更深入的关于UART的信息,可参考ATMEL网站(HTTP/WWWATMELCOM)。从这个主页,选择“PRODUCTS”,然后选择“8051ARCHITECHFLASHMICROCONTROLLER”,再选择“PRODUCTOVERVIEW”即可。36定时器0和定时器1在AT89S52中,定时器0和定时器1的操作与AT89C51和AT89C52一样。为了获得更深入的关于UART的信息,可参考ATMEL网站(HTTP/WWWATMELCOM)。从这个主页,选择“PRODUCTS”,然后选择“8051ARCHITECHFLASHMICROCONTROLLER”,再选择“PRODUCTOVERVIEW”即可。37定时器2定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。定时器2有三种工作模式捕捉方式、自动重载(向下或向上计数)和波特率发生器。如表3所示,工作模式由T2CON中的相关位选择。定时器2有2个8位寄存器TH2和TL2。在定时工作方式中,每个机器周期,TL2寄存器都会加1。由于一个机器周期由12个晶振周期构成,因此,计数频率就是晶振频率的1/12。表3定时器2工作模式RCLKTCLKCP/RLTR2MODE00116位自动重载01116位捕捉1X1波特率发生器XX0(不用)在计数工作方式下,寄存器在相关外部输入角T2发生1至0的下降沿时增加1。在这种方式下,每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平,而下一个周期采样到低电平,计数器将加1。在检测到跳变的这个周期的S3P1期间,新的计数值出现在寄存器中。因为识别10的跳变需要2个机器周期(24个晶振周期),所以,最大的计数频率不高于晶振频率的1/24。为了确保给定的电平在改变前采样到一次,电平应该至少在一个完整的机器周期内保持不变。371捕捉方式在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN20,定时器2时一个16位定时/计数器,溢出时,对T2CON的TF2标志置位,TF2引起中断。如果EXEN21,定时器2做相同的操作。除上述功能外,外部输入T2EX引脚(P11)1至0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。除此之外,T2EX的跳变会引起T2CON中的EXF2置位。像TF2一样,T2EX也会引起中断。372自动重载【6】当定时器2工作于16位自动重载模式,可对其编程实现向上计数或向下计数。这一功能可以通过特殊寄存器T2MOD(见表4)中的DCEN(向下计数允许位)来实现。通过复位,DCEN被置为0,因此,定时器2默认为向上计数。DCEN设置后,定时器2就可以取决于T2EX向上、向下计数。DCEN0时,定时器2自动计数。通过T2CON中的EXEN2位可以选择两种方式。如果EXEN20,定时器2计数,计到0FFFFH后置位TF2溢出标志。计数溢出也使得定时器寄存器重新从RCAP2H和RCAP2L中加载16位值。定时器工作于捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。如果EXEN21,计数溢出或在外部T2EX(P11)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2中断标志位。置位DCEN,允许定时器2向上或向下计数。在这种模式下,T2EX引脚控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFH溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中。T2EX上的一个逻辑0使得定时器2向下计数。当TH2和TL2分别等于RCAP2H和RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定时器存储器中。定时器2上溢或下溢,外部中断标志位EXF2被锁死。在这种工作模式下,EXF2不能触发中断。38波特率发生器通过设置T2CON中的TCLK或RCLK可选择定时器2作为波特率发生器。如果定时器2作为发送或接收波特率发生器,定时器1可用作它用,发送和接收的波特率可以不同。如图8所示,设置RCLK和(或)TCLK可以使定时器2工作于波特率产生模式。波特率产生工作模式与自动重载模式相似,因此,TH2的翻转使得定时器2寄存器重载被软件预置16位值的RCAP2H和RCAP2L中的值。模式1和模式3的波特率由定时器2溢出速率决定,具体如下公式21316定时器溢出率模式和模式波特率定时器可设置成定时器,也可为计数器。在多数应用情况下,一般配置成定时方式(CP/0)。定时器2用于定时器操作与波特率发生器有所不同,它在每一机器周T(1/12晶振周期)都会增加;然而,作为波特率发生器,它在每一机器状态(1/2晶振周期)都会增加。波特率计算公式如下132653晶振频率模式和模式波特率(RCAP2H,L)其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L组成的16位无符号整数。特别强调,TH2的翻转并不置位TF2,也不产生中断;EXEN2置位后,T2EX引脚上10的下跳变不会使(RCAP2H,RCAP2L)重载到(TH2,TL2)中。因此,定时器2作为波特率发生器,T2EX也还可以作为一个额外的外部中断。定时器2处于波特率产生模式,TR21,定时器2正常工作。TH2或TL2不应该读写。在这种模式下,定时器在每一状态都会增加,读或写就不会准确。寄存器RCAP2可以读,但不能写,因为写可能和重载交迭,造成写和重载错误。在读写定时器2或RCAP2寄存器时,应该关闭定时器(TR2清0)【7】。39可编程时钟输出可以通过编程在P10引脚输出一个占空比为50的时钟信号。这个引脚除了常规的I/O角外,还有两种可选择功能。它可以通过编程作为定时器/计数器2的外部时钟输入或占空比为50的时钟输出。当工作频率为16MHZ时,时钟输出频率范围为61HZ到4HZ。为了把定时器2配置成时钟发生器,位C/(T2CON1)必须清0,位T2T2OE(T2MOD1)必须置1。位TR2(T2CON2)启动、停止定时器。时钟输出频率取决于晶振频率和定时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示在时钟输出模式下,定时器2不会产生中断,这和定时器2用作波特率发生器一样。定时器2也可以同时用作波特率发生器和时钟产生。不过,波特率和输出时钟频率相互并不独立,它们都依赖于RCAP2H和RCAP2L。310中断AT89S52有6个中断源两个外部中断(和),三个定时中断(定时器INT0I10、1、2)和一个串行中断。每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。IE6位是不可用的。对于AT89S52,IE5位也是不能用的。用户软件不应给这些位写1。它们为AT89系列新产品预留。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2或EXF2激活中断,标志位也必须由软件清0。定时器0和定时器1标志位TF0和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周4653晶振频率时钟输出频率(RCAP2H,L)期被电路捕捉下来。然而,定时器2的标志位TF2在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来【8】。311晶振特性AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。312空闲模式在空闲工作模式下,CPU处于睡眠状态,而所有片上外部设备保持激活状态。这种状态可以通过软件产生。在这种状态下,片上RAM和特殊功能寄存器的内容保持不变。空闲模式可以被任一个中断或硬件复位终止。由硬件复位终止空闲模式只需两个机器周期有效复位信号,在这种情况下,片上硬件禁止访问内部RAM,而可以访问端口引脚。空闲模式被硬件复位终止后,为了防止预想不到的写端口,激活空闲模式的那一条指令的下一条指令不应该是写端口或外部存储器。313掉电模式在掉电模式下,晶振停止工作,激活掉电模式的指令是最后一条执行指令。片上RAM和特殊功能寄存器保持原值,直到掉电模式终止。掉电模式可以通过硬件复位和外部中断退出。复位重新定义了SFR的值,但不改变片上RAM的值。在VCC未恢复到正常工作电压时,硬件复位不能无效,并且应保持足够长的时间以使晶振重新工作和初始化【9】。314本章小结本章研究了嵌入式系统及其发展趋势。深入研究了AT89S52单片机的性能特点,为虚拟实验的开发打下了基础。第四章基于PROTEUS的单片机系统设计与仿真41虚拟实验室的构建PROTEUS支持51、PIC、AVR、RAM7等多个系列的单片机芯片,集编辑、编译、仿真调试于一体。它的界面简洁友好,可利用该软件提供的数千种数字/模拟仿真元器件以及丰富的仿真设备,使得在程序调试、系统仿真时不仅能观察到程序执行过程中单片机寄存器和存储器等内容变化,还可从工程的角度直观地看到外围电路工作情况,非常接近工程应用。另外PROTEUS还能与第三方集成开发环境(如KEIL的VISION)进行联合仿真调试,给予开发人员莫大便利。本设计以51单片机构成的虚拟测控实验为例描述基于PROTEUS的硬件设计、基于KEILC的软件设计过程。随着嵌入式系统应用不断扩大,功能不断增强,为了对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和有效控制,使开发人员只专注于应用程序设计,在嵌入式系统中引入操作系统是非常必要的。C/OSII是源码公开的实时多任务操作系统,具备足够的稳定性和安全性,特别适合用于中小型嵌入式系统中。KEIL公司的KEILVISION3,是目前使用最为广泛的开发环境之一。这里介绍在KEILVISION3环境下基于C/OSII嵌入式操作系统的用户程序设计。基于PROTEUS电路设计、KEIL程序设计以及它们联合仿真调试的方法,建立了单片机系统硬件设计、软件设计以及调试的全虚拟环境,使得全部的设计工作基于PC就能完成,显著提高了设计开发效率,降低开发风险,这对嵌入式方案设计无疑是一个很好的思路42虚拟实验实例在PROTEUS虚拟实验系统中能够开发设计模拟电路、数字电路和单片机系统在内的各种仿真实验。论文中只在单片机中选择了几个典型的有代表性实验项目,作为应用实例。根据单片机编程仿真实验系统硬件资源,设计了如下实验实验一彩灯控制器一、目的掌握可编程I/O接口芯片AT89S52的接口原理使用,熟悉对AT89S52初始化编程和输入、输出软件的设计方法。二、内容编写程序,让AT89S52的发光二极管闪烁,根据花样表进行花样变化三、硬件说明P1接8只LED晶体为12MHZ四、线路实验线路图如图11图11彩虹控制灯现象五、程序及流程图程序见附录1开始打开发光管公共阳极进入花样循环花样表中的数据取反送出延时图12彩虹灯控制流程图实验二定时器/计数器应用实验10一、目的和要求1、掌握定时器/计数器计数功能的使用方法。2、掌握定时器/计数器的中断、查询使用方法。3、掌握PROTEUS软件与KEIL软件的使用方法。4、掌握单片机系统的硬件和软件设计方法。二、内容或原理1、利用单片机的定时器/计数器以查询方式计数外部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。2、利用单片机的定时器/计数器以中断方式计数外部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。三、设计要求1、用PROTEUS软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P10口线状态,在P10口线上接示波器观察波形。2、用PROTEUS软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P10口线状态,在P10口线上接示波器观察波形。四、电路原理图连续方式如图21XTAL218XTAL119ALE30EA31PSEN29RST9P00/AD039P01/AD138P02/AD237P03/AD336P04/AD435P05/AD534P06/AD63P07/AD732P101P112P123P134P145P156P167P178P30/RXD10P31/TXD1P32/INT012P33/INT113P34/T014P37/RD17P36/WR16P35/T115P27/A1528P20/A821P21/A92P22/A1023P23/A124P24/A1225P25/A1326P26/A1427U1AT89C51ABCDU1P34/T01K图21电路原理及连接线路五、程序及流程图程序见附录二。图22主程序流程图六、实验结果开始计数器初始化开定时器0TF01P10取反TF0清零结束Y开始计数器、中断初始化开定时器0等待结束ITPOP10取反返回图23中断计数流程图程序1与程序2从T0接入1000HZ的方波图24计100次脉冲图25计200次脉冲实验三按键实验一、目的学习AT89S52芯片和单片机的接口原理和方法,掌握82C53工作方式以及编程方法。二、内容将按下按键的编号显示到数码管上三、线路或现象按键实验线路及现象如图31图31、按键扫描线路及现象四、步骤按键和数码显示公用P1,程序要分时扫描进行晶体为12MHZ五、程序及流程图程序见附录三【11】定义变量,初始化端口进入无限循环,初始化变量开始是否按键1消除抖动,数码管显示消除抖动,数码管显示消除抖动,数码管显示是否按键2是否按键3YYYNN进N入无限循环,初始化变量N图32按键扫描程序流程图实验四利用中断,动态数码管显示一、目的了解数码管结构,掌握串行显示的软件编程以及中断使用方法。二、内容编写程序,使得数码管从左向右依次显示16三、原理所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。图41中断原理图引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)【12】。如图41所示四、线路或现象连接线路如图42图42、动态数码管连接线路及现象五、程序及流程图程序见附录四选择1号数码管并显示1数码管序号加1,显示数字加1并延时数码序号大于6否是图43动态数码管扫描程序流程图实验五利用中断,音乐演奏一、内容用蜂鸣器演奏“同一首歌”歌曲二、硬件说明P37连接到蜂鸣器,晶体为12MHZ三、其它说明本程序来源于网络,牵扯到音乐知识,频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍四、线路或现象连接线路如图51图51音乐演奏线路连接图五、程序及流程图程序见附录五【13】开始初始化设置定时器初值存入乐曲代码表读取音符(定时常数)AFFH读取节拍(延时常数)延时常数存入R2调用延时子程序R20结束T0重装定时P34输出返回NYNY图53T0中断子程序流程图图52主程序流程图实验六1602液晶显示的DS1302实时时钟一、目的1、了解DS1302时钟芯片的基本原理和功能。2、掌握DS1302和单片机的硬件接口和软件设计方法。二、内容利用1602液晶显示器实时显示时钟三、线路或现象1602液晶显示实时时钟如图61图61、1602液晶显示实时时钟四、程序及流程图程序见附录六开始变量初始化复位端产生1个高电平写1302地址延时一段时间向这个地址写数据地址增加数据写完了吗复位端产生1个高电平写1302地址延时一段时间将该地址的数据读出地址增加数据读完了吗显示数据YNYN图62液晶显示实时时钟程序流程图实验七DS1621温度传感器实验一、目的熟悉并掌握温度传感器的相关知识及使用方法二、内容读取DS1621测得的温度,转换并显示出来。三、其它说明本实验牵扯到DS1621的相关知识,请参阅本目录下DS1621的器件手册四、线路或现象线路连接图如图71图71、DS1621温度显示连接图及现象五、程序及流程图程序见附录七启动发送地址码和R/W接收ACK发送EEH接收ACK停止数据传输启动发送地址码和R/W接收ACK发送ACH接收ACK发送配置寄存器值接收ACK停止数据传输启动发送地址码和R/W接收ACK发送AAH接收ACK重新启动发送地址码和R/W接收ACK接受温度高字节接收ACK接收温度低字节发送NOACK停止传输72、启动转换流程温度显示74、读取温度流程73、写配置寄存器流程实验八按键控制步进电机正反转实验一、目的1、掌握采用单片机控制步进电机的硬件接口技术。2、掌握步进电机驱动程序的设计和调试方法。3、熟悉步进电动机的工作特性。二、内容根据按键控制,步进电机按一定速度进行正、反方向旋转三、线路及现象线路连接图如图81图81、按键控制电动机正反转连接线路及现象四、程序及流程图程序见附录八主程序开始定时器01初始化电机状态初始化调用键盘处理函数FLAG_STOP0FLAG_MODE0正传和速度处理调用电机转步函数反转和速度处理图82、主程序流程图说明1、FLAG_STOP为电机转动或停止标志位,0表示转动,1表示定时转动,默认为1,通过按键可改变该位的值。2、FLAG_MODE为电机正转或反转标志位,0表示正转,1表示反转,默认为0,通过按键可改变该位的值。按键处理函数开始检测转动方向键转动方向位处理检测启动/停止键启动/停止位处理结束YNYN图83、按键处理函数流程图电机转步函数开始SETP_MOTOR_FFWN转动第N步结束图84、电机转步函数流程图实验九ADC0809模数转换与显示一、目的1、了解ADC08098位A/D转换芯片的基本原理和功能。2、掌握ADC0809和单片机的硬件接口和软件设计方法。二、内容控制并读取ADC0831测量到的模拟数据,显示到数码管上三、原理图91、ADC0809引脚图如图91所示,CLOCK(10)引脚为ADC0809时钟输入引脚,最大频率不能超过640KHZ,我们这里用ALE通过7032内部组成的4分频电路,得到的频率为110592M(12M)644608K(500K),能够满足要求。REF(),REF()为0809基准电压输入端,当REF()接到5V,REF()接到0V时,IN0IN8检测到5V时输出0FFH,检测到0V时输出00HADC0809为8路检测,ADDA、ADDB、ADDC(25,24,23)为检测路选通端,内部是一个38译码器,通过选择不同的ADDA,ADDB,ADDC的值来依次选通IN0IN7模拟输入信道信道,实现8路巡回检测。这里我们把ADDA,ADDB,ADDC都接地,只检测IN0(26)口。IN0端的电压输入,我们采用电位器调节电压的形式(见原理图),VCC接到5V,则IN0输入电压为05V。ALE,START为内部转换信号端,ALE(22)端出现一个上升沿,则0809取三位地址送地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道。START(6)为启动信号端,加上正脉冲后,A/D转换开始进行。ENABLE(9)为输出允许信号,当ENABLE出现高电平时,允许输出转换值。上面给出了ADC0809基本工作原理,具体请参阅ADC0809技术资料。四、步骤1、单片机最小应用系统的P0口接A/D转换的D0D7口,单片机最小应用系统的Q0Q7口接0809的A0A7口,单片机最小应用系统的WR、RD、P20、ALE、INT1分别接A/D转换的WR、RD、P20、CLOCK、INT1、A/D转换的IN接入5V,单片机最小应用系统的RXD、TXD连接到串行静态显示实验模块的DIN、CLK。2、介于KEIL建立A/D转换程序,要求将采集到的电压等间隔分为09共10级,并用一位共阴极数码管显示。五、线路或现象ADC0809数模转换与显示线路连接图及现象如图92六、流程图及源程序源程序见附录九开始初始化启动A/D转换A/D转换完成数据输出延时结束图93ADC0809模数转换显示流程图实验十D/A转换实验一、实验目的和要求1、掌握单片机与DAC0832的接口设计方法。2、掌握PROTEUS软件与KEIL软件的使用方法。二、内容或原理1、设计一个简单的单片机应用系统,利用DAC0832输出连续周期性方波、锯齿波、三角波、正弦波信号。图92、仿真电路图三、设计要求1、用PROTEUS软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0832接口。2、在单片机的外部扩展一个4个按键的键盘。3、按下K0,产生连续方波信号。4、按下K1,产生连续锯齿波信号。5、按下K2,产生连续三角波信号。6、按下K3,产生连续正弦波信号。7、通过外接示波器观察波形。四、实验原理电路图VCWRD0D1D2D3D4D5D6D7GGGNDGNDD0D1D2D3WRQ0VCWRQ0D4D5D6D7O2O1Q0FGNDO2O1FGNDP0P1P2P3P4P0P1P2P3P4XTAL218XTAL119ALE30EA3

温馨提示

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

评论

0/150

提交评论