您好,欢迎访问三七文档
1单片机及DSP课程设计报告数字电压表设计与虚拟仿真专业:电子信息班级:信息102102102102班姓名:学号:指导教师:时间:2013-06-17~282013-06-17~282013-06-17~282013-06-17~28通信与电子工程学院友情提示:本文旨在分享设计思路,希望读者真正理解并设计属于自己的作品,而不是直接下载使用。2数字电压表设计与虚拟仿真摘要:本设计采用AT89C52作为主控芯片,通过ADC0804模数转换器,将模拟电压实时地显示在LCD1602液晶屏幕上,其标准量程为0~5V,并可通过电路连接实现更大的测量范围,测量误差可控制在±0.01V内。其中AT89C52是ATMEL公司一个低电压,高性能CMOS8位单片机,它在电子行业中有着广泛的应用。关键字:51单片机模数转换Proteus一、系统介绍本部分将整体地介绍数字电压表设计方案的工作流程、电路仿真、程序设计。1、系统流程图图1:系统流程图待测电压范围为0~5V,此电压可以直接被ADC0804模数转换器转换为数字量,并且并行输出至单片机,单片机通过对数字量处理,将其显示到LCD1602液晶上显示,此外,电路中还设计了复位模块,以保证程序发生故障时可以重新运行。AT89C52AT89C52AT89C52AT89C52单片机待测电压LCD1602LCD1602LCD1602LCD1602显示ADC0804ADC0804ADC0804ADC0804复位电路32、电路仿真图在设计过程中,学习了Proteus仿真软件,并且在电路仿真中利用Proteus进行了电路图的绘制与系统的仿真,所以方便和正确的完成了设计的要求。电路仿真图如下:图2222:电路仿真图3、程序流程图设计过程中利用KeiluVision3编程软件,并根据设计要求和实现功能编写和调试程序,其程序内容如附录1,流程图如图3:LCD初始化开始显示数据数据读取、处理启动A/D转换显示字符LCD初始化启动A/D转换图3333:程序流程图4二、系统硬件设计1、ADC0804ADC0804ADC0804ADC0804芯片介绍图4444:ADC0804ADC0804ADC0804ADC0804规格及连接图本设计中采用的A/DA/DA/DA/D芯片为ADC0804ADC0804ADC0804ADC0804,它是CMOSCMOSCMOSCMOS8888位单通道逐次渐近型的模////数转换器,其规格及引脚图如图4444所示,引脚介绍如下:/CS/CS/CS/CS:芯片片选信号,低电平有效,即/CS=0,/CS=0,/CS=0,/CS=0,该芯片才能正常工作。/WR/WR/WR/WR:启动ADC0804ADC0804ADC0804ADC0804进行ADCADCADCADC采样,该信号低电平有效,即/WR/WR/WR/WR信号由高电平变成低电平时,触发一次ADCADCADCADC转换。/RD/RD/RD/RD低电平有效,/RD=0/RD=0/RD=0/RD=0时,可通过端口DB0DB0DB0DB0~DB7DB7DB7DB7读出采样结果。UINUINUINUIN(++++)和UINUINUINUIN(----):模拟电压输入端。VREF/2VREF/2VREF/2VREF/2:参考电压引脚,接外界电压,其参考电压为该外界电压的两倍。CLKRCLKRCLKRCLKR和CLKINCLKINCLKINCLKIN:外接RCRCRCRC电路产生模数转换器所需的时钟信号,时钟频率CLKCLKCLKCLK====1/1.1RC1/1.1RC1/1.1RC1/1.1RC,一般要求频率范围100KHz100KHz100KHz100KHz~1.28MHz1.28MHz1.28MHz1.28MHz。AGNDAGNDAGNDAGND和DGNDDGNDDGNDDGND:分别接模拟地和数字地。/INT/INT/INT/INT:中断请求信号输出引脚,该引脚低电平有效,当一次A/DA/DA/DA/D转换完成后,将引起/INT=0/INT=0/INT=0/INT=0,。DB0~DB7DB0~DB7DB0~DB7DB0~DB7:输出A/DA/DA/DA/D转换后的8888位二进制52、LCD1602LCD1602LCD1602LCD1602介绍部分引脚说明:3333----VLVLVLVL为液晶显示器对比度调整端。4444----RSRSRSRS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。5555----R/WR/WR/WR/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RRRRSSSS和R/WR/WR/WR/W共同为低电平时可以写入指令或者显示地址,当RSRSRSRS为低电平R/WR/WR/WR/W为高电平时可以读忙信号,当RSRSRSRS为高电平R/WR/WR/WR/W为低电平时可以写入数据。6666----EEEE端为使能端,当EEEE端由高电平跳变成低电平时,液晶模块执行命令。7777~14141414----D0D0D0D0~D7D7D7D7为8888位双向数据线。15151515----背光源正极。16161616----背光源负极。图5555:LCDLCDLCDLCD引脚及电路连接图6三、讨论与分析1111、方案讨论在仿真中A/DA/DA/DA/D转换芯片开始试图采用PCF8591PCF8591PCF8591PCF8591,PCF8591PCF8591PCF8591PCF8591是一个单片集成、8-bit8-bit8-bit8-bitCMOSCMOSCMOSCMOS数据获取器件,具有4444个模拟输入、1111个模拟输出和1111个串行I2CI2CI2CI2C总线接口,51515151单片机通过与其连接的双线双向I2CI2CI2CI2C总线以串行的方式交互信息。不过PCF8591PCF8591PCF8591PCF8591需要更加严格的时序控制,在ProteusProteusProteusProteus仿真中不易实现,其程序开销也比较大,并且ADC0804ADC0804ADC0804ADC0804足以满足要求,所以放弃了选用PCF8591PCF8591PCF8591PCF8591作为A/DA/DA/DA/D转换芯片的方案。12864128641286412864液晶具有更强大的功能,不过限于本设计中需要显示的内容并不丰富,所以选用了与其类似且功能满足要求的LCD1602.LCD1602.LCD1602.LCD1602.2222、问题分析在课程设计过程中,问题和困难主要是出现在程序的调试与软件的仿真环节中,这两个环节也是整个设计过程中的主要环节,出现的问题如下。在程序的调试过程中,首先要搜集LCD1602LCD1602LCD1602LCD1602和ADC0804ADC0804ADC0804ADC0804的数据手册,了解它们主要的控制指令和时序,特别是LCD1602LCD1602LCD1602LCD1602的控制指令和时序比较复杂,所以其对应的程序也比较庞大,需要准确的输入各种指令,比如显示模式设置指令、清屏幕指令等。此外,需要显示的数字与电压单位“VVVV”必须在程序中转换为相应的码并写入LCD1602LCD1602LCD1602LCD1602,才能正确显示,如果把数字直接写入LCD1602LCD1602LCD1602LCD1602中,将会显示为乱码。其次单片机与ADC0804ADC0804ADC0804ADC0804的交互过程,需要了解它的控制时序,特别是ADC0804ADC0804ADC0804ADC0804控制引脚几号CSCSCSCS、INTINTINTINT、RDRDRDRD、WRWRWRWR,等,它们之间有明确的时序关系,倘若时序错误将不能使ADC0804ADC0804ADC0804ADC0804启动A/DA/DA/DA/D转换,也不能正确读取A/DA/DA/DA/D转换结果。7四、收获与体会在设计过程中,首先我学习了51515151单片机的基本原理及其接口,电路系统原理、指令以及编程实现等内容,更加了解了用单片机控制外围设备以达到实际应用目的的设计过程。此外,在设计过程中还学习了KeilKeilKeilKeiluVision3uVision3uVision3uVision3编程软件和ProteusProteusProteusProteus仿真软件,通过用KeilKeilKeilKeil软件编写51515151单片机的CCCC语言程序,实现了51515151单片机可以按照我的设计思路运行的目的,这个过程需要编程者结合科学正确的思路并且认真地编写,之后再调试程序,因此,它也提高了我的编程能力以及细心的科学态度。在ProteusProteusProteusProteus仿真软件操作过程中,主要需要根据程序和设计目的,设计硬件电路,所以必须细心、正确地连接电路,并且各个元器件摆放尽量合理、美观。然后硬件电路连接好之后,加载编写的程序,进行系统的整体调试,并且解决调试中出现的问题,直至达到设计调试结果正确无误。通过这次的设计,我收获很多,也深刻地体会到设计一个项目需要我们有着丰富的知识储备和较强的实践能力,比如资料的搜集与整理,软件的学习和操作,程序的编写与调试等,这些能力对于我们以后的学习和工作也是非常必要的,将让我们在以后的项目中展现出更高的水平。参考文献:[1][1][1][1]余新拴,,,,李建忠....消失模充型速度测试的虚拟仿真[J].[J].[J].[J].微计算机信息,2007,4(23):,2007,4(23):,2007,4(23):,2007,4(23):278-278-278-278-280.280.280.280.[2][2][2][2]胡汉才....单片机原理及其接口技术[M].[M].[M].[M].北京::::清华大学出版社,1996.,1996.,1996.,1996.[3][3][3][3]张友德....单片机原理应用与实验[M].[M].[M].[M].天津::::复旦大学出版社,1992.,1992.,1992.,1992.[4][4][4][4]陈小忠,,,,黄宁,,,,赵小侠....单片机接口技术实用子程序[M].[M].[M].[M].北京::::人民邮电出版社,2005.,2005.,2005.,2005.[5][5][5][5]杨金岩,,,,郑应强,,,,张振仁....8051805180518051单片机数据传输接口扩展技术与应用实例[M].[M].[M].[M].北京::::人民邮电出版社,2005,2005,2005,2005\\\\8附录1111源程序#includereg52.h#includeintrins.h//包含_nop_()函数定义的头文件#defineuintunsignedint#defineucharunsignedcharsbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚unsignedcharcodedigit[]={0123456789};//定义字符数组显示数字unsignedcharcodestring[]={nihaoLML!};//定义字符数组显示提示信息#definead1_7P1//AD数据口sbitadcs=P2^3;//芯片选择信号,控制芯片的启动和结果读取,低电平有效sbitadrd=P2^4;//读数据控制,低电平有效sbitadwr=P2^5;//AD转换起动控制,上升沿有效sbitadint=P2^6;voiddelay_50us(uintt){ucharj;for(;t0;t--)for(j=19;j0;j--);}voidstart_adc0804(void)//
本文标题:数字电压表仿真设计
链接地址:https://www.777doc.com/doc-4911168 .html