国家职业资格全国统一鉴定无线电调试员高级技师论文(国家职业资格一级)论文题目:《Proteus中实现单片机双机通信实验》姓名:龚安顺身份证号:5010107197511142177准考证号:所在省市:重庆市北碚区所在单位:重庆青年职业技术学院Proteus中实现单片机双机通信实验龚安顺重庆青年职业技术学院摘要:本文针对单片机项目设计中出现的问题和基本方法,提出了将Proteus仿真软件和Keil软件引入到单片机项目式教学中。以“单片机双机通信实验”项目为例,详细阐述Proteus软件在单片机课程教学中的使用方法和仿真调试过程。实践证明,该方法能激发开发热情,锻炼创新能力和单片机软硬件综合开发能力,取得了良好的效果,是提高单片机开发效率和设计产品质量的一种有效方法。关键字:单片机开发,Proteus软件,仿真调试目录引言..........................................................................1一、Proteus介绍..............................................................1二、仿真项目教学案例..........................................................1(一)项目要求................................................................1(二)任务分析................................................................1(三)硬件仿真图绘制..........................................................1(四)软件系统流程图..........................................................5(五)ProteusISIS载入仿真...................................................5(六)本例仿真电路原理图及程序部分源代码......................................6三、结束语....................................................................9参考文献......................................................................91引言单片机开发是一项综合性、实践性、应用性很强的技术。传统的单片机开发采用“先理论设计,再动手实验”的开发模式,该模式造成编程与之实验结果分离,不便于调试,且时间不划算,效果并不理想。鉴于此,本文将Proteus和引入到单片机的项目式教学中,通过仿真的直观性和真实感,不仅节约了硬件资源的投入,而且提高了单片机开发效率和产品质量。一、Proteus介绍Proteus软件是英国Labcenterelectronics公司开发的电路分析与实物仿真软件,它除了具有其他EDA工具的原理布图、PCB自动或人工布线、电路仿真等功能外,Proteus最大的特点是基于微控制器的设计连同所有的外围电路一起仿真,可直接在单片机虚拟系统上对MCU编程,并可对软件源代码进行实时调试。同时,它具有电路互动仿真功能,通过动态外设模型,如键盘、LED/LCD等,可实时显示系统输入、输出结果,以实现交互仿真,或配合Proteus配置的虚拟仪器如示波器、逻辑分析仪等,使单片机虚拟系统实现预期的实验效果。此处还需要用Keil软件来协助。Keil软件是美国KeilSoftware公司出品的兼容单片机C语言软件的开发系统,是目前世界上最好的51单片机开发工具之一。它提供了丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率高,多数语句生成的汇编代码很紧凑,容易理解。Proteus和Keil各自都可以进行仿真调试,但效果不是很理想,如把两者结合起来相互配合,则可发挥Proteus和Keil的优势使其在仿真过程中的软件调试和硬件设计更加便捷、高效。二、仿真项目教学案例(一)项目要求本项目要求用两片AT89C51单片机实现A机检测输入键盘信息,并通过串行通信方式,传送给B机,在B机用数码管显示A机所按下的对应按键代号,“0-9”显示对应数字,其余按键显示“-”。(二)任务分析项目开发过程是紧紧围绕一个或多个完整的项目展开的,因此项目的设计,是单片机课程教学成败的关键。按照本项目要求,通过分析,该项目实际上是一个双机单向通信项目,只要掌握了该项目,双向通信问题不难理解。具体思路是:1.A、B单片机均采用AT89C51,A机须完成矩阵键盘扫描识别、键盘代码串行传送两项任务。B机须完成串行接收代码、数码显示两项任务。本项目程序的关键就是串行通信程序部分。2.A机通过检测P2口外接的矩阵键盘信息,并进行识别处理,产生相应的键盘代码,然后通过串行发送端TXD/P3.1发送给B机;3.B机收到A机发送的键盘代码后,通过处理,从P0口输出七段数码管段码信号,驱动共阳极七段数码管显示键盘代码。(三)硬件仿真图绘制通过以上的任务分析,我们先设计出硬件电路,并将电路在Proteus中绘制出来。电源2电路用5V,具体电路省略。时钟电路用来产生时钟信号供单片机工作,晶振采用12MHz,平衡电容采用33pF。复位电路在系统上电或运行过程中对单片机进行初始化操作。框图如图1。图11.单片机最小系统本案例所用单片机型号为AT89C51,其结构简单,控制灵活。其最小系统主要包括主芯片、电源电路、时钟电路、复位电路,下面简单介绍一下主要引脚。MCS-51系列单片机中8051及8751均采用40Pin封装的双列直接DIP结构,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。如图2。图2图3图4Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向B机AT89S51数码显示电源电路复位电路时钟电路A机AT89S51时钟电路复位电路电源电路键盘输入30000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态。MCS-51系列单片机的复位方式可以是自动复位,也可以是手动复位,如图3。如此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。本例采用手动复位方式。Pin18、19:内部时钟振荡器的输入、输出脚。即Pin18、19脚之间接上晶振即可起到频反馈的作用,Pin19脚的信号通过内部送到CPU,为其提供工作频率。因此还可以从外部输入时钟信号到19脚提供给CPU。如图4。Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。本例中该脚接地,减小EMI(电磁干扰)。Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。本例该脚接地。Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。即“先内后外”。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。即“只外”。显然,对内部无程序存储器的8031,EA端必须接地。在编程时,EA/Vpp脚还需加上21V的编程电压。本例该脚接高电平,即要求即“先内后外”。2.本例单片机最小系统在这里要特别说明的是,在Proteus中单片机可以默认以最小系统工作。即可以不加上电源电路、复位电路、时钟电路也可以工作。不过为了便于直观观察,我们还是画出这些路。在绘制时,双机只画出单机的这些电路,另一个不画。并且为了不产生标号冲突,B机的引脚标号用数字表示。结合上述要求和特点,我们画出本例中A机的主电路、电源电路、时钟电路、复位电路图分别如图5、图6、图7。B机的系统图为图8,和A机系统大同小异。图54+5V+88.8VoltsC10.1uFC20.1uFC31000uFC4220uF+88.8AmpsD1LED-REDBR12W005GTR1TRAN-2P2SM=0.064+88.8ACVoltsFU11AV1VSINVA=311VFREQ=50HZVI1VO3GND2U17805R1200图6图7XTAL2XTAL1RSTP3.0P3.1XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C51SRCFILE=双机通信实验B机接收程序\双机通信实验B机接收程序.C234567891RP2+5v12365489=7++CON0ABCD1243B机接收显示+5V图83.本例输入、输出系统及通信连接本例中的输入系统是矩阵键盘电路,从A机输入。利用P2口作为键盘检测口,5P2.0-P2.3为行线扫描,P2.4-P2.7为列线检测。如图9。本例中的通信连接是将双机的RXD和TXD两脚,即P3.0和P3.1交叉相边即可。B机的这两脚标号和A机对应。本例中的输出系统是单个LED共阳数码管显示电路,从B机P0输出段码控制信号。如图10。图9图104.本例硬件仿真总图见附1。(四)软件系统流程图A机主程序流程图如图11,键盘扫描检测程序流程图如图12,B机主程序流程图如图13。具体的程序见附2。编程输入KeiuVsion4软件并生成A机和B机的”.hex”格式可执行文件。。图11图12图13(五)ProteusISIS载入仿真1.加加载源程序和目标程序文件、目标代码文件、设置时钟频率在ISIS菜单中单击Source(源程序),弹出下拉菜单,点击“Add/RemoveSourceFile…”,弹出如图1.9所示的对话框,选取A机芯片,点击,加入源程序“双机通信实验A机发送程序.C”,如图14;选取B机芯片,点击,加入源程序“双P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.712365489=7++CON0ABCD1243A机键盘XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3