1、1.1 数字电压表介绍数字电压表简称 DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。而 A/D 转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。因此 AD 转换是此次设计的核心元件。输入的模拟量经过 AD 转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。本次自己的设计作品从各个角度分析了 AD 转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。其实也为建立节约成
2、本的意识有些帮助。本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。1.3 本次设计要求本次设计的作品要求制作数字电压表的量程为 0 到 10v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v,所以能够测量的电压范围为-0.25v 到 5.25v 之间,但是一般测量的直流电压范围都在这之上,所以采用电阻分压网络,设计的电压测量范围是 0 到 25v 之间,满足设计要求的最大量程 5v 的要求。同时设计的精度为小数点后三位,满足要求的两位小数的精度,在不考虑 AD 芯片的量化误差的前提下,此次设计的精度能
3、够满足一般测量的要求。武汉理工大学单片机原理与应用课程设计说明书12 单片机和 AD 相关知识2.1 51 单片机相关知识51 单片机是对目前所有兼容 intel 8031 指令系统的单片机的统称。该系列单片机的始祖是 intel 的 8031 单片机,后来随着技术的发展,成为目前广泛应用的为单片机之一。单片机是在一块芯片内集成了 CPU、RAM 、ROM 、定时器计数器和多功能 I/O 口等计算机所需要的基本功能部件的大规模集成电路,又称为 MCU。51 系列单片机内包含以下几个部件:一个位 CPU;一个片内振荡器及时钟电路;4KB 的 ROM 程序存储器;一个 128B 的 RAM 数据存
4、储器;寻址 64KB 外部数据存储器和 64KB 外部程序存储空间的控制电路;32 条可编程的 I/O 口线;两个 16 位定时计数器;一个可编程全双工串行口;个中断源、两个优先级嵌套中断结构。51 系列单片机如下图: P.0345678RST9/xDINWXALVECU图 1 51 单片机引脚图武汉理工大学单片机原理与应用课程设计说明书22.2 AD 转换器相关知识ADC0809 是美国国家半导体公司生产的 CMOS 工艺 8 通道,8 位逐次逼近式转换器。其内部有一个 8 通道多路开关,它可以根据地址码锁存译码后的信号,只选通 8路模拟输入信号中的一个进行 A/D 转换。(1)主要特性:1
5、)8 路输入通道,8 位 A/D 转换器,即分辨率为 8 位。 2)具有转换起停控制端。 3)转换时间为 100s(时钟为 640kHz 时),130s(时钟为 500kHz 时) 4)单个+5V 电源供电 5)模拟输入电压范围 0+5V,不需零点和满刻度校准。 6)工作温度范围为-40+85 摄氏度 7)低功耗,约 15mW。 (2)内部结构ADC0809 是 CMOS 单片型逐次逼近式 A/D 转换器,内部结构如图 1322 所示,它由 8 路模拟开关、地址锁存与译码器、比较器、8 位开关树型 A/D 转换器、逐次逼近寄存器、逻辑控制和定时电路组成。 INSTAREOCD9LKVF+G-B
6、U?图 2 ADC0909 引脚武汉理工大学单片机原理与应用课程设计说明书33 数 字电压表系统设计3.1 系统设计框图此次设计的是数字电压表,要求的电压范围是 05v,而设计扩展的量程为 025v。系统设计主要包括四个部分:分别是电源模块、AD 模数转换部分、51 单片机最小系统部分、1602 液晶显示部分。首先由单片机初始化 ADC0809 模数转换芯片和 1602 液晶显示,当外接被测电压后,ADC0809 将模拟电压信号转换为数字信号输入到单片机的 I/O 口,通过单片机处理后将电压的大小显示在 1602 液晶上面。如下是本次设计作品的框图:A D 模数转换 5 1 单片机 1 6 0
7、 2 液晶显示电源模块图 3 系统框图 3.2 单片机电路单片机最小系统如下图所示,各个引脚都已经标出,而且四个 I/O 口都已经用排阵引出,方便外接 I/O 扩展用。 P.478RST9/xINWXLVECUYpFGKHeadr图 4 单片机最小系统武汉理工大学单片机原理与应用课程设计说明书43.3 ADC 采样电路由于 ADC0809 是带地址锁存的模数转换器件,ADDA、ADDB、ADDC 为模拟通道选择,编码为 000111 分别选中 IN0IN7。ALE 为地址锁存信号,其上升沿锁存ADDA、ADDB、ADDC 的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。CLK 为输入
8、时钟,为 AD 转换器提供转换的时钟信号,典型工作频率为640KHz。START 为 AD 转换启动信号,正脉冲启动 ADDAADDC 选中的一路模拟信号开始转换。OE 为输出允许信号,高电平时候打开三态输出缓存器,是转换后的数字量从D0D7 输出。 EOC 为转换结束信号,启动转换后 EOC 变为低电平,转换完成后 EOC 编程高电平。 IN312567STAREOCD89LK0VF+G-BU?.图 5 ADC 模数转换3.4 显示电路以下是 1602 液晶引脚的接线图,中间没有接线的为数据控制端口。 1602 字符型通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条线是背
9、光电源线 VCC(15 脚)和地线 GND(16 脚 ),其控制原理与 14 脚的 LCD 完全一样: PHeadr图 6 1602 引脚图武汉理工大学单片机原理与应用课程设计说明书53.5 供电电路和参考电压由于此次系统的芯片工作电压为+5v,所以用常用的三端稳压器 LM317 和 LM337 构成的电源系统供电,其中 ADC0809 要提供一个准确的参考电源才能正常的工作,而LM317 正好能够达到要求。图 7 系统供电部分3.6 数字电压表系统电路原理图如下是此次数字电压表系统的总原理图,其中的连线用网络标号表示出来,省去了连线的麻烦,而且是总图的可读性增强。 P1.023468RST9
10、/xDINWXALVECUYpFGKHeadrO+-B?图 8 数字电压表总原理图武汉理工大学单片机原理与应用课程设计说明书64 软件设计4.1 系统总流程图此次设计的数字电压表系统比较简单,就设置了一个量程为 025v,所以没有用到按键控制,也没有其他的功能,因此程序比较简单,在输入模拟信号时采用电阻分压,最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中要编写一段数据调整程序,如下为系统总流程图:开始结束初始化AD 采样量化液晶显示图 9 系统流程图4.2 程序代码/*电压表*/#include#include/库函数头文件,代码中引用了_nop_()函数/*ADC 初始定义*
11、/sbit start=P30; /转换开始控制sbit oe=P32; /输出允许控制sbit eoc=P31; /转换结束信号sbit clock=P33; /转换时钟武汉理工大学单片机原理与应用课程设计说明书7sbit P0_2=P02; /蜂鸣器sbit P0_5=P05;sbit P0_6=P06;sbit P0_7=P07; /*1602 液晶初始定义*/sbit RS=P00; /读控制sbit RW=P03; /写控制sbit E=P01; /使能端unsigned char da0,da1,da2,da3,da4;unsigned int temp;unsigned int
12、d1,d2,d3; unsigned char dat; /数字电压量unsigned char lcdd=“0123456789“;void lcd_w_cmd(unsigned char com); /写命令函数void lcd_w_dat(unsigned char dat); /写数据函数void display(unsigned char dat); /显示函数unsigned char lcd_r_start(); /读状态函数void int1(); /LCD 初始化函数void delay(unsigned char t); /可控延时函数void delay1(); /软件实
13、现延时函数,5 个机器周期/*显示函数部分*/void display(unsigned char dat)temp=5*dat; /量程扩大五倍da0=temp/51/10; /十位da1=temp/51%10; /个位d1=temp%51;d1=d1*10; da2=d1/51; /十分位武汉理工大学单片机原理与应用课程设计说明书8d2=d1%51;d2=d2*10;da3=d2/51; /百分位d3=d2%51;d3=d3*10;da4=d3/51; /千分位lcd_w_cmd(0x0c); /设置光标不显示、不闪烁delay(20);lcd_w_cmd(0xc0); /第二行起始显示地
14、址 0x80delay(20);delay(2); lcd_w_dat(V); /显示字符串 volatage is lcd_w_dat(o);lcd_w_dat(l); lcd_w_dat(a);lcd_w_dat(t);lcd_w_dat(a);lcd_w_dat(g);lcd_w_dat(e);lcd_w_dat( );/显示电压的大小 lcd_w_dat(lcddda0); /十位lcd_w_dat(lcddda1); /个位lcd_w_dat(.); /小数点 lcd_w_dat(lcddda2); /十分位lcd_w_dat(lcddda3); /百分位 lcd_w_dat(lcd
15、dda4); /千分位lcd_w_dat(V); /单位 武汉理工大学单片机原理与应用课程设计说明书9/*主函数*/void main()P0_2=1; /关蜂鸣器P0_5=P0_6=P0_7=0; /选择 000 第一通道int1(); /LCD 初始化while(1) start=0; start=1; /获得上升沿复位start=0; /获得下降沿启动转换,同时 ALE 开锁存doclock=clock; /时钟信号while(eoc=0); /等待转换结束,eoc=1 结束oe=1; /三态锁存缓冲器打开dat=P1; /数字电压信号输出oe=0; /三态锁存缓冲器关闭display(
16、dat);/*延时函数*/void delay(unsigned char t) unsigned char j,i;for(i=0;it;i+)for(j=0;j20;j+); 武汉理工大学单片机原理与应用课程设计说明书10/*延时函数 1*/void delay1() _nop_();_nop_();_nop_();/*LCD 初始化函数*/void int1() lcd_w_cmd(0x3c); / 设置工作方式lcd_w_cmd(0x0c); / 设置光标lcd_w_cmd(0x01); / 清屏lcd_w_cmd(0x06); / 设置输入方式lcd_w_cmd(0x80); / 设
17、置初始显示位置/*LCD 读状态函数*/返回值:返回状态字,最高位 D7=0,LCD 控制器空闲;D7=1,LCD 控制器忙unsigned char lcd_r_start() unsigned char s;RW=1; /RW=1,RS=0,读 LCD 状态delay1();RS=0;delay1();E=1; /E 端时序delay1();s=P2; /从 LCD 的数据口读状态delay1();武汉理工大学单片机原理与应用课程设计说明书11E=0;delay1();RW=0;delay1(); return(s); /返回读取的 LCD 状态字/*LCD 写命令函数*/void lcd
18、_w_cmd(unsigned char com) unsigned char i;do / 查 LCD 忙操作i=lcd_r_start(); / 调用读状态字函数i=i / 与操作屏蔽掉低 7 位 delay(2); while(i!=0); / LCD 忙,继续查询,否则退出循环RW=0;delay1();RS=0; / RW=0,RS=0 ,写 LCD 命令字delay1();E=1; /E 端时序delay1();P2=com; /将 com 中的命令字写入 LCD 数据口delay1();E=0;delay1();RW=1;delay(255);武汉理工大学单片机原理与应用课程设计
19、说明书12/*LCD 写数据函数*/void lcd_w_dat(unsigned char dat) unsigned char i;do / 查忙操作i=lcd_r_start(); / 调用读状态字函数i=i / 与操作屏蔽掉低 7 位 delay(2); while(i!=0); / LCD 忙,继续查询,否则退出循环RW=0;delay1();RS=1; / RW=1,RS=0 ,写 LCD 数据delay1();E=1; / E 端时序delay1();P2=dat; / 将 dat 中的显示数据写入 LCD 数据口delay1();E=0;delay1();RW=1;delay(
20、255);武汉理工大学单片机原理与应用课程设计说明书135 数字电压表电路仿真5.1 仿真总图为了验证此次设计原理图的正确性,在制作实物之前用专业软件做了仿真,在Proteus 软件中设置 AT89C51 单片机的晶振频率为 12 MHz。本电路 EA 接高电平,没有扩展片外 ROM。如下图是此次系统仿真的总原理图部分:图 8 仿真总图通过用 protues 软件的仿真发现此次设计的系统原理图能够实现电压的正确测量,而且电压的误差较小,1602 液晶屏能够正确显示出测量出来的结果。5.2 仿真结果显示如下图为此次仿真的测量电压的结果的截图:图 9 仿真结果显示武汉理工大学单片机原理与应用课程设
21、计说明书146 系统性能分析通过理论分析和电路仿真,现在对此次课程设计的数字电压表系统设计结果进行总结。通过仿真我们可以看到仿真结果和理论分析是相符合的,也即此次设计的系统能够在一定的条件下达到课程设计目的,实现对外接电压的测量,电路结构简单,但是可以看出在系统的稳定性及可靠性方面做得不够。具体体现在以下几个方面:(1)数字电压表系统中对于外界被测电压的变化反应不够灵敏,变化比较慢,主要是因为 ADC 模数转换芯片的转换速率不够;(2)数字电压表系统测量的外界电压不够准确,跟用示波器或者高精度的电压表测量的结果有偏差,主要是因为 ADC 芯片的位数不够;(3)而且 ADC 的参考电压不准确也会
22、造成测量结果的不准确;(4)另外很重要的影响因素是因为 AD 芯片的测量输入电压最大为 5v,而设计的是25v,量程扩大了五倍,运用的是电阻分压网络,如果用精密电阻可以做到很高的精度,而设计中用的是 5%误差的碳膜电阻,温度系数高,而且不稳定,这是很重要的一个影响因素。针对上述问题,理论上可以用一下方法进行改进:(1)在换用高精度的 ADC 芯片能够改善测量精度的问题,一般用 12 位 AD 既能满足要求;(2)制作高精度电压参考源,通过提高 ADC 模数转换芯片的参考电压的精度来提高测量的电压精度;(3)运用高精度的金属膜电阻构成分压网络,能够最大限度提高精度;(4)通过查阅书籍可以找到 A
23、DC0809 的误差系数和碳膜电阻的温度系数,然后在编程的时候进行软件的补偿和参数校正,能够最优化的用软件来补偿硬件的误差问题,这个在编程思想中是很重要的。虽然时间紧迫,最终按照仿真成功的原理图焊接实物,并调试,调试成功!而且在老师的指点下,使系统得到了最大优化的提高。武汉理工大学单片机原理与应用课程设计说明书157 心得体会通过与同学的讨论与认真计算设计分析所完成的,课程设计的任务是设计、组装并调试一个数字电压表测量系统。需要我们综合运用单片机等课程的知识,通过查阅资料、方案论证与选定;设计和选取电路和元器件;分析指标及讨论,完成设计任务。在这次课程设计中,我学会了怎样去根据课题的要求去设计
24、电路和调试电路。动手能力得到很大的提高。从中我发现自己并不能很好的熟练去使用我所学到的高频电路知识。在以后学习中我要加强对使用电路的设计和选用能力。但由于电路比较简单、定型,而不是真实的生产、科研任务,所以我们基本上能有章可循,完成起来并不困难。把过去熟悉的定型分析、定量计算逐步,元器件选择等手段结合起来,掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。这对今后从事技术工作无疑是个很好的训练。通过这种综合训练,我们可以掌握电路设计的基本方法,提高动手组织实验的基本技能,培养分析解决电路问题的实际本领,为以后毕业设计和从事电子实验实际工作打下基础。同时也让我充分认识到自己的空想与实践的差
25、别,认识莫眼高手低,莫闭门造车,知识都在不断更新和流动之中,而扎实的基础是一切创造的源泉,只有从本质上理解了原理,才能更好的于疑途寻求柳暗花明,实现在科学界的美好畅游和寻得创造的快乐。还有就是每次在组团做试验都会感觉特别的充实,我们可以按照自己设计的电路去完成,老师也不是死板的要求我们怎么怎么,而是给了我们尽可能大的自己决定的余地,这次的元器件都是按照我们设计出来的电路参数给定的,而且每位老师都很耐心的为我们解决试验中所出现的问题,最后真心的感谢老师对我们课程设计的建议和帮助,我们才得以圆满的完成这次课程设计!武汉理工大学单片机原理与应用课程设计说明书16参考文献1李群芳,张士军,黄建 .单片微型计算机与接口技术. 北京:电子工业出版社,20082李群芳.单片机原理接口与应用.北京:清华大学出版社,20053张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,19994高峰.单片微机应用系统设计及使用技术.北京:机械工业出版社,20075彭伟.单片机 c 语音程序设计实例基于 protues 仿真.北京:电子工业出版社,2007