




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可视化数字电压表的设计毕业论文1 绪论在现代检测技术中,常常需要用数字电压表进行现场检测,将检测到的数据送入到微计算机系统,完成计算、存储、控制和显示等功能。因此,设计了一种实用的液晶显示数字电压表,其不仅能够对直流电压进行测量,还可以方便地进行量程的自动转换、与计算机通信等功能,并在液晶显示器上显示。该液晶显示数字电压表采用AVR单片机ATMEGA128为控制平台,重点设计了AD转换和液晶显示等硬件功能电路和系统软件。现场实验显示,该液晶显示数字电压表具有转换速度快、可靠性高、性能稳定等优点,具有很好的使用价值。1.1 研究的目的及意义随着电子科学技术的日益发展,电子测量也变得越来越普遍,并且对测量的功能要求也越来越高,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。与传统的模拟式电压表相比,具有显示清晰直观,读数准确,测量范围广,扩展能力强等优点。液晶显示数字电压表是将连续的模拟量,如直流电压,转换成不连续的离散的数字形式,并在液晶显示器上显示出来,这有别于传统的以指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。这个课题的目的和意义在于使自己掌握对数字电压表的理解,自己动手设计数字电压表与仿真,它可以广泛的应用于电压测量外,通过各种变换器还可以测量其他电量和非电量,测量是一种认识过程,就是用实验的方法将被测量和被选用的相同参量进行比较,从而确定它的大小。DVM广泛应用于测量领域,每次测量的准确度和可信度取决于它的主要性能和技术指标。所以我们要学习和掌握如何设计DVM就显得十分重要。1.2 国内外数字电压表的发展及现状 数字电压表出现在上世纪50年代初,60年代末发张起来的电压测量仪表,简称DVM,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后通过显示器件显示。这种电子仪表之所以出现,一方面是由于电子计算机的应用推广到系统的自动控制信号的实验领域,提出了各种被观测量或被控制量转换成数字量的要求,即为了实时控制和数据处理的要求;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的发展,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦琐与陈旧方式也促进了它的飞速发展。如今,它又成为向智能化仪表发展的必要桥梁。 如今,数字电压表已经绝大部分取代了传统的模拟指针式电压表,因为传统的模拟指针式电压表功能单一,精度低,读数的时候非常不方便还经常出错,而采用单片机的数字电压表由于测量精度高,速度快,读数时也非常方便,抗干扰能力强,可扩展性强等优点已被广泛应用与电子和电工测量,工业自动化仪表,自动测量系统等领域。数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度较慢,体积重达几十公斤。继之出现了谐波式电压表,它的速度方面稍有提高但准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐进式结构,它不仅保持了比较式准确度高的优点,而且速度也有了很大的提高,但它有一缺点就是抗干扰能力差,很容易受到外界因素的影响,随后,在谐波式的基础上双引申出阶梯波式,它的唯一进步就是成本降低了,可是准确度,速度及抗干扰能力都未提高。而数字电压表的发展已经非常成熟,就原理来讲,它从原来的一两种已经发展到多种,在功能上讲,它从测单一的参数发展到能测多种参数;从制作原件看,发展到集成电路,准确度已经有了很大的提高,精度已经达到1NV,读数速度达到每秒几万次,而相对以前价格已经降低了很多。在电量的测量中,电压,电流和频率是最基本的三个被测量,其中电压量的测量最经常。而且随着电子技术的发展,更是需要经常测量高精度的电压,所以数字电压就成为必不可少的测量仪器。另外,数字测量仪器具有读数准确方便,精度度高,误差小,灵敏度高,分辨率高,测量速度快等特点倍受用户亲睐,数字电压表的设计就基于这种需求发展起来。1.3 本文的研究内容本次毕业设计的主要研究内容是:(1)设计单片机的最小系统;(2)设计A/D采集电路;(3)设计液晶显示和键盘输入电路;(4)设计系统的程序流程,通过软件实现具有图形界面的数字电压表功能,计算出有效值、峰-峰值等,并显示出电压的波形;(5)对设计的电路和程序进行调试与仿真。本文分为以下几个章节来详细介绍:(1) 第1章:绪论,论述了本设计的目的意义、国内外研究现状、本文研究内容及论文结构的安排等;(2) 第2章:数字电压表系统的设计方案,分块介绍数字电压表的方案设计;(3) 第3章:数字电压表系统硬件设计,分别介绍数字电压表各个模块的硬件设计,使用proteus软件绘制硬件电路图;(4) 第4章:系统软件的设计,运用C语言对单片机进行编程;(5) 第5章:系统的仿真及调试。最后:结束语,总结本设计的完成情况,不足及展望。2 系统总体方案设计及工作原理2.1 总体方案设计 数字电压表整体结构设计如图1所示,系统主要由模拟信号调理电路、A/D转换电路、按键输入电路、单片机控制系统、LCD显示系统等几个模块组成。主要用软件编程的方式检测输入信号的大小来实现数字电压表的量程自动转换功能。图1 数字电压表整体方案结构图系统设计需要基于自动控制原理,实现电压量程的自动切换、数据采样、电压显示等功能。主要来说,系统由模拟信号调理电路、A/D转换电路、按键输入电路、单片机控制系统、LCD显示系统等几个模块组成。对于求输入电压的有效值,目前常用的方法是采用RMSDC的方法,即用集成电路直接把交流信号变成直流输出,然后对直流输出信号进行处理,比如采用A/D公司的AD536A真有效值转换芯片。这种方法测量范围窄、精度低、转换芯片价格高、功能单一。还有采用直接对交流信号进行整流的方法来实现直流变换的,价格便宜,但是精度更低,很难满足实际应用中的要求。而且题目中要求要将输入电压的信号变化曲线描绘在点阵型液晶中,这很明显的告诉我们必须建立一个数据采集系统。因此,我们决定用数据采集的思想来完成。2.2 系统工作原理首先,输入的电压信号经过衰减电路的衰减后送入到输入电压信号迁移电路,使电压信号转化成AVR单片机内部AD转换器能够处理的信号。然后再将处理完成的信号送入到ATMEGA128单片机内部自带的AD转换器中去,启动AD转换器进行转换,将其转换得到的数字信号数据送入到单片机中。然后编程控制单片机,对转换得到信号进行计算处理,得到我们需要的各个测量的参数。最后将计算所得到的数据通过外部显示模块LCD1602将其显示出来,并且利用点阵型LCD12864显示模块实时显示输入的电压信号的波形曲线。2.3 方案选择2.3.1单片机选择方案一: 选用51系列单片机。51系列单片机目前得到广泛使用,如89S51它除了89C51所具有的优点外,还具有可在线编程,可在线仿真的功能,这让调试变得方便。当与其它型号单片机相比时,AT89S51八位单片机的价格便宜,再者编程方便。编程技术及外围功能电路的配合使用都很成熟,这对于在网上查找相关资料和在图书馆查找相关资料时非常方便的。但本系统是个多信息处理的复杂程序控制系统,需要占用大量的硬件资源,89S51单片机中的资源在此就显得相当紧张,将对整个系统的性能产生很大的影响。 方案二:选用AVR系列单片机。AVR单片机是高速单片机,硬件采用哈佛(Harward)结构,达到一个时钟周期可以执行一条指令,绝大部分指令都为单周期指令,而MSC-51要12个时钟周期执行一条指令;它支持程序的在系统编程ISP,开发门槛较低,性价比高;有丰富的外设,如RTC、 WATCHDOG、 AD 转换器、PWM、UART接口等,部分型号还可以使用片内振荡器提供系统18 MHz的系统时钟,使该类单片机无外加晶振器件即可工作;I/O口功能强、驱动能力大,I/O口有输入/输出、三态高阻输入,也可设定内部拉高电阻作输入端的功能, 工业级产品,具有大电流(灌电流)1040 mA,可直接驱动可控硅SSR或继电器, 节省了外围驱动器件;具有较大容量EEPROM,可擦写10万次的EEPROM,为掉电后数据的保存带来方便,来电后能记住掉电时的工作状态.加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。根据题目要求,综合考虑上述方案,我们选用ATMEGA128单片机作主控芯片。2.3.2 AD转换模块 方案一:外接一AD转换芯片,利用单片机对其进行控制。采样得到数据,然后通过其与单片之间的接口将数据传送给单片机。按题目要求的精度,至少需要12位的AD转换器件。但要测量一个小信号,除了要求AD的精度要达到外,还要模拟电路的前端处理部分要求低噪声,稳定性好。 但是在外部AD与单片机之间通信过程中会带来干拢信号。而且不利于快速开发。 方案二:直接用AVR单片机中自带的AD转换器。其主要特点如下:10位精度,我们可以降低AD转换基准的电压,以获得较高的精度。65260us的转换时间,在最大精度下可达每秒15KSPS的采样速率。可选的2.56V的ADC参考电压源。由于是单片集成,故其控制更容易,干拢也最小。所以我们选项择方案二。 2.3.3 显示器的选择显示接口用来显示系统的状态、命令或采集的电压数据。本系统显示部分用的是LCD1602液晶模块和12864点阵型液晶显示模块,采用一个162的字符型液晶显示模块LCD1602.它具有重量轻,体积小,功耗低,可显示192种字符,可自编8种字符,指令功能强,可组合成各种输入、显示、移位方式以满足不同的要求,接口简单方便,可靠性高等优点,使用1602LCD液晶模块显示各种要测的参数,可以显示一任意周期性的电压信号中的最大值,最小值,平均值及有效值,并用点阵型液晶12864显示输入的电压信号的波形变化曲线。本设计主要应用ATMEGA128将A/D转换来的信号进行处理,根据A/D转换的数据及溢出位等信号,来控制模拟开关进行自动换挡。同时控制液晶屏显示电压值。LCD1602液晶显示屏,它内带一定字符的字库,我们只要把对应数字的ASCII值,送到它的8位数据端,即可显示对应的字符,并用点阵型液晶12864显示输入的电压信号的波形变化曲线。2.3.4 量程转换模块的选择在量程转换方案设计中,主要有3中方案可供选择。方案一:利用程序设计来实现量程的转换,这样即可简化硬件电路设计,减少元器件的开销,并且操作简单。方案二:选用模拟开关芯片4066实现量程转换。4066集成了4个模拟开关,每一路开关都有一个控制端控制对应开关的通断。用单片机对控制端进行控制,实现不同量程的转换。方案三:利用手动开关实现量程转换。该方案可简化控制程序,缩短反应时间,不足之处在于操作麻烦。在此次设计中,我们选用的是方案一,方案一所需元件较少,主要是通过单片机程序进行控制,操作简单。3 系统硬件设计系统硬件的设计框图如图2所示。图2系统硬件设计框图本次设计的数字电压表是基于AVR单片机的一种电压信号采样测量系统。该设计采用AVR单片机内部自带的AD转换器对输入的低频电压信号进行采样,采样的数据存放单片机中,利用相应的算法求出输入电压信号的最大值,最小值,平均值及有效值。测量范围0 20V(直流,交流均可测),使用1602LCD液晶模块显示各种要测的参数,可以显示一任意周期性的电压信号中的最大值,最小值,平均值及有效值, 并用点阵型液晶12864显示输入的电压信号的波形变化曲线。本次设计主要分为几个模块,如单片机最小系统的设计、模拟信号调理电路、AD转换电路、按键输入电路、LCD显示系统等。下面将逐步介绍各个硬件模块的设计。3.1 单片机最小系统的设计单片机控制模块的作用是为控制各个单元电路的运行并完成数据的换算或处理。控制模块采用的是AVR单片机ATMEGA128,其对于多量程电路的测量有着不可比拟的性价比,而且操作简单。其最小系统主要由单片机、时钟电路、复位电路组成。如图3所示,为简单的单片机最小系统。图3 单片机最小系统(1)时钟电路单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器或者陶瓷谐振荡器,构成内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自积振荡,并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XTAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器C2和C3对振荡频率有微调作用,通常取(3010)pF,石英晶体选择6MHz或12MHz都可以。(2)复位电路当单片机的复位引脚RST出现2个机器周期以上的高电平时,根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。而上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C1的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已经在运行当中时,按下复位键后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。单片机的RST管脚为主机提供了一个外部复位信号输入口。复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上,单片机复位方式可由手动复位方式完成。3.2 模拟信号调理电路这个模块主要分为两个部分:衰减及量程切换电路和输入的电压信号迁移电路。下面分别介绍这两个部分的作用。3.2.1 衰减电路电压表测量的范围是0 20V,而AVR单片机ADC模拟通道输入的电压在内部基准电压为2.56V时,不能超过2.56V。故输入的电压信号必须小于2.56V。因此外部的输入电压信号在大于2.56V时须经过衰减后输送到单片机的引脚中去。图4中的190k与10k的电阻网络就是将外部输入信号电压衰减20倍的电路一种简单的实现方法。后面输入运放正相端的电压通过继电器的切换使之输入到后向通道的电压保证在ADC模拟通道允许采样的范围之内。继电器的动作由单片机控制。图4 衰减电路3.2.2 输入电压信号迁移电路上图输出的电压信号进入到此电路输入端,因为输入的电压信号中是一个交流的信号,并不能保证没有负电压。而AVR单片机内ADC无法处理负电压。对于负压的处理,我们采用了如下图所示电路。该电路的作用是将输入的交流信号升高一个固定且恒定的电压值Vref。该恒定的电压由TL431基准源如图5所示经精密电阻分压后提供。加在运放OP07A正相端的基准电压在此系统中为1.280V。例如:当输入的信号为-1V到+1V时,经过此电压的电压抬升之后,输出端电压值为就变成了0.280V到2.280V。当测量端子输入的电压为0V,经过模拟电路转换后,在理想情况下,ADC输入端口的电压为0+1.280V=1.280V,即AVR单片机自带10位精度的AD转换完后的数值为512。在数值处理时,以512为电压的零点,高于此值即是正电压;低于此值即是负电压。图5 输入电压信号迁移电路3.3 LCD1602显示模块设计3.3.1 LCD1602的引脚功能LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。LCD1602模块的引脚如图6所示,其引脚功能如下:RS:数据和指令选择控制端,RS=0命令状态;RS=1数据。R/W:读写控制线,R/W=0写操作;R/W=1读操作。A:背光控制正电源,K:背光控制地。E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机间将进行一次数据交换。DB0DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源。VDD:电源端,VEE:亮度控制端(1-5V),VSS:接地端。图6 LCD1602模块3.3.2 LCD1602显示模块电路设计液晶显示电路用来显示数字电压表测量的直流电压值,采用1602字符型LCD实现。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值。其电路图如图7所示。图7 1602显示电路接线图3.4 LCD12864显示模块设计本次设计用LCD1602主要是用来显示输出波形的峰峰值,有效值,周期频率等。而此处采用LCD12864显示屏的主要作用是显示输出的电压信号的波形变化曲线。下面主要介绍LCD12864的显示原理和在本次设计中的接线图。3.4.1 LCD12864的显示原理 通常所说的LCD12864显示块是所说的点阵液晶显示模块,就是由128*64个液晶显示点组成的一个128列*64行的阵列,所以也就叫成了12864。每个显示点都对应着有一位二进制数,0表示灭,1表示亮。存储这些点阵信息的RAM被称为显示数据存储器。如果要显示某个图形或汉字就是将相应的点阵信息写入到对应的存储单元中。图形或汉字的点阵信息是由自己设计,这时候问题的关键是显示点在液晶屏上的位置与其在存储器中的地址之间的关系。 显示点在64*64液晶屏上的位置由列号(line,063)与行号(line,063)确定。512*8 bits RAM中某个存储单元的地址由页地址(Xpage,07)和列地址(Yaddress,063)确定。每个存储单元存储8个液晶点的显示信息。 由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。(少数厂商为了简化用户设计,在模块中增加译码电路,使得128*64液晶屏就是一个整屏,只需一个片选信号。) 如如果点亮12864的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数据00010000(也可能是00001000,高低顺序取决于制造商)写入Xpage=2,Yaddress=29的存储单元中即点亮(20,30)上的液晶点。这是为了使液晶点位置信息与存储地址的对应关系更直观关,将64*64液晶屏从上至下8等分为8个显示块,每块包括8行*64列个点阵。每列中的8行点阵信息构成一个8bits二进制数,存储在一个存储单元中。(需要注意:二进制的高低有效位顺序与行号对应关系因不同商家而不同)存放一个显示块的RAM区称为存储页。即64*64液晶屏的点阵信息存储在8个存储页中,每页64个字节,每个字节存储一列(8行)点阵信息。因此存储单元地址包括列地址(Yaddress,063)和页地址(Xpage,07)。3.4.2 LCD12864显示模块电路设计LCD12864的数据输入端与单片机ATMEGA128的PE口相连,将单片机处理完成的信号送入到LCD12864进行显示。LCD12864的电源端和接地端分别接+5V电源和接地。CS管脚为芯片屏幕的控制信号,CS1控制芯片的右半屏,CS2控制芯片的左半屏。当CS1或者CS2为高电平时,则芯片的右半屏或者左半屏被选中,此处与单片机的PB3口和PB4口相连来加以控制。LCD12864的E管脚为使能信号端,RS管脚为数据选择信号端,R/W管脚为读写选择信号端,在此处分别与单片机的PB0,PB1,PB2口相连。当RS为高电平时,表示DB7DB0为显示数据,当RS为低电平时,表示DB7DB0为显示指令数据。R/W管脚和E管脚相结合使用,当R/W为高电平,E也为高电平时,数据被读到DB7DB0,当R/W为低电平,E由高电平降到低电平时,则数据被写入指令寄存器或者数据寄存器中。LCD12864的RST管脚为复位信号控制端,低电平复位。如图8所示为LCD12864液晶显示模块的电路接线图图8 LCD12864接线图3.5 按键电路设计 图9 按键电路图 本次设计采用按键电路,主要作用是控制读取I/O口后处理的值,底层的接口不同,此时的值就要改变。按键电路共运用了四个按键,分别与单片机的PC4PC7相连,其作用主要是为了使LCD1602液晶屏显示电压的大小和种类(如有效值、平均值、峰峰值等)。4 系统软件设计系统主程序流程图如图10所示图10 系统主程序流程图本次软件设计主要分为几个模块:AD采样程序设计、各个测量参数计算的程序设计、LCD1602显示程序的设计、LCD12864显示程序的设计、按键电路程序的设计。下面会逐步介绍各个模块的程序设计。4.1 AD采样程序设计本次设计放弃了以往外接A/D转换器的设计方法,而是采用AVR单片机内部自带的A/D转换器来进行A/D转换的。因为在外部AD与单片机之间通信过程中会带来干拢信号,而且不利于快速开发。如果要测量一个小信号,除了要求AD的精度要达到外,还要模拟电路的前端处理部分要求低噪声,稳定性好。而如果我们采用AVR单片机自带的A/D转换器,我们可以降低AD转换基准的电压,以获得较高的精度。65260us的转换时间,在最大精度下可达每秒15KSPS的采样速率。可选的2.56V的ADC参考电压源。由于是单片集成,故其控制更容易,干拢也最小。其A/D转换程序流程图如图所示:图11 AD转换程序流程图4.2 各个测量参数计算的程序设计4.2.1 峰峰值的计算 首先来计算最大值 采样100次后通过比较得到最大值,源码如下:if(Ad_Max = adbufferi-1) /同上 Ad_Min = adbufferi-1;而峰峰值可以由最大值减去最小值得出,即为Ad_Max-Ad_Min4.2.2 平均值的计算 平均值即是电压信号中直流分量,实现源码如下: AdAverage += adbufferi-1;/作累加 采样累加完成后: AdAverage /= ADHITS;/ ADHITS为一宏定义,采样的点数4.2.3 有效值计算.在前面的设计讨论中,我们分析了一个电压信号有效值在数学上的定义,这个数学算术表达式的应用可以推广到任何其它的周期信号中。模拟信号量经离散化后。在数字系统中,上述计算公式应该校正为: (1-1)其中:VRMS是被测量信号的真有效值,N是每周期采样点数,v(i)是被测信号瞬时采样的数字量。程序中计算该值的算法可简述如下:先对采样转换后的每一点数据平方,平方后的数作累加,全部累加完成后,除以采样的点数,再将这个数进行开方运算,所得的结果就是所要求的RMS值。源码如下:if(adbufferi-1Ad_adjust) AdMidRms = (double) (adbufferi-1-Ad_adjust) ;/Ad_adjust是将最最前端输入的电压为零伏时信号经电平迁移电路抬升后的电压经AD转换后的值。else AdMidRms = (double) (Ad_adjust-adbufferi-1) ; AdMidRms=AdMidRms*AdMidRms; /每个采样的后数平方AdRms += AdMidRms; /作累加AdRms /= 100.0 ; /100个采样点,浮点数作除法运算AdRms = sqrt(AdRms); /开方,在k 4.3 LCD1602液晶显示程序设计4.3.1 LCD1602的显示操作LCD有四种基本操作,具体如表1所示。表1 LCD与单片机之间有四种基本操作RSR/W操作00写命令操作(初始化,光标定位等)01读状态操作(读忙标志位)10写数据操作(要显示内容)11读数据操作(可以把显示存储区中的数据反读出来)(1)读状态字:执行读状态字操作,如表3-1满足RS=0,R/W=1。根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。同时可以保持一段时间,从而实现读状态字的功能。读状态字流程如图12所示。图12 读入状态字流程图(2)命令字表2所示为命令字,其主要介绍了指令名称、控制信号及控制代码。其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。1)清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2)归home位:将光标送到初始位;其中的号为任意,高低电平均可;3)输入方式:设光标移动方向并指定整体显示,是否移动。I/D=0:减量方式,S=1:移位方式,S=0:不移位;4)显示状态:D指设置整体显示开关;C指设置光标显示开关;B指设置光标的字符闪耀;5)光标画面滚动:R/L指右移或左移;S/C指移动总体或光标;6)功能设置:DL接口数位,L指显示行数,F显示字型;如DL=1:8位=0,4位N=1:2行=0:1行,G=1:510=0:57(点阵);7)CGRAM地址设制:相当于一个数据库,可以在其中选择所需要的符号;8)DDRAM地址设制:显示定位;9)读BF和AC:B为最高位忙的标志,F为标志位;10)写数据:将数据按要求写入到对应的单元;11)读数据:读相应单元内的数据;表2 命令字指令名称控制信号控制代码RSRWD7D6D5D4D3D2D1D0清屏0000000001归HOME位000000001*输入方式设制00000001I/DS显示状态设制0000001DCB无标画面滚动000001S/CRL*功能设置00001DLNF*CGRAM地址设制0001A5A4A3A2A1A0DDRAM地址设制001A6A5A4A3A2A1A0读BF和AC01BFAC6AC5AC4AC3AC2AC1AC0写数据10数 据读数据11数 据(3)写命令字由表2可知当RS=0,R/W=0时,才可以通过单片机或用户指令把数据写到LCD模块,此时就对LCD进行调制。可采用查询方式:先读入状态字,再判断忙标志位,最后写命令字。图13所示为写命令字的流程图。图13 写命令字流程图1)定义光标位置显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位。Set DDRAM address命令如表3所示。光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置。表3 Set DDRAM address命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4AC3AC2AC1AC0第1行DDRAM地址与第2行DDRAM地址并不连续,如表4所示。表4 DDRAM地址row12345141516line180H81H82H83H84H8dH8eH8fHline20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH2)LCD初始化从通电开始延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示状态(如设制行、位或阵列)再经过延时清屏后才可以设置输入方式,具体实现过程如图14所示。图14 LCD初始化流程图4.3.2 LCD1602显示程序设计LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示流程如图15显示。图15 LCD显示程序流程图4.4 LCD12864模块显示程序设计4.4.1 LCD12864的指令系统模块控制芯片提供两套控制命令,基本指令和扩充指令如下:表5(RE=0:基本指令) 指 令 码功 能指令RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满20H,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ONB=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容功能设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM 地址设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到内部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数据从内部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/GRAM) 由于扩充指令在本文中应用不大,所以这里不再赘述,下面将对12864的指令系统简要描述一下。4.4.2 指令描述 1、显示开/关设置 表6 显示开/关设置R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0LLLLHHHHHH/L功能:设置屏幕显示开/关。 DB0=H,开显示;DB0=L,关显示。不影响显示RAM(DD RAM)中的内容。 2、 设置显示起始行 表7 显示起始行设置R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0LLHH行地址(0-63)功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。 3、 设置页地址 表8 页地址设置R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0LLHLHHH页地址(0-7)功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。页地址就是DD RAM 的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。 4、设置列地址 表9 列地址设置R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0LLLH列地址(0-63)功能: DD RAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DD RAM进行读写操作后,Y地址自动加一。 5、状态检测 表10 状态检测R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0HLBFLON/OFFRETLLLL功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。 BF=H:内部正在执行操作; BF=L:空闲状态。 RST=H:正处于复位初始化状态; RST=L:正常状态。 ON/OFF=H:表示显示关闭; ON/OFF=L:表示显示开。 6、写显示数据 表11 写显示数据R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0LHD7D6D5D4D3D2D1D0功能:写数据到DD RAM,DD RAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DD RAM前,要先执行“设置页地址”及“设置列地址”命令。 7、 读显示数据 表12 读显示数据R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0HHD7D6D5D4D3D2D1D0功能:从DD RAM读数据,读指令执行后Y地址计数器自动加1。从DD RAM读数据前要先执行“设置页地址” 及“设置列地址”命令。 4.4.3 LCD12864显示程序设计使用LCD12864时,需要对其寄存器以及功能器件有所了解。寄存器包括指令寄存器以及数据寄存器。通过对这两个寄存器的操作可改变LCD的显示方式和显示内容。这里将不再赘述对于寄存器的讲解。而是直接对LCD12864进行编程,使其显示相应的图形。本次对LCD12864设计的程序流程图如图16所示。图16 LCD12864显示程序流程图4.5 按键电路程序设计本次设计采用了四个按键函数,当按键时间小于1s时是第一功能,当按键时间大于1s时,具有第二功能。其中按键按下是读取i/o口后处理的值,底层的接口不同,此时的值就要改变。四个按键分别命名为key_state,key_time,key_press,key_return,分别表示初始状态按键,计时器按键,读取I/O口处理值按键和返回数值按键。首先是按键为初始状态,然后给key_state赋值,使其按下,状态转换到确认态,接着给key_time赋值,清空计数器。然后再使按键转换为初始状态,然后开始使计数器计数。各个按键的功能及控制过程将在后面的程序程序中介绍。按键程序流程图如图17所示。图17 按键程序流程图5 系统仿真与调试系统调试是从设计向应用转化的关键一步,只有经过大量调试,才可能使系统运行正常。本次毕业设计是采用AVR Studio4和Winavr环境下进行调试的。AVR Studio是ATMEL的AVR单片机的集成环境汇编级开发调试软件,完全免费。ATMEL AVR Studio包括了AVR Assembler、AVR Studio调试功能、AVR Prog串行、并行下载功能和JTAG ICE仿真等功能。它集汇编语言编译、软件仿真、芯片程序下载、芯片硬件仿真等一系列基础功能,与任一款高级语言编译器配合使用即可完高级语言的产品开发调试。调试的过程中,先在WINAVR上编写程序,因为AVR Studio 4 只能编写汇编程序和调试,不能编写C语言程序,WINAVR中有GCC,可以编写、编译C语言。编译没有错误以后,将其生成.hex文件,然后通过AVR Studio4下载程序到单片机中进行调试与仿真。 本次调试主要测试一下内容:(1)要求量程能自动转换,即根据测量结果,自动决定小数点位置;(2)能够通过按键电路选择显示测量电压的大小及类型,如平均值、峰值、有效值等; (3)采用LCD1602液晶屏显示,显示信息包括测量的信号种类(平均值、峰值、有效值等); (4)采用点阵式LCD12864液晶屏作为显示器,可以在屏上显示模拟信号的波动曲线。 在系统调试的过程中也曾遇到了一些问题,如显示屏不能正常工作,程序编译时出现错误等。然而,在同学的帮助和我不断摸索的情况下,问题终于得到了解决。 显示屏不能正常工作,开始我还以为是程序问题,把程序看了又看,改了又改,显示结果还是一样。后来问了下同学,出现这种情况的原因是PE口没接上拉电阻。因为PE口是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下PE口是必需加上拉电阻的。接上拉电阻后,重新运行这下运行正常了。程序编译时出现错误,刚开始我也是以为是程序的错误,后来仔细研究了一下程序,发现没什么问题。后来又研究了一下编译软件AVR Studio4和WINAVR,看了一下它们的使用教程,发现是因为程序的头文件没有加载进去,从而导致编译时找不到头文件。后来将头文件加载进去以后,程序正常运行,编译成功。6 结束语本设计以AVR单片机ATMEGA128为控制核心,通过单片机内部自带的A/D转换器将被测信号转换成数字信号,经单片机内部程序处理后,由液晶显示器LCD1602显示测量结果,并且用LCD12864点阵型液晶显示屏来显示测量的波形。系统性能良好,信号幅度的最大范围为020V,最小分辨率为为3位半,测量误差不大于1mV。本次设计主要完成了如下工作:(1) 设计单片机最小系统;(2) 设计了可视化数字电压表系统的实现方案;(3) 绘制系统仿真电路图;(4) 编写程序并对其编译,实现可视化数字电压表的液晶显示功能。该系统在计算输入电压信号的有效值及将电压信号的变化曲线描绘在点阵型液晶上都做到了,而且显示的效果比较好。但是,该系统也存在一定程度的不足,如量程切换方面和精度方面等有点欠缺。由于自己目前知识的缺乏,未能完善这些方面的工作。在这里提出一些理论上的改进,相信不久的将来,一定能够对其进行实质性的改进。(1) 对于量程切换方面,可以采用设计硬件电路进行自动控制,这样可以扩大数字电压表的量程;(2) 对于精度方面,如果测量的精度要达到1mv,则至少有用到12位精度的ADC。可以采用外部接一个高精度的AD转换器,也可换用其它型号的MCU,例如msp430单片机中有自带的12精度的AD转换器。(3) 本系统还可以采用LabVIEW软件是系统具有友好的交互界面,可以更好的与用户之间进行交互。7 致谢本文是在张老师的精心指导下完成的。在此向她表示衷心的感谢。感谢同学的鼓励和帮助,让我顺利完成本次设计任务。通过短暂的毕业设计,从而提高了我的理论水平,真正做到学有所用,虽然在其过程中我也遇到了不少困难,但是从中我也得到了很多的帮助,没有半途而废,没有灰心丧气,我都一一克服了。这些都是一种收获,最让我感到高兴的是终于按质按量的完成了毕业设计。感谢我的指导老师,她严谨细致,一丝不苟的作风一直是我工作、学校中的榜样,她循循善诱的教导和不拘一格的思路给予我无尽的启迪。本次毕业设计的每一个细节都离不开您的细心指导。感谢同学、朋友的帮助,在这里请接受我诚挚的谢意!8 参考文献1陈堂敏.刘焕平主编.单片机原理与应用.北京:北京理工大学出版社,2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古卓资县2025年上半年公开招聘辅警试题含答案分析
- 湖南省道县2025年上半年公开招聘辅警试题含答案分析
- 黑龙江省庆安县2025年上半年公开招聘辅警试题含答案分析
- 江西省遂川县2025年上半年公开招聘辅警试题含答案分析
- 江苏省睢宁县2025年上半年公开招聘辅警试题含答案分析
- 炮兽课件教学课件
- 2025年中小学《秋季学期开学通知》致家长的一封信(5份)
- 攀枝花城建交通(集团)有限公司招聘考前自测高频考点模拟试题附答案详解
- 难点详解鲁教版(五四制)6年级数学下册期末测试卷附答案详解(巩固)
- 难点解析京改版数学9年级上册期末测试卷(各地真题)附答案详解
- 小学1530安全教育
- 牢记教师初心不忘育人使命作新时代合格人民教师课件
- 门窗工程采购相关知识
- 2025风电机组无人机巡检技术方案
- 浙江省台州市住在室内装修施工合同书
- 2025年高压电工资格考试国家总局模拟题库及答案(共四套)
- 《服务器安装与维护》课件
- 金蝶K3供应链操作手册
- 老年患者护理心理护理
- 《食品经营许可证》延续申请书
- 电缆中间接头防火整改方案
评论
0/150
提交评论