基于单片机的数字电压表设计.docx
《基于单片机的数字电压表设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电压表设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于单片机的数字电压表设计
基于单片机的数字电压表
学生姓名
系部:
专业年级:
指导教师:
摘要
本文介绍基于AT89S52单片机的一种电压测量电路,介绍了双积分电路的原理,AT89S52的特点,ICL7135的功能和应用,LCD1601的功能和应用。
该电路设计新颖、功能强大、可ICL7135高精度、双积分A/D转换电路,测量范围直流0-±2000伏,使用LCD液晶模块显示,可以与PC机进行串行通信。
正文着重给出了软硬件系统的各部分电扩展强
关键词:
电压测量,ICL7135,双积分A/D转换器,1601液晶模块
目录
第1章概述2
1.1数字电压表的发展前景.2
1.2电路原理图3
第2章硬件电路设计4
2.1输入电路设计4
2.1.1衰减电路设计4
2.1.2衰减电路:
4
2.2转换电路5
2.2.1转化器类型5
2.2.2转换器主要性能:
6
2.2.3ICL7135芯片简绍7
2.3AT89S52介绍9
2.3.1AT89S52芯片特点10
2.3.2主要引脚功能描述10
2.4显示电路13
2.4.1液晶显示器的分类及原理13
2.4.2LCD-1601介绍13
第3章系统软件设计15
3.1主程序设计15
3.2中断程序设计16
第4章通讯模块设计18
4.1通讯模块电路组成18
4.2通讯模块程序设计18
结束语20
致谢21
附件一电路原理图22
附件二部分参考程序23
参考文献25
第1章概述
1.1数字电压表的发展前景.
数字电压表作为数字技术的成功应用,发展相当快。
数字电压表(DigitalVoItMe-ter,DVM),以其功能齐全、精度高、灵敏度高、显示直观等突出优点深受用户欢迎。
特别是以A/D转换器为代表的集成电路为支柱,使DVM向着多功能化、小型化、智能化方向发展。
DVM应用单片机控制,组成智能仪表;与计算机接口,组成自动测试系统。
现代数字电压表按测量功能可分为直流数字电压表和交流数字电压表。
数字电压表一般由模拟部分和数字部分组成,模拟部分主要功能是获取电压并将其转换为相应的数字量,数字部分完成逻辑控制、译码和显示等功能。
数字电压表的核心是A/D转换器,由A/D转换器工作原理的不同,数字电压表又可分为逐次比较型和双积分型。
传统模拟式电压表具有电路简单、成本低、测量方便等特点,但测量精度较差,特别是受表头精度的限制,即使采用0.5级的高灵敏度表头,读测时的分辨力也只能达到半格。
再者,模拟式电压表的输入阻抗不高,测高内阻源时精度明显下降。
本设计为克服以上缺点选用ICL7135芯片实现双积分A/D转换,提高精度,它是一种四位半的双计分A/D转换器,具有精度高(精度相当于14位二进制数)、价格低廉、抗干扰能力强等优点。
本设计介绍用单片机并行方式采集ICL7135的数据以实现单片机电压表和小型智能仪表的设计方案。
在当今的数字时代,从大到空间雷达,地球卫星定位系统,移动通信,计算机,医用断层扫描设备,小到家用计算机,数码影像设备,数字录音笔,数码微波炉等设备中,数字技术与数字电路组成的数字系统已经成为这些现代电子系统的重要组成部分。
数字电压表正进入一个蓬勃发展的新时期,一方面它开拓了电子测量领域的先河,另一方面它本身正朝着高准确度、智能化、低成本的方向发展。
此外,数字电压表在安装工艺、外观设计、安全性、可靠性等方面也在不断改进,日臻完善。
1.2电路原理图
图1.2.1系统基本方框图
如图(1.2.1)所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到单片机中进行数据处理。
处理后的数据送到LCD中显示,同时通过串行通讯与上位机通信。
第2章硬件电路设计
2.1输入电路设计
由于该电压表要实现多量程测量,故而在本设计通过衰减电路与量程切换开关实现此功能,具体电路将在本节详细介绍。
2.1.1衰减电路设计
图2.1.1量程切换开关
输入电路(如图2.1.1)的作用是把不同量程的被测的电压规范到A/D转换器所要求的电压值。
智能化数字电压表所采用的单片双积分型ADC芯片ICL7135,它要求输入电压0-±2V。
2.1.2衰减电路:
图2.1.2衰减输入电路
本仪表设计是0-1000V电压,灵敏度高所以可以不加前置放大器,只需衰减器,如图(2.1.2)所示9M、900K、90K、和10K电阻构成1/10、1/100、1/1000的衰减器。
衰减输入电路可由开关来选择不同的衰减率,从而切换档位。
为了能让CPU自动识别档位,还要有(图2.1.1)的硬件连接
2.2转换电路
数字电压表最终显示结果是数字信号,但输入时却是模拟量,故而需要转电路使模拟量转换成数字量。
本设计采用A/D转换器实现此过程。
本节将着重介绍转化器基本知识和ICL7135芯片的功能。
2.2.1转化器类型
A/D转换器(ADC)的作用是把模拟量转换成数字量,以便于计算机进行处理。
随着超大规模集成电路技术的飞跃发展,现在有很多类型的A/D转换器芯片,不同的芯片内部结构不一样,转换原理也不仅相同,各种转换芯片根据转换原理可分为:
计数型A/D转换器,逐次逼近型A/D转换器,双重积分型A/D转换器,和并行式A/D转换器等,按转换方法可分为直接A/D转换器和间接A/D转换器;按其分辨率分为4-16位转换器。
计数型A/D转换器
计数型A/D转换器由D/A转换器,计数器和比较器组成,工作时:
计数器由零开始计数每计一次数后,计数器送往D/A转换器转换,并将生成的模拟信号与输入的模拟信号在比较器内进行比较,若小于后者,则计数值加1,D/A转换和比较过程,直到D/A转换生成的模拟信号与输入模拟信号相同时,则停止计数,这时计数器中的当前值就为输入模拟量对应的数字量。
这种A/D转换器结构简单,原理清楚,但转换精度与速度之间存在矛盾。
当提高速度时,精度就回有所下降,当提高精度时,速度就回有所下降。
现实中很少使用。
逐次逼近型A/D转换器
逐次逼近型A/D转换器是由一个比较器,D/A转换器,寄存器及控制电路组成。
与计数型相同,也要进行比较以得到转换的数字量,但逐次逼近型A/D转换器使用寄存器从高位到低位依次开始逐次比较。
转换过程如下:
开始时寄存器各位都为零,转换时先将高位置1,送D/A转换器转换,转换结果与输入的模拟量比较,如果前者小于后者,则1保留,否则,不保留。
重复上述过程直到最低位,最后寄存器内容就为输入模拟量对应的数字量。
一个n位逐次逼近型转换器只需要比较n次,转换时间取决于位数和时钟周期。
逐次逼近型A/D转换器转转速度快,在实际中广泛应用。
双重积分型A/D转换器
双重积分型A/D转换器将输入电压先变成与其平均值成正比的时间间隔,然后再把此时间间隔转换成数字量,它属于间接型。
它的转换过程分采样和比较两个过程。
采样就是积分器对输入模拟电压进行固定时间积分,输入量越大,采样值越大。
比较就是用基准电压对积分器进行反向积分,直到值为零,由于基准电压固定,所以采样越大,反向积分时间越长,积分时间与输入电压成正比,最后把积分时间转换成数字量,则该数字量就为输入模拟量对应的数字量。
由于转换过程进行了两次积分,所以称为双重积分型。
,双重积分型A/D转换器的转换精度高,稳定性能好,抗干扰能力强,但转换速度慢。
2.2.2转换器主要性能:
分辨率
分变率是指A/D转换器能分辨的最小输入量。
通常用转换的数字量的位数来表示,如8位,10位,12位,16位等。
位数越高,分辨率越高。
转换时间
转换时间是指A/D完成一次转换需要的时间,指从启动转换器开始到转换结束并得到稳定数字量为止的时间。
一般而言,转换时间越短,转换速度越快。
量程
量程是指所能转换的输入电压范畴。
转换精度
分为绝对转换精度和相对转换精度。
绝对精度是指实际输入的模拟量与理论上模拟量之差。
相对精度是指当满刻度值校准后,任意数字量对应的实际模拟量(中间值)与理论值之差(中间值)。
A/D转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。
本设计采用双积A/D转换器,它的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。
在对转换精度要求较高,而对转换速度要求不高的场合如电压测量有广泛的应用。
2.2.3ICL7135芯片简绍
ICL7135是采用CMOS工艺制作的单片4位半A/D转换器,其所转换的数字值以多工扫描的方式输出,只要附加译码器,数码显示器,驱动器及电阻电容等元件,就可组成一个满量程为2V的数字电压表
①双积型A/D转换器,转换速度慢。
③具有自动极性转换功能。
能在但极性参考电压下对双极性模拟输入电压进行A/D转换,模拟电压的范围为0~±1.9999V。
④模拟出入可以是差动信号,输入电阻极高,输入电流典型值1PA。
⑤所有输出端和TTL电路相容。
⑥有过量程(OR)和欠量程(UR)标志信号输出,可用作自动量程转换的控制信号。
⑦输出为动态扫描BCD码。
⑧对外提供六个输入,输出控制信号(R/H,BUSH,ST,POL,OR,UR),因此除用于数字电压表外,还能与异步接收/发送器,微处理器或其它控制电路连接使用。
⑨采用28外引线双列直插式封装,外引线功能端排列如图所示。
2.2.3.1ICL7135引脚图
ICL7135完成一次A/D转换周期分为四个阶段:
自动调零(AZ)、被测电压积分(INT)、基准电压反积分(DE)、积分回零(ZI)。
ICL7135引脚功能
1R/H(25脚)当R/H=“1”(该端悬空时为“1”)时,7135处于连续转换状态,每40002个时钟周期完成一次A/D转换。
若R/H由“1”变“0”,则7135在完成本次A/D转换后进入保持状态,此时输出为最后一次转换结果,不受输入电压变化的影响。
因此利用R/H端的功能可以使数据有保持功能。
若把R/H端用。
②/ST(26脚)每次A/D转换周期结束后,ST端都输出5个负脉冲,其输出时间对应在每个周期开始时的5个位选信号正脉冲的中间,ST负脉冲宽度等于1/2时钟周期。
第一个ST负脉冲在上次转换周期结束后101个时钟周期产生。
因为每个选信号(D5--D1)的正脉冲宽度为200个时钟周期(只有AZ和DE阶段开始时的第一个D5的脉冲宽度为201个CLK周期),所以ST负脉冲之间相隔也是200个时钟周期。
需要注意的是,若上一周期为保持状态(R/H=“0”)则ST无脉冲信号输出。
ST信号主要用来控制将转换结果向外部锁存器、UARTs或微处理器进行传送。
③BUSY(21脚)在双积分阶段(INT+DE),BUSY为高电平,其余时为低电平。
④OR(27脚)当输入电压超出量程范围(20000),OR将会变高。
该信号在BUSY信号结束时变高。
在DE阶段开始时变低。
⑤UR(28脚)当输入电压等于或低于满量程的9%(读数为1800),则一当BUST信号结束,UR将会变高。
该信号在INT阶段开始时变低。
⑥POL(23脚)该信号用来指示输入电压的极性。
当输入电压为正,则POL等于“1”,反之则等于“0”。
⑦位驱动信号D5、D4、D3、D2、D1(12、17、18、19、20脚)每一位驱动信号分别输出一个正脉冲信号,脉冲宽度为200个时钟周期,其中D5对应万位选通,以下依次为千、百、十、个位。
在正常输入情况下,D5--D1输出连续脉冲。
当输入电压过量程时,D5--D1在AZ阶段开始时只分别输出一个脉冲,然后都处于低电平,直至DE阶段开始时才输出连续脉冲。
利用这个特性,可使得显示器件在过程时产生一亮一暗的直观现象。
⑧B8、B4、B2、B1(16、15、14、13脚)该四端为转换结果BCD码输出,采用动态扫描输出方式,即当位选信号D5=“1”时,该四端的信号为万位数的内容,D4=“1”时为千位数内容,其余依次类推。
ICL7135芯片参数选择
1、时钟频率fcp的选择
从ICL7135的设计上看,时钟频率范围可以很宽(一般为40kHZ——1MHZ),但若考虑到工频干扰问题,根据我国的市场电频率为50HZ,选fcp=2/(20*0.000001)kHZ合适。
2、基准电压的Vr选择
基准电压的选择一般按照ICL7135的输出读数10000Vi/Vr来确定。
通常选Vr=1V,则当输入电压Vi=1V时,显示1.0000;当Vi=1.9999V时,显示1.9999V。
3、基准电压的Cr选择
均取1uF。
ICL7135与AT89S52的连接
在ICL7135与单片机系统进行连接时,使用并行采集方式,要连接BCD码数据输出线,可以将ICL7135的/STB信号接至AT89C52的P3.2(INT0)。
ICL7135需要外部的时钟信号,本设计采用CD4060来对4M信号进行32分频得到125KHz的时钟信号。
CD4060计数为14级2进制计数器,在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便。
图2.2.3.2ICL7135与系统的连接图图2.2.3.3CD4060时钟发生电路
2.3AT89S52介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、非常有效的解决方案。
2.3.1AT8S952芯片特点
AT8S952简介:
/与MCS-51单片机产品兼容
/8K字节在系统可编程Flash存储器
/全静态操作:
0Hz~33Hz
/32个可编程I/O口线
/全双工UART串行通道
/掉电后中断可唤醒
/双数据指针
/三个16位定时器/计数器
/1000次擦写周期
/低功耗空闲和掉电模式
/掉电标识符
/看门狗定时器
/八个中断源
/三级加密程序存储器
单片机选用的是ATMEL公司新推出的AT8S952。
该芯片具有低功耗、高性能的特点,是采用CMOS工艺的8位单片机,与AT89S51完全兼容。
AT89S52还有以下主要特点:
1、采用了ATMEL公司的高密度、非易失性存储器(NV-SRAM)技术;
2、其片内具有256字节RAM,8KB的可在线编程(ISP)FLASH存储器;
3、片内含有一个看门狗定时器(WDT),WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST),只要对WDTRST按顺序先写入01EH,后写入0E1H,WDT便启动,当CPU由于扰动而使程序陷入死循环或“跑飞”状态时,WDT即可有效地使系统复位,提高了系统的抗干扰性能
2.3.2主要引脚功能描述
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
图2.3.2.1AT89S52引脚图
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
引脚号第二功能
P3.0RXD(串行输入)
P3.1TXD(串行输出)
P3.2INT0(外部中断0)
P3.3INT0(外部中断0)
P3.4T0(定时器0外部输入)
P3.5T1(定时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器写选通)
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出
2.4显示电路
本设计的是一四位半液晶显示数字电压表,因此在显示电路设计过程中采用了LCD1601模块,本节将着重介绍液晶显示器基本知识,并对LCD1601模块功能及使用情况进行简单说明。
2.4.1液晶显示器的分类及原理
液晶显示器简称LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性实现显示信息的。
液晶显示器具有体积小,重量轻,功耗低,显示内容丰富等特点,在单片机应用系统中得到了广泛的应用。
液晶显示器按功能可分为三类:
笔段式液晶显示器,字符型点阵式液晶显示器和图形点阵式液晶显示器。
字符型点阵式液晶显示器显示模块是一种专门用于显示字符,数字,符号等的点阵式液晶显示模块,每一个点阵字符位都可以显示一个字符。
点阵字符位之间有一定点距的间隔,这样就起到了字符间距与行距的作用。
显示接口用来显示系统的状态,命令或采集的电压数据。
本系统显示部分用的是LCD液晶模块,采用一个16×1的字符型液晶显示模块
2.4.2LCD-1601介绍
图2.4.2.11601引脚图
GND接地
Vcc+5V
DB0--DB3低4位三态、双向数据总线
DB4--DB7高4位三态、双向数据总线
VL驱动LCD,一般将此脚接地
E读写使能(下降沿使能)
RS寄存器选择0:
指令寄存器(WRITE)1:
数据寄存器(WRITE,READ)
R/WREAD/WRITE选择1:
READ0:
WTITE
LCD-1601与AT89S52的接口
图2.4.2.2液晶89S52的接口
如图2.4.2.2所示:
用AT89S52的P2口作为数据线,用P0.1、P0.2、P0.3分别作为LCD的E、R/W、RS。
其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:
显示模块初始化:
首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5×7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。
向LCD的与显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。
8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为0V。
MAX232的工作电压只需5V,内部有振荡电路产生正负9V电位。
第3章系统软件设计
多路液晶显示数字电压表系统软件程序由主程序,A/D转换子程序和显示子程序组成。
3.1主程序设计
图3.1.1主程序流程图
主程序一开始运行则设置堆栈起始地址为70H,设置中断寄存器,用来对ICL7135的中断进行计数,每5次后清零,完成一次数据采集工作,然后设置ICL7135的STB端的中断的优先级。
紧接着LCDM1601B进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。
以前面对1601B的介绍,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可以完成清屏工作。
用以下指令实现MOVP2,#01H;送到数据DB7---DB0,调用子程序ENABLE,由于下降沿时,内部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。
内部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除。
接着对1601进行功能的设定。
MOVP2,#01111000B,设定显示器按2行显示,每行8位,5×7点阵。
调用一次子程序ENABLE程序,写入CPU的指令寄存器中。
每次向LCDM中写入一个指令,就调用一次ENABLE,然后再对显示器进行闪烁、光标等功能进行设定。
显示器的RAM地址按加1方法进行读写。
再设定第一行字符,也就是‘Voltage’的显示地址80H。
字符‘Voltage’的TABLE表地址送到DPTR中,然后调用远程查表命令,依次把数据送到P2口,这时再调用子程序WRITE3,使LCD1601的RS=1