基于51单片机的电压表的设计.docx
- 文档编号:2227107
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:18
- 大小:432.41KB
基于51单片机的电压表的设计.docx
《基于51单片机的电压表的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电压表的设计.docx(18页珍藏版)》请在冰豆网上搜索。
基于51单片机的电压表的设计
引言
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用[1]。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型[3]。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%-0.005%。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面[4]。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:
转换模块、数据处理模块及显示模块。
其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号[5]。
1设计总体方案
1.1设计要求:
完成系统的硬件电路设计与软件设计;
采用汇编或C语言编程;
采用Proteus、KeilC等软件实现系统的仿真调试。
1.2设计思路
根据设计要求,选择AT89C51单片机为核心控制器件。
A/D转换采用ADC0808实现,与单片机的接口为P1口和P2口的高四位引脚。
电压显示采用4位一体的LED数码管。
LED数码的段码输入,由并行端口P0产生:
位码输入,用并行端口P2低四位产生。
1.3设计方案
主要设计如图1.1:
图1.1设计方案
1.3.1主控芯片
选用单片机AT89C51和A/D转换芯片ADC0808实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。
1.3.2显示部分
选用一个四联的共阴极数码管。
1.4电路设计原理
模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D转换器进行A/D转换。
然后送到单片机中进行数据处理。
处理后的数据送到LED中显示。
同时通过串行通讯与上位通信。
硬件电路及软件程序。
而硬件电路又大体可分为A/D转换电路、LED显示电路,程序的设计使用C语言编程,利用Keil和PROTEUS软件对其编译和仿真。
一般I/O接口芯片的驱动能力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。
在本设计中采用RESPACK上拉电阻来增加驱动能力。
图1.2原理电路
本实验采用AT89C51单片机芯片配合ADC0808模/数转换芯片构成一个简易的数字电压表,原理电路如图1.2所示。
该电路通过ADC0808芯片采样输入口IN0输入的0~5V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89C51芯片的P1口。
AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P0口传送给数码管。
同时它还通过其四位I/O口P2.0、P2.1、P2.2、P2.3产生位选信号,控制数码管的亮灭。
P3.0控制ADC0808的启动端(START)和地址锁存端(ALE);P3.1控制ADC0808的输出允许端(OE);P3.2控制ADC0808的转换结束信号(EOC)。
2程序设计
2.1程序设计总方案
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图2.1所示。
图2.1数字式直流电压表主程序框图
2.2系统子程序设计
2.2.1初始化程序
所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。
2.2.2A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图2.2所示。
图2.2A/D转换流程图
2.2.3显示子程序
显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。
在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11μs定时,通过软件延时程序来实现5ms的延时。
3硬件电路设计
3.1数字芯片A/D转换技术
电路原理图如图3.1所示,三个地址位ADDA,ADDB,ADDC均接地,因而所需测量的外部电压可由ADC0808的IN0端口输入。
图3.1A/D转换原理图
在A/D转换开始之前,逐次逼近寄存器的SAR的内容为0,在A/D转换过程中,SAR存放“试探”数字量,在转换完毕后,它的内容即为A/D转换的结果数字量。
3.1.1ADC0808模数转换芯片简介
ADC0808模数转换芯片如图3.2。
图3.2ADC0808模数转换芯片
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0808是ADC0809的简化版本,功能基本相同。
一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。
3.1.2引脚功能(外部特性)
ADC0808芯片有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.2单片机的数据处理技术
A/D转换完毕后,单片机的P1.6口接收到一高电平,立马通过P3将OE置1,ADC0808的三态输出锁存器被打开,转换完的数字信号经过与D0~D7相连的P0口进入AT89C51。
AT89C51根据公式将数字信号转换为模拟量,然后利用程序获取模拟量的每一位,分别通过P2口输出到LED上。
与此同时,AT89C51会通过P2.0~P2.3口选择用哪一段LED显示所传出的数据。
例如,当P2.0~P2.3=1110,则LED接收到的数据会在第四段LED上显示。
另外,AT89C51一旦获得了数据后便会将ST置0,即模数转换器停止转换,知道LED获得新的数据并显示出来,ST才会重新置1。
由于AT89C51转换速率很快(微妙量级),所以不会影响其接收新的数据。
3.2.1AT89C51单片机简介
AT89C51单片机如图3.3。
图3.3AT89C51单片机
AT89C51是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压、高性能CMOS8为单片机。
将通用的微处理器和Flash存储器结合在一起,可反复擦写的Flash存储器可有效地降低开发成本。
AT89C51有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
3.2.2主要功能特性:
低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。
兼容MCS51指令系统,8K可反复擦写(>1000次)FlashROM。
3个16位可编程定时/计数器中断,时钟频率0-24MHz。
32个双向I/O口,256B内部RAM。
2个串行中断,可编程UART串行通道。
2个外部中断源,共6个中断源。
2个读写中断口线,3级加密位。
3.3单片机控制的数码管显示技术
3.3.1LED基本结构
LED是发光二极管显示器的缩写。
LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。
LED显示器是由若干个发光二极管组成显示字段的显示器件。
在单片机中使用最多的是七段数码显示器。
LED七段数码显示器由8个发光二极管组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。
LED引脚排列如下图3.4所示:
图3.4LED引脚排列
3.3.2LED显示器的选择
在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,数码管有两种:
一种共阴极、另一种为共阳极,本次课程设计用的是共阴极。
在本设计中,选择4位一体的数码型LED显示器。
本系统中前一位显示电压的整数位,即个位,后两位显示电压的小数位。
如图3.5所示,是一个共阴极接法的4位LED数码显示管,其中a,b,c,d,e,f,g为4位LED各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端,4位一体LED数码显示管的内部结构是由4个单独的LED组成,每个LED的段输出引脚在内部都并联后,引出到器件的外部。
图3.5共阴极4位一体LED数码显示管
3.3.3LED译码方式
译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。
硬件译码是指利用专门的硬件电路来实现显示字符码的转换。
软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序。
本设计采用的是共阴极LED,其对应的字符和字段码如下表3.6所示。
表3.6共阴极字段码表
显示字符
共阴极字段码
0
3FH
1
06H
2
5BH
3
4FH
4
66H
5
6DH
6
7DH
7
07H
8
7FH
9
6FH
4硬件连接
4.1模拟输入电路
模拟输入电路如图4.1所示
图4.1 模拟输入电路
通过可变电阻一端接电源+5V,一端接地GND,在并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电压表 设计