1、目录 摘要 . I 1 绪论 . 1 1.1 数字电压表介绍 . 1 1.2 仿真软件介 绍 . 1 1.3 本次设计要求 . 2 2 单片机和 AD 相关知识 . 3 2.1 51 单片机相关知识 . 3 2.2 AD 转换器相关知识 . 4 3 数字电压表系统设计 . 5 3.1 系统设计框图 . 5 3.2 单片机电路 . 5 3.3 ADC 采样电路 . 6 3.4 显示电路 . 6 3.5 供电电路和参考电压 . 7 3.6 数字电压表系统电路原理图 . 7 4 软件设计 . 8 4.1 系统总流程图 . 8 4.2 程序代码 . 8 5 数字电压表电路仿真 . 15 5.1 仿真总
2、图 . 15 5.2 仿真结果显示 . 15 6 系统优缺点分析 . 16 7 心得体会 . 17 参考文献 . 18 1 绪论 1.1 数字电压表 介绍 数字电压表简称 DVM, 数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。而 A/D 转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分 组成。因此 AD 转换是此次设计的核心元件。输入的模拟量经过 AD 转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。 本次自己的设计作品从各个角度分析了 AD 转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并
3、且分析了数模转换进而使系统运行起来的原理及方法。通过自己的实践提高了动手能力,也只有亲历亲为才能 收获掌握到液晶学过的知识。其实也为建立节约成本的意识有些帮助。本次设计同时也牵涉到了几个问题: 精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。 1.2 仿真软件 介绍 Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于 Windows操作系统上,可以仿真、分析 (SPICE)各种模拟器件和集成电路,该软件的特点是 : (1)现了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其
4、外围电路组成的系统的仿真、 RS232 动态仿真、 I2C 调试器、 SPI 调试器、键盘和LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 (2)支持主流单片机系统的仿真。目前支持的单片机类型有: 68000 系列、 8051 系列、AVR 系列、 PIC12 系列、 PIC16 系列、 PIC18 系列、 Z80 系列、 HC11 系列以及各种外围芯片。 (3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 Keil
5、 C51 uVision2 等软件。 (4)具有强大的原理图绘制功能。 可以仿真 51 系列、 AVR、 PIC、 ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等, Proteus 建立了完备的电子设计开发环境。 在 PROTEUS 绘制好原理图后,调入已编译好的目标代码文件: *.HEX,可以在PROTEUS 的原理图中看到模拟的实物运行状态和过程。 PROTEUS 是单片机课堂教学的先进助手。 PROTEUS 不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在
6、相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。 它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。 课程设计、毕业设计是学生走向就业的重要实践环节。由于 PROTEUS 提 供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台 。 1.3 本次设计要求 本次设计的作品要求制作数字电压表的量程为 0 到 10v,由于用到的模数转换芯片是ADC08
7、09,设计系统给的供电电压为 +5v,所以能够测量的电压范围为 -0.25v 到 5.25v 之间,但是一般测量的直流电压范围都在这之上,所以采用电阻分压网络,设计的电压测量范围是 0 到 25v 之间,满足设计要求的最大量程 5v 的要求。同时设计的精度为小 数点后三位,满足要求的两位小数的精度,在不考虑 AD 芯片的量化误差的前提下,此次设计的精度能够满足一般测量的要求 。 2 单片机和 AD 相关知识 2.1 51 单片机相关知识 51 单片机是对目前所有兼容 intel 8031 指令系统的单片机的统称。该系列单片机的始祖是 intel 的 8031 单片机,后来随着技术的发展,成为目
8、前广泛应用的为单片机之一。单片机是在一块芯片内集成了 CPU、 RAM、 ROM、 定时器计数器和多功能 I/O 口等计算机所需要的基本功能部件的大规模集成电路,又称为 MCU。 51 系列单片机 内包含以下几个部件: 一个位 CPU;一个片内振荡器及时钟电路; 4KB 的 ROM 程序存储器; 一个 128B 的 RAM 数据存储器; 寻址 64KB 外部数据存储器 和 64KB 外部程序存储空间的控制电路; 32 条可编程的 I/O 口线; 两个 16 位定时计数器; 一个可编程全双工串行口; 个中断源、两个优先级嵌套中断结构。 51 系列单片机如下图: P1.01P1.12P1.23P1
9、.34P1.45P1.56P1.67P1.78RST9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P2.7/A1528PSEN29ALE30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U189S52图 1 51 单片机引脚图 2.2 A
10、D 转换器相关知识 ADC0809 是美国国家半导体公司生产的 CMOS 工艺 8 通道, 8 位逐次逼近式 转换器。 其内部有一个 8 通道多路开关,它可以根 据地址码锁存译码后的信号,只选通 8 路模拟输入信号中的一个进行 A/D 转换。 ( 1) 主要特性 : 1) 8 路输入通道, 8 位 A/D 转换器,即分辨率为 8 位。 2)具有转换起停控制端。 3)转换时间为 100s(时钟为 640kHz 时 ), 130s(时钟为 500kHz 时) 4)单个 +5V 电源供电 5)模拟输入电压范围 0 +5V,不需零点和满刻度校准。 6)工作温度范围为 -40 +85 摄氏度 7)低功耗
11、,约 15mW。 ( 2) 内部结构 ADC0809 是 CMOS 单片型逐次 逼近式 A/D 转换器,内部结构如图 13 22 所示,它由8 路模拟开关、地址锁存与译码器、比较器、 8 位开关树型 A/D 转换器、逐次逼近寄存器、逻辑控制和定时电路组成。 IN31IN42IN53IN64IN75START6EOC7D38OE9CLK10VCC11REF+12GND13D114D215REF-16D017D418D519D620D721ALE22ADD C23ADD B24ADD A25IN026IN127IN228U?ADC0809N图 2 ADC0909 引脚 3 数字电压表 系统设计 3
12、.1 系统设计框图 此次设计的是数字电压表,要求的电压范围是 05v,而设计扩展的量程为 025v。 系统设计主要包括四个部分:分别是电源模块、 AD 模数转换部分、 51 单片机最小系统部分、1602 液晶显示部分。 首先由单片机初始化 ADC0809 模数转换芯片和 1602 液晶显示,当外接被测电压后, ADC0809 将模拟电压信号转换为数字信号输入到单片机的 I/O 口,通过单片机处理后将电压的大小显示在 1602 液晶上面。 如下是本次设计作品的框图: A D 模 数 转 换 5 1 单 片 机 1 6 0 2 液 晶 显 示电 源 模 块图 3 系统框图 3.2 单片机 电路 单
13、片机最小系统如下图所示 , 各个引脚都已经标出,而且四个 I/O 口都已经用排阵引出,方便外接 I/O 扩展用。 P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P2.7/A1528PSEN29ALE30EA/VPP31P0.73
14、2P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U189S5212Y1XTAL30pFC630pFC7GNDVCCS11KR11KR3100pFC8VCCGND3.03.13.23.33.43.53.63.70.00.10.20.30.40.50.60.71.01.11.21.31.41.51.61.72.02.12.22.32.42.52.62.712345678P1Header 812345678P2Header 812345678P5Header 812345678P4Header 8VCCGND图 4 单片机最小系统 3.3 ADC 采样
15、电路 由于 ADC0809 是带地址锁存的模数转换器件, ADDA、 ADDB、 ADDC 为模拟通道选择,编码为 000111分别选中 IN0IN7。 ALE为地址锁存信号,其上升沿锁存 ADDA、 ADDB、ADDC 的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。 CLK 为输入时钟,为 AD 转换器提供转换的时钟信号,典型工作频率为 640KHz。 START 为 AD 转换启动信号,正脉冲启动 ADDAADDC 选中的一路模拟信号开始转换。 OE 为输出允许信号,高电平时候打开三态输出缓存器,是转换后的数字量从 D0D7 输出。 EOC 为转换结束信号,启动转换后 EOC
16、变为低电平,转换完成后 EOC 编程高电平。 IN31IN42IN53IN64IN75START6EOC7D38OE9CLK10VCC11REF+12GND13D114D215REF-16D017D418D519D620D721ALE22ADD C23ADD B24ADD A25IN026IN127IN228U?ADC0809N1.11.21.31.41.51.61.71.0VCCGNDGND3.03.13.23.33.43.53.63.70.60.70.52.12.22.32.4图 5 ADC 模数转换 3.4 显示 电路 以下是 1602 液晶引脚的接线图,中间没有接线的为数据控制端口。
17、1602 字符型通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条线是背光电源线 VCC(15 脚 )和地线GND(16 脚 ),其控制原理与 14 脚的 LCD 完全一样 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16P3Header 161KR2VCCVCCGNDGND1KR4VCC图 6 1602 引脚图 3.5 供电 电路 和参考电压 由于此次系统的芯片工作电压为 +5v,所以用常用的三端稳压器 LM317 和 LM337 构成的电源系统供电,其中 ADC0809 要提供一个准确的参考电源才能正常的工作,而 LM317正好能够达到要求
18、。 图 7 系统供 电部分 3.6 数字电压表 系统电路原理图 如下是此次数字电压表系统的总原理图,其中的连线用网络标号表示出来,省去了连线的麻烦,而且是总图的可读性增强。 P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P2.7
19、/A1528PSEN29ALE30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U189S5212Y1XTAL30pFC630pFC7GNDVCCS11KR11KR3100pFC8VCCGND3.03.13.23.33.43.53.63.70.00.10.20.30.40.50.60.71.01.11.21.31.41.51.61.72.02.12.22.32.42.52.62.712345678P1Header 812345678P2Header 812345678P5Header 812345678P4Header
20、 812345678910111213141516P3Header 161KR2VCCVCCGNDGND1KR4VCCVCCGNDIN31IN42IN53IN64IN75START6EOC7D38OE9CLK10VCC11REF+12GND13D114D215REF-16D017D418D519D620D721ALE22ADD C23ADD B24ADD A25IN026IN127IN228U?ADC0809N1.11.21.31.41.51.61.71.0VCCGNDGNDVCC3.03.13.23.33.43.53.63.70.60.70.52.12.22.32.4图 8 数字电压表总原理
21、图 4 软件设计 4.1 系统总流程图 此次设计的数字电压表系统比较简单,就设置了一个量程为 025v,所以没有用到按键控制,也没有其他的功能,因此程序比较简单, 在输入模拟信号时采用电阻分压,最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中要编写一段数据调整程序, 如下为系统总流程图: 图 9 系统流程图 4.2 程序代码 /*电压表 */ #include #include/库函数头文件,代码中引用了 _nop_()函数 /*ADC 初始定义 */ sbit start=P30; /转换开始控制 sbit oe=P32; /输出允许控制 sbit eoc=P31; /转换结束
22、信号 开始 结束 初始化 AD 采样量化 液晶显示 sbit clock=P33; /转换时钟 sbit 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 d1,d2,d3; unsigned char dat; /数字电压量 unsigned char
23、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(); /软件实现延时函数, 5 个机器周期 /*显示函数部分 */ void display(unsigned char dat) temp=5*dat; /量程扩大五倍 da0=temp/51/10; /十位 da1=temp/51%10; /个位 d1=temp%51; d1=d1*10;