单片机的数字电压表论文.doc_第1页
单片机的数字电压表论文.doc_第2页
单片机的数字电压表论文.doc_第3页
单片机的数字电压表论文.doc_第4页
单片机的数字电压表论文.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

2009 届毕业设计基于单片机的数字电压表 姓 名: 李小军 系 别: 电子信息系 专 业: 电子信息工程学 号: 0711030227指导教师: 彭克发 2009年 11 月 5 日基于单片机的数字电压表李小军 重庆电子工程学院电子信息系 电信072班 重庆沙坪坝摘要:本文介绍一种基于89C52单片机的一种电压测量电路,该电路采用TLC1549连续逐次逼近型A/D转换器,测量范围直流0-5000伏,使用LCD液晶模块显示,可以与PC机进行串行通信。正文着重给出了软硬件系统的各部分电路,介绍了逐次逼近电路的原理,89C52的特点,TLC1549的功能和应用,LCD1602的功能和应用。该电路设计新颖、简洁、功能强大、可扩展性强。关键词:电压测量,TLC1549,逐次逼近A/D转换器,1602液晶模块Abstract : The introduction of a cost-based 89C52 MCU a voltage measurement circuits, the circuits used TLC1549 high-precision, dual-scoring A/D conversion circuits, measuring scope DC 0-5000 volts, the use of LCD that can be carried out with a PC serial communications. The paper focuses on providing a software and hardware system components circuit, introduced double integral circuit theory, 89C52 features TLC1549 functions and applications, LCD1602 functions and applications. the circuit design innovative, powerful, can be expansionary strong.Key Words : Digital Voltmeter TLC1549 LCD1602 89C521前言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。2 系统原理及基本框图输入电路A/D转换89C52单片机LCD显示通讯模块如图2.1所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到单片机中进行数据处理。处理后的数据送到LCD中显示,同时通过串行通讯与上位机通信。 图2.1系统基本方框图3硬件设计3.1 输入电路图3.1.1量程切换开关 图3.1.2衰减输入电路输入电路的作用是把不同量程的被测的电压规范到A/D转换器所要求的电压值。智能化数字电压表所采用10位串行ADC芯片TLC1549,它要求输入电压0-5V。本仪表设计是0-5000V电压,灵敏度高所以可以不加前置放大器,只需衰减器,如图3.1.2所示9M、900K、90K、和10K电阻构成1/10、1/100、1/1000的衰减器。衰减输入电路可由开关来选择不同的衰减率,从而切换档位。为了能让CPU自动识别档位,还要有图3.1.1的硬件连接。3.2 A/D 转换电路A/D 转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。A/D有很多种,从电路结构看可分为逐次逼近型、并联比较型、双积分型等。并联比较型具有转换速度高的优点,但随着位数的增加,所使用的元件数量以几何级数上升,使得造价巨增,故应用并不广泛;双积分型具有精度高的优点,但转换速度太低,一般应用于非实时控制的高精度数字仪器仪表中;逐次比较型转换速度虽然不及并联比较型,属于中速ADC,但具有结构简单的价格优势,在精度上可以达到一般工业控制要求,故本设计采用美国德州仪器公司生产的具有串行控制、连续逐次逼近型的10位模数转换器TLC1549。3.2.1 逐次逼近型转换器的工作原理逐次逼近型模数转换器一般由顺序脉冲发生器、逐次逼近寄存器、数模转换器和电压比较器等几部分组成,其原理框图如图3.2.1所示。图3.2.1逐次逼近型模数转换器的原理框图转换开始前先将所有寄存器清零。开始转换以后,时钟脉冲首先将寄存器最高位置成1,使输出数字为1000。这个数码被数模转换器转换成相应的模拟电压,送到比较器中与进行比较。若 ,说明数字过大了,故将最高位的1清除;若 ,说明数字还不够大,应将最高位的1保留。然后,再按同样的方式将次高位置成1,并且经过比较以后确定这个1是否应该保留。这样逐位比较下去,一直到最低位为止。比较完毕后,寄存器中的状态就是所要求的数字量输出。可见逐次逼近转换过程与用天平称量一个未知质量的物体时的操作过程一样,只不过使用的砝码质量一个比一个小一半。能实现图11-3所示方案的电路很多。图11-4所示电路是其中的一种,这是一个四位逐次逼近型模数转换器。图中四个JK触发器 组成四位逐次逼近寄存器;5个D触发器接成环形移位寄存器(又称为顺序脉冲发生器),它们和门一起构成控制逻辑电路。图11-4 四位逐次逼近型模数转换器现分析电路的转换过程。为了分析方便,设D/A转换器的参考电压为=+8 V,输入的模拟电压为=4.52 V。 转换开始前,先将逐次逼近寄存器的四个触发器 清零,并把环形计数器的状态置为00001。第1个时钟脉冲C的上升沿到来时,环形计数器右移一位,其状态变为10000。由于,均为0,于是触发器被置1,和被置0。 所以,这时加到D/A转换器输入端的代码为1000,D/A转换器的输出电压为 和在比较器中比较,由于,所以比较器的输出电压为。第2个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为01000。这时由于, 均为0,于是触发器的1保留。与此同时,的高电平将触发器置1。所以,这时加到D/A转换器输入端的代码为1100,D/A转换器的输出电压为 和在比较器中比较,由于 ,所以比较器的输出电压为。 第3个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为00100。这时由于,均为0,于是触发器的1保留,而被置0。与此同时,的高电平将置1。所以,这时加到D/A转换器输入端的代码为 1010,D/A转换器的输出电压为 和在比较器中比较,由于 ,所以比较器的输出电压为。 第4个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为00010。这时由于,均为0,于是触发器、的状态保持不变,而触发器被置0。与此同时,的高电平将触发器置1。所以,这时加到D/A转换器输入端的代码为1001,D/A转换器的输出电压为 和在比较器中比较,由于,所以比较器的输出电压为。 第5个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为00001。这时由于,均为0,触发器、 、 、 的状态均保持不变,即加到D/A转换器输入端的代码为1001。同时,的高电平将门 打开,使作为转换结果通过门 送出。这样就完成了一次转换。转换过程如表11-2所示。表11-2 四位逐次逼近型模数转换器的转换过程上例中的转换误差为0.02 V。转换误差的大小取决于A/D转换器的位数,位数越多,转换误差就越小。 从以上分析可以看出,图11-4所示四位逐次逼近型模数转换器完成一次转换需要5个时钟脉冲信号的周期。显然,如果位数增加,转换时间也会相应地增加。 逐次逼近型模数转换器的分辨率较高、误差较低、转换速度较快,是应用非常广泛的一种模数转换器。3.2.2 TLC1549的应用TLC1549系列是美国德州仪器公司生产的具有串行控制、连续逐次逼近型的模数转换器,它采用两个差分基准电压高阻输入和一个三态输出构成三线接口,其中三态输出分别为片选(CS低电平有效),输入输出时钟(IO CLOCK),数据输出(DATAOUT)。TLC1549引脚排列如图1所示。TLC1549能以串行方式送给单片机,其功能结构如图2所示。由于TLC1549采用CMOS工艺。内部具有自动采样保持、可按比例量程校准转换范围、抗噪声干扰功能,而且开关电容设计使在满刻度时总误差最大仅为1 LSB(4.8 mV),因此可广泛应用于模拟量和数字量的转换电路。图3.2.2.1 TLC1549引脚排列 图3.2.2.2 TLC1549功能结构图3.2.2.1 TLC1549在工作温度范围内的极限参数电源电压范围:-0.5 V6.5 V;125输入电压范围:-0.3 VVCC+0.3 V;输出电压范围:-0.3VCC+0.3 V;正基准电压:VCC+0.1 V;负基准电压:-0.1 V;峰值输入电流:+20 mA;峰值总输入电流:30 mA;工作温度范围:TLC1549M为-55125,TLC1549C为070,TLC1549I为-4085。3.2.2.2 TLC1549工作原理TLC1549具有6种串行接口时序模式,这些模式是由IO CLOCK周期和CS定义。根据TLC1549的功能结构和工作时序,其工作过程可分为3个阶段:模拟量采样、模拟量转换和数字量传输。 图3.2.2.3 TLC1549的时序图。1) 输入的模拟量采样在第3个IO CLOCK下降沿,输入模拟量开始采样,采样持续7个IO CLOCK周期,采样值在第10个IO CLOCK下降沿锁存。2) 输入的模拟量转换对于连续逐次逼近型的模数转换器TLC1549,CMOS门限检测器通过检测一系列电容的充电电压决定AD转换后的数字量的每一位,如图3.2.2.4所示。图3.2.2.4 TLC1549的连续逐次逼近采样模式在转换过程的第一阶段,模拟输入量同时关闭SC和ST进行充电采样,这一过程使所有电容的充电电压之和达到模数转换器的输入电压。转换过程的第二阶段打开所有SC和ST,CMOS门限检测器通过识别每一只电容的电压确定每一位,使其接近参考电压。在这个过程中,10只电容逐一检测,直到确定转换的十位数字量。其详细步骤为:门限检测器检测第一只电容(weight=512)的电压,该电容的节点512连接到REF+。梯型网络中,其他电容的等效节点接到REF-。如果总节点的电压大于门限检测器的电压(大约VCC的一半),“0”被送至输出寄存器,此时512-weight的电容连接到REF-。经反相后为“1”,即为最高位MSB为1;如果总节点的电压小于门限检测器的电压(大约VCC的一半),“1”被送至输出寄存器,此时512-weight的电容连接到REF+,经反相后为“0”,存为最高位MSB为0。对于256-weight的电容和128-weight的电容也要通过连续逐次逼近型的重复操作,直到确定从高位(MSB)到低位(LSB)所有数字量,即为初始的模拟电压数字量。整个转换过程调整VREF+和VREF1以便从数字0至1跳变的电压(VZT)为0.002 4 V,满度跳变电压(VFT)为4.908 V,即1 LSB=4.8 mV。3)数字量的传输当片选CS由低电平变为高时,IO CLOCK禁止且AD转换结果的三态串行输出DATA OUT处于高阻状态;当串行接口将CS拉至有效时,即CS由高变为低时,CS复位内部时钟,控制并使能DA-TA OUT和IO CLOCK,允许IO CLOCK工作并使DATA OUT脱离高阻状态。串行接口把输入输出时钟序列供给IO CLOCK并接收上一次转换结果。首先移出上一次转换结果数字量对应的最高位,下一个IO CLOCK的下降沿驱动DATA OUT输出上一次转换结果数字量对应的次高位,第9个IOCLOCK的下降沿将按次序驱动DATA OUT输出上一次转换结果数字量的最低位,第10个IOCLOCK的下降沿,DATA OUT输出一个低电平,以便串行接口传输超过10个时钟;IO CLOCK从主机串行接口接收长度在1016个时钟的输入序列。CS的下降沿,上一次转换的MSB出现在DATA OUT端。10位数字量通过DATA OUT发送到主机串行接口。为了开始传输,最少需要10个时钟脉冲,如果IOCLOCK传送大于10个时钟,那么在第10个时钟的下降沿,内部逻辑把DATA OUT拉至低电平以确保其余位清零。在正常转换周期内,即规定的时间内CS端由高电平至低电平的跳变可以终止该周期,器件返回初始状态(输出数据寄存器的内容保持为上一次转换结果)。由于可能破坏输出数据,所以在接近转换完成时要小心防止CS拉至低电平。利用AD串行输出设计不但提高了模数转换的精度,具有抗干扰性,而且节省了大量元件和印刷电路板的空间。该系统设计已经成功应用于工业现场控制系统的数据测量。3.3单片机部分单片机选用的是宏晶科技推出的STC89C52,如图 3.2.1.1所示。该芯片具有低功耗、高性能的特点,是采用CMOS工艺的8位单片机,与AT89C51完全兼容。STC89C52还有以下主要特点: 采用了STC公司的高密度、非易失性存储器(NV-SRAM)技术; 其片内具有256字节RAM,8KB的可在线编程(ISP)FLASH存储器; 有2种低功耗节电工作方式:空闲模式和掉电模式 片内含有一个看门狗定时器(WDT),WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST),只要对WDTRST按顺序先写入01EH,后写入0E1H,WDT便启动,当CPU由于扰动而使程序陷入死循环或“跑飞”状态时,WDT即可有效地使系统复位,提高了系统的抗干扰性能。3.4液晶显示部分图 3.2.1.1 89C52引脚图显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是LCD液晶模块,采用一个161的字符型液晶显示模块, 点阵图形式液晶由 M 行N 列个显示单元组成,假设 LCD 显示屏有64行,每行有 128列,每 8列对应 1 个字节的 8 个位,即每行由 16 字节,共 168=128个点组成,屏上 6416 个显示单元和显示 RAM 区 1024 个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。一个字符由 68 或 88点阵组成,即要找到和屏上某几个位置对应的显示 RAM区的 8 个字节,并且要使每个字节的不同的位为1,其它的为0,为1的点亮,为0的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD 上开始显示的行列号及每行的列数找出显示 RAM对应的地址,设立光标,在此送上该字符对应的代码即可。3.4.1 1601使用说明图3.4.1.1 1601引脚图表3.4.1.1 LCD1601液晶模块的引脚引脚符号功能说明1GND接地2Vcc5V3VL驱动LCD,一般将此脚接地4RS寄存器选择 0:指令寄存器(WRITE)Busy flag,位址计数器(READ) 1:数据寄存器(WRITE,READ)5R/WREAD/WRITE选择 1:READ 0:WTITE6E读写使能(下降沿使能)7DB0低4位三态、双向数据总线8DB1低4位三态、双向数据总线9DB210DB311DB4高4位三态、双向数据总线另外DB7也是一个Busy flag12DB513DB614DB7寄存器选择,如表所示:表3.4.1.3 寄存器选择控制线操作RSR/W操作说明00写入指令寄存器(清除屏幕等)01读Busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据Busy flag(DB7):在此位未被清除为“0”时,LCD将无法再处理其他指令要求。(1)显示地址:内部地址计数器的计数地址:SB7=0(DB0DB6)第一行00、01、02 等,第二行40、41、42 等,可配合检测DB7=1 (RS=0,R/W=1)读取目前显示字的地址,判断是否需要换行。表3.4.1.4 LCD1601 161 显示字的地址1234567891011121314151600010203040506074041424344454647(2)外部地址:DB7=1,亦即80H内部计数地址,可以用此方式将字显示在某一位置。LCD各地址列举如下表:表3.4.1.5 LCD1601 161 显示字的外部地址161 16字1行 1601123456789101112131415168081828384858687C0C1C2C3C4C5C6C7表3.4.1.6 LCD1601 的指令组指 令说 明设置码RS R/WD7D6D5D4D3D2D1D0清除显示幕000000000*光标回到原点000000001*进入模式设定00000001I/DS显示幕ON/OFF0000001DCB移位000001S/CR/L*功能设定00001DLNF*字发生器地址设定0001AGC设置显示地址0001ADD忙碌标志位BF001BF显示数据10写入数据读取数据11读取数据I/D I/D=1 表示加1, I/D=0 表示减1S S=1 表示显示幕ON S=0表示OFFD D=1 表示显示屏幕ON D=0表示显示屏幕OFFC C=1 表示光标ON C=0表示光标OFFB B=1 表示闪烁ON B=0表示显示闪烁OFFS/C S/C=1表示显示屏幕移位 S/C=0光标移位R/L R/L=1表示右移 R/L=0表示左移DL DL=1表示8位 DL=0表示4位F F=1表示510点矩阵 F=0表示57点矩阵N N=1表示2行显示行 N=0表示1行显示行BF BF=1:内部正在动作 BF=0:可接收指令或数据码3.4.2 液晶显示部分与89C52的接口 如图所示:用89C52的P2口作为数据线,用P0.1、P0.2、P0.3分别作为LCD的E、R/W、RS。其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为8位,显示行数为1行,字型为57点阵,然后设3.4.2.1 液晶与89C52的接口置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。3.5 通讯模块图3.5.1 MAX232引脚功能图89C52内部已集成通信接口URT,只需扩展一片MAX232芯片将输出信号转换成RS-232协议规定的电平标准, MAX232 是 一 种 双 组 驱 动 器 / 接 收 器 ,每个接收器将EIA/TIA-232-E电平输入转换为5VTTL/CMOS电平。 每个驱动器将TTL/CMOS输入电平转换 为 EIA/TIA-232-E电平。即EIA接口,就是把5V转换为-8V到-15V电位0V转换为8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为0V。MAX232的工作电压只需5V,内部有振荡电路产生正负9V电位。4 系统的软件设计4.1主程序设计TLC1549 A/D与单片机连接电路的软件设计系统的程序流程图如图所示。主程序一开始运行则设置堆栈起始地址为70H,设置中断寄存器,用来对TLC1549的中断进行计数,每5次后清零,完成一次数据采集工作,然后设置TLC1549的STB端的中断的优先级。紧接着LCDM1601B进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。以前面对1601B的介绍,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可以完成清屏工作。用以下指令实现 MOV P2,#01H ;送到数据DB7-DB0,调用子程序 ENABLE,由于下降沿时,内部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。内部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除。接着对1601进行功能的设定。MOV P2,#01111000B,按表3.4.5来看是设定显示器按2行显示,每行8位,57点阵。调用一次子程序ENABLE程序,写入CPU的指令寄存器中。每次向LCDM中写入一个指令,就调用一次ENABLE,然后再对显示器进行闪烁、光标等功能进行设定。显示器的RAM地址按加方法进行读写。再设定第一行字符,也就是Voltage的显示地址80H。字符Voltage的TABLE表地址送到DPTR中,然后调用远程查表命令,依次把数据送到P2口,这时再调用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E产生一个下降沿脉冲,将数据送入到数据寄存器中,接下来执行子程序DISPLAY1,它的主要功能是将TABLE表中的字符输出到LCD中去。调定好显示字符数即远程查表的次数,就开始查表了。 例如第一个字符“V”的ASCII码是56H,就将这个码送到P2口,再调用使能数据子程序,使RS=1(数据区使能)写入显示数据区,R/W=0表示写,E=来个下降沿延时2.5毫秒,使数据写入RAM内。完成TABLE表输出以后,向指令RAM中写入第2行的起始地址为OCH,再调用显示采样数据的子程序。采样数据存放的数据地址安排如下图所示,首先将60H中的数显示在正负号的位置上,按照ASCII码表,正号不显示(#20H),负号显示“”(#2DH)。4.2 A/D中断程序设计图4.2.1 中断子程序流程图TLC1549每一分钟完成3次据的采集工作,1/3秒完成后向CPU申请中断,CPU这时暂停工作,为中断服务.中断响应后关中断,将PSW、ACC压栈,判断是否首次中断,如果是首次中断,则将正负号标志位置入60H,再把万位置入61H中,如果不是首次中断,则跳到NEXT处,如果是第二次中断,则将千位数置入62H中,如果是第三次中断,再将百位数置入63H中,第四次中断则将十位数置入64H中,第五次中断则将小数点位置入65H中,同时个位置入66H中。同时清除中断次数寄存器30H中的值,完成中断后将ACC、PSW出栈,开中断。消隐的思想:每次电压采集后,CPU将数据送到LCD显示,将可能出现以下几种需要消隐的情况。例如:2000V档量程:0199.9此时万位的值0不符合人们的视觉习惯,需要把万位的值消隐掉,编程是将#20H送入万位,使其在LCD中不显示任何字符即可。同样的情况如下:2000V档量程:0019.90001.9200V档量程:019.99001.9920V档量程:01.999在采集到数据之后,置数之前判断档位,是2V档不消隐,是其他档位时再看要消隐的位之前有几个是零。例如2000V档量程,-0001.9V,在2次中断时判断档位是2000V档,第1位是零,消隐第2位千位。4.3通讯模块程序设计89C52单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。89C52的串行口有4种工作方式,1种同步方式,3种异步方式。本方式选方式1,一帧数据有10位,包括起始位0、8位数据位和1位停止位1。串行口电路在发送时能自动加入起始位和停止位。在接收时,停止位进入SCON中的RB8位。方式1的波特率是可变的,由定时器1的溢出率决定。由定时器1最好工作在方式2上(自动重装载模式),这样只需对TH1设置一次即可。数据通过TX

温馨提示

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

评论

0/150

提交评论