电子系统综合设计课程论文-数字电压表设计.doc_第1页
电子系统综合设计课程论文-数字电压表设计.doc_第2页
电子系统综合设计课程论文-数字电压表设计.doc_第3页
电子系统综合设计课程论文-数字电压表设计.doc_第4页
电子系统综合设计课程论文-数字电压表设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

电子系统综合设计课程论文 2012年6月26日电子系统综合设计课程论文 数字电压表专业: 测控技术与仪器 年 级: 2010级 作 者 指导教师: 武汉大学电子信息学院学院21目 录1. 作品背景与意义12. 功能指标设计13. 作品方案设计13.1 总体方案的选择13.2 控制方案的选择23.3 显示方案的选择43.4 A/D数模转换器的选择64. 硬件设计75. 软件设计85.1 基本功能的软件设计95.1.1 AD初始化函数95.1.2 AD启动函数95.1.3 LCD初始化函数95.1.4 LCD数据输出函数105.1.5 分频器启动函数105.1.6 延时函数105.2 扩展功能的软件设计115.2.1 按键扫描函数115.2.2 开关机函数115.2.3 Hold与解除Hold功能115.2.4 报警功能115.2.5 欢迎和结束语显示116. 系统测试126.1 测试环境126.2 测试步骤126.3 测试数据126.4 数据处理126.5 测试结论12参考文献13附录1 系统电路图14附录2 系统软件代码15附录3 系统器件清单20 电子系统综合设计课程论文 1. 作品背景与意义 数字电压表出现在50年代初,60年代末发起来的电压测量仪表,简称DVM。它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后再通过显示器件显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制信实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。所以,数字化测理仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦锁和陈旧方式也催促了它的飞速发展,如今,它又成为向智能化仪表发展的必要桥梁。如今,数字电压表已绝大部分取代了传统的模拟指针式电压表。因为传统的模拟指针式电压表功能单一、精度低,读数的时候也非常不方便,很容易出错。而采用单片机的数字电压表由于测量精度高、速度快,读数时也非常方便,抗干扰能力强,可扩展性强等优点已被广泛的应用于电子及电工的测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度慢,重量达几十公斤,体积大。继之出现了斜波式电压表,它的速度方面稍有提高,但是准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐近式结构,它不仅保持了比较式准确度高的优点,而且速度也有了很大的提高,但它有一缺点是抗干扰能力差,很容易受到外界各种因素的影响。随后,在斜波式的基础上双引伸出阶梯波式,它的唯一的进步是成本降低了,可是准确宽,速以及抗干扰能力都未能提高。而现在,数字电压表的发展已经是非常的成熟,就原理来讲,它从原来的一,二种已发展到多种,在功能上讲,则从测单一参数发展到能测多种参数;从制作元件来看,发展到了集成电路,准确度已经有了很大的提高,精度高达1nV;读数每秒几万次,而相对以前,它的价格也有了降低了很多。2. 功能指标设计1.量程为5V;2.最大不可调误差小于1LSB,由于5V电压在AD转换器中分为255份,故精度为1LSB=5/2550.02V;3.转换时间为100s(时钟为640kHz时),130s(时钟为500kHz时)。 3. 作品方案设计3.1 总体方案的选择 我们主要是是利用单片机系统与与其模数转换功能、显示模块等的结合构建数字电压表。由于单片机的发展已经成熟,利用单片机系统的软硬件结合,可以组装出许多的应用电路来。此方案的原理选用单片机的外部参考电压Vref为模数(A/D)转换功能的基准电压端,被测量电压输入端分别输入基准电压和被测电压。模数(A/D)转换功能将被测量电压输入端所采集到的模拟电压信号转换成相应的数字信号,然后通过对单片机系统进行软件编程,使单片机系统能按规定的时序来采集这些数字信号,通过一定的算法计算出被测量电压的值。最后单片机系统将计算好了的被测电压值按一定的时序送入显示电路模块加以显示。总体设计的模块图见图1. 89C51单片机ADC0809 模数转换器器LCD602 液晶显示器输入电压74LS393 分频器按键模块图1. 模块图3.2 控制方案选择 在这一设计中,我们涉及到了一个关键系统模块单片机系统模块,而目前单片机的种类是很繁多的,主要有主流的8位单片机和高性能的32位单片机,结合本设计各方面因素,8位单片机对于本设计已经是绰绰有余了。 单片机是指一个集成在一块芯片上的完整计算机系统,具有一个完整计算机所需要的大部分部件:CPU,内存,总线系统等。而目前常用的单片机的8位有51系列单片机,AVR单片机,PIC单片机。 本设计中选用51系列的AT89C51,它是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。它有128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。ATMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 在设计中,单片机起连接硬件电路与程序运行及存储数据的任务,一方面它将其A/D转换功能、显示模块和按键模块等通过I/O口地址线和数据线连接起来;另一方面,它将用户下载的程序通过控制总线控制数据的输入输出,从而实现测电压的功能。外形及引脚排列如图2所示: 图2. AT89C51单片机引脚图 部分管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。3.3 显示方案选择本次设计中有显示模块,设计要求显示最后电压的数字值,采用的是LCD1602(液晶显示器).它只需+5V电压,对比度可调,内含复位电路,可提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能,有80字节显示数据存储器DDRAM,内建有192个5X7点阵的字型的字符发生器CGROM,8个可由用户自定义的5X7的字符发生器CGRAM。而且它还有微功耗、体积小、显示内容丰富、超薄轻巧等优点,很适合用在在袖珍式仪表和低功耗应用系统中。 LCD1602引脚功能说明见表1:编号符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VEE 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 表1. LCD1602引脚功能表 引脚功能说明: VSS:地电源。 VDD:接5V正电源。 VL:为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 RS:为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 R/W:为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 E:为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 D0D7:为8位双向数据线。 BLA:背光源正极。 BLK:背光源负极。 LCD1602液晶模块内部的控制器共有11条控制指令,如表2所示:序号 指令 RSR/WD7D6D5D4D3D2 D1 D01 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DLN F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF计数器地址 表2. LCD1602控制指令表1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平,0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令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:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。 3.4 A/D数模转换器的选择 ADC0809的内部逻辑结构图如图3所示: 图3. ADC0809内部逻辑结构图图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表3为通道选择表: A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1所选通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7表3. 通道选择表 对ADC0809主要信号引脚的功能说明如下: IN7IN0:模拟量输入通道 ALE:地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。 START:转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。本信号有时简写为ST. A、B、C:地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。其地址状态与通道对应关系见表3。 CLK:时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号。 EOC:转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。 D7D0:数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高 OE:输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。 Vcc:+5V电源。 Vref:参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(=+5V, =0).4. 硬件设计硬件设计如附录1图示:由单片机89C51、模数转换器ADC0809、液晶显示器LCD1602、分频器74LS393以及一个10的电位器组成。设计过程:首先,通过阅读有关资料,了解各个芯片的各个管脚的功能,并了解它们之间的联系。然后,根据编好的程序,把对应的管脚找出来,并在软件中模拟出来。最后,根据电路模拟图在电路板上合理布局,然后开始焊接电路:LCD的电源地和电源正极分别与单片机的电源地和电源正极连接起来;为了调节LCD的显示对比度,VEE端接了一个10K的电位器;RS(4:数据或命令选择)连P1.5;而E(6:使能信号)连P1.6;输入管脚D0D7接至单片机上的P0端。ADC0809的电源地和电源正极分别与单片机的电源地和电源正极连接起来;从外部输入 ,以防单片机内的电源不稳定而影响输出;我们选择了通道IN0作为被测电压的输入端,故ADDAADDC都接地;OE(9:输出允许信号)连P1.1;START(6:转换启动信号)连ALE(22:地址锁存允许信号),同时START连P1.0;EOC(7:转换结束信号)连P1.4, CLK(10:时钟信号)连74LS393的Q1; IN7IN0分别接到单片机上的P0端,作为AD的输入。74LS393 的Vcc和GND分别与单片机的电源地和电源正极连接起来;CLK连单片机的ALE。每焊好一个器件,便要用单片机进行测试,以便及时发现错误并予以纠正。全焊好后进行整体测试,发现输出电压与输入电压误差很小,至此,完成了硬件设计。5. 软件设计首先有总体方案大致画出流程图,见图4.图4. 编程流程图5.1 基本功能的软件设计5.1.1 AD初始化函数参见关于ADC0809的相关资料,ADC0809的初始状态应设置为转换关闭,转换结束以及关闭输出状态。对应的程序为:void ADInitial() ST=0; /关闭转换 EOC=1; /转换结束 OE=0; /关闭输出5.1.2AD启动函数根据ADC0809管脚功能,START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。EOC 为转换结束信号。当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。据上写出以下程序:void ad0809() P0=0xff; OE=0; ST=0; ST=1; /ST上升沿复位清零 ST=0; /ST下降沿开始转换 while(!EOC); /判断转换是否结束 OE=1; /允许输出 Data=P0; Delay_short(1); OE=0; Delay_short(1); 5.1.3 LCD初始化函数 设置LCD显示模式: void LCDInitial() command(0x38); /设定显示模式,8位数据口 command(0x0c); /关闭显示 command(0x01); /清除屏幕 command(0x06); /增量方式,每写一位地址,光标自动右移一位 Delay_short(200); 5.1.4 LCD数据输出函数void output() double d; d=Data*5.0/255.0; m=d/1; /整数部分 n=(int)(d*10)%10; /小数点后第一位 k=(int)(d*100)%10; /小数点后第二位 command(0x80);5.1.5分频器启动函数分频器主要是在程序中给它一个脉冲,让它工作。void 74LS393() /分频器工作函数 CLE=1; CLE=0; 5.1.6延时函数应显示的不同要求,我们使用了两个延时函数,一个短延时和一个长延时。其主要是通过循环但不做任何动作来实现。程序见下:void Delay_short(int a) /短延时函数 int i; for(i=a;i0;i-); void Delay_long(int a) /长延时函数 int j; int i; for(i=a;i0;i-) for(j=0;j125;j+); 5.2扩展功能的软件设计5.2.1 按键扫描函数 按键扫描时,需特别注意要进行延时消抖动作,排除干扰信号的影响。 int KeyScan(int key) int b=0; if(key=0) Delay_long(100);if(key=0)b=1; return b; 5.2.2 开关机功能 程序开始时先做按键扫描,判断开机键是否按下,如果是的话进入下一步。之后,若开机键再次按下,跳出主循环,并进行LCD清屏处理。5.2.3 Hold与解除Hold功能进行主循环过程中,有判断Hold键是否按下的的步骤,若按下了的话,让程序进入一个小循环内,且为死循环,LCD屏上的数字便不会随输入电压的改变而改变,实现了Hold功能,若Hold键再次按下,则跳出死循环,继续主循环。5.2.4 报警功能 当AD转换器输出满量程后,即输入电压超过5V后,也就是存储输出数据的Data变量达到11111111,即十进制的255时,给Lit=P13一个低电平,即让LED4亮;若在量程范围内,给Lit高电平,LED4灭。 5.2.5 欢迎语与结束语显示这个很简单,只需在开机键被按下时,调用display函数即可实现,display函数如下:void display(char a) /显示符号函数 int j; command(0x80); for(j=0;j7;j+) P0=aj; RS=1; /选择数据寄存器 E=1; Delay_short(2); E=0; Delay_long(200); 6. 系统测试6.1 测试环境 室温为2728,室内湿度大致为40-60RH,进行测试的桌面干燥整洁。6.2 测试步骤1. 按电路图将输入电压接到AD的IN0口,AD上的和Vcc接到恒压源5V上,并用万能表调节,确认两端是5V恒压,且将各芯片共地;2. 编译运行编好的程序,打开电压源和和单片机,开始Debug;3. 用万能表测试输入电压的电压值,记下示数,同时记下此时LCD显示屏上显示的数据,改变输入电压,记下两个示数,测量十组数据;4. 复位单片机,停止Debug,关闭单片机和电压源;整理器材。6.3测试数据按上面步骤测出如表4所示:(=U - U ) 数据 1 2 3 4 5 6 7 8 9 10真实值U(V)0.740.921.341.75 2.15 2.57 3.12 3.704.274.91测试值U(V)0.740.921.351.76 2.17 2.58 3.13 3.724.294.94 偏差(V)0.000.000.010.010.02 0.01 0.01 0.020.020.03表4. 测试数据值6.4数据处理 误差平均值:=0.013V最大误差:=0.03V6.5测试结论任何被测量的精确值是不知道的, 总是大于或小于它的真值。另外,误差存在还有其他因素:1. AD数模转换器转换误差;2. 测量速度引起误差,速度与精度是相互矛盾的,一般采样速率越高,误差就越大;3. 基准电压源不准确的误差;4. 噪声和干扰误差;5. 环境和电气系统的变化所引起的附加误差,如温度,湿度等。 所以,我们所做的电压表是较符合预设的功能指标的,产生的误差是在误差范围内。该数字电压表设计的还是比较成功的。参考文献1单片机原理及接口技术(第三版) 清华大学出版社;北京交通大学出版社,2009.2.2单片机原理及接口技术(第3版) 北京航空航天大学出版社,2006.12.3单片机原理及应用 国防工业出版社,2009.1.附录1 系统电路图附录2 系统软件代码#includesbit ST=P10;sbit EOC=P15;sbit OE=P11;sbit RS=P16;sbit E=P17;sbit CLE=P12;sbit Lit=P13;sbit Key_1=P32;sbit Key_2=P33;unsigned char Data;int m,n,k;char e=0,1,2,3,4,5,6,7,8,9,.;void Delay_short(int a) /短延时函数 int i; for(i=a;i0;i-); void Delay_long(int a) /长延时函数 int j; int i; for(i=a;i0;i-) for(j=0;j125;j+); void ADInitial() ST=0; /关闭转换 EOC=1; /转换结束 OE=0; /关闭输出 void ad0809() /AD芯片启动程序 OE=0; ST=0; ST=1; /ST上升沿复位清零 ST=0; /ST下降沿开始转换 while(!EOC); /判断转换是否结束 OE=1; /允许输出 Delay_short(1); P0=0xff; Data=P0; Delay_short(1); OE=0; Delay_short(1); void command(char address) /LCD命令函数 P0=address; RS=0; /选择指令寄存器 E=1; Delay_short(2); E=0; /E下降沿执行程序 Delay_short(2); void LCDInitial() command(0x38); /设定显示模式,8位数据口 command(0x0c); /关闭显示 command(0x01); /清除屏幕 command(0x06); /增量方式,每写一位地址,光标自动右移一位 Delay_short(200); void display(char a) /显示符号函数 char address; int j; address=0x80; command(address); for(j=0;j7;j+) P0=aj; RS=1; /选择数据寄存器 E=1; Delay_short(2); E=0; Delay_long(200); void output() double d; if(Data=255) /报警功能实现 Lit=0; else Lit=1; d=Data*5.0/255.0; m=d/1; n=(int)(d*10

温馨提示

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

评论

0/150

提交评论