产品概述

单片机简易电压表 单片机干货,简易数字电压表的设计与制作(C语言版)

小编 2024-11-23 产品概述 23 0

单片机干货,简易数字电压表的设计与制作(C语言版)

电压表的使用十分广泛,传统的模拟电压表反应速度慢,读数麻烦并且误差较大,现在已经广泛使用数字电压表。本文介绍一款简易数字电压表的设计制作过程,基于入门级51单片机——

STC89C52RC ,以

ADC0831 为模数转换电路实现被测电压的数据采样,当然还要有显示电路,由四位数码管构成,该数字电压表能够测量0-5V之间的直流电压值。

原理图大体分为四个部分,左上角的是单片机最小系统,这个就无须赘述了,相信任何一本单片机教程都会讲到;左下角的是供电部分,也很简单,如果取电脑的USB电源供电,那几个滤波电容式可以省去不要;右上角的是显示电路,典型的数码管驱动电路,下面四个三极管做位选通,段码管脚接单片机P2端口;右下角就是ADC0831电路,通过CLK和SDO与单片机相连,一个时钟信号,一个串行数据。也许需要多啰嗦几句的,就是ADC0831了。

ADC0831

照顾一下英文不太好的同学,图上面英文字的大概意思是:ADC0831 单路差分输入 双列直插封装。典型电路如下,

ADC0831一共八个脚,VCC和GND不用说,Vref作为参考电压接VCC,待测模拟信号以差动形式输入,可将其中一根线直接接地,另一个线做输入。转换后的数字信号由SDO串行输出,CLK提供时序。CS片选。硬件还是很简单的吧。ADC0831与单片机的通信依据下面这张时序图。

读懂时序图

拿到一张时序图,首先找片选信号,这里也就是CS, 片选信号一般都是低电平有效,当CS拉低后,芯片才开始工作。程序要严格按照时序图编写,这里在拉低CS前应先置低CLK。也就是先置低CLK,nop一会;然后拉低CS片选,nop一会;然后置高CLK,nop一会,然后再置低CLK,nop一会,这样才把CLK第一个脉冲走完,注意这时还没开始读数据,数据是从CLK第二个脉冲信号下降沿开始一个位(bit)一个位读取的。函数如下。

时序图常会见到MSB和LSB,分别是Most Significant Bit(最高有效位)和Least Significant Bit(最低有效位)的缩写。ADC0831的时序图先出现MSB,表示随着时钟脉冲先读出来的是字节的高位。

ADC0831读取的模数转换结果是一个字节大小(Byte)的无符号数,这个数的范围是0~255。对应的电压信号范围是0~5V。那么这里就需要有一个映射函数了,也就是从adc0831的返回值映射到对应的电压。这个函数起名叫map()再好不过了。

下面这幅图可以直观的阐述其转换原理,原理非常简单,就是等比较变换:

转换关系为t = adv/51,那么乘以100是什么意思呢?是为了扩大100倍,去掉小数点,方便数码管显示函数的编写。诺,下面就讲到了。

显示函数就很简单了,完全根据数码管动态显示原理,简单调试即可完成。注意函数参数是一个u16(unsigned int)整型数,这也是前面map函数里需要乘100的原因,单片机处理整数的速度要比处理浮点数快得多,浮点数能不用就不用。在显示函数里,在正确的位置把小数点点亮即可。代码如下:

下面是延时函数,

延时函数:

主函数:

全局定义:

作品效果图:

元器件装配图

元器件清单

名称 标号 标称值 封装 数量 电阻R1、R2、R3、R4、R5、R6、R7、R8200直插式8电阻R9、R10、R11、R12、R201K直插式5三极管Q1、Q2、Q3、Q49012直插式4单片机U1STC89C52直插式1IC锁座TEXTQOL40脚直插式1发光二极管D3绿φ5直插式1电容C122uF直插式1电容C2470uF直插式1电容C3、C4、C50.1uF直插式3电容C6、C730pF直插式2接线端子排P22脚直插式1USB端子P16脚直插式1晶振Y112MHz直插式1ICU2ADC0831直插式1IC插座8脚直插式1数码管U34联排(共阳)直插式1二极管D1、D21N4148直插式1按键RESET4脚直插式1

基于51单片机数字电压表

昨天查看公众号私信,发现有小伙伴想要数字电压表的仿真,今天就分享一个之前在网络上搜集到的仿真。基于51单片机的数字电压表。

电压表是测量电压的一种仪器。传统的指针式电压表和电流表都是根据一个原理就是电流的磁效应。电流越大,所产生的磁力越大,表现出的就是电压表上的指针的摆幅越大,电压表内有一个磁铁和一个导线线圈,通过电流后,会使线圈产生磁场,线圈通电后在磁铁的作用下会发生偏转,这就是电流表、电压表的表头部分;现在我们使用较多的是数字电压表,数字电压表的主要工作原理是利用模数转换器,将待测的模拟电压信号转换成为数字信号,然后对数字信号进行处理并通过数码管或LCD等显示装置显示出来。数字式电压表显示的测量结果更加直观。

简单的介绍了一下电压表以后,接下来直接上仿真图。

单片机依旧是AT89C51。该仿真制作的数字电压表的量程为0到5v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v。同时设计的精度为小数点后两位,满足要求的两位小数的精度。显示部分使用的是LCD1602。

ADC0809是8位逐次逼近型模数转换器。转换时间为100微秒。具有8个模拟量输入端口,可以通过数字控制引脚对8个输入端口进行选择。

下面说明各引脚功能:

IN0~IN7:8路模拟量输入端。2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。ALE:地址锁存允许信号,输入端,产生一个正脉冲以锁存地址。START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC:A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。

下面运行仿真,看一下仿真的动态效果。

运行仿真后,可以看到LCD上显示除了当前测量的电压值。第一行显示的是电压的英文单词,第二行显示的是测量的电压值。通过调节左侧的RP2电位器的参数就可以改变待测电压。

测量范围为0-5V,显示的测量结果还是比较准确的。

这个仿真如果要进行实际制作需要对ADC0809的输入时钟进行修改,在仿真中采用的是仿真内部的时钟发生器,而在进行实物制作时,这个时钟可以使用单片机的IO产生或者是对单片机的ALE引脚输出的时钟信号进行分频得到。

惯例贴一张程序图。程序较为简单而且也有部分注释,这里就不作介绍了。

该资源来源于网络搜集,有需要的朋友可以私信。

相关问答

单片机 设计数字 电压表 怎么扩大量程?

由于单片机的电压一般是5V所以只用这的话出来也是5V,为了需要,可以加上功率电阻降压,这样量程就大些了。由于单片机的电压一般是5V所以只用这的话出来也是5V,...

单片机 中课程设计数字 电压表 数码管光线太暗怎么处理?

如果是多位数码管,可能是每个数码管显示时间太短了,就是中间的间隔延时太长了如果是多位数码管,可能是每个数码管显示时间太短了,就是中间的间隔延时太长了

为什么很多 单片机 的工作电压是5v?

因为大多数芯片都是5V的TTL电平,要做到电平兼容,电平匹配,避免要电平转换操作,所有很多单片机的工作电压都是5V。TTL指的是TTL电平,0~5V之间,小于0.2V输出...因...

电动式 电压表 工作原理?

2、液晶仪表:通过专用的霍耳传感器的开关信号,传输给液晶显示仪表总成上的单片机,对单位时间内车轮转动圈数的计数,能算出整车的行驶时速,对行驶时速和行驶...

新手如何学习 单片机 ,用那些软件模拟比较好?

关于如何学习单片机,你可以看看《如何学好单片机?》这个问答,里面有关于怎么学习的详细解读。今天重点说说你的第二个问题:用那些软件模拟比较好?一、单片...

7065数字 电压表 使用说明书?

首先开机进入电压测试等待状态,液晶显示字符"P.";2、当键1按下时,单片机进入电压测量状态,可以测量的电压范围0--5V电压;当键1按下时退出电压测量状态,...、...

单片机 主要应用于哪些领域? - 181****4835 的回答 - 懂得

1.单片在一个系统中只使用一片机,这是目前应用最多的一种方式。主品单片机与传统的机械产品相结合,使传统的机械产品结构简单化、控制智能化,构成了...

STM32 单片机 怎么检测0-24电压和电流 - p4qG1InlW 的回答 - 懂得

电压缩小到0-3.3v范围内采集,然后用32通过一定比例再计算出实际电压扩展资料:单片机应用范围电路板单片机渗透到我们生活的各个领域,几乎很难找到哪...

multisim中的滑动变阻器如何调节

单片机电子类等相关专业的一门重要课程,在实际工程中有着广泛应用。全各大中专院校开设了不同类型的单片机课程及相关的实验和综合设计。在些专业的...

阶梯发生器电路原理?

阶梯发生器电路是一种能够产生阶梯波形的电子电路,这种阶梯波形在多种应用中非常有用,例如在模拟数字转换器(ADC)中作为参考电压,或者在无线电遥测、调频信...

猜你喜欢