简易电压表实验报告1
南昌工程学院
《仪器检测调试》综合报告
简易数字电压表
学院(系):班级:姓名:学号:联系方式:
目录
概述任务书
第一章:系统总体设计及方案
1.1设计题目、内容、要求1.2概述
1.3系统原理及基本框图1.4方案说明1.5方案论证
第二章:电路设计
第三章:芯片及软件介绍
第四章:数字电压表设计电路
第五章:总结
附录1:实验程序附录2:参考文献
第一章系统总体设计及方案
1.1设计题目、内容、要求
设计题目:简易数字电压表的设计。设计内容:
1.可以测量0~5V范围内的2路直流电压值。2.在4位LED 数码管上轮流显示各路电压值或单路选择显示,其中3位LED 数码管显示电压值,显示范围为0.00V~5.00V,1位LED 数码管显示路数,8路用数字表示分别为0-7。
3.测量最小分辨率为0.02V。设计要求:
1.进行系统总体设计。
2.完成系统硬件电路设计。3.完成系统软件设计。4.撰写设计说明书。
1.2概述
数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC 进行实时通信。目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM 扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
1.3系统原理及基本框图
输入电路
A/D转换
89C51单片机
LED 显示
图1-1系统基本流程图
如图1-1所示,模拟电压经过滑动变阻器切换到不同的分压电路后,送到A/D
转换器进行A/D转换,然后送到单片机中进行数据处理。处理后的数据,通过P0口传输送到LED 中显示。
1.4方案说明
系统首先通过按键逐路选择八路通道中的一路或是循环显示,将该路某一路电压送入ADC0809相应通道,单片机软件设置ADC0809开始A/D转换,转换结束ADC0809的EOC 端口产生高电平,同时将ADC0809的EO 端口置为高电平,单片机将转换后结果存如片内RAM。系统调出计算子程序,将保存结果转化为0.00-5.00V 分别保存在片内RAM;系统调用显示子程序,将转化后数据查表,输出到LED 显示电路,将相应电压显示出来,程序进入下一个循环。
1.5方案论证
1.5.1显示部分
系统通过对LED 灯的动态显示及不停的轮流给数码管位选端加驱动电压,及在给其中一个数码管位选段加驱动电压的时候它才能变亮,而其他的是暗的,由于数码管暗下来需要一定的时间,人眼具有视觉暂留特点,同时系统又给其它的施加驱动电压,所以我们看到的就是稳定的亮着的数字了。
1.5.2A/D转换部分
通过A/D转换器将输入的模拟信号转换成数字信号,然后进行处理。为了达到这一目的,使用调试简单,能与微处理机或其他数字系统兼容的A/D转换器0809芯片。
ADC0809是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
第二章电路设计
2.1输入电路
输入电路的作用是把不同量程的被测的电压规范到A/D转换器所要求的电压值。本电路设计所用电压为0-5V ,其大小通过滑动变阻器调节。
2.2A/D转换电路
A/D转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。本设计采用双积A/D转换器,它的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。在对转换精度要求较高,而对转换速度要求不高的场合如电压测量有广泛的应用。
2.3双积A/D转换器的工作原理
如图2-1所示:对输入模拟电压和基准电压进行两次积分,先对输入模拟电
压进行积分,将其变换成与输入模拟电压成正比的时间间隔T1,再利用计数器测出。
图2-2双积A/D转换器的波形图图2-1双积分A/D转换器工作原理图
此时间间隔,则计数器所计的数字量就正比于输入的模拟电压;接着对基准电压进行同样的处理。在常用的A/D转换芯片(如ADC -0809、ICL7135、ICL7109等)中,ICL7135与其余几种有所不同,它是一种四位半的双积分A/D转换器,具有精度高(精度相当于14位二进制数)、价格低廉、抗干扰能力强等优点。
2.4A/DC0809的转换流程图
数字量电压值输入89C51
启动ADC0809
等待转换是否结束
将结果转换成BCD 码并输出图2-3A/DC0809的转换流程图
图2-3
A/DC0809的转换电路图
2.4液晶显示部分
显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是LCD 液晶模块,采用一个16×1的字符型液晶显示模块,点阵图形式液晶由M 行×N列个显示单元组成,假设LCD 显示屏有64行,每行有128列,每
8列对应1个字节的8个位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元和显示RAM 区1024个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。一个字符由6×8或8×8点阵组成,即要找到和屏上某几个位置对应的显示RAM 区的8个字节,并且要使每个字节的不同的位为‘1’,其它的为‘0’,为‘1’的点亮,为‘0’的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD 上开始显示的行列号及每行的列数找出显示RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。
2.5设计调试及性能分析2.5.1调试与测试
采用Keil uVision2编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作,烧好程序后进行软硬件联调,最后进行端口电压的对比测试,要求测试对比中标准电压值采用数字万用表测得。
简易数字电压表与“标准”数字电压表测得的绝对误差应在0.02V 以内。
2.5.2性能分析
由于单片机为8位处理器,当输入电压为5.00V 时,输出数据值为255(FFH),因此单片机最大的数值分辨率为0.0196V(5/255)。这就决定了该电压表的最大分辨率(精度)只能达到0.0196V。测试时电压数值的变化一般以0.02的电压幅度变化,如要获得更高的精度要求,应采用12位、13位的A/D转换器。
简易电压表测得的值基本上均比标准值偏大0.01~0.02V。这可以通过校正0809的基准电压来解决,因为该电压表设计时直接用7805的供电电源作为基准电压,电压可能有偏差。另外可以用软件编程来校正测量值。
ADC0809的直流输入阻抗1MΩ,能满足一般的电压测试需要。另外,经测试ADC0809可直接在2MHz 的频率下工作,这样可省去分频器14024。
第三章芯片及软件介绍
3.1ADC0809
3.1.1引脚功能(外部特性)
ADC0809芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下:
1~5,26~28(IN0~IN7):8路模拟量输入端。8,14,15,17~21:8位数字量输出端。22(ALE):地址锁存允许信号,输入,高电平有效。6(START):A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns 宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。12(VREF(+))、16(VREF(-)):参考电压输入端。11(Vcc):主电源输入端。13(GND):地。
23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路。
3.1.2内部结构
ADC0809是CMOS 单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近。
极限参数电源电压(Vcc):6.5V。控制端输入电压:—0.3V~15V。
其它输入和输出端电压:-0.3V~Vcc+0.3V。贮存温度:—65℃~+150℃功耗(T=+25℃):875mW。引线焊接温度:①气相焊接(60s):215℃;②红外焊接(15s):220℃抗静电强度:400V。
3.289C51
单片机该系列单片机是采用高性能的静态80C51设计由先进CMOS 工艺制造并带有非易失性Flash 程序存储器,全部支持12时钟和6时钟操作。
P89C51X2和P89C52X2/54X2/58X2分别包含128字节和256字节RAM 32条I/O口线3个16位。
定时/计数器6输入4优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART。以及片内振荡器和时钟电路89C51是一种带4K 字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。89C2051是一种带2K 字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
3.2.1主要特性
与MCS-51兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24MHz ;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;5个中断源,两个16位定时器/计数器;可编程串行通道;低功耗的闲置和掉电模式,片内振荡器和时钟电路。
3.2.2管脚说明
VCC:供电电压。GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。当P1口的管脚第一次写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)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3.0RXD(串行输入口);P3.1TXD(串行输出口);P3.2/INT0(外部中断0);P3.3/INT1(外部中断1);P3.4T0(记时器0外部输入);P3.5T1(记时器1外部输入);P3.6/WR(外部数据存储器写选通);P3.7/RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。
3.374LS161
161为可预置的4位二进制同步计数器,共有54/74161和54/74LS161两种线路结。
74LS161的清除端是异步的。当清除端CLEAR 为低电平时,不管时钟端CLOCK 状态如何,即可完成清除功能。74LS16的预置是同步的。当置入控制器LOAD 为低电平时,在CLOCK 上升沿作用下,输出端QA-QD与数据输入端A-D相一致。161的计数是同步的,靠CLOCK 同时加在四个触发器上而实现的。当ENP、ENT均为高电平时,在CLOCK 上升沿作用下QA-QD同时变化,从而消除了异步计数器中出现的计数尖峰。
第四章数字电压表设计电路
图4-1数字电压表设计电路
图4-2数字电压表测试电路
系统工作过程:首先通过按键或开关选择要测量的电压地址,即几路电压,若通过按键逐路选择,则要通过计数器74LS161记录按键次数,从而对电压地址加一,从而实现地址的转移,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC 输出信号变低,指示转换正在进行。直到A/D转
换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,之后数据经过处理,就可以在数码管上显示系统通过调节滑动变阻器可以调节测量电压,测试电路图4-2
第五章设计总结
通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
这次实习让我受益匪浅,无论从知识上还是其他的各个方面。上课的时候的学习从来没有接触过真正的单片机,只是从理论的角度去理解枯燥乏味。但在实习中模拟使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会相互讨论或者帮助。团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。
单片机是很重要的一门课程,尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。
附录1实验程序如下
#include
#defineuchar unsigned char #defineuint unsigned int sbit START=P2^1;sbit EOC=P2^0;sbit CLK=P2^2;sbit OE=P1^3;sbit P24=P2^4;sbit P25=P2^5;sbit P26=P2^6;uchar
TAB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};uint DATA=0;void delay(uinta) {
uint b;
for(a;a>0;a--)
for(b=100;b>0;b--);}
void xians()
{
P3=0X01;
P1=TAB[DATA/1000]&0X7f;delay(10);P3=0X02;
P1=TAB[(DATA/100)%10];delay(10);P3=0X04;
P1=TAB[(DATA/10)%10];delay(10);P3=0X08;
P1=TAB[DATA%10];delay(10);}
void main(){
unsigned int i=25;CLK=1;
TMOD=0X02;
EA=1;
TH0=0X38;TL0=0X38;ET0=1;TR0=1;P24=0;P25=0;P26=0;while(1){
i=50;xians();while(i--){
P26=0;START=1;START=0;while(EOC==0);OE=1;DATA=P0;OE=0;
DATA=(uint)DATA;
DATA=((double)DATA*5.0/255.0)*1000;
xians();
}
i=50;while(i--){
P26=1;START=1;START=0;
while(EOC==0);OE=1;DATA=P0;OE=0;
DATA=(uint)DATA;
DATA=((double)DATA*5.0/255.0)*1000;
xians();}}}
void timer0()interrupt 1{
CLK=~CLK;}
附录2:参考文献
1.吴国敬等《单片机应用技术》中国电力出版社
2.李全利,迟荣强编著《单片机原理及接口技术》高等教育出版社2004.13.侯月林等,《凌阳十六单位原理及其毕业设计精选》2006年,科技出版社4.罗亚非《凌阳十六位单片机应用基础》2003年,北京航空航天大学出版社5.张一刚等,《MCS-51单片机应用设计》,哈工大出版社2004年6.徐咏龙等,《单片机原理及应用》,机械工业出版社
7.薛均已张艳斌樊波《凌阳十六单位原理及其毕业设计精选》2006年,科技出版社
8.《单片机应用技术与实例》,睢丙东主编,电子工业出版社9.《仪器检测调试指导书》,南昌工程学院内部
11