高精度数字电压表原理图及源程序
简易数字电压表(共13张PPT)

元器件清单
元器件名称 参数 数量
IC插座 DIP40 1
IC插座 DIP14 1
晶体振荡器 12MHz 1
瓷片电容 30pF 2
共阳极数码管
2
单片机 89C51 1
弹性按键
1
电阻
510Ω 2
电阻
300Ω 16
元器件名称 参数 数量
电阻
10KΩ 1
可调电阻
5KΩ
1
模数转换器 ADC0809 1
双D触发器 74LS74 1
// P0_2=0,则OE=1,允许读数
简易数字电压表硬件电路
P0_2=0;
//在引脚产生下降沿,START和ALE引脚产生上升沿
//锁存通道地址,所有内部寄存器清零
第十二页,共13页。
第十三页,共13页。
焊好电阻后,接通电 源后,发现数码管只 有一路电压值。再次 检查电路板无误后, 确定是实验程序出现 问题。经过修改程序 后,将新程序烧到单 片机中,数码管稳定 显示
第十一页,共13页。
任务小结
简易数字电压表的制作,涉及A/D转换芯片 0~5V的模拟电压信号通过调节电位器来获得。
void main() //主函数
while(1)
{
P0_2=1;
for(a=0;a<50;a++); //延时
P0_2=0;
//在引脚产生下降沿,START和ALE引脚产生上升沿
//锁存通道地址,所有内部寄存器清零
for(a=0;a<50;a++); //延时
P0_2=1;
//在上产生上升沿,START上产生下降沿,A/D转换开始
片机进行数据采集
基于STC15S2K60单片机数字电压表

信息与电气工程学院《单片机课程设计报告》题目:专业:班级:姓名:学号:指导教师:2信息与电气工程学院课程设计任务书20 —20 学年第学期专业:班级:学号:姓名:课程设计名称:设计题目:完成期限:自年月日至年月日共周设计依据、要求及主要内容(可另加附页):指导教师(签字):批准日期:年月日目录一、课程设计的目的 (4)二、实验要求 (4)三、设计方案的描述 (4)四、硬件原理图 (5)五、基本原理和元器件说明 (5)1. ADC原理和内部结构 (5)2. TL431的功能与应用 (6)3. 74HC595简介 (7)六、程序流程图 (7)七、源程序清单 (8)八、心得体会 (12)九、参考文献 (12)一、课程设计的目的通过《单片机原理与应用》这门课的课程设计,学生应能对STC15系列单片机有一个全面的认识,掌握以STC15系列单片机为核心的电子电路的设计方法和应用技术。
(1) 1.进一步掌握ADC转换的原理和编程方法。
(2) 2.进一步掌握TL431基准电压的原理及使用方法。
(3) 3.进一步掌握中断处理程序的编程方法。
二、实验要求用STC15F2K60S2单片机和ADC0809构成数字电压表,测量0-5v的电压,将所测电压用4位数码管动态显示出来。
三、设计方案的描述1.读ADC测量外部电压,使用外部TL431基准计算电压,计算公式为g = (u16)((u32)j *2.5 / Bandgap),Bandgap为基准电压数字量,j为相应按键模拟量逐次比较后对应的数字量,g为测得的相应按键电压。
2.用STC的MCU的IO方式控制74HC595驱动8位数码管。
3.用户可以修改宏来选择时钟频率。
使用Timer0的16位自动重装来产生1ms节拍,程序运行于这个节拍下, 用户修改MCU主时钟频率时,自动定时于1ms。
4.右边4位数码管显示测量的电压值,左边4位数码管显示的是基准电压值。
5.外部电压从板上测温电阻两端输入, 输入电压0~VDD, 不要超过VDD或低于0V。
8路电压数字表C源程序

8路数字电压表测量由A/D转换、数据处理及显示控制等组成,测量0~5V范围内的8路输入电压值,由4位共阳LED数码管轮流显示,最大分辨率0.01V,误差±0.02V。
使用AT89C52单片机,ADC0809A/D转换集成蕊片,单片机P1口、P3.0~P3.3口作4位LED数码显示控制。
P3.5端口按钮作单路/循环显示转换,P3.6为单路显示时作通道选择。
ADC0809具有8路模拟信号输入端口,地址线23~25脚为模拟信号输入选择端口,22脚为地址锁存控制,当输入高电平时对地址信号进行锁存,6脚为开始A/D模数转换,7脚为A/D转换结束标志,结束时输出高电平,A/D转换后的数据由9脚输出到单片机P2.5脚。
C源程序:/***********************************************************************************/// 8路电压表C源程序// Keil c51 v7.08/***********************************************************************************//*使用AT89C52单片机,11.0592MHz晶振,P0口读入A/D值,P2口作A/D控制,用共阳LED数码管,P1口输出段码,P3口扫描,最高位指示通道(0~7)*/#include <reg52.h> //51系列单片机定义文件#include <intrins.h> //调_nop_(),延时函数用#define ad_con P2 //A/D控制口#define addata P0 //A/D数据计入读入口#define Disdata P1 //显示数据段码输出口#define uchar unsigned char //无符号字符(8位)#define uint unsigned int //无符号整数(16位)sbit ALE=P2^3; //锁存地址控制位sbit STARA=P2^4; //启动一次转换位sbit OE=P2^5; //0890输出数据控制位sbit EOC=P3^7; //转换结束标志位sbit DISX=Disdata^7; //LED 小数点位////unsigned char code dis_7[11]={0xc0,0xf9,0xa4,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};/*共阳7段LED段码表"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮"*/unsigned char code scan_con[4]={0xfe,0xfd,0xfb,0xf7};//4位列扫控制字unsigned char data ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//定义8个数据内存单元unsigned int data dis[5]={0x00,0x00,0x00,0x00,0x00};//定义4个显示数据单元和一个数据存储单元/////********1ms延时子函数*********/delay1ms(unsigned int t){uint i,j;for(i=0;i<t;i++);for(j=0,j<120,j++);}/////**********显示扫描子函数**********/scan(){unsigned char k,n;int h;dis[3]=0x00; //通道初值为0for(n=0;n<8;n++);//每次显示8个数据(就是此处出错){dis[2]=ad_data[n]/51; //测得值转换为3个BCD码,最大值为5.00V dis[4]=ad_data[n]%51; //余数暂存dis[4]=dis[4]*10; //计算小数第一位dis[1]=dis[4]/51;dis[4]=dis[4]%51;dis[4]=dis[4]*10; //计算小数第二位dis[0]=dis[4]/51;for(h=0;h<500;h++) //每个通道值显示控制时间(约1S){for(k=0;k<4;k++) //4位LED扫描控制{Disdata=dis_7[dis[k]];if(k==2){DISX=0;}P3=scan_con[k];delay1ms(1);P3=0xff;}}dis[3]++; //通道值加1}}/////**********0809AD转换子函数**********/test(){unsigned char m;unsigned char s=0x00;ad_con=s;for(m=0,m<8;m++);{ALE=1;_nop_();_nop_();ALE=0; //转换通道地址锁存START=1;_nop_();_nop_();START=0; //开始转换命令_nop_();_nop_();_nop_();_nop_(); //延时4uswhile(ECO==0); //等待转换结束OE=1;ad_data[m]=addata;OE=0;s++;ad_con=s;//取A/D值,地址加1 }ad_con=0x00; //控制复位}/////**********主函数**********/main(){P0=0xff; //初始端口P2=0x00;P1=0xff;P3=0xff;while(1){scan(); //依次显示8个通道1次test(); //测量转换一次}}/////**********结束**********//。
采用单片机技术的高精度电压表

采用单片机技术的高精度电压表用高精度、高稳定性的元器件和放大电路设计成的高精度区间式电压表,其优点、详细工作原理和应用实例详见本刊2003年第12期《高精度区间式电压表》一文。
这里介绍一种高精度电压表。
运用区间式电压表的基本原理,用单片机制作成高精度电压表,它可自动变换测量范围、计算测量值和显示测量结果。
实现对被测电压大范围、全量程的高精度测量。
图1是分挡区间式电压表的原理图。
分挡式区间电压表是把全量程根据需要分成数个区间段,例如,把2~10V的量程分成2~3V、3~4V……9~10V八个区间,波段开关的八个挡对应各区间,通过分别调定每一个区间的调零电位器W1、增益调整电位器W2实现各区间段的覆盖。
分挡式区间式电压表实现了全量程测量,应用更加方便,可以实现一表多用,例如在计量时对多个电压点的测量、对已知电压的高精度测量等。
缺点是需要手动换挡,对未知电压的测量不太方便。
高精度电压表原理1.工作原理在图1分挡式区间电压表的基础上,采用单片机自动控制,通过自动换挡、自动测量、自动修正误差、计算和输出测量结果,成为一种实用的全量程、高精度电压表,见图2所示。
图中,增加了带有A/D模数转换电路的单片机IC4,将测量的模拟量用单片机进行处理;调零电位器W1和增益调整电位器W2换成可程控的线性数字电位器,其阻值的大小由单片机进行调整,实现自动换挡,测量结果用LCD数字显示。
2.制作过程中区间的标定和划分标定是用标准电压对起始值和终止值进行调整,区间划分是把全量程划分成若干个部分。
假如全量程为0~100V,进入标定子程序完成标定,得到一对W1 、W2 阻值的控制数据;电压表的全量程假设每10V一个区间,划分为0~10V、10~20V、……90~100V十个区间,假如测量是线性的,程序就可以计算出十对W1 、W2 阻值的控制数据,连同标定时的一对控制数据,全部存储在数据存储器E2PROM中以备调用。
3.测量过程测量过程是自动进行的。
数字电压表设计003

接口技术学生姓名:学号:学院:专业: 电子科学与技术题目: 数字电压表设计指导教师:数字电压表设计摘要:本课题实验主要采用AT89S51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5 V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示,测量误差约为0.02 V。
该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则由芯片AT89S51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。
显示模块主要由7段数码管及相应的驱动芯片(74HC245)组成,显示测量到的电压值。
实现方案:本实验采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1所示。
系统框图如图1-2所示。
图1-1 电路原理图图1-2 系统框图硬件选择方案:一.实验所需元器件:1. AT89S51芯片 1块2. ADC0809芯片 1块3. 74HC245芯片 2块4. 4位一体数码 1个5. 6MHz晶振1个6. 33pF电容2个7. 0.1uF滤波电容2个8. 10uF电解电容 1个9. 按键开关 1个10.发光二极管 1个11.4.7KΩ精密电位器1个12.510Ω电阻 12个13.8.2KΩ电阻1个14.10KΩ电阻1个15.导线若干二.主要元器件的介绍1.模数转换芯片ADC0809:ADC0809是典型的8位8通道逐次逼近式A/D转换器,其实物如图1-3所示。
它可以和微型计算机直接接口。
ADC0809转换器的系列芯片是ADC0808,可以相互替换。
1) ADC0809内部逻辑结构图1-4 ADC0809的内部逻辑结构及引脚图ADC0809的内部逻辑结构如图1-4所示。
基于STC15S2K60单片机数字电压表

信息与电气工程学院《单片机课程设计报告》题目:专业:班级:姓名:学号:指导教师:2信息与电气工程学院课程设计任务书20 —20 学年第学期专业:班级:学号:姓名:课程设计名称:设计题目:完成期限:自年月日至年月日共周设计依据、要求及主要内容(可另加附页):指导教师(签字):批准日期:年月日目录一、课程设计的目的 (4)二、实验要求 (4)三、设计方案的描述 (4)四、硬件原理图 (5)五、基本原理和元器件说明 (5)1. ADC原理和内部结构 (5)2. TL431的功能与应用 (6)3. 74HC595简介 (7)六、程序流程图 (7)七、源程序清单 (8)八、心得体会 (12)九、参考文献 (12)一、课程设计的目的通过《单片机原理与应用》这门课的课程设计,学生应能对STC15系列单片机有一个全面的认识,掌握以STC15系列单片机为核心的电子电路的设计方法和应用技术。
(1) 1.进一步掌握ADC转换的原理和编程方法。
(2) 2.进一步掌握TL431基准电压的原理及使用方法。
(3) 3.进一步掌握中断处理程序的编程方法。
二、实验要求用STC15F2K60S2单片机和ADC0809构成数字电压表,测量0-5v的电压,将所测电压用4位数码管动态显示出来。
三、设计方案的描述1.读ADC测量外部电压,使用外部TL431基准计算电压,计算公式为g = (u16)((u32)j *2.5 / Bandgap),Bandgap为基准电压数字量,j为相应按键模拟量逐次比较后对应的数字量,g为测得的相应按键电压。
2.用STC的MCU的IO方式控制74HC595驱动8位数码管。
3.用户可以修改宏来选择时钟频率。
使用Timer0的16位自动重装来产生1ms节拍,程序运行于这个节拍下, 用户修改MCU主时钟频率时,自动定时于1ms。
4.右边4位数码管显示测量的电压值,左边4位数码管显示的是基准电压值。
5.外部电压从板上测温电阻两端输入, 输入电压0~VDD, 不要超过VDD或低于0V。
MSP430数字电压表0-20V资料

H_CLK;
_NOP();
L_CLK;
_NOP();
H_CLK;
_NOP();
L_CLK;
_NOP();
H_Conv;
_NOP();
ADCdata &= 0x0fff;
return (ADCdata);
}
While(1)函数部分
while(1)
{
//LCD_write_hanzi(1,1,0);
IrDA 编码器和解码器
同步 SPI
I2C™
Nokia5110
5110液晶显示屏(PCD8544芯片),是通过发送指令和写入数据RAM来控制和显示数据的。
指令格式分为两种模式:
1、如果D/C(模式选择)置为低(为0),即位变量 dc = 0,为发送指令模式,那么接下来发送的8位字节解释为命令字节。
2、如果D/C置为高,即dc = 1; 为写入数据RAM模式,接下来的字节将存储到显示数据RAM。
L_CLK;
_NOP();
H_CLK;
_NOP();
for(i=0; i<12; i++)
{
L_CLK;
_NOP();
H_CLK;
_NOP();
ADCdata <<= 1;
if(P2IN & 0x02)
{
ADCdata |= 0x0001;
}
else
{
ADCdata &= 0xfffe;
}
}
L_CLK;
01risc架构625ns指令周期时间高达16mhz的内部频率具有4种校准频率内部超低功耗低频lf振荡器32khz晶体个捕获比较寄存器的两个16多达24个支持触摸感测的增强型uart可支持自动波特率检测linirda编码器和解码器同步spii2cnokia51105110液晶显示屏pcd8544芯片是通过发送指令和写入数据ram来控制和显示数据的
基于FPGA的数字电压表设计

基于FPGA数字电压表设计目录1系统设计 (3)1.1 控制模块方案的比较 (3)1.2 A/D转换方案的比较 (4)1.3 显示方案的比较 (4)1.4 总体方案设计 (5)1.5 系统的基本原理 (5)2 单元电路设计 (6)2.1 A/D转换部分 (6)2.1.1 ADC0809工作原理 (6)2.1.2 ADC0809工作时序 (7)2.1.3 档位控制电路 (8)2.2 FPGA功能模块的设计 (8)2.2.1 码制变换模块 (8)2.2.2 显示控制及驱动模块 (9)3 软件设计 (9)3.1 开发软件及编程语言简介 (9)3.2 程序流程图 (9)4 系统测试 (10)4.1 测试仪器清单 (10)4.2 测试及误差计算 (10)参考文献 (11)附录1 程序清单 (11)1 系统设计1.1控制模块方案的比较方案一:采用3位半数字电压表。
采用此方案电路结构简单,易于实现且易于维护。
它的核心器件是一个双积分式A/D转换,双积分式DVM属于V—T变换式,其基本原理是在一个测量周期内,首先将被测电压UX加到积分器的输入端,在确定的时间内进行积分,也称定时积分;然后切断UX,在积分器的输入端加与UX极性相反的电压UR,由于UR一定,所以称为定值积分,但积分方向相反,直到积分输出达到起始电平为止,从而将UX转换成时间间隔进行测量。
只要用计数器累计时间间隔内的脉冲数,即为UX之值。
其原理方框图如图1.1.1所示。
图1.1.1 3位半电压表原理图方案二:采用单片机为控制核心。
目前单片机技术比较成熟,功能也比较强大,配合一定的外围电路可实现数字电压表,原理图如图1.1.2所示。
输入信号经AD转换器转换后送到单片机进行数据处理,系统根据不同电压信号计算出不同的数值,并将其显示出来。
采用这种方案优点是呆以依赖地成熟的单片机技术、运算功能较强、软件编程灵活、自由度大、设计成本也较低,能较准确地测量输入电压。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U274LS37312/82CS3A04CE6R/C5REFOUT8REFIN1020VIN1410VIN13AGND9STS28DB1127DB1026DB925DB824DB723DB622DB521DB420DB319DB218DB117DB016VAS7VEE11BIPOFF12U3AD1674GND-15V+15V+10V-10V55%RV41k
50%RV2100
50%RV1
100
U5OP1P
RV4(3)234567891RP110k
VCC
VCC1
23
U4:A
74LS00D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3
LCD1LM016L
GND
?
LCD_CMD_WR EQU 00E0H LCD_DATA_WR EQU 00E1H LCD_BUSY_RD EQU 00E2H LCD_DATA_RD EQU 00E3H ;******************************** AD_12CMD_WR EQU 00E0H ;初始化为12位转换器 AD_8CMD_WR EQU 00E8H ;初始化为8位转换器 AD_8HB_RD EQU 00E4H ;高8Bit输出 AD_4LB_RD EQU 00ECH ;低4Bit输出 ;********************************* ORG 0000H LJMP MAIN ORG 0030H ;========================================= MAIN: MOV SP,#60H CLR RS0 CLR RS1 ACALL INIT ;LCD初始化 ;======================================= ;参数设置 ;======================================= AD574: MOV DPTR,#AD_12CMD_WR MOVX @DPTR,A ;启动转换 SETB P3.0 LOOP: NOP JB P3.0,LOOP MOV DPTR,#AD_8HB_RD MOVX A,@DPTR MOV R2,A MOV DPTR,#AD_4LB_RD MOVX A,@DPTR MOV R3,A ;======================================== ;数据处理(参数)传递 ;R2R3=(ABC0) ;处理后R2R3=(0ABC) ;======================================== MOV A,R2 SWAP A ;高低交换 MOV R5,A ANL A,#0F0H ; MOV R4,A MOV A,R3 SWAP A ORL A,R4 MOV R3,A MOV A,R5 ANL A,#0FH MOV R2,A ;======================================== ;入口参数:被减数在R2R3中,减数在R6R7中 ;出口参数:差值在R2R3中 ;======================================== MOV R6,#08H MOV R7,#00H CLR C ;============= MOV A,R2 SUBB A,R6 JNC SUBI ;无借位,直接运算 SETB 02H MOV A,R2 CPL A ;取反 ANL A,#0FH MOV R2,A MOV A,R3 CPL A MOV R3,A ;=========================== ;计算 ;========================== SUBI: CLR C MOV A,R3 SUBB A,R7 MOV R3,A MOV A,R2 SUBB A,R6 MOV R2,A ;========================================== ;乘以10计算 ;=========================================== MOV R1,#00H MOV A,R3 LCALL MUL10 MOV 49H,A MOV A,R2 LCALL MUL10 MOV 48H,A ;======================================== ;============================================ ;除法运算 ;============================================ ;============================ ;整数部分 ;============================ MOV R0,#30H LCALL DIVD0 MOV A,40H MOV @R0,A INC R0 MOV A,#2EH MOV @R0,A INC R0 ;========================== ;小数部分 ;========================== MOV 45H,#05H ALUDEF: MOV A,42H LCALL MUL10 MOV 47H,A MOV A,41H LCALL MUL10 MOV 46H,A ;========================== ;确定小数 ;========================== LCALL DIVD1 MOV A,40H MOV @R0,A INC R0 DJNZ 45H,ALUDEF MOV A,#05H CLR C SUBB A,40H JC DV53 SJMP DV54 DV53: INC 40H DEC R0 MOV A,40H MOV @R0,A LOPJ: CJNE @R0,#0AH,DV54 MOV @R0,#00H DEC R0 INC @R0 INC R0 ;==================== SJMP LOPJ DV54: CLR OV INC R0 MOV @R0,#56H ;RET ;=========================== ;显示 ;=========================== MOV A,#01H ACALL C51 MOV A,#81H ACALL C51 MOV DPTR,#TAB1 LCHIN: CLR A MOVC A,@A+DPTR INC DPTR LCALL C51DDR JNZ LCHIN MOV A,#0C3H ACALL C51 JNB 02H,LOP_ MOV A,#2DH LCALL C51DDR LOP_: MOV R0,#30H MOV A,@R0 LCALL CHASCII INC R0 LCALL C51DDR MOV A,@R0 INC R0 LCALL C51DDR MOV R1,#06H LOPXS: MOV A,@R0 LCALL CHASCII LCALL C51DDR INC R0 DJNZ R1,LOPXS MOV R2,#5 DELL1ms:LCALL DEL DJNZ R2,DELL1ms MOV A,#01H ACALL C51 MOV A,#0C3H ACALL C51 CLR 02H ;======================== LJMP AD574 ;============================ ;计算子程序 ;============================= DIVD0: CLR 00H PUSH PSW SETB RS0 CLR RS1 MOV R4,48H MOV R5,49H ACALL DIVD POP PSW RET DIVD1: SETB 00H PUSH PSW SETB RS0 CLR RS1 MOV R4,46H MOV R5,47H DIVD: MOV R2,#00H MOV R3,#00H