基于单片机的数字电压表文档格式.docx
《基于单片机的数字电压表文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电压表文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
![基于单片机的数字电压表文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/9/f336a4dd-69e1-4e05-87de-250d0aa21563/f336a4dd-69e1-4e05-87de-250d0aa215631.gif)
其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89S51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号。
2总体方案设计
2.1方案论证
方案一:
硬件电路设计由6个部分组成;
A/D转换电路,AT89S51单片机系统,LED显示系统、时钟电路、复位电路以及测量电压输入电路。
硬件电路设计框图如图2.1所示。
2.1数字电压表系统硬件设计框图
方案二:
用ICL713与单片机AT89C52构成电压表系统。
ICL713的串行方式在实践中应用效果很好。
方框图如图2.2。
图2.2电压表系统框图
2.2方案比较及选择
方案一和方案二在实际应用各有各地特点。
但方案一应用方便,原理易懂,结构简单,器件易购买;
方案二中用到ICL713,但不太熟悉。
所以选择方案一。
3硬件电路设计
3.1AD转换电路
电路图如图3-1所示。
在选择输入端时,是将A、B、C赋值为低电平,选择IN0作为输入端。
图3—1AD转换原理图
3.2复位电路
单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51单片机有一个复位引脚RST,采用施密特触发输入。
当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位[1]。
复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。
单片机的复位方式有上电自动复位和手动复位两种,图3-2是51系列单片机统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作。
图3-2复位电路
3.3时钟电路
单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。
CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。
MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。
本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和2个电容即可,如图3-3所示。
图3-3时钟电路原理图
电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±
10pF,在这个系统中选择了33pF;
石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。
3.4显示电路
显示电路是显示测量输入电压的数字。
如图3-4所示。
图3-4显示电路原理图
3.5特殊器件介绍
3.5.1主控芯片AT89S51
单片机AT89S51功能介绍
AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,AT89S51芯片引脚图如图3-5所示。
图3-5AT89S51芯片引脚图
3.5.2ADC0808
ADC0808是CMOS单片型逐次逼近式A/D转换器,带有使能控制端,与微机直接接口,片内带有锁存功能的8路模拟多路开关,可以对8路0-5V输入模拟电压信号分时进行转换,由于ADC0808设计时考虑到若干种模/数变换技术的长处,所以该芯片非常适应于过程控制,微控制器输入通道的接口电路,智能仪器和机床控制等领域[5]。
ADC0808主要特性:
8路8位A/D转换器,即分辨率8位;
具有锁存控制的8路模拟开关;
易与各种微控制器接口;
可锁存三态输出,输出与TTL兼容;
转换时间:
128μs;
转换精度:
0.2%;
单个+5V电源供电;
模拟输入电压范围0-+5V,无需外部零点和满度调整;
低功耗,约15mW。
ADC0808芯片有28条引脚,采用双列直插式封装,其引脚图如图3-6所示。
图3-6ADC0808引脚图
下面说明各个引脚功能:
IN0-IN7(8条):
8路模拟量输入线,用于输入和控制被转换的模拟电压。
地址输入控制(4条):
ALE:
地址锁存允许输入线,高电平有效,当ALE为高电平时,为地址输入线,用于选择IN0-IN7上那一条模拟电压送给比较器进行A/D转换。
ADDA,ADDB,ADDC:
3位地址输入线,用于选择8路模拟输入中的一路,其对应关系如表3-1所示:
表3-1ADC0808通道选择表
地址码
对应的输入通道
C
B
A
0
1
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
START:
START为“启动脉冲”输入法,该线上正脉冲由CPU送来,宽度应大于100ns,上升沿清零SAR,下降沿启动ADC工作。
EOC:
EOC为转换结束输出线,该线上高电平表示A/D转换已结束,数字量已锁入三态输出锁存器。
D1-D8:
数字量输出端,D1为高位。
OE:
OE为输出允许端,高电平能使D1-D8引脚上输出转换后的数字量。
REF+、REF-:
参考电压输入量,给电阻阶梯网络供给标准电压。
Vcc、GND:
Vcc为主电源输入端,GND为接地端,一般REF+与Vcc连接在一起,REF与GND连接在一起.
CLK:
时钟输入端。
3.5.3LED
LED是发光二极管显示器的缩写。
LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。
LED显示器是由若干个发光二极管组成显示字段的显示器件[6]。
在单片机中使用最多的是七段数码显示器。
LED七段数码显示器由8个发光二极管组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。
LED引脚排列如下图3-7所示:
图3-7LED引脚排列
在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,在本设计中,选择8位一体的数码型LED显示器,简称“8-LED”。
如图3-8所示。
图3-8LED显示器
4软件部分设计
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图4-1所示。
图4-1数字式直流电压表主程序框图
4.1A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图4-2所示。
图4-2A/D转换流程图
4.2显示子程序
显示子程序采用动态扫描实现八位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。
在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11μs定时,通过软件延时程序来实现5ms的延时。
5电路仿真
5.1软件调试
软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。
Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。
Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。
Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与uVisions3IDE工具软件结合进行编程仿真调试[8]。
本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。
5.2显示结果及误差分析
1.当IN0口输入电压值为0V时,显示结果如图5-1所示,测量误差为0V。
图5-1输入电压为0V时,LED的显示结果
2.当IN0输入电压值为1.50V时,显示结果如图5-2所示。
测量误差为0.01V。
图5-2输入电压为1.50V时,LED的显示结果
3.当IN0口输入电压值为3.50V时,显示结果如图5-3。
图5-3输入电压为3.50V时,LED的显示结果
通过以上仿真测量结果可得到简易数字电压表与“标准”数字电压表对比测试表,如下表5-1所示:
表5-1简易数字电压表与“标准”数字电压表对比测试表
标准电压值/V
简易电压表测量值/V
绝对误差/V
0.00
0.50
0.51
0.01
1.00
1.50
1.51
2.00
2.50
3.00