单片机干货,简易数字电压表的设计与制作(C语言版)
电压表的使用十分广泛,传统的模拟电压表反应速度慢,读数麻烦并且误差较大,现在已经广泛使用数字电压表。本文介绍一款简易数字电压表的设计制作过程,基于入门级51单片机——
原理图大体分为四个部分,左上角的是单片机最小系统,这个就无须赘述了,相信任何一本单片机教程都会讲到;左下角的是供电部分,也很简单,如果取电脑的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单片机入门-C51实现数字电压表模数转换详细设计分步骤详细解说
单片机入门-C51实现数字电压表模数转换详细设计分步骤讲解视频如下:
视频教程
一、AD转换器参数指标
(1)分辨率:指对输入模拟量变化的灵敏度,习惯上用输出二进制的位数或BCD码位数表示。
(2) 转换误差:指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。常用最低有效位的倍数表示。
(3)转换速率:指能够重复进行数据转换的速度,即每秒转换的次数,而完成一次A/D转换所需的时间(包括稳定时间),为转换速率的倒数。
二、 ADC0809的使用
ADC0809时序中,CLK为转换时钟,要一直产生。转换过程为,ADC先在ALE引脚上产生上升沿进行通道地址锁存,将要转换的通道选中;接着在START引脚产生上升沿,启动转换进程;ADC转换开始后,EOC变低,表示正在转换过程中;当EOC变高时,表示转换结束,这时可以将OE引脚拉高,允许数据从AD中输出,最后通过D0~D7读取数据即可。
三、 数字电压表设计步骤
1.硬件电路设计:用单片机IO管脚控制ADC0808的各个管脚,电路图如下:
电路
2.软件设计:
设计流程如下图:
流程
相关问答
单片机 自制 电压表 示数不稳定怎么办?老跳是正常,不跳才不正常,精度越高越容易跳,因为电源本身就不可能是稳定的。老跳是正常,不跳才不正常,精度越高越容易跳,因为电源本身就不可能是稳定的。
51 单片机 数字 电压表 原理?单片机数字电压表是利用单片机内部的模数转换器(ADC)将输入的模拟电压信号转换为数字信号,然后经过处理显示出电压值。其原理是通过外部电压传感器将待测电压...
数字 电压表 的AD转换和LED显示怎么做?不用 单片机 的?万用表不用单片机,比较典型的方案是用三位半或四位半的AD做。三位半的常用7106或者7107,自带静态显示驱动电路,一个是用液晶显示,一个用LED显示。四位半的...
单片机 的毕业论文怎么写?一、毕业设计题目及要求(2个)1、基于单片机控制的电动机Y-△启动的设计要求:1)控制器为单片机,电动机为三相异步电动机;2)启动时间为3秒;3)由按键设...1)...
单片机 晶振电路原理电容大小没有固定值.一般二三十p.晶振是给单片机提供工作信号脉冲的.这个脉冲就是单片机的工作速度.比如12M晶振.单片机工作速度就是每秒12M.和电...
单片机 控制电池电量检测原理测电压来判断电量的。有一种检测汽车蓄电池电量的工具——放电钳,让蓄电池通过较小的电阻放电,通过串接在放电电路中的电流表观察放电电...有一种...
单片机 5V转3.3V电平转换的19种方法技巧是什么?答:方法一:使用LDO稳压器,从5V电源向3.3V系统供电标准三端线性稳压器的压差通常是2.0-3.0V。要把5V可靠地转换为3.3V,就不能使用它们。压差为几百个毫伏...
2022湖南对口招生考试电子电工类专业考试基本要求及考试大纲 ...3.能运用电工技术和电子技术专业相关基础知识、基本定理、定律等进行相关电路参数的计算与设计。4.掌握电工技术和电子技术专业常用仪器、仪表的使...
电机超速之后如何反馈并发出信号?用测速电机,或用光电传感器,或磁电传感器,或其它类型传感器,将转数信号变成电信号,就可反馈.如果想要发出超速信号,可用比较器,或单片机,或模拟控制电压表,就...
阶梯发生器电路原理?•数控阶梯波由单片机发出的脉冲信号控制,每个脉冲使得阶梯波上升一个固定电压台阶。•当阶梯波上升到与待测电压相等的值时,电压比较器的输出会发生反转,...