液晶屏显示电压表_第1页
液晶屏显示电压表_第2页
液晶屏显示电压表_第3页
液晶屏显示电压表_第4页
液晶屏显示电压表_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

桂林航天工业学院单片机技术综合应用技能实训课程设计报告系(部):电子信息与自动化学院专业班级:无人机应用技术一班学生姓名:学号:设计题目: 液晶屏显示的电压表 完成日期: 2018年07月06日 指导教师评语:项目 评语内容 设计表现(20%)掌握基础理论,设计过程中的学习态度,文献查阅能力,设计思路可行性能力评价设计任务量、设计过程中参与情况 ABCDE设计说明书(40%)调试过程中运用理论分析与解决问题的能力;报告格式规范性、全面性、逻辑性、表达能力综合评价ABCDE实物评价(40%)程序设计合理性及功能实现等ABCDE成绩(五级记分制): 指导教师(签字):

桂林航天工业学院课程设计任务书液晶屏显示的电压表设计学生姓名课程名称单片机技术综合应用技能实训 专业班级2016无人机应用技术1班地点巡天517起止时间2018年6月250—7月6日设计内容硬件设计及样品制作。设计参数.采用PCF8591实现AD采样功能;.采样电压范围0—5V;.液晶模块LCDl602显示转换后的实际电压值;.显示保留小数点后两位。 设计进度2018年6月25日一6月28日查阅资料,确定设计方案;2018年6月29日一7月4日程序设计和硬件调试;2018年7月6日撰写课程设计报告,答辩。设计成果.设计说明书一份(不少于2000字);.样品一套。参考资料.楼然苗,李光飞,单片机课程设计指导,北京航空航天大学出版社,2012..李全利,单片机原理及应用,清华大学出版社,2014.一说明一1.本表应在每次实施前由指导教师填写一式2份,审批后所在系(部)和指导教师各留1份。2.多名学生共用一题的,在设计内容、参数、要求等方面应有所区另h3.若填写内容较多可另纸附后。 系(部)分管领导:指导教师:教研室主任:桂林航天工业学院桂林航天工业学院摘要本文介绍了一种基于单片机的简易数字电压表的设计。该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。A/D转换主要由芯片PCF8591来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片STC89C52来完成,其负责把PCF8591传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字电压表可以测量0-5V的模拟直流输入电压值,并通过一个LCD1602液晶屏显示出来。关键词:STC89C52;PCF8591;电压表;A/D转换;LCDl602目录TOC\o"1-5"\h\z\o"CurrentDocument"一、系统概述 1LI设计任务 1\o"CurrentDocument"1.2设计要求 1\o"CurrentDocument"二、整体设计方案 1\o"CurrentDocument"开发板整体功能 1\o"CurrentDocument"软件功能描述 2\o"CurrentDocument"三、硬件电路设计 3\o"CurrentDocument"89C52单片机 3\o"CurrentDocument"LCDl602液晶 7\o"CurrentDocument"总体电路设计 11\o"CurrentDocument"四、软件设计 12\o"CurrentDocument"程序整体流程图 12\o"CurrentDocument"程序清单 13\o"CurrentDocument"五、硬件调试及结果 16\o"CurrentDocument"软件仿真 16\o"CurrentDocument"硬件电路调试 17\o"CurrentDocument"六、小结 18\o"CurrentDocument"参考文献 19\o"CurrentDocument"附录电路图及程序 19桂林航天工业学院桂林航天工业学院桂林航天工业学院俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。引脚如图3.1三匚LILJLJU匚=匚匚吕匚匚匚LJlJ匚SsV三匚LILJLJU匚=匚匚吕匚匚匚LJlJ匚SsVT2∕P1.OT2EX∕P1.1Pl.2Pl.3Pl.4Pl.5Pl.6Pl.7RSTRXD∕P3.OTXD∕P3.1INT0∕P3.2INT1∕P3.3T0∕P3.4T1∕P3.5≡∕P3.6RD∕P3.7XTAL2XTALlPDlP—4。ππmππmπππππππmπππ0987654321098765432143333333333222222222VCCPO.0∕AD0PO.1∕AD1PO.2∕AD2PO.3∕AD3PO.4∕AD4PO.5∕AD5PO.6∕AD6PO.7∕AD7EA ALE/PROGPSENP2.7∕A15P2.6/Al4P2.5∕A13P2.4∕A12P2.3∕A11P2.2∕A10P2.1∕A9P2.0∕A8图3.1引脚图1.2时钟电路如图3.2所示,为单片机的晶振电路部分。其中Cl、C2为30pF的电容,它是振荡回路交联电容,如果没这两个电容的话,振荡部分会因为没有回路而停振。电路就不能正常工作。Yl就是12MHZ的晶振。一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的。可以说晶振就是单片机的心脏,为单片机工作提供动力。

图3.2时钟电路1.3复位电路单片机复位部分如图3.3所示,为单片机的复位电路部分。复位电路,就是利用它把电路恢复到起始状态。当电源低于单片机正常工作电压,影响单片机工作;程序跑飞,时钟失步等情况下需要使单片机复位。该复位电路为按键复位,按键复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。按键复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求RSTRST3.1.4模数转换电路

如图3.4所示,为A/D转换部分。其中Rl为滑动变阻器,调节电阻可使输入PCF8591芯片的电压发生变化PCF8591是单片、单电源低功耗8位CMoS数据采集器件,具有4个模拟输入、一个输出和一个串行I2C总线接口。3个地址引脚AO、Al和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件的地址、控制和数据通过两线双向I2C总线传输。器件功能包括多路复用模拟输入、片上跟踪和保持功能、8位模数转换和8位数模拟转换。最大转换速率取决于I2C总线的最高速率。如图如5为PCF8591引脚图

图3.5PCF8591引脚图3.2LCD1602液晶LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。3.2.11602LCD主要技术参数:显示容量:16X2个字符,芯片工作电压:4.5—5.5V,工作电流:2.OmA(5.0V),模块最佳工作电压:5.0V,字符尺寸:2.95X4.35(WXH)mm。3.2.2引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如图3.6

编号符号引脚说明 _编号符号引脚说明1 VSS电源地 9D2 数据2 VDD电源正极10 D3 数据3VL 液晶显不偏压|11 D4 数据4 RS数据/命令选择12 D5 数据5 R/W读/写选择 _13 D6 数据6E 使能信号 _14 D7 数据7 DO 数据 15 BLA背光源正极8Dl 数据16 BLK 背光源负极图3.6各引脚接口说明引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个IOK的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0-D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.2.31602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如图3.7序号指令RSR/WD7D6D5D4D3D2DlDO1清显示 00000000012光标返回 000000001*

3置输入模式 00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能 00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址 9读忙标志或地址01BF计数器地址 10写数到CGRAM或DDRAM)10要写的数据内容 11从CGRAM或DDRAM读数11读出的数据内容 图3.7控制指令1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址OOH位置。指令2:光标复位,光标返回到地址OOH。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。

图3.8读操作时序3.2.41602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令08H:显示关闭写指令01H:显示清屏写指令06H:显不光标移动设置写指令0CH:显示开及光标设置3总体电路设计经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图3.10所示图3.10总体电路原理图图3.10总体电路原理图此电路的工作原理是:+5V模拟电压信号通过变阻器VRl分压后由PCF8591的INO通道进入,经过模/数转换后,产生相应的数字量经过I2C总线传送给AT89C52芯片的Pl口,并且此时单片机STC89C52负责把接收到的数字量经过数据处理,产生正确的信号传给LCD1602,LCD1602经过正确的线段显示。四、软件设计数字电压表程序编写是通过时下最流行的KEILuVision4一体化集成编程软件完成,在KElL环境下编写程序并生成二进制文件。软件流程图如图4-1所示。根据模块的划分原则,将该程序划分初始化模块,AQ转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序。4.1程序整体流程图选择PCF8591的转换通道.启动选择PCF8591的转换通道.启动AD转换,转换是否结束?~输出转换结果,LCD显小“图4.1程序流程图

2程序清单2.1主程序voidmain(){LCD_Initialise();while(l){ADC_PCF8591(0x04);Convert_To_Vo11age(Recv_Buffer[0]);LCD_Line_l[2]=Voltage[2];LCD_Line_l[4]=Voltage[1];LCD_Line_l[5]=Voltage[0];LCD_Display_A_Line(0x00,LCD_Line_l);)图4.2主程序流程图2.2LCD显示程序

LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示流程如图4.3voidConvert_To_VoItage(ucharval)ucharTemp;Voltage[2]=val∕51÷ucharTemp;Voltage[2]=val∕51÷,0,;TenIP=Val%51*10;Voltage[1]=Temp∕51÷,0,;Temp=Temp%51*10;Voltage[0]=Temp∕51÷,0,;)〃最大值为255,对应5V,255/5=51〃整数部分〃第一位小数voidLCD_Display_A_Line(ucharLine_Addr,uchars[])uchari;LCD_Set_Position(Line_Addr);for(i=0;i<16;i++)LCD_Write_Data(s[i]);}//将模数转换后得到的值分解存入缓存图4.3LCD显示程序流程图2.2A/D转换程序A/D转换程序的功能是采集数据,在整个系统设计中占有很高的地位。A/D转换程序流程图如图4.4voidPCF8591_AD(ucharCtrlByte){程序流程图如图4.4voidPCF8591_AD(ucharCtrlByte){uchari;IICStart();IIC_SendByte(0x90);if(IIC_ERROR==1)return;IIC_SendByte(CtrlByte);if(IIC_ERROR==1)return;IIC_Start();IIC_SendByte(0x91);if(IIC_ERROR==1)return;IIC_ReceiveByte();Slave_ACK();for(i=0;i<4;i++){Recv_Buffer[i++]=IIC_ReceiveByte();Slave_ACK();}Slave_NOACK();IIC_Stop();〃发送写地址〃发送控制字节〃重新发送开始命令//发送读地址//空读一次,调整读顺序〃收到一字节后发送一个应答位〃收到一个字节后发送一个应答位〃收到一个字节后发送一个非应答位图4.4A/D转换程序流程图五、硬件调试及结果软件仿真软件仿真的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。PrOteUS软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸

如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。PrOteUS支持的微处理芯片包括8051系列、AVR系列、PIC系列、HCn系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计。本系统的调试主要以软件为主,其中系统电路图的绘制和仿真采用的是ProteUS软件,而程序方面,采用的是C语言,用Keil软件将程序写入单片机。2硬件电路调试通过软件仿真,将程序写入单片机,我发现LCD液晶显示屏显示电压不稳定一直变化,经排查发现是因为开发板的PCF8591芯片本身连接有光敏电阻,之后断开光敏电阻,连接到滑动变阻器。可通过改变滑动变阻器阻值改变电压,LCD显示屏电压相应发生改变实物图如图5.1图5.1六、小结本次设计要求自己制版或者使用学校提供的开发板,由于时间问题以及自身的能力问题,我选择使用学校提供的开发板基于现有元件实现设计要求。由于开发板上的模数转换元件只有PCF8591迫使学习了PCF8591芯片的使用方法。另外之前我本身对于LCD的使用以及编程显示方面一窍不通,我通过在网上查询资料,观看相关教学视频。使我对于LCD1602液晶显示屏、PCF8591数模模数转化芯片有了一定的了解,并且学会了串行口通信的I2C通信协议的编程方法。经过一段时间的努力,基于单片机的简易数字电压表基本完成。但设计中的不足之处仍然存在。这次设计是我第一次设计电路,并用Proteus实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识。通过这次设计对于ProteUS和KeilC软件的使用方法更加娴熟,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。本次设计以STC89C52单片机为控制核心,通过集成模数转换芯片PCF8591将被测信号转换成数字信号,经单片机内部程序处理后,由液晶显示器LCD1602显示测量结果。仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为0∙00~5∙00V,最小分辨率为0.02V,满足任务书指标要求。但是,该系统也存在一定程度的不足,例如:1、输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度;2、输出量可用平均值算法来改善,使测量准确度更高。3、若能将测量的电压值实时保存,使用时将更方便。

参考文献[1]徐爱钧.智能化测量控制仪表原理[M].北京:北京航空航天大学出版社,2004[2]吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用[M].北京:清华大学出版社,2002[3]黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社,2004[4]汪德彪.MCS-51单片机原理及接口技术[M].第1版.北京:电子工业出版社,2003:5]边春远等著.MCS-51单片机应用开发实用子程序[M].北京:人民邮电出社.2005年9月附录电路图及程序总体设计电路图LCD1RP10.44ULCD1RP10.44U程序ttinclude<reg52.h>ttinclude<intrins.h>ttdefineucharunsignedcharttdefineuintunsignedintttdefineDelay4us(){nop();nop();nop();nop();}sbitRS=P2^4;sbitRW=P2^5;sbitEN=P2^6;sbitRS=P2^4;sbitRW=P2^5;sbitEN=P2^6;sbitSCL=P2^0;sbitSDA=P2^1;ucharRecv_Buffer[4];uintVoltage[]={,0','0','0','0'};bitbdataIIC_ERROR;ucharLCD_Line_l[]={zz.VvoidConvert_To_Voltage(ucharval)(ucharTemp;Voltage[2]=val∕51÷,0,;Temp=val%51*10;Voltage[1]=Temp∕51÷,0,;TeInP=TInp%51*10;〃数据/命令选择〃读/写选择〃使能信号〃I2C时钟引脚//I2C数据输入输出引脚〃数据接收缓冲〃数据分解为电压X.XX/∕I2C错误标志位〃};〃将模数转换后得到的值分解存入缓存〃最大值为255,对应5V,255/5=51//整数部分〃第一位小数Voltage[0]=Temp∕51÷,0,;)〃启动I2C总线voidIIC_Start(){SDA=I;SCL=I;Delay4us();SDA=O;Delay4us();SCL=O;〃停止I2C总线

voidIIC_Stop()(SDA=O;SCL=I;Delay4us();SDA=I;Delay4us();SCL=O;)//从机发送应答位voidSlave_ACK()SDA=O;SCL=I;Delay4us();SCL=O;SDA=I;}//从机发送非应答位voidSlave_N0ACK()(SDA=I;SCL=I;Delay4us();SCL=O;SDA=O;}〃发送一字节voidIIC_SendByte(ucharwd)(uchari;for(i=0;i<8;i++)〃循环移入8位{SDA=(bit)(wdfe0x80);_nop_();_nop_();SCL=I;Delay4us();SCL=O;wd«=l;)Delay4us();〃释放总线并准备读取应答//IIC_ERROR=1表示无应答〃释放总线并准备读取应答//IIC_ERROR=1表示无应答SCL=I;Delay4us();IIC_ERROR=SDA;SCL=O;Delay4us();)

〃接收一字节ucharIICReceiveByte(){uchari,rd=OxOO;for(i=0;i<8;i++){SCL=I;rd<<=l;rd∣=SDA;Delay4us();SCL=O;Delay4us();}SCL=O;Delay4us();returnrd;}〃连续读入4路通道的A/D转换结果并保存到Recv_BuffervoidPCF8591_AD(ucharCtrlByte){uchari;IIC_Start()voidPCF8591_AD(ucharCtrlByte){uchari;IIC_Start();IIC_SendByte(0x90);if(IIC_ERROR==1)return;IIC_SendByte(CtrlByte);if(IIC_ERROR==1)return;IIC_Start();IIC_SendByte(0x91);if(IIC_ERROR==1)return;IIC_ReceiveByte();Slave_ACK();for(i=0;i<4;i++){Recv_Buffer[i++]=IIC_ReceiveByte();Slave_ACK();)Slave_NOACK();〃

温馨提示

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

评论

0/150

提交评论