毕业论文虚拟单片机实验系统的开发附录程序文件

上传人:be****l 文档编号:107210400 上传时间:2022-06-14 格式:DOC 页数:103 大小:3.21MB
返回 下载 相关 举报
毕业论文虚拟单片机实验系统的开发附录程序文件_第1页
第1页 / 共103页
毕业论文虚拟单片机实验系统的开发附录程序文件_第2页
第2页 / 共103页
毕业论文虚拟单片机实验系统的开发附录程序文件_第3页
第3页 / 共103页
点击查看更多>>
资源描述
. 毕 业 设 计学生: XXXX 学 号:09XXXXXXXXX 专 业:电子科学与技术题 目: 虚拟单片机实验系统的开发指导教师: 王保柱(副教授) 秀清(讲师)评阅教师: 武瑞红(副教授)2013 年 6 月97 / 103科技大学毕业设计成绩评定表姓 名XXX学 号09XXXXXXXX成 绩专 业电子科学与技术题 目虚拟单片机实验系统的开发指导教师评语与成绩 指导教师: 年月日评阅教师评语与成绩 评阅教师: 年月日答辩小组评语与成绩答辩小组组长: 年月日答辩委员会意见 答辩委员会主任: 年月日毕 业 设 计 中 文 摘 要基于C51的单片机在现实生活中有着广泛的应用,课题基于PROTEUS软件,简单设计了一个单片机虚拟硬件环境的实验系统,以便做一些简单的单片机实验。本课题针对PROTEUS软件和编译软件KEIL做了一下简单的介绍。本文重点对单片机虚拟硬件环境各部分电路进行详细介绍,包括键盘、显示、6位共阳数码管、A/D、D/A等。重点介绍了4X4键盘的显示功能、8位发光二极管以流水灯的方式显示、LCD的显示以与A/D和D/A转换器的功能。最后作者还介绍了一下PROTEUS和KEIL的联调设置以用各电路的仿真结果。关键词:proteus软件;单片机 ;仿真; 虚拟实验毕 业 设 计 外 文 摘 要Title Based on the virtual experiment system PROTEUS chip designAbstractWidespread application based on the C51 monolithic integrated circuit in the real life. This article based on PROTEUS software, simply designed a monolithic integrated circuit hypothesized hardware environment experiment system. In order to make some simple MCU experiment.This subject gives a brief introduction to KEIL and PROTEUS.This article main introduce the detail to various part of electric circuits. Include keyboard, display, 6 digit 7 segment anode display,A/D, D/A, the 4X4 keyboards demonstration function, 8 light emitter diodes by class lantern floated down rivers way demonstration, LCD displayed as well as A/D and D/A switchs function. At last, writer also introduced the simulation result by KEIL and PROTEUS in different circuits with the jointing setting.Key Words: Proteus software, SCM, Simulation, Virtual experiment目 录1 绪论11.1 课题背景分析11.2课题概况与发展趋势21.3课题的目的和意义22系统设计32.1电路整体设计32.2课题解决的问题32.3课题研究的方法42.4 电路仿真部分63硬件电路设计73.1整体框图设计73.2主芯片AT89C5283.3 LED显示模块143.4 LCD显示模块163.5 数码管显示173.6 键盘显示193.7 A/D转换模块223.8 D/A转换模块243.9 温度传感器模块253.10 蜂鸣器模块264软件联调配置284.1 软件语言的选择284.2 软件运行环境284.3 proteus和keil的配置285电路的仿真与测试325.1 LED流水灯325.2 LCD字符显示335.3 数码管动态扫描345.4 键盘测试355.5 A/D转换实验365.6 D/A转换实验375.7计时器385.8 1602液晶显示时钟385.9 DS18B20温度按传感器395.10 交通灯设计395.11 整体电路测试40结论44致45参考文献46附录481.绪论1.1课题的背景分析针对传统的单片机,需采购大量的、比较贵的的硬件设备,而且设备维护和工作量也非常大,传统的单片机实验采用硬件仿真器,实验箱或实验板,由于单片机应用技术涉与的围比较广,它涉与到到计算机、须硬件和软件结合才能实现,也就是将外围电路和单片机程序相结合,如果用真实的实验箱则费会用高,器材又不能地发挥充分利用,加上所用实验板开发周期比较长,可行性不好。现在使用Proteus仿真软件,实现了纯软件的虚拟单片机实验系统,既可调试单片机程序,也可以仿真单片机的外围器件的工作情况;既能充分利用计算机等硬件资源,减少硬件设备的维护工作量,还可提供丰富的实验容。1.2技术概况与发展趋势现代科技技术的发展,促进了计算机技术在软件和硬件上的飞速发展,利用计算机软件的仿真技术,可以充分地仿真电路的工作等实际的工程问题。目前,嵌入式系统已经广泛地渗透到工程设计、科学研究、军事技术、各类产业和商业文化艺术以与人们的日常生活等方方面面中,由于社会对掌握嵌入式技术人才的大量需求,使得嵌入式软硬件工程师成为未来几年最为热门的职业之一,相当一部分高校已开设嵌入式系统的相关课程。嵌入式系统是实践与理论相结合的课程,对于嵌入式处学习者来说没有足够的资金来购买开发板,所以只能选择仿真仿真来学习嵌入式系统,proteus是目前最好的仿真软件,能够虚拟出嵌入式系统开发中常用的处理器和外围器件。Proteus与其他软件不同,它不仅能仿真CPU的工作情况,而且也能仿真参与单片机仿真的外围电路和其他电路的工作情况。在调试和仿真的过程中,关心的是从工程的角度直接看程序运行的结果和电路的工作过程。不再关心的是某些程序语句执行单片机寄存器和存储器容的改变。这样的仿真弥补了工程和实验见的矛盾和脱节。1.3 课题的目的和意义单片机技术是电子专业一门重要的基础课程,它要求的对动手能力要求很高,长期以来,由于实验设备资源的限制,使得教学实验受到了限制,本设计是利用Proteus软件进行虚拟单片机试验系统的开发,所涉与到单片机与外围电路可以在没有硬件的情况下进行各种实验的仿真,从而大挺高了学习的兴趣。在现代教学中计算机网络和虚拟实验等技术已经逐渐成为教学的的手段和工具。通过实验可以使所学的东西更加清楚和明了,通过实验可以是学生通过实验加深对理论知识的理解和认识。尤其是那些那些难以理解的容,虚拟实验在现代教学有很高的地位,它使得很多复杂的问题变得简单化,同时也节省很多件资源,在实验过一些形象生动的演示,是所学的知识转化为能力,在以后的工作中实践中得以灵活地应用。传统的试验室,需要大量的实验器材,而且很多器材都得不到充分地利用,加上电子产品的更新换代,很多实验器材用不了几年就会被淘汰,再加上目前学生人数的增加,势必会给实验教学带来不小的压力和冲击,所以我们就要寻找一种新的途径解决实验教学的问题,传统的实验需要各种设备仪器,和相关的配套设施,而且对实验器材不够充分地利用,学生在试验室对各种仪器不熟悉,对实验容准备的不够充分而到不到满意的实验结果,现在利用虚拟的实验系统可以很好地解决这一问题,所以虚拟试验室教学将成为一种发展趋势,同时也提高学习者的积极性和动手能力。2.系统设计2.1电路整体设计本课题共分为几大模块,具体为LED显示、1602液晶显示、温度传感器、独立按键、数字按键、4X4键盘显示、6位数码管、蜂鸣器、8位发光二极管流水灯显示、LCD显示以与A/D和D/A转换几个模块。所有电路都是围绕主芯片AT89C52来完成的,下图为设计的电路的整体框图,如图2-1所示。图2-1 系统电路框图2.2课题解决的问题为了解决传统基于硬件的单片机实验室诸多弊端,本课题采用PC和软件建立的单片机虚拟试验系统,即在proteus上使用的各种虚拟仪器,按照试验要求和设计原理,虚拟出与现实一样的实验系统,进而完成整个实验,也充分利用了proteus软件的功能,对各个电路部分进行仿真。为进行一些简单的单片机实验构建一个虚拟硬件环境。(1)4X4键盘:主要输入数据(2)显示部分:LED:LED是一种特别的二极管,当连接最电的时候就会发出光,通常被用在电子器具来显示电路是否关闭或打开的指示灯。LCD:LCD为英文Liquid Crystal Display的缩写,即液晶显示器,是一种数字显示技术,可以通过液晶和彩色过滤器过滤光源,在平面面板上产生图象。(3)A/D和D/A:真实世界的模拟信号,例如温度、压力、声音或者图像等,被不断转换成更容易储存、处理和发射的数字形式,但是在很多系统中,数字信息也必须重新转换成模拟信号来实现一些真实世界的功能。数模转换器(DAC)就可以做到这一点,而且它们的输出还可以用来驱动各种设备。DAC一般被放置在数字系统中。在数字系统中,一些真实世界的信号通过模数转换器(ADC)数字化和处理过后,然后需要重新转化成模拟信号的系统中。这些系统所要求的DAC性能会受到系统其它组件的性能和要求的影响。2.3 课题研究的方法2.3.1 总体方案图2-2 总体方案分别对LED显示、独立键盘、矩阵键盘、LCD显示、蜂鸣器模块、数码管以与A/D和D/A等实验项目进行硬件电路和软件程序的设计并结合Proteus和KeiluVision3进行仿真。如图2-2所示。2.3.2 技术路线图2-3 技术路线围绕着主芯片设计LED显示、独立键盘、矩阵键盘、数字键盘、LCD显示、数码管、计数器、数字温度显示、蜂鸣器模块、交通灯设计、以与A/D和D/A等电路模块并在Porteus上画出相应的电路图并保存。用C语言编译能够完成相应模块功能的源程序。运行Proteus进行仿真调试。如果仿真没有成功则修改电路或源程序后重新进行仿真测试。2.4电路图仿真部分Proteus与其他软件不同,它不仅能仿真CPU的工作情况,而且也能仿真参与单片机仿真的外围电路和其他电路的工作情况。因此在调试和仿真的过程中,关心的是从工程的角度直接看程序运行的结果和电路的工作过程。不再关心的是某些程序语句执行单片机寄存器和存储器容的改变。这样的仿真弥补了工程和实验见的矛盾和脱节。采用Proteus仿真软件进行虚拟单片机实验,具有比较明显的优势,如涉与到的实验实习容全面、硬件投入少、学生可自行实验、实验过程中损耗小、与工程实践最为接近等。3. 硬件电路设计3.1整体框图设计在proteus中由LED模块与驱动电路、1602液晶显示模块、LCD显示模块、6位数码管、AD/DA转换模块、独立按键、矩阵按键、数字按键、蜂鸣器模块、温度传感器等模块。如图3-1所示。图3-1 电路总设计图3.2 主芯片AT89C52本设计主要是围绕芯片AT89C52来设计的,下图为芯片AT89C52引脚的具体说明,如图3-2所示。3.2.1 AT89C52介绍AT89C52是一个低电压,高性能CMOS 8位单片机,片含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。图3-2 A89C52芯片AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。3.2.2管脚说明主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚与28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测与会聚调整状态进入的控制功能。 VCC:供电电压。GND:接地。P0 口:P0口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口:P1 是一个带部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C52 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash 编程和程序校验期间,P1 接收低8 位地址。P2 口:P2 是一个带有部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX RI 指令)时,P2 口输出P2 锁存器的容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。 P3 口:P3 口是一组带有部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时部会锁存EA端状态。3.2.3 外围电路外围电路由晶振电路和复位电路组成,晶振电路由晶振和两个30uF的电路组成,分别接单片机的XTAL1和XTAL2。晶振的作用是为了系统,他提供时钟信号给了系统,通常便于各部分保持同步,所以一个系统共用一个晶振,要使通过电子调整频率的保持同步,那就必须在有些系统中的基频和射频使用不同的晶振。晶振电路通常与锁相环电路配合使用,以提供系统所需的时钟频率。复位电路由复位开关和下拉电阻R7组成,接单片机的RST引脚。复位电路的作用是使单片机的程序计数器清零,复位电路就好比电脑,当死机的时候,按下复位键程序从头开始执行,受到干扰或者程序跑飞的时候,按下复位键从头开始执行。部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。部记数器在单片机中主要有定时器和记数器两个功能。定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是记数,TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等,部记数器用作定时器时,是对机器周期记数。每个机器周期的长度是12个振荡周期,该实验系统的晶振是11.0592MHz。图3.3 外围电路3.3LED显示模块(1)电路接法以AT89C52为主芯片设计的一个8位发光二极管以流水灯的形式显示的基本电路,首先,8个发光二极管的输出端是和74HC573的端口从Q0到Q7端相接,形成8个输入端口,其次,8位二极管的负极接9引脚的排阻,排阻的1脚接VCC,接排阻的作用是防止发光二极管在电压过大的情况下烧坏,然后74HC573接AT89C52的P1口从P1.0到P1.7,这样就形成了8个闭合回路。74HC573起到驱动的作用,一般情形下,74HC573的驱动能力大于74LS573的驱动能力。如图3-4所示。图3-4 LED显示电路(2)8位发光二极管的工作原理因为二极管左边接的是Vcc作为高电平,所以如果要二极管亮的话P1口必须输入低电平,就一条通路而言,在P1.0输入低电平后,第一个发光二极管导通,所以就亮了。然后在后面加上延迟,也就是亮的时间后再输入P1.1口为低电平,第二个二极管就发亮,同理而言,就实现了流水灯的实验。3.4 1602液晶显示模块1602字符液晶显示器的D0到D7端口与用AT89C52 的P0口P0.0到P0.7相接,VEE端接RV1的VL端,RV一端接地,另一端接+5V。9引脚的排阻2到9端接单片机的P0.0到P0.7。VDD接+5V,RS、RW、E分别接P2.0到P2.2。1602为2行16列液晶显示器,可显示2行16列英文字符,有8位数据总线D0-D7,RS、VEE、RW三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚)。如图3-5所示。图3-5 LCD显示电路1.管脚功能第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,对比度最弱时接正电源,对比度最高时接地电源。第4脚:RS为选择寄存器,高电平1时寄存器选择数据、低电平0时寄存器选择指令。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。2.字符显示原理用LCD显示一个比较复杂的字符时,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。但由于带字符发生器的控制器来说,显示字符就比较简单了,先让让控制器工作在文本方式的时候,再根据根据在LCD上显示每行的列数和行列号找出显示RAM对应的地址,设立光标,在此处送上该字符对应的代码就可了。3.5 数码管模块LED数码管是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的 2个8数码管字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在部连接完成,只需将它们的各个笔划引出,公共电极。数码管根据LED分为共阴和共阳是因为他们的接法不同而分类,如果了解LED的特性,尤其是对编程是非常重要的,数码管的类型不同,电路除了有差别外,编程的方法和原理也有所不同,共阴和共阳极数码管的部电路不同,到那它们的原理是一样的,知识它们的电源极性不同而已罢了。led数码管广泛用于仪器仪表,汽车电子、时钟、显示屏、家电等场合。选用时要注意产品尺寸颜色,波长,功耗,亮度等。图3-6 6位数码管1.电路连接:电路采用共阳的接法,数码管电路用2个74HC573,其中一个的Q0-Q7分别与6位数码管的A,B,C,D,E,F,G,DP引脚相连,另一个的Q0-Q5与6位数码管的1-6引脚相连。两个74HC573的D0-D7与单片机的P0.0-P0.7引脚相连。图3-7 7段数码管2.数码管编码表(1)数码管共阳极码表TABLE:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e(2) 数码管共阳极码表TABLE:0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x070x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x713.LED数码管引脚定义 每一笔划都是对应一个字母表示 DP是小数点。正常显示的LED数码管,数码管的各个段码就要用驱动电路来驱动,才能显示出我们要的数位,因此根据LED数码管不同的驱动方式,根据数码管的驱动方式,可以分为静态显示和动态显示两类。 A、静态显示: 静态显示也称直流驱动。静态显示是指由一个单片机的I/O埠进行驱动每个数码管的每一个段码,或者使用如BCD码二-十进位进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多。故实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。 B、动态显示: 数码管动态最为广泛的一种显示方式之一是显示界面,它在是单片机中应用非常广泛,动态显示是将所有8个显示笔划a,b,c,d,e,f,g,dp 的数码管的的同名端连在一起,同时增加位元选通控制电路为每个数码管的公共极COM,各自独立的I/O线控制位元选通由。 LED数码管的COM端由分时轮流控制,受控制的数码管轮流显示,这就是所谓的动态驱动。在轮流显示时,每位元数码管的点亮时间间隔为12ms,由于发光二极体的余辉效应和人的视觉暂留现象,只要点亮速度快,不管是不是各位数码管是否同时点亮,给人的感觉就是稳定的显示,不会让人感觉有闪烁的感觉,静态显示的效果和动态显示的效果是一样的,能够节省大量的I/O埠,而且功耗更低。7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备。3.6 键盘模块3.6.1 独立按键电路独立按键电路有四个按键组成,分别接单片机AT89C52的P3.4/T0,P3.5/T1、P3.6/WR、P3.7/RD引脚相连。如图3-8所示。图3-8 独立按键电路3.6.2 4X4矩阵按键电路电路由16个按键分四组组成,分别与单片机AT89C52的P3.0/RXD,P3.1/TXD、P3.2/INT0、P3.3/INT1引脚相连。44 矩阵键盘,以P3.0P3.3 作输入线,以P3.4P3.7作输出线;数码管的a,b,c,d,e,f,g 7个端端口接的是主芯片AT89C52的P2口从P0.0到P0.6端,在数码管上显示每个按键的“0F”序号。如图3-9所示。1)接口说明接口P3.0控制0号,1号,2号,3号开关;接口P3.1控制4号,5号,6号,7号开关;接口P3.2控制8号,9号,A号,B号开关;接口P3.3控制开关C,D,E,F;P3.4P3.7则为输出。图3-9 矩阵按键电路当按下0号开关时,数码管显示为0111111。当按下1号开关时,数码管显示为1111001。 当按下2号开关时,数码管显示为0110111。 当按下3号开关时,数码管显示为1001111。 当按下4号开关时,数码管显示为1100110。 当按下5号开关时,数码管显示为1101101。当按下6号开关时,数码管显示为1111101。 当按下7号开关时,数码管显示为0000111。当按下8号开关时,数码管显示为1111111。当按下9号开关时,数码管显示为1101111。当按下开关A时,数码管显示为 1110111。当按下开关B时,数码管显示为 1111100。当按下开关C时,数码管显示为 0111001。 当按下开关D时,数码管显示为 1011110。当按下开关E时,数码管显示为 1111001。当按下开关F时,数码管显示为 1110001。2)44 矩阵键盘工作原理矩阵键盘又称为行列式键盘,是列线由4条I/O线组成,行线是由4条I/O线组成的矩阵键盘。在列线和行线的重合的交叉点上,设置一个按键,这样就组成了4X4共16个按键。这种键盘的格局方方正正,而且可以大利用了I/O口。3.6.3数字按键电路数字按键模块引脚A,B,C,D分别与单片机AT89C52的P3.0/RXD,P3.1/TXD、P3.2/INT0、P3.3/INT1引脚相连。1,2,3,4引脚分别接单片机AT89C52的P3.4/T0,P3.5/T1、P3.6/WR、P3.7/RD引脚相连。如图3-10所示。图3-10 数字按键电路3.7 A/D 转换模块图3-11 ADC0804(1)芯片介绍ADC0804是一个8位、单通道、低价格A/D转换器,主要特点是:摸数转换时间大约100us,方便的TTL或CMOS标准接口,可以满足差分电压输入;具有参考电压输入端;含时钟发生器;单电源工作时(0V5V)输入信号电压围是0V5V,不需要调零等等。(引脚1):片选信号。低电平有效,高电平时芯片不工作。(引脚2):外部读数据控制信号。此信号低电平时ADC0804把转换完成的数据加载到DB口。(引脚3):外部写数据控制信号。此信号的上升沿可以启动ADC0804的A/D转换过程。CLK IN(引脚4):时钟输入引脚。ADC0804使用RC振荡器作为A/D时钟,CLKIN是振动的输入端。(引脚5):转换结束输出信号。ADC0804完成一次A/D转换后,此引脚输出一个低脉冲。对单片机可以称为中断触发信号。Vin(+)(引脚6):输入信号电压的正极。Vin(-)(引脚7):输入信号电压的负极。可以连接到电源地。AGND(引脚8):模拟电源的地线。Vref/2(引脚9):参考电源输入端。参考电源取输入信号电压(最大值)的二分之一。例如输入信号电压是0V5V时,参考电源取2.0V,输入信号电压是0V4V时,参考电源取2.0V。DGND(引脚10):数字电源的地线。DB8DB0(引脚11引脚18):数字信号输出口,连接单片机的数据总线。CLKR(引脚19):时钟输入端。VCC(引脚20):5V电源引脚。(2)A/D转换电路设计ADC0804芯片的DB0-DB7接单片机AT89C52的P1.0-P1.7引脚,CS接P3.2/INT0,RD接P3.7/RD,WR接P3.6/WR。CLK IN接一个0.1uF电容在接到VIN-,CLK R接CLK IN,A GND与D GND相连,在与VIN-相连接地,D GND串联两个1k的电阻,在接高电平。ADC0808部带有输出锁存器,可以与AT89C52单片机直接相连。图3-12 AD转换电路3.8 D/A 转换模块图3-13 DAC0832(1)DAC0832芯片介绍DAC0832是双列直插式8位D/A转换器。其主要参数如下:参考电压为(+10-10)V,供电电源为(+5+15)V,满量程误差为1LSB,转换时间为1s分辨率为8位。能完成数字量输入到模拟量(电流)输出的转换。逻辑电平输入和TTL兼容。在DAC0832中有两级锁存器:输入寄存器称为第一级锁存器,锁存信号为ILE是它所允许的,DAC寄存器称为第二级锁存器,它的锁存信号也称为通道控制信号 /XFER。引脚说明如下:DI0DI7:8位数据输入线。CS:片选信号输入,低电平有效。ILE:允许控制信号的数据锁存,高电平有效。WR1:写选通输入信号的输入寄存器,低电平有效。WR2:写选通信号(输入) DAC寄存器,低电平有效。XFE:数据传送控制信号(输入),低电平有效。IOUTl、IOUT2:电流输出,Ioutl+Iout2=常数。RFB:反馈电阻端。部接反馈电阻,外部通过该引脚接运放输出端。VREF:基准电压,其值为-l0V+l0V。AGND:模拟地,作为基准电源和模拟信号的参考地。DGND:数字地,作为工作电源地和数字逻辑地,两种地线可在基准电源处进行单点共地。Vcc:芯片工作电源,其值为+5V到l5V。(2)D/A转换电路设计图3-14 DA转换电路DAC0832芯片的8位输入口接的是主芯片的P1口从P0.0到P0.7口,而CS(低电平有效)、WR1和WR2(低电平有效)、GND、XFER(低电平有效)一系列低电平都接地,然后VCC、VREF、ILE端都与高电平相连,DI0到DI7接单片机的P0.0到P0.7引脚。INOUT1和INOUT2分别接发光二极管D10和D1,D10和D1都接地。如图3-14所示。3.9 温度传感器模块DS18B20的VCC接电源,GND接地,DQ接AT89C52芯片的P2.2引脚。图3-15 温度传感器电路下图位为温度传感器的工作原理框图,如图3-16所示。图3-16 DS18B20温度传感器工作原理框图3.10 蜂鸣器模块蜂鸣器是发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)就可以发声,其主要参数是外形尺寸、发声方向、工作电压、工作频率、工作电流、驱动方式(直流/方波)等。这些都可以根据需要来选择。蜂鸣器分两种:有源和无源,有源的是一通电就响的,标有正负极,而无源的是需要方波信号驱动的,没有正负极。三极管Q2起开关作用,其基极的高电平使三极管饱和导通,使蜂鸣器发声;而基极低电平则使三极管关闭,蜂鸣器停止发声。电路连接:电路采用无源的蜂鸣器,一端接高电平,一端接三极管Q2的集电极,Q2的发射极接地,基极接1K的电阻,再接一个倒相放大器,再接到AT89C52的P2.3引脚上。如图3-17所示。图3-17 蜂鸣器模块4.软件程序4.1 编程语言的选择目前,支持单片机语言比较常用的是汇编语言和C语言。而C语言简洁、紧凑,使用方便、灵活,运算符丰富,数据类型多,具有现代语言的各种数据结构,语言限制不太严格,程序自由度大,并且生成目标代码质量高,程序执行效率高,其编写程序的可读性、维护性和可移植性都很好(与汇编语言相比)。4.2 软件运行环境当源程序编写好以后,必须要翻译成单片机能够识别的目标代码,然后装载到单片机的程序存储器进行调试,这种翻译工具称为编译器/连接器。另外还需要一个Windows的集成开发环境,该开发环境将源程序编写、汇编/编译/、调试等单片机开发所要用到的工具软件集合到一个软件中,可在仿真器环境下调试,也可以模拟仿真。本次设计采用Keil C51集成开发环境,Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具uVision3。在uVision3的Windows界面下,其生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。目前Keil C51已经成为最流行的单片机软件开发工具。本设计在系统程序设计中采用了模块编程方法,每一个功能模块都能完成某一明确任务,实现具体的某个功能,如LED模块与驱动电路、1602液晶显示模块、LCD显示模块、6位数码管、AD/DA转换模块、地址总线扩展、独立按键、矩阵按键、数字按键、蜂鸣器模块、温度传感器等模块等。4.3 proteus和keil的配置4.3.1 proteus软件1)Proteus介绍Proteus与其他软件不同,它不仅能仿真CPU的工作情况,而且也能仿真参与单片机仿真的外围电路和其他电路的工作情况。在调试和仿真的过程中,关心的是从工程的角度直接看程序运行的结果和电路的工作过程。不再关心的是某些程序语句执行单片机寄存器和存储器容的改变。2)proteus的工作过程运行proteus的ISIS程序后,进入该仿真软件的主界面。通过工具栏中的p(从库中选择元件)命令,从 pick devices窗口中选择电路设计所需要的元器件,将元件放置在相应的位置并调整相应的位置,然后在设置元件参数,再将该的器件连接起来,最后就是在keil里编写程序,首先打开keil,建立工程输入工程名,在就是选器件,一般就是AT89C51或者是C52系列的芯片,然后就是和Proteus联调,在keil中运行debug,在运行run,就能看到proteus中的仿真结果了。3)Proteus软件所提供的仪表资源对proteus和keil联调组成的虚拟实验系统所提供的资源有很多种,它包括虚拟的器件,虚拟的仪器,仪表等,如串口,示波器等。测试的仪器的质量和数量类型是衡量一个虚拟实验系统是否合格的标志。Proteus提供了一个图形显示功能的界面,还提供了虚拟的仪器仪表,以图形的方式实时地显示电路中各种变化,其中以示波器的使用功能最多。4)Proteus软件所提供的调试手段Proteus 提供了两种方法对于单片机硬件电路和软件的调试:一是整个系统总体的执行,一是对软件的分步调试的执行情况。对于整体调试执行的方法,我们采用在keil里面执行debug菜单下的execute或者是按快捷键F12启动执行,然后用debug菜单下的Pause animation 菜单或者shift+break 组合键停止运行。对于分步执行,我们可以使用单步运行或者是设置断点来运行程序,在proteus中可以看要演示的结果,对于软件的分步调试,我们可以选择工具栏中的相应工具进行操作,也可以选择step over、step out和step into命令来执行。在做单步执行时单句执行,进入子程序还是跳出子程序执行。在debug的菜单下可以查看仿真中所出现的信息,如软件列表和单片机系统资源和调试分析等。4.3.2 Keil uVision3Keil 软件是一款功能强大的集成开发调试工具,它提供丰富的库函数,全Windows界面。值得一提的是,它功能之所以强大在于多数语句生成汇编代码很紧凑,让人一看容易理解。另外就是它的生成目标代码效率特别的高。所在所有的开发软件中占很大的优势。C51 for windows和for DOS的集成开发环境包括C51工具包中的uVision和Ishell,可以完成编辑、编译、连接、调试、仿真等整个开发流程。4.3.3 proteus和keil的联调方法(1)、安装keil uvision3与 proteus 7.5。 (2)、把proteus安装目录下 VDM51.dll文件复制到Keil安装根目录下的 C51BIN根目录下。(3)、找到安装keil的文件夹修改keil安装目录下Tools.ini文件,在C51字段加入TDRV3=BINVDM51.DLL (Proteus VSM Monitor-51 Driver)。(4)、打开proteus,画出相应电路(注意:proteus中mouse的左右键与一般程序是相反的样子)。在proteus的tools菜单中选中use remote debug monitor (5)、进入KEIL的project菜单option for target 工程名。在DEBUG选项中右栏上部的下拉菜选中 Proteus VSM Monitor-51 Driver。 在进入seting,如果同一台机IP 名为127.0.0.1,如不是同一台机则填另一台的IP地址。端口号一定为8000 。注意:可以在一台机器上运行keil,另一台中运行proteus进行远程仿真。(6)、在keil中进行debug,同时在proteus中查看直观的结果(如流水灯等。右键Target1,选择Option for Target Target1,在output中勾选creat HEX,Debug中勾选Proteus VSM Simulator和Run to main。图4-6 设置DEBUG界面图4-7 设置VDM51 SETTONGS界面然后在Proteus环境中选择调试-使用远程调试监控如图4-8所示。图4-8 proteus设置界面5.电路的仿真与测试5.1 LED实验演示图5-1 流水灯演示演示说明:从上面的原理图中可以看出,如果要让第一个灯亮起来就是接在P1.0口的LED1,只需要把P1.0口的电平变为低电平就能够实现;相反,如果把把P1.0口的电平变为高电平,则接在P1.0口的LED1灯就会熄灭;同理,如果想以同样的方法点亮其他的LED灯,来实现点亮和熄灭,则就要使得接在P1.0到P1.7口变为低电平会点亮,高电平就会熄灭。要实现流水灯的功能,我们只要将LED1到LED8的电平变为低电平点亮,高电平熄灭。如此交替重复下去,就会一亮一暗地做流水灯了。由于人的视觉停留再加上程序的运行时间很短,所以在写程序的时候要调用延时函数,延时一段时间,否则就看不到流水效果了。程序见(附录)。实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。51单片机上电后为高电平,要使第一个发光二极管点亮,给P1.0口送一个低电平。然后延时一段时间, P1.0口变为高电平,送一个低电平给P1.1口,点亮第二个发光二极管。如此重复,就会看到流水的效果了,程序流程如图5-2所示。图5-2 流水灯程序图5.2 LCD字符显示演示说明:下载程序后,屏幕上显示如下字符,程序见(附录)。I want to bring out the secret of nature and apply them for the happiness of man.I dont know of any better service to offer for the short time we are in the world. -Thomas Edison 图5-3 1602液晶显示图5-4 LCD显示程序流程5.3 数码管动态扫描图5-5 数码管动态扫描演示说明:6位数码管从0到F循环显示,8位数码管也跟着流水显示。5.4 键盘测试5.4.1 单键识别演示说明:第一次按键按下LED灯第一个开始亮,第二次按键按下第二个LED灯亮,以此轮推。图5-6 单键检测5.4.2 矩阵键盘测试图5-7 矩阵键盘测试演示说明:当按下4X4矩阵键盘的按键时,6位数码管会显示对应的数字。图5-8 键盘显示程序流程5.5 AD转换实验图5-9 AD转换演示演示说明:8位数码管全亮,数码管的前三位显示AD转换的值。图5-10 AD转换程序流程5.6 DA转换实验图5-11 DA转换演示演示说明:下载程序后可观察到D10发光二极管由暗变亮再熄灭过程。5.7 计时器图5-12 计数器演示演示说明:运行仿真后,从零开始计时到59自动清零,从零开始计时。5.8 1602液晶显示时钟图5-13 1602液晶显示时钟5.9 DS18B20温度传感器图5-14 温度传感器演示说明:程序功能:将DS18B20所采集到的温度实时显示到1602上。5.10 交通灯设计图5-15 交通灯演示演示说明:程序功能:模拟交通灯显示。其中,红灯与绿灯显示时间均为50s,中间的黄灯显示时间为15s。绿灯用八位发光二极管流动闪烁作代表;红灯用八位发光二极管全亮作代表;黄灯用八位发光二极管全亮全灭闪烁作代表。刚开始显示的为绿灯。显示顺序:绿-黄-红-黄-绿-黄-红-5.11 整体电路测试图5-16 总体程序流程图电路测试:运行仿真后会依次看到以下5种状态。1.8个流水灯先会从上到下流动一遍,同时蜂鸣器发声。2.接着DAC电流指示灯由暗变亮。3.接着前三位数码管显示温度值。4.接着AD数值显示在数码管的前三位。5.接着等待矩阵键盘的按下,按下后相应的数码显示在数码管的后三位上。图5-17 流水灯演示演示说明:8个LED灯从上到下流动一遍,同时蜂鸣器发出“嘟嘟”的声音。图5-18 DA的指示灯由暗变亮图5-19 显示温度值演示说明:DA的电流指示灯继续保持亮着的状态,数码管的前三位显示温度的数值。图5-20 显示AD值演示说明:接着数码管前三位显示AD转换的数值。图5-21 按键显示演示说明:等待矩阵键盘的按下,按下后相应的数码显示在数码管的后三位上。结论刚开始对于PROTEUS和KEIL软件的使用还不是太熟练,对于虚拟电路的组成,主要电路的设计不是很了解。通过自己不断的做一些小的实验,以与购买单片机研究单片机的电路组成原理,学着调试,我慢慢的学着做,不懂的就问问同学和老师,最终对软件的使用和对电路的仿真都有了很大的进步。在这次毕业设计实践中我根据所学的知识,设计出了一个虚拟单片机实验系统,它功能是利用Proteus软件虚拟出与实物一样的电路原理图,然后进行仿真出与实物一样的演示结果,这样就达到虚拟实验的目的,在这次试验中具体介绍和演示了8位发光二极管流水灯,LCD字符刷屏、6位数码管扫描、计数器、时钟显示、温度检测、交通灯设计、AD/DA转换等演示。由于自己的能力有限,可能是程序优化的不太好,导致数码管显示数字段码不全。在电路设计中,我们遇到了好多的困难。以前以为画电路图是件很简单的事,但经过这次对课题的设计,我发现原来有很多地方还是值得我们学习的,有很多地方我们还是有待于提高的。在键盘电路设计中,由于图上的连线比较复杂,所以我们要运用简单连线法使图表现的更加清晰。但是,参考图上表示线上的圆圈和在线上标记字样的形式却不会。原来此元件就是在工具栏中Terminals Mode中的DEFAULT元件,知道了这点之后,在同学的帮助下,我又了解到了在线上标记字样的方法,原来选中此线之后右击然后找到Place wrie Label属性,打开以后在里面输入相应的名字就行了,这种方法就叫网络标号。当初编写交通灯实验时,老师给了我们一个最初的单片机汇编语言的程序,通过翻书,对知识的再学习才编写完成,但是汇编语言真的很难,有很多指令不是很了解,老师给建议,有的程序使用C语言编写,因为对C语言的熟悉,这样就明白了很多,加快了进度。做仿真结果前,就是对PROTEUS和KEIL的联调的设置,几经周折终于设置好了。在做LED显示时,有
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!