单片机双机通信系统设计 【毕业设计+开题报告+文献综述】

单片机双机通信系统设计 【毕业设计+开题报告+文献综述】

ID:438480

大小:401.66 KB

页数:43页

时间:2017-08-02

上传者:U-944
单片机双机通信系统设计 【毕业设计+开题报告+文献综述】_第1页
单片机双机通信系统设计 【毕业设计+开题报告+文献综述】_第2页
单片机双机通信系统设计 【毕业设计+开题报告+文献综述】_第3页
单片机双机通信系统设计 【毕业设计+开题报告+文献综述】_第4页
单片机双机通信系统设计 【毕业设计+开题报告+文献综述】_第5页
资源描述:

《单片机双机通信系统设计 【毕业设计+开题报告+文献综述】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

本科毕业设计文献综述电子信息工程单片机双机通信系统设计1.前言随着计算机技术的快速发展和广泛应用,从智能的家用电器到工业上的集散控制系统都采用上位机与下位机基于串行通信的主从工作方式,这样就充分利用了微型计算机分析处理能力强、速度快的特点及下位机面向控制、使用灵活方便的优势。[1]51系列的单片机内部包含有数据存储器、程序存储器、两个16位的定时器/计数器、通用异步串行收发器这些资源。在广泛的应用中,单独一片单片机所能完成的任务是有限的,因此而常常需要扩充I/O接口、定时器/计数器、串行通信接口、存储器等器件。一个系统中使用两个或两个以上的单片机时,单片机之间就需要通过互连进行数据的通信。51系列的单片机带有串口,利用串口进行互连通信极为方便,并且能够减少端口的数量。但如果系统要求扩充的资源是对外连接的串口,串口上可以外接串行输入并行输出的移位寄存器74LS164,或外接并行输入串行输出的移位寄存器74LS165。[2-6]为了增加通信距离,减少通道中电源的干扰,可以在通信上路采取光电隔离的方法进行双机串行通信。2.主题23 双机通信系统设计中,单片机内部的串行接口是全双工的,它在接收数据的过程中同时能够发送数据。两个串行接口数据缓冲器可以通过特殊功能寄存器SBUF访问,写入SBUF的数据用于发送,接收的数据从SBUF中读出。常用的数据传输方式有单工、半双工、全双工,本设计采用单工的传输方式。串行通信有两种形式,(1)异步通信:这种通信方式的特点是接收器和发送器都有各自独立的时钟,然而它们之间的工作不是同步的,异步通信方式用一帧表示一个几位的字符,其内容排布:首先一个起始位,接着几个数据位,最后紧跟的是一个停止位。(2)同步通信:这种通信方式的特点是发送端和接收端由共同的一个时钟源控制,为了解决在异步通信方式中每传输单位字符要加上起始位和停止位从而占用大量传输时间的情况,同步传输通信方式会去掉起始位和停止位,与传输数据块时会首先送出同步字符标志来控制数据的发送。单片机对串口的控制是通过对串行口控制寄存器SCON和波特率控制寄存器PCON的设置实现的。SCON是一个可以位寻址的特殊功能寄存器,通过设置SCON的SM0位和SM1位,可以使单片机有四种不同的工作方式供选择。在和PC机串行通信时,通常设置为方式1或者是方式3,主要区别在于方式1的数据格式是8位,方式3的数据格式是9位,其中第9位SM2是多机使能位,编辑第9位就能实现单片机之间的多机通信。波特率控制寄存器PCON的最高位SMOD为串行口波特率控制位,通过设置SMOD为1可以获得更快的通信速率,并且SMOD是不可以位寻址。[7-10]PC机和单片机通信时,其通信速率是由定时器T1或定时器T2产生,当定时器T1工作方式2状态,通信波特率的计算公式:波特率=(SMOD×fosc)/[32×12×(256-TH1)]。其中fosc是晶振频率,为获得准确的通信速率,fosc通常为12MHZ。[6]通过定时器T0,T1方式寄存器TMOD来设置定时器的工作方式,门控位GATE为是否受外部引脚INT0,INT1电平控制,C/T为定时器方式和外部计数方式选择控制位,工作方式选择位为M1、M0。串行口控制寄存器SCON是一个特殊寄存器,是具有位寻址功能德,SCON包括串行口的工作方式选择位SM0,SM1,多机通信标志位SM2,允许接收位REN,发送接收第9位数据TB8和RB8,以及发送中断标志TI,接收中断标志RI。下面介绍单片机系统各部分功能模块:23 (1)单片机的串行工作方式:目前广泛应用的单片机串行通信是采用异步通信方式,多数单片机都有一个或者多个UART异步串行通信接口,这就为使用者编写通信程序提供了便利。本文将讨论采用异步串行通信方式,单片机对串口的控制是通过对串行口控制寄存器SCON和波特率控制寄存器PCON的设置来实现的。SCON是一个可以位寻址的特殊功能寄存器,通过设置SCON的SM0和SMI,可以使单片机工作于四种不同的方式。SCON的内容可以参考数据手册进行了解。当单片机用于和PC机进行通信时,一般设置为方式1或方式3,主要区别是方式1的数据格式为8位,然而方式3的数据格式为9位,其中第9位SM2为多机通信选择位,能够实现单片机的多机通信。波特率控制寄存器PCON的第7位SMOD为串口波特率倍增控制位,当单片机的晶振为整数时,通过设置SMOD为1可获得更高的速率,但是SMOD不可以位寻址。(2)单片机串行口的传输速率设置:单片机和PC机通信时,其通信速率由定时器1或定时器2产生(52系列),定时器时1工作于方式2的通信速率计算公式为:波特率=(SMOD×fosc)/(32×12×[256-TH1])。当采用定时器1的设计时,速率不会过高,一般情况下最高为19200bit/s。为了获得更高的通信速率,可利用52系列单片机的定时器2,定时器2的最高的速率可以达到115200bjt/s。[11](3)时钟电路:时钟电路是单片机的工作心脏,可以控制着单片机的节奏,通过提高时钟的频率来提高CPU的工作速度,目前大多数的单片机采用CMOS工艺,允许的最高频率是随着型号变化而变化得。AT89C51等CMOS型单片机内部了有一个可以控制的反相放大器,引脚XTAL2,XTAL1分别为反相放大器的输入端和输出端,在XTAL2,XTAL1上连接晶振源和电容便可以组成振荡器。电容C1,C2的参考值为22PF,振荡器的频率主要取决于晶振的频率,但必须小于器件允许的最高频率。[6]振荡器的工作由PD来控制,复位以后PD=0振荡器工作,可由软件置PD为“1”,振荡器便会停止振荡,从而使得整个单片机系统停止工作,以达到节省电的目的。23 (4)显示电路:在单片机系统中,经常用LED(发光二极管)数码管显示器来显示单片机系统的工作状态等信息,LED数码管显示器是单片机与人对话的一种重要输出设备。LED数码管可以构造成显示出0-F数字符号的7段数码管,而在内部结构方面的连接可分为共阳极数码管和共阴极数码管。将发光二极管的正极全部连接在一起组成公共端称为共阳数码管,反之将其负极公共端称为共阴数码管。其中,共阳数码管公共端接+5V,共阴数码管公共端接地,当另一端接高电平时发光二极管导通点亮,而接低电平时二极管不导通则不点亮。1.总结本次设计采用两片单片机实现信息的串行通信,设计过程中,从双机通信背景的了解,到单片机具体功能的和8051单片机的区别;从串行通信的原理的熟悉,到掌握具体串行通信在双机之间的电路实现;从硬件电路设计到程序编写;从硬件调试到软件仿真的实现。发送方的数据由串行口TXD端输出,经过传输线将信号传送到接收端。接收方接收到信号,对于接口电路,通过短距离传送,能够减少抗干扰作用,短距离双机串口中可以连接电平转换器,常用芯片有RS232。硬件设计过程中,对串行通信方式的选择,波特率的计算,芯片的选择,某些指令功能的使用,功能模块的连接,芯片地址选择等都需要理解。2.参考文献[1]楼然苗,李光飞.51系列单片机设计实例[M].北京:北航出版社,2003.[2]李光飞,楼然苗.单片机课程设计实例指导[M].北京:北航出版社,2004.[3]余永权.ATMEL89系列单片机应用技术[M].北京:北航出版社,2001.[4]余永权.89系列FLASH单片机原理及应用[M].北京:电子工业出版社,2000.[5]孙燕,刘爱民.Protel99设计与实例[M].北京:机械工业出版社,2000.[6]胡汉才.单片机原理及其接口技术学习辅导与实践教程[M].北京:清华大学出版社,2004.[7]陈晓风.ADC0809模数转换器的测试与研究[J].福建师范大学学报,2001(12):35~37[8]张洪润.单片机应用设计200例(下册)[M].北京:北京航空航天大学出版社,2006.[9]薛晓书.单片微机原理及接口技术[M].陕西:西安石油大学2002.[10]黄智伟,朱卫华.单片机与嵌入式系统应用[M].湖南:南华大学,2005.23 [11]付浩.AT89C51单片机高速串行输出口设计[J].淮阴师范学院学报,2004(10):20~21.[12]盛范成.基于AT89C52单片机的A/D转换[J].自动化仪表,2006,(5):34~38[13]孙友顺,唐庆玉,张族玲.单片机在电力系统频率测量中的应用[J].电子技术,1994,(06):2~4[14]OttE.Chaosindynamicalsystems[M].2nded.Cam-bridge:CambridgeUniversityPress,2002.[15]JacobsonV.Congestionavoidanceandcontrol[J].ACMComputerCommunicationReview,1998,18(4):314-329.23 毕业设计开题报告电子信息工程单片机双机通信系统设计一、综述本课题国内外研究动态,说明选题的依据和意义随着计算机技术的快速发展和广泛应用,从家用的智能电器到工业上的集散控制系统都采用了上位机与下位机基于串行通信的主从工作方式,这样就充分利用了微型计算机分析处理能力强、速度快的特点及下位机面向控制、使用灵活方便的优势。23 51系列的单片机内部包含有数据存储器、程序存储器、两个16位的定时器/计数器、通用异步串行收发器这些资源。在广泛的应用中,单独一片单片机所能完成的任务是有限的,因此而常常需要扩充I/O接口、定时器/计数器、串行通信接口和存储器。一个系统中需要使用两个或两个以上的单片机时,单片机之间就需要通过互连来进行数据通信。51系列的单片机都有串口通信接口,利用串口进行互连通信极为方便,并且可以减少端口数量。但如果系统要求扩充的资源是对外连接的串口,串行口上可以外接串行输入并行输出的移位寄存器74LS164,或外接并行输入串行输出的移位寄存器74LS165。为了增加通信距离,减少通道中电源干扰,可以在通信上路采取光电隔离方法,进行双机串行通信。串行通信有两种形式,(1)异步通信:这种通信方式的特点是接收器和发送器都有各自独立的时钟,然而它们之间的工作不是同步的,异步通信方式用一帧表示一个几位的字符,其内容为:首先一个起始位,接着几个数据位,最后紧跟的是一个停止位。(2)同步通信:这种通信方式的特点是发送端和接收端由共同的一个时钟源控制,为了解决在异步通信方式中每传输单位字符要加上起始位和停止位从而占用大量传输时间的情况,同步传输通信方式会去掉起始位和停止位,与传输数据块时会首先送出同步字符标志来控制数据的发送。单片机对串口的控制是通过对串行口控制寄存器SCON和波特率控制寄存器PCON的设置实现的。SCON是一个可以位寻址的特殊功能寄存器,通过设置SCON的SM0位和SM1位,可以使单片机有四种不同的工作方式供选择。在和PC机串行通信时,通常设置为方式1或者是方式3,主要区别在于方式1的数据格式是8位,方式3的数据格式是9位,其中第9位SM2是多机使能位,编辑第9位就能实现单片机的多机通信。波特率控制寄存器PCON的最高位SMOD为串行口波特率控制位,通过设置SMOD为1可以获得更大的波特率,并且SMOD是不可以位寻址的。首先是硬件方面的设计,采用两片单片机进行串行接口的通信,设计硬件连接简便,传输距离应不远。只需要在满足单片机自身工作的条件下,进行双机之间的发送端口和接收端口互连就可以,即发送端TXD接接收端RXD,发送端RXD接接收端TXD。单片机工作需提供时钟工作周期,晶振电路为单片机提供工作节拍,常用的晶振频率为12MHZ。其次是软件方面的设计,在选择定时器工作方式和设置传输的波特率后,通过中断方式或者查询方式来编写软件程序。单片机从键盘中读取所按的键值,将键值数据通过串行接口通信发送。接收端接收到键值后,把键值送到数码管电路显示。接收端接收到键值后给发送端回发一个应答信号,发送端接收到信号再进行相应传输工作。计算机的通信是现代通信的基础,学好单片机的串行通信对以后的通信协议的学习和对远程控制的理解有着深远的影响。比如近距离的用PC机来控制家电和远程的用通信技术控制家电、汽车,必将对人类的生活产生重要的影响,在未来将有很大的发展空间。在学完单片机通信技术之后,通过做单片机通信系统设计对我未来的就业和深造有很好的帮助。二、研究的基本内容,拟解决的主要问题:以两片51单片机为主要硬件,应用单片机的串口通信功能完成双机通信任务,通过进行通信及计算机编程等系统分析方法得到锻炼。通过毕业设计,培养综合运用电子技术、微控制器等所学知识解决实际问题的能力。解决通过键盘给一个单片机输入通信内容(比如数字或字母)时,另一个单片机能接收到该内容的问题,得到预期结果:单片机双机通信系统的设计方案、原理图和电路板级硬件,能够演示双机通信功能。三、研究步骤、方法及措施:1.硬件电路设计方案的选择;2.确定各功能单元的关系;3.确定串行通信的工作方式;23 4.串行通信各寄存器的功能;5.画原理电路图及各部分的连接;6.软件设计流程;7.完成PCB设计、硬件制作与功能调试。四、参考文献[1]楼然苗,李光飞.51系列单片机设计实例[M].北京:北航出版社,2003.[2]李光飞,楼然苗.单片机课程设计实例指导[M].北京:北航出版社,2004.[3]余永权.ATMEL89系列单片机应用技术[M].北京:北航出版社,2001.[4]余永权.89系列FLASH单片机原理及应用[M].北京:电子工业出版社,2000.[5]孙燕,刘爱民.Protel99设计与实例[M].北京:机械工业出版社,2000.[6]胡汉才.单片机原理及其接口技术学习辅导与实践教程[M].北京:清华大学出版社,2004.[7]陈晓风.ADC0809模数转换器的测试与研究[J].福建师范大学学报,2001(12):35~37[8]张洪润.单片机应用设计200例(下册)[M].北京:北京航空航天大学出版社,2006.[9]薛晓书.单片微机原理及接口技术[M].陕西:西安石油大学2002.[10]黄智伟,朱卫华.单片机与嵌入式系统应用[M].湖南:南华大学,2005.[11]付浩.AT89C51单片机高速串行输出口设计[J]淮阴师范学院学报,2004(10):20~21[12]盛范成.基于AT89C52单片机的A/D转换[J].自动化仪表,2006,(5):34~38[13]孙友顺,唐庆玉,张族玲.单片机在电力系统频率测量中的应用[J].电子技术,1994,(06):2~4[14]OttE.Chaosindynamicalsystems[M].2nded.Cam-bridge:CambridgeUniversityPress,2002.[15]JacobsonV.Congestionavoidanceandcontrol[J].ACMComputerCommunicationReview,1998,18(4):314-329.23 本科毕业设计单片机双机通信系统设计23 摘要在智能控制领域里,单个的单片机往往不能满足全部的工作要求,通常需要两个或多个单片机协同工作。本文主要阐述双机通信的原理,包括串行通信的类型,通信协议的实现,以及双机通信的电路连接方案。同时介绍软硬件方案的设计,以及系统仿真和代码烧写。整个系统包括作为输入的矩阵键盘,两块单片机之间的电路连接和作为输出的数码管显示电路。单片机串行通信是单片机的一个重要应用,串行通信用一根传输线按位传送数据,每传送一个数据或字符都符合一定的格式。在硬件设计中,通过对双机通信方案的比较,最终选择异步串行通信方式。异步串行通信只需单片机P3口两个引脚之间交叉连接,并对相关特殊功能寄存器进行初始化,完成以上操作后就能进行双机通信。在软件设计前,对编程软件KEIL如何建立工程及相应操作进行研究,这样对于后面实现双机通信帮助很大。将通信系统分为发送端和接收端两部分,发送端采用查询方式进行数据传输,为有效利用CPU接收端采用中断方式。完成软硬件设计后,再编译链接生成单片机能够识别的机器语言,为功能验证做好准备。在系统功能验证时,首先用PROTEUS软件设计电路并仿真成功,再应用PROTEL软件设计硬件电路及PCB电路图,同时对双机通信系统的功能进行调试。本次设计成功完成单片机双机通信系统的设计,即实现发送端单片机将外部键盘输入的内容发送到接收端,同时双机外扩数码管同时显示发送对象,而且通信波特率可以调整。关键词:串行通信;单片机;数码管23 AbstractInthefieldofintelligentcontrol,separateSCMsystemsareoftenunabletomeetalltherequirementsforthework,usuallyrequirestwoormoreSCMwork.Thisarticlefocusesontheprincipleofdouble-machinecommunication,includingthetypeofserialcommunication,communicationprotocolimplementation,andcommunicationdoublecircuitconnectionscheme.Ialsointroducedthedesignofhardwareandsoftwaresolutions,andsystemsimulationandcodeprogramming.Thesystemincludesamatrixkeyboardasaninput,thecircuitconnectionbetweentwomicrocontrollersanddigitaldisplayasanoutputcircuit.Serialcommunicationisanimportantapplicationofthemicrocontroller,serialcommunicationwithatransmissionlinetotransmitdatabybit,eachcharacteristransmittedoradatalinewithacertainformat.Inthehardwaredesign,throughthecomparisonofdual-communicationscheme,Ifinalchoiceasynchronousserialcommunication.Asynchronousserialcommunicationbetweenthemicrocontrolleronlycross-connect,andspecialfunctionregistersrelatedtoinitializealltheaboveoperationscanbecarriedoutafterthetwo-machinecommunication.InthesoftwaredesignpriortoprogrammingsoftwareKEILonhowtobuildunderstandingofengineeringandotheroperations,sothatthebacktoachievedoubleforveryhelpfulcommunications.Sendingthecommunicationsystemisdividedintotwopartsandreceivercommunicateusingquerymodetransmitterfordatatransmission,thereceiverefficiencyforeffectiveutilizationofCPUbyinterrupt.Aftercompletionofhardwareandsoftwaredesign,buildlinkinthemicrocontrollergeneratesthemachinelanguagetoidentify,prepareforthefunctionalverification.Whenverifyingthesystem’sfunction,wedesignthefirstcircuitandsoftwarewiththePROTEUSsimulation,applicationhardwareandsoftwaredesignPROTELPCBcircuit,whiletwo-machinecommunicationsystemfunctionsfordebugging.Thedesignsuccessfulcompletionoftwo-machinecommunicationsystemmicrocontroller,microcontrollerwillbesendingthattoachieveanexternalkeyboardinputissenttothereceiver,whiledual-expandingdigitaloutsidethefunctionkeysatthesametimeshowthesametime,communicationbaudrate.keyword:serialcommunication;Microcontroller;LED23 目录前言1第1章总体方案的设计11.1系统功能要求11.2方案设计比较11.2.1双机并行通信方案11.2.2双机串行通信方案21.3系统总体框图3第2章系统硬件设计42.1常用串行扩展总线42.1.1I2C总线42.1.2SPI总线42.2STC89C52RC单片机介绍52.3所用特殊功能寄存器的说明62.3.1串行接口控制寄存器62.3.2串行接口工作方式72.3.3定时器寄存器及其工作方式82.3.4波特率的计算92.4矩阵键盘输入电路的设计92.5数码管显示电路的设计102.6双机串口通信电路的设计11第3章系统软件设计123.1编程软件KEIL的介绍123.2程序流程图133.3矩阵键盘代码143.4数码管显示代码153.5双机串口通信代码153.5.1发送部分代码153.5.2接收部分代码1623 第4章系统仿真与代码烧写174.1系统仿真174.2代码烧写18小结20致谢21参考文献22附录1电路系统总体图23附录2PCB板示意图24附录3实物图25附录4代码2623 前言随着计算机技术的快速发展和广泛应用,从智能家用电器到工业上的集散控制系统(DCS)都采用了上位机与下位机基于串行通信的主从工作方式,这样就充分结合利用了微型计算机分析处理能力强、速度快的特点及下位机面向控制、使用灵活方便的优势。51系列的单片机[1-6]内部包含有数据存储器、程序存储器、两个16位的定时器/计数器、通用异步串行收发器这些资源。在广泛的应用中,单独一片单片机所能完成的任务是有限的,因此而常常需要扩充I/O接口、定时器/计数器、串行通信接口、存储器。一个系统中使用两个或两个以上的单片机时,单片机之间就需要通过互连来进行数据通信。51系列的单片机带有串口,利用串口进行互连通信极为方便,并且可以减少端口数量。但如果系统要求扩充的资源是对外连接的串口,串行口上可以外接串行输入并行输出的移位寄存器74LS164,或外接并行输入串行输出的移位寄存器74LS165。为了增加通信距离,减少通道中电源干扰,可以在通信上路采取光电隔离的方法,进行双机串行通信。双机通信系统设计中,单片机内部的串行接口是全双工的,它在接收数据的过程中同时能够发送数据。两个串行接口数据缓冲器可以通过特殊功能寄存器SBUF访问,写入SBUF的数据用于发送,接收的数据从SBUF中读出。常用的数据传输方式有单工、半双工、全双工,本设计采用单工的传输方式。串行通信有两种形式,(1)异步通信:这种通信方式的特点是接收器和发送器都有各自独立的时钟,然而它们之间的工作不是同步的,异步通信方式用一帧表示一个几位的字符,其内容排布:首先一个起始位,接着几个数据位,最后紧跟的是一个停止位。(2)同步通信:这种通信方式的特点是发送端和接收端由共同的一个时钟源控制,为了解决在异步通信方式中每传输单位字符要加上起始位和停止位从而占用大量传输时间的情况,同步传输通信方式会去掉起始位和停止位,与传输数据块时会首先送出同步字符标志来控制数据的发送。本文将讨论如何采用一个异步串行通信完成设计。单片机对串口的控制是通过对串行口控制寄存器SCON和波特率控制寄存器PCON的设置实现的。SCON是一个可位寻址的特殊功能寄存器,通过设置SCON的SM0位和SM1位,可以使单片机有四种不同的工作方式供选择。在和PC机串行通信时,通常设置为方式1或者是方式3,主要区别在于方式1的数据格式是8位,方式3的数据格式是9位,其中第9位SM2是多机使能位,编辑第9位就能实现单片机的多机通信。波特率控制寄存器PCON的最高位SMOD为串行口波特率控制位,通过设置SMOD为1可以获得更大的通信速率,并且SMOD是不可以位寻址。PC机和单片机通信时,其通信速率由定时器T1或定时器T2产生(52系列单片机),定时器T1工作方式2时,通信波特率的计算公式:波特率=(SMOD×fosc)/[32×12×(256-TH1)]。其中fosc是晶振频率,为获得准确的通信速率,Fosc通常为12MHZ。通过定时器T0、T1方式寄存器TMOD来设置定时器,门控位GATE为是否受外部引脚INT0、INT1电平控制,C/T定时器方式和外部计数方式控制位,工作方式选择位M1、M0。串行口控制寄存器SCON是一个特殊寄存器,具有位寻址功能,SCON包括串行口的工作方式选择位SM0,SM1,多机通信标志SM2,接收允许位REN,发送接收第9位数据TB8、RB8,以及发送和接收中断标志TI、RI。23 第1章总体方案的设计1.1系统功能要求以两片51单片机为主要硬件,应用单片机的串口通信功能完成双机通信任务,通过进行通信及计算机编程等系统分析方法得到锻炼。设计单片机双机通信系统,要求通过键盘给一个单片机输入通信内容时,另一个单片机能接收到该内容,而且整个操作过程中两个单片机的外扩数码管都能显示通信内容。同时完成单片机双机通信系统的PCB设计、硬件制作与功能调试。1.2方案设计比较1.2.1双机并行通信方案1.单向方式并行通信的实现如果只需要一片单片机向另一片单片机发送数据,即单向传输数据,可以采用单向并行通信方式,如图1.1所示。图中单片机A为数据发送部分,单片机B为数据接收部分,两片单片机之间通过端口传输数据,另外通过几根控制线用于控制两者的通信。单片机A将数据放到P1上,同时向单片机B发送一个信号提示数据发送后,单片机B接收数据并发回一个信号应答,提示单片机A准备下一个数据。这样就能进行数据的并行传输,利用单向并行通信方式可以充分利用单片机的资源扩充通信接口,但对于控制线的状态变化要求非常严格。单片机AP1CLKSTB单片机BP1BUSYINT图1.1单向方式并行通信原理图2.主从方式并行通信的实现主从方式并行通信传输数据需要确定一片单片机为主机,另一片单片机为从机。两片单片机之间可以护发数据,但相应的控制信号主要是由主机进行控制,其电路连接如图1.2所示。23 当主机用于表明数据发送方向的控制位DIR为1时,表明双机之间的数据传输是主机发送从机接收状态。主机在端口STB处产生一个脉冲并将数据放到端口P1处,从机准备接收数据。主机在CHK端置高电平,从机查询到ACK端口信号后,就会接收数据,这样就完成数据从主机到从机的输过程。当主机用于表明数据传输方向的控制位DIR为0时,表明双机之间的数据传输时从机发送主机接收的状态。主机在端口STB处产生一个脉冲,提示从机可以发送数据。主机查询ACK处的状态,当从机的CHK端发送有效信号,说明从机已将数据放在数据端口。主机就可以接收数据,并通过CHK端向主机的ACK发信号,表示数据接收成功,这样就完成了数据由从机到主机的传输过程。双机之间的数据传输主机处于控制信号的状态,达到数据的有效传输。主从方式并行通信双机之间互相发送数据,而本次单片机双机通信系统设计只需采用单向的数据发送模式。单片机AP1DIRSTBACKCHK单片机BP1DIRINTCHKACK图1.2主从方式并行通信原理图并行通信接口方式需要采用8位端口来传输数据,同时需要设置几个控制信号来控制。根据单片机端口内部结构的特点,这些端口的端口线可以直接相连,从而使两单片机之间并行通信接口的实现不用另外的硬件电路设备。单片机ATXDRXDGND单片机BRXDTXDGND图1.3通用异步通信方式原理图1.2.2双机串行通信方案异步串行通信以字符为单位进行传送,用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位,最后是一位停止位。TXD为串行数据输出端,RXD为串行数据输入端。发送端数据由TXD发送至接收端RXD被接收,接收端数据由TXD发送至接收端RXD被接收,电路连接图如图1.3所示。23 异步串行双机通信仅需采用端口P3的低两位P3.0,P3.1作为复用功能的TXD和RXD,同时对特殊功能寄存器SCON和PCON进行设置。串行通信相对于并行通信而言连线少,连接可靠,适合近距离通信。1.3系统总体框图在对通信速度要求不高的条件下可以采用串行通信,所以本次设计采用异步串行通信的方式实现双机通信系统的设计。根据设计要求和设计思路指定整个系统的系统框图如图1.4所示单片机B(接收端)单片机A(发送端)键盘输入数码管显示数码管显示图1.4系统总体框图整个系统有三大部分组成,(1)键盘输入电路:为双机通信提供外部输入通信信号,本设计采用键盘输入数字的形式提供通信信号。(2)数码管显示电路:采用数码管在双机通信的同时显示通信的内容,便于直观。(3)双机通信电路:采用异步串行通信实现双机系统的通信。23 第2章系统硬件设计2.1常用串行扩展总线串行通信的基本特征是数据逐位顺序进行传送,串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。常用的有:通用异步收发器(UART),I2C总线,CAN总线,SPI总线,RS—485、RS—232C标准。以下简单的介绍IIC总线和SPI总线的特点和协议。2.1.1I2C总线I2C总线是PHLIIPS公司推出的一种高性能的同步串行总线,具有多主机系统所需的包括总线裁决和高低速器件同步的特点。I2C总线只有两根信号线,一根为SDA数据线,另一根为SCL时钟线。I2C总线上接有正电源,当总线处在空闲状态,两根线都处于高电平,当其中有一根线上出现低电平,总线的信号将被拉低,这样数据线和时钟线就是逻辑与的关系。以下是I2C总线协议的几点要求:(1)当I2C总线传送数据时,在时钟信号为高电平期间,数据线上的状态必须保持稳定,只有在时钟线上的信号保持为低电平不变期间,数据线上的电平才可以变化。(2)SCL线为高电平状态期间,SDA线由高电平到低电平的变化就表示起始信号;SCL线为高电平状态期间,SDA线由低电平到高电平的变化就表示终止信号。起始信号和终止信号都是由主机产生的,在起始信号产生后,总线就处于被数据线占用的状态;终止信号产生后,总线处在未被占用的状态。(3)当传送数据时,先传送的是最高位(MSB),每传送一个字节都需要跟随应答位。当主机处于接收数据状态,它收到最后一个数据后,必须向从机发出一个结束传送信号的命令。2.1.2SPI总线SPI是一种四线同步双向传输串行总线,是一种高速的,全双工的同步通信总线。SPI在芯片的管脚上只占用四根线,这将节约芯片的管脚,同时PCB的布局将节省空间,正是出于这种简单易用的特性,现在越来越多的芯片都采用SPI总线。23 SPI总线系统是一种同步串行的外设接口,一般用到4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择CS。SPI的通信协议很简单,以主从方式进行工作,这种方式通常有一个主设备和若干个从设备。SCLK是时钟信号,由主设备产生;CS是使能从设备信号,由主设备进行控制。其中CS可以选择相应的芯片,当片选CS信号为先前规定的选择信号时,才会使所选的芯片有效,这就可以在同一根线上连接多个从设备。SPI总线由SCK来提供时钟信号脉冲,SDI,SDO基于此信号完成数据的传输。数据是通过SDO线输出,数据在时钟边沿改变,在紧接的边沿读取,这样就完成一位数据的传输,输入数据也使用相同的原理进行数据的传输。这样,在至少8次时钟信号的改变(上沿和下沿各为一次),就能完成8位数据传输。在主机从机都只有一个的通信系统中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。而在多个从设备的通信中,每个从设备就需要独立的使能信号来选择所需的从机设备,因此在硬件上比I2C总线协议要复杂。2.2STC89C52RC单片机介绍STC89C51RC单片机是由宏晶科技公司推出的一款单片机,指令代码可以兼容传统的8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择,下面介绍该款单片机的信息。(1)特点:1.6时钟/机器周期CPU,12时钟/机器周期CPU。2.工作电压参考:5.4V-3.4V(工作电压5V单片机)/3.7V-2.0V(工作电压3V单片机)。3.工作频率范围参考:0-40MHz,实际工作最高频率可达48MHz。4.用户可应用的ROM空间4K/8K/13K/16K/20K/32K字节。5.片上集成128KB或512KBRAM。6.通用I/O口(32/36个),复位后为:P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口)P0口是开漏输出,当作为总线扩展用,无需加上拉电阻,作为I/O口用时,则需加上拉电阻。7.在系统可编程/(在应用可编程),无需专用编程器/仿真器,可通(P3.0/P3.1)直接下载程序。8.EEPROM的功能;9.看门狗电路(WDT);10.内部集复位电路,外部晶体20M以下时,可不用外部复位电路。11.共3有个16位定时器/计数器,其中定时器0还能当作2个8位定时器来使用。12.外部中断有4个,下降沿中断或者低电平触发中断,省电模式可由外部中断低电平触发中断方式唤醒。13.通用异步串行口,可以编程实现多个UART。14.工作温度范围:0-75℃/-40-+85℃。15.封装:LQFP-44,PDIP-40,PLCC-44,PQFP-44(2)STC89C52RC单片机的内部结构框图如图2.1所示。STC89C52RC单片机中包含中央处理器(CPU)、程序存储器(FLASH)、数据存储器(SRAM)、定时/计数器、UART串口、I/O接口、EEPROM、看门狗等模块。STC89C52RC单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统(SOC)。(3)STC89C51RC单片机所有I/O口均有3种工作类型:准双向口/弱上拉、仅为输入或开漏输出功能。当P0口上电复位后处于开漏模式,P0管脚作I/O时,需加10K-4.7K的上拉电阻。当P0管脚作为地址/数据复用总线使用时,不用外加上拉电阻。23 图2.1STC89C51RC内部结构框图2.3所用特殊功能寄存器的说明2.3.1串行接口控制寄存器控制串口接口的寄存器有两个:特殊功能寄存器PCON和SCON。[7-9]1)PCON是一个特殊功能寄存器,其中D7位为波特率选择位,可用MOVPCON,#80H指令使该位置1。当SMOD=1时,在串行接口方式1、2或3情况下,波特率将提高一倍。2)特殊功能寄存器SCON用于定义串行接口的操作方式和控制它的某些功能,其字节地址为98H,寄存器中内容表2.1所示。表2.1特殊功能寄存器SCON位地址表位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRISM0,SM1:串行接口的操作方式选择位。两个选择位对应于四种状态,所以串行接口能以四种方式工作,如表2.2所示。表2.2串行工作方式选择表SM0SM1方式功能说明波特率000移位寄存器fosc/120118位UART可变1029位UARTfosc/64或fosc/321139位UART可变23 SM2:允许方式2和3的多机通信使能位。在方式2或3中,若SM2置为1,且接收到得第9位数据(RB8)为0,则接收中断标志RI不会被激活。在方式1中,若SM2=1,则只有收到有效的停止位时才会激活RI。在方式1中,SM2必须置为0。REN:接收允许控制位。软件置1允许接收,软件置0禁止接收。TB8:方式2或3时,TB8为要发送第9位数据,根据需要由软件置1或清0。RB8:方式2或3时,RB8为要接收的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的是呼叫地址还是要传送的数据。TI:发送中断标志。在方式0中当发送完第8位数据时由硬件来置位;在其他方式中,在发送停止位的开始状态由硬件置位。当TI=1时申请中断,CPU响应中断后,发送下一帧数据。在任何方式中,该位都由必须由软件来清0。.RI:接收中断标志。在方式0中当串行接收完成第8位数据结束时由硬件置位;在其他方式中,在接收到停止位的中间时由硬件置位。RI=1时申请中断,要求CPU取走数据。但在方式1中,当SM2=1时,若未接收到有效的停止位,则不会对RI置位。在任何工作方式中,该位都必须由软件清0。在系统复位时,SCON中的所有位都必须清0。2.3.2串行接口工作方式当SCON的SM0、SM1设置为“01”时,串行通信以方式1方式工作。串行接口工作于方式1时,被控制为波特率可变的8位异步通信接口。传送一帧信息为10位,即1位起始位(0),8位数据位(低位在前高位在后)和1位停止位(1)。数据由TXD端发送,由RXD端接收。波特率是可以变的,取决于定时器1的溢出率。(1)方式1发送过程:串行通信方式发送时,数据由串行发送端TXD输出。当主机执行一条写入“SBUF”的指令就开启发送命令,写“SBUF”信号还把“1”装入发送移位寄存器的第9位,并通过TXD控制模块开始发送数据。发送各位的定时功能是和16分频计数器同步。移位寄存器将数据不断右移送TXD端口发送,在数据的左边不断移入“0”作补充。当数据的最高位移到移位寄存器的输出位置,接着是第9位“1”,它的左边为“0”,使控制器作最后一次移位输出,然后允许发送使能信号“SEND”失效,完成一帧信息的发送,并置位中断请求标志位TI,即TI=1,向主机发送中断处理请求。(2)方式1的接收过程:当软件使接收允许标志位REN置位,即REN=1时,接收器将以确定波特率的16分频的速率采集接收端口RXD数据,当检测到RXD状态从“1”→“0”的变化时就开启接收器准备接收数据,同时立即重新开始16分频计数器,将16进制数1FFH装入移位寄存器中。复位16分频计数器是使它与输入的时间同步。16分频计数器的16个状态是将1波特率(每位接收时间)均分为16等份,检测每位时间的7、8、9状态RXD端口进行采样,所接收的值是这次采样值经过“三中取二”的值,即3次采样至少2次相同的值,以此消除干扰影响,从而提高可靠性。在起始位,如果接收到的值不为低电平,则起始位无效,单片机复位接收电路,并重新检测“1”→“0”的变化。如果接收到的起始位有效,则将它输入到移位寄存器,同时接收剩余的数据。接收的数据从接收移位寄存器的右边移入,已装入的16进制数1FFH向左边移,当起始位“0”23 移到移位寄存器的最左边时,使控制器作最后一次移位,完成一帧数据的接收。若同时满足RI=0,SM2=0或者接收到的停止位为1,则接收到的数据有效,将有效数据装入SBUF缓冲器中,停止位进入RB8中,置位RI,即RI=1,并向主机发出中断申请。若上述两条件不是同时满足,则接收到的数据无效不用并且丢失,接着接收器又重新检测RXD端口上的“1”→“0”的变化,继续接收下一帧数据。接收有效时,响应中断后,寄存器必须由软件清0。通常情况下,串行通信工作于方式1时,SM2将设置为低电平,这样就禁用多机通信。2.3.3定时器寄存器及其工作方式STC89C52RC单片机的定时器0和定时器1,与传统8051的定时器完全兼容。在用定时器1做波特率发生器时,定时器0可以当两个8位定时器用。[10-13]STC89C52RC单片机内部设置的两个16位定时器/计数器T0和T1都具有计数方式和定时方式两种工作方式。对每个定时器/计数器(T0和T1),在特殊功能寄存器TMOD中都有控制位C/T来选择T0或T1为是定时器还是计数器。定时器/计数器的计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每6个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚(T0为P3.4,T1为P3.5),则为计数方式,每来一个脉冲加1。当定时器/计数器工作在定时方式时,可在烧录用户程序时在STC-ISP编程器中设置是系统时钟/12还是系统时钟/6后让T0和T1进行计数。当定时器/计数器工作在计数方式时,对外部脉冲计数不进行分频处理。定时器/计数器有4种工作模式:模式0(13位定时器/计数器),模式1(16位定时器/计数器模式),模式2(8位自动重装模式),模式3(两个8位定时器/计数器)。定时器/计数器除模式3外,其他工作模式与定时器/计数器0相同,T1在模式3时无效。(1)定时器/计数器工作模式寄存器TMOD定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择,TMOD寄存器的各位信息如下表所列。可以看出,2个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。2个定时/计数器的模式0、1和2都相同,模式3不同,各模式下的功能表2.3所述。表2.3寄存器TMOD各位的功能描述表76543210GATEC/TM1M0GATEC/TM1M0定时器1定时器0TMOD.7控制定时器1,置1时只有在INT1脚为高及TR1控制位置为1时才可以打开定时器/计数器1。TMOD.6控制定时器1用作定时器或计数器,清零则用作定时器(从内部系统时钟输入),置1用作计数器(T1/P3.5脚输入)。TMOD.5/TMOD.4为定时器定时器/计数器1模式选择。M1M0=00时为13位定时器/计数器,TL1只把低5位参与分频,TH1整个8位全部采用。M1M0=01时为16位定时器/计数器,TL1、TH1全用。M1M0=10时为8位自动重装定时器,当溢出时将TH1存放的值自动重装如TL1。M1M0=11时定时器/计数器无效(停止计数)。定时器0的状态由TMOD低4位决定,相应的情况与定时器1相同,当M1M0=11时定时器0作为双8位定时器/计数器。TL0作为一个8位定时器/计数器,通过标准定时器0的控制位控制。TH0仅作为一个8位定时器,由定时器1的控制位控制。23 本次设计采用定时器1的模式2,即把TL1配置成一个可以自动恢复初值的8位计数器。TH1作为常数缓冲器,TH1由软件预置值。当TL1产生溢出时,单片机使溢出标志位TF1置1,同时把TH1中的8位数据重新装入TL1中,进行下一次计数。2.3.4波特率的计算方式1的波特率[14]是定时器的溢出率所决定。当定时器1作波特率发生器用时,波特率的计算公式为:波特率=(定时器1的溢出率)/n(2-1)式中:定时器1溢出率=定时器1的溢出次数/秒,n为32或16,由特殊功能寄存器PCON中的SMOD位的状态。若SMOD=0,则n=32;若SMOD=1,则n=16。对于定时器的不同工作方式,得到的波特率的范围是不一样的,这主要由定时器1的计数位数不同所决定。对于非常低的波特率,应选择16位定时器方式,并且在定时器1中断程序中实现时间常数重新载入。在这种情况下,应该允许定时器1中断(IE.3=1)。2.4矩阵键盘输入电路的设计图2.2矩阵键盘示意图1.矩阵键盘的连接及原理当键盘的个数较多时,可以采用矩阵键盘的连接方式达到增加键盘个数的作用,如图3.2所示。在矩阵键盘中,水平线和垂直线之间通过一个按键连接,而不是直接连接。这样,一个端口(如P2口)就可以构成16个按键,比直接将端口线引出来所有效的按键数增加一倍。而且线数越多,区别越明显,比如再多加一根线就可以构成有20键的键盘,然而直接用端口线则只能多出一键来。由此可见,在需要键数比较多的时侯,采用矩阵方式来做键盘是比较合理的。矩阵方式结构的键盘显然比用直接方式要复杂一些,而且识别方法也要复杂一些。上图中,行线所接的单片机的I/O口作为输出端,而列线所接的单片机I/O口作为输入端。这样,当按键被没有按下时,所有的输入端都是高电平,这样就代表无键被按下来。通过行线输出低电平,如果一旦有键按下,则输入线就相应被拉低,这样,就可以通过读入输入线的状态知道是否有键按下了。编程方法如下所述:2.矩阵键盘按键的识别方法行扫描法是一种常用的按键识别方法,如图2.2所示的矩阵键盘,其过程如下:23 (1)判断键盘中按键按下的状态:先将全部的行线置为低电平,然后查看列线的状态。只要有一列为低电平,则表示矩阵键盘中是有键被按下,而且闭合的按键位于状态为低电平线与4根行线相交叉的4个按键之一。如果所有列线都是高电平的话,则键盘中就无键按下。(2)判断所闭合的按键位置:确认有键按下时,即可确定具体闭合按键的位置。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线都是高电平。在确定某根行线位置为低电平后,再逐行来检测各列线电平状态。如果某列为低,则该列线和状态为低电平的行线相交的按键就是按下的按键。3.本次设计的具体编程方法:图仍如图3.2所示。用单片机的P2口作为键盘I/O口,键盘的列线接到P2口的低4位,键盘的行线接到P2口的高4位,即把列线P2.0-P2.3设置为输入线,行线P2.4-P2.7设置为输出线。4根行线和4根列线就形成16个相交点。(1)检测当前是否有键被按下。检测的过程是P2.4-P2.7输出全“0”,并读取P2.0-P2.3端的状态,若P2.0-P2.3为全为“1”,则无键闭合。(2)去除按键抖动的干扰。当检测到有键按下后,通过延时一段时间再做下一步检测减少干扰。(3)若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线输入进行扫描判断。P2的高四位状态依次为1110,1101,1011,0111,即依次拉低P2.4到P2.7的电平,一种状态分别对应P2低4位的4种状态,明确P2低4位的状态后给相应的按键赋键值,就可以得到键值。2.5数码管显示电路的设计本设计的显示部分采用七段数码管,[15]数码管显示器时单片机应用产品中常用的输出设备。它是由若干个发光二极管组成的,当二极管导通时,相应的一个点或一个笔画发光,控制不同组合的二极管导通,就能显示出各种字符。单片机系统扩展LED数码管时多用共阳LED,共阳数码管每段笔画时用低电平点亮,要求驱动功率很小;而共阴数码管每段笔画用高电平点亮的,要求驱动功率较大。通常每段笔画要接值为数百欧姆的降压电阻。使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。根据电路连接图显示16进制数的编码如下表所示。字形0123456789ABCDEF共阳0C00F90A40B09992820F8809088830A70A1868ELED数码管显示分类:静态显示方式和动态显示方式。⑴静态显示方式,每个字段码都通过一个端口连接,可以保持长时间。特点:编程较简单,但占用I/O口线多,适合应用于所需位数较少的情况。⑵动态显示方式,在一段时间内显示特定的字段码,通过控制公共端达到轮流显示的功能,由于人眼的停止现象,会看到多位数同时显示的状态。特点:占用I/O端线少,电路的连接较简单,需要复杂的编程,需要不断的刷新扫描。适合应用于所需位数多的情况。23 由本设计只要将一个按键值显示在数码管上,所以采用静态显示方式,电路图连接如图2.3所示。图2.3数码管连接示意图2.6双机串口通信电路的设计UART通信方式的连接示意图如图2.4所示,在这种连接方式中,收发双方分别将自己的发送端(TXD)与对方的接收端(RXD)直接相接,同时双方地线相连,构成共同的零电平参考点,从而构成通信的物理链路。图2.4双机串口连接示意图23 第3章系统软件设计系统软件设计是本次毕业设计的另一个重要方面,本次设计采用C语言,应用KEIL软件编程。熟悉STC89C52RC单片机的相关信息后,介绍程序流程图、编写矩阵键盘输入代码、数码管显示代码、双机串行通信代码、代码的编译调试、PROTEUS仿真以及最后的代码烧写。3.1编程软件KEIL的介绍C51的编程语言可以采用汇编语言或者是C语言。汇编语言的产生的机器代码生成效率高但是可读性不高,复杂的代码更加难以理解读懂。但是C语言产生的机器代码生成效率和汇编语言差不多,在可读性和可移植性方面会超过汇编语言,而且C语言可以嵌入到汇编从而解决高时效的代码编程情况。对于开发周期来说,复杂的软件编写采用C语言的开发周期通常会小于汇编语言。综合前面的C语言编程优点,我在设计时选择了C语言。使用C语言要使用C编译器,可以把写好的C代码编译为机器码,这样单片机就能运行编写好的程序。KEILuVISION3[1]是众多单片机开发软件中很好的软件,它支持不同公司的MCS51架构的芯片,集编写、编辑和仿真于一体,同时支持汇编和C语言的代码设计。它的界面和常见的微软VC++的界面有所相似。调试程序时,在软件仿真方面会有很强大的功能,因此他深受单片机开发者和爱好者的喜欢。以上简单介绍了软件,要使用KEIL软件,必需先要安装它。接下来按下面的步骤建立一个项目:(1)点击Project菜单,选择弹出的菜单中的NewProject。接着弹出一个文件对话窗口,在“文件名”中输入一个自己定义的项目名,只要符合Windows文件规则的文件名都行。“保存”后的文件扩展名是.uv2,这是KEILuVision3项目文件扩展名,以后就可以直接打开已经做过的项目。(2)选择所需要的单片机,这里我们可以选择常用的ATEML公司的AT89C51。在完成上述步骤后,我们就可以进行程序的编写了。(3)首先我们要在项目中创建新的程序文件也可以加入旧程序文件。如果没有编好的程序,那么就要自己新建一个程序文件。在KEIL中有一些程序的Demo,在这里我以一个C程序为例介绍如何新建一个C程序和如何加到一个项目中。点击新建文件的快捷按钮,在窗口中出现一个新的文字编辑窗口,这个操作也可以通过菜单File-New或快捷键CRTL+N来实现。现在可以编写程序了,光标已出现在文本编辑窗口中,等待输入。(3)用菜单File-Save或快捷键CTRL+S进行保存。因是新文件所以保存时会弹出文件操作窗口,我们把第一个程序命名为MAIN.C,保存在项目所在的目录中,这时会发现在程序单词出现不同的颜色,表明KEIL的语法检测功能生效了。鼠标在窗口最左的SourceGroup1文件夹图标上右击弹出菜单,在这里可以在项目中添加或删除文件操作。我们选“AddFiletoGroup‘SourceGroup1’”弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件就加到项目中。这时在SourceGroup1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。23 (4)C程序文件已加到了项目中了,下面就剩下编译运行了。使用软件默认的编译设置,它不会生成用于烧写HEX文件。菜单栏第三行中前三个按钮1、2、3都是编译按钮,不同是1是用于编译单独文件。2是编译当前运行项目,如果先前编译的文件没有做任何编辑改动,这时再点击是不会出现再次重新编译的情况。3是重新编译,每点击一次均会再次编译链接一次,不管程序有没有改动。在3右边的是用于停止编译的按钮,只有在点击了前三个中的任何一个,停止按钮生效。在界面的最下面窗口中可以看到编译的错误信息和使用的系统资源的情况。(5)进入调试模式,软件窗口如图3.1所示。图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。3是复位,模拟芯片的复位,程序回到最开头处执行。4可以查看I/O端口的状态,即打开5的窗口,通过单步运行程序并观察5的状态,能够确定程序得正确性。最后我们要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启关闭调试模式按钮。然后我们就可以进行的关闭操作。图3.1调试运行示意图到此为止,初步学习了一些KEILuVision3的项目文件创建、编译和运行的基本操作方法。其中一直有提到一些功能的快捷键的使用,的确在实际的开发应用中快捷键的运用可以大大提高工作的效率。3.2程序流程图程序流程图如图3.2所示:首先进行相关特殊功能寄存器的初始化工作,即定义串行通信采用工作方式1,允许接收数据,波特率倍增位置1,高波特率传输数据。定义定时器工作于方式2为自动装入时间常数的8位定时器。接着调用键盘扫描函数扫描得到按下的键值,将键值作为返回值。同时将键值对应的代码送入发送端得数码管显示数字。得到键值后调用串行发送函数,用异步串行通信方式将键值发送给接收端,接收端将键值对应的代码送入数码管显示,完成整个流程。特殊功能寄存器初始化调用键盘扫描函数返回按下的键值送入发送端数码管显示调用串行发送函数接收端接收键值送到接收端数码管显示23 图3.2程序流程图3.3矩阵键盘代码下面介绍矩阵键盘的代码,以下代码完成对第一行按键的扫描:sbitP2_7=P2^7;//定义需要用到的位端口sbitP2_6=P2^6;sbitP2_5=P2^5;sbitP2_4=P2^4;unsignedcharkey,temp;unsignedcharKeyScan(void)//KeyScan函数用于键盘扫描{P2=0xFF;//在读取P2端口前先写入1P2_7=0;//拉低P2.7的电位temp=P2;//将P2口的数据保存在变量temp中temp&=0x0F;//位操作取temp低四位的值if(temp!=0x0F)//如果低四位有变化,继续执行下面代码{delay(1);//调用延时程序,达到软件消抖的作用temp=P2;temp&=0xFF;if(temp!=0xFF){temp=P2;temp&=0xFF;switch(temp)//switch语句,由temp的值,选择执行不同的语句{case0x07:key=0;break;//当temp为0x07,则按下键值为0case0x0B:key=1;break;//当temp为0x0B,则按下键值为1case0x0D:key=2;break;//当temp为0x0D,则按下键值为2case0x0E:key=3;break;//当temp为0x0E,则按下键值为3}return(key);//返回键值}}}23 3.4数码管显示代码以下代码完成数码管的显示unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};//0~F共阳编码存放在数组table中用于调用voiddisplay(unsignedchark)//数码管显示函数,k为键盘扫描函数返回的键值{P1=table[k];//将键值对应的十六进制数从P1口输出}3.5双机串口通信代码3.5.1发送部分代码串行发送采用查询方式,不断查询发送中断标志TI,当TI为1时表明已发送完成一帧数据。#defineF_OSC12000000//预处理用F_OSC代替晶振频率为12000000#defineB_RATE9600voiduart(unsignedcharval){SCON=0x50;//方式1,允许接收PCON=0x80;//波特率倍增位TMOD=0x20;//定时器1方式2TL1=256-F_OSC/16/12/B_RATE;TH1=256-F_OSC/16/12/B_RATE;//定时器初值计算TR1=1;//启动定时器1if(TI==1)TI=0;//等待数据传输完,并将发送中断标志TI清零SBUF=val;//将要发送的数据放入发送缓冲器中,用于发送while(!TI);//直到TI置位,执行下一帧数据的传输}23 3.5.2接收部分代码串行接送采用中断方式,当RI中断被响应时,CPU把控制转到中断服务函数对接受的数据进行处理。#defineF_OSC12000000//预处理用F_OSC代替晶振频率为12000000#defineB_RATE9600voidmain(void){unsignedchardata_val=0;SCON=0x50;//方式1,允许接收PCON=0x80;//波特率倍增位ES=1;//允许串行接收中断TMOD=0x20;//定时器1方式2TL1=256-F_OSC/16/12/B_RATE;TH1=256-F_OSC/16/12/B_RATE;//定时器计数初值计算TR1=1;//启动定时器1EA=1;//打开CPU中断允许标志,允许所有中断while(1);//等待中断}voidserial(void)interrupt4//串行中断服务函数,中断编号为4{unsignedchardata_val=0;if(RI)//当接收中断标志置位,执行以下程序{RI=0;//清零接收中断标志,为下一次作准备data_val=SBUF;//将接收缓冲器内的数据放到中间变量data_val中}23 第4章系统仿真与代码烧写4.1系统仿真仿真本次设计选PROTEUS,PROTEUS是目前比较好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC常用的单片机及其外设电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分应用IIC协议的器件)。当然,软件仿真的精度是有限的,而且可能不是所有的器件都找得到相应的仿真模型。PROTEUS与其它仿真的软件不同的地方是,它不仅能仿真CPU的工作情况,也能仿真单片机外设电路的工作情况。在仿真和程序调试时,关心的是从工程的角度直接看代码运行和电路工作的情况和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和实际应用间脱节的现象。运行PROTEUS的ISIS程序后,进入该仿真软件的主界面。在工作前,要设置view菜单下的对齐和system下的颜色和图形界面大小等选项。通过工具栏中的按键p(从库中选择元件命令)命令,在pickdevices窗口中选择电路所需要的元件,放置元件并且调整其相应的位置,元件参数的设置,元器件之间连线;在source菜单的Definecodegenerationtools菜单命令下,选择代码编译的路径、工具、扩展名等选项;在source菜单的Add/removesourcefiles命令下,加入单片机硬件电路的所对应的代码;通过debug菜单中的相应菜单命令来仿真电路。图4.1为整体系统的仿真,在键盘中按下键值3,在发送端数码管显示3,同时发送端将键值通过异步串行通信发送给接收端,接收端数码管同样显示键值3。双机通信系统同时能够传输字形为字母的键值,如图4.2所示。系统仿真时,键盘按下键值为F的按键,在发送端数码管显示F,同时发送端将键值通过单片机的异步串行通信发送给接收端,接收端接收键值并显示在接收端外接的数码管上。图4.1仿真示意图一23 图4.2仿真示意图二4.2代码烧写在调试成功后,接下来是如何用KEILuVISION3来编译产生用于烧写到芯片中的HEX文件。它的文件格式是Intel公司提出的按地址排列的数据信息,常用来保存单片机目标程序代码。打开相应的选择项目窗口,转到输出选项页图4.3所示,图中1是选择编译输出的路径,2是设置编译输出生成的文件名,3则是决定是否要创建HEX文件,选中它就可以输出HEX文件到指定的路径中。很快在编译信息窗口中就显示HEX文件创建到指定的路径中了,如图4.4所示。这样我们就可用自己的编程器读取并烧到芯片了,如图4.5所示。图4.3项目选择窗口23 图4.4编辑信息窗口图4.5代码烧写示意图23 小结在经过为期6个月的时间,在指导老师的帮助下,我终于完成了本次毕业设计。通过本次毕业设计,使我对单片机及其外围扩展电路的设计有了更深刻的认识。从理论和实践上都有了很大的提高,我通过本次设计对本科所学的内容有了综合的应用。首先,丰富了我的知识面,了解了如何完成一个电路系统的设计:从流程图、电路图、PCB板、程序编写、电路的仿真、代码的烧写、电路板的调试等整套流程。在学习应用STC89C52RC单片机内部结构及其工作原理,了解了时钟电路、复位电路、外扩数码管电路、键盘电路的工作原理。其次,在巩固了汇编语言的知识的基础上,采用C语言编写本次设计的程序,对C51单片机编程有了进一步的认识。自己动手制作电路板,提高了动手能力,调试电路板,提高了分析能力和创造能力。在理论和实践结合的过程中完成双机通信系统设计,使自己在软硬件设计方面树立了信心,为以后从事这方面工作打下了基础。23 [参考文献][1]楼然苗,李光飞.51系列单片机设计实例[M].北京:北航出版社,2003.[2]李光飞,楼然苗.单片机课程设计实例指导[M].北京:北航出版社,2004.[3]余永权.ATMEL89系列单片机应用技术[M].北京:北航出版社,2001.[4]余永权.89系列FLASH单片机原理及应用[M].北京:电子工业出版社,2000.[5]孙燕,刘爱民.Protel99设计与实例[M].北京:机械工业出版社,2000.[6]胡汉才.单片机原理及其接口技术学习辅导与实践教程[M].北京:清华大学出版社,2004.[7]陈晓风.ADC0809模数转换器的测试与研究[J].福建师范大学学报,2001(12):35~37.[8]盛范成.基于AT89C52单片机的A/D转换[J].自动化仪表,2006,(5):34~38[9]张洪润.单片机应用设计200例(下册)[M].北京:北京航空航天大学出版社,2006.[10]薛晓书.单片微机原理及接口技术[M].陕西:西安石油大学2002.[11]黄智伟,朱卫华.单片机与嵌入式系统应用[M].湖南:南华大学,2005.[12]付浩.AT89C51单片机高速串行输出口设计[J].淮阴师范学院学报,2004(10):20~21[13]孙友顺,唐庆玉,张族玲.单片机在电力系统频率测量中的应用[J].电子技术,1994,(06):2~4.[14]OttE.Chaosindynamicalsystems[M].2nded.Cam-bridge:CambridgeUniversityPress,2002.[15]PetovelloMG,LachapelleG.EstimationofclockstabilityusingGPS[J].GPSSolutions,2000,4(1):21~33.23 附录1电路系统总体图电路系统总体图23 附录2PCB板示意图PCB板示意图23 附录3实物图实物图23 附录4代码发送端代码#include#defineF_OSC12000000#defineB_RATE9600sbitP2_7=P2^7;sbitP2_6=P2^6;sbitP2_5=P2^5;sbitP2_4=P2^4;unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E//共阳};voiddisplay(unsignedchark){P1=table[k];}//延时voiddelay(unsignedchartime){unsignedchara,b,c;for(a=0;a#defineF_OSC12000000#defineB_RATE9600 unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E//共阳};voiddisplay(unsignedchark){P1=table[k];}voidmain(void){unsignedchardata_val=0;SCON=0x50;//方式1,允许接收PCON=0x80;//波特率倍增位ES=1;TMOD=0x20;//定时器1方式2TL1=256-F_OSC/16/12/B_RATETH1=256-F_OSC/16/12/B_RATE;TR1=1;EA=1;while(1);}voidserial(void)interrupt4{unsignedchardata_val=0;if(RI){RI=0;data_val=SBUF;display(data_val);}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭