分享好友 天南地北首页 网站导航

用STC15F2K60S2单片机设计数字电压表

网友发布 2023-05-19 23:38 · 头闻号仪器机械

//实验用程序 测试通过 STC15F2K60S2 @110592MHZ

#include "reg51h"

#include "intrinsh"

typedef unsigned char BYTE;

typedef unsigned int WORD;

sfr ADC_ConTR = 0xBC;

sfr ADC_RES = 0xBD;

sfr ADC_LOW2 = 0xBE;

sfr P1ASF = 0x9D;

BYTE ch = 0; //ADC回路数

/----------------------------

延时

----------------------------/

void Delay(WORD n){

WORD x;

while (n--){

x = 5000;

while (x--);

}

}

/----------------------------

ADC中断

----------------------------/

void adc_isr() interrupt 5 using 1{

ADC_ConTR &= !0x10;

P2=ADC_RES;

ADC_ConTR = 0x80 | 0x00 | 0x08 | ch;

}

/----------------------------

初始化ADC

----------------------------/

void InitADC(){

P1ASF = 0xff;

ADC_RES = 0;

ADC_ConTR = 0x80 | 0x00 | 0x08 | ch;;

Delay(2);

}

void main(){

InitADC(); //初始化ADC

IE = 0xa0;

while (1);

}

为什么要用单片机设计电压表

电流表:并联多个阻值不相同的电阻。

电压表:串联多个阻值不相同的电阻。

欧姆表:串联多个不同的滑动变阻器。

注意,要用单刀多掷开关,来决定串并联入电路中的阻值大小。

然后根据书上的电路通进行改装。

基于AT89C51单片机的数字电压表的设计,不能使用AD转换芯片,AD转换电路只能自己搭。

单片机本身并不能做电压表,但是一个数字电压表需要电压值采集,AD转换,数据处理,显示或者打包传送上位机这些功能,就必须要一个“管事的”协调大家做这些事,比如控制AD转换芯片采样并读取原始数据,加工处理后控制数码管显示数据或者通过串口发送走。

有些单片机自己就带AD转换功能,可以直接把0-5v的模拟电压值输入到IO口上。

不用单片机的话,可以用一些专门的数字电压表芯片,它把测量电压并显示的工作都集成在一起了。甚至你还能用FPGA,DSP什么的。。。不过。。。看你能问出这样的问题。。。还是老老实实看单片机吧。

AT89C51单片机内部没有AD转换模块,可以通过IO口扩展AD转换芯片现在市面上很多这种芯片比如TLC2543、ads1204就是,如果电压表精度要求不高,用后出来的单片机内部就集成了AD转换芯片比如avr、PIC等。

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

收藏

点赞