锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

51单片机AD采集滑动变阻器电压并通过串口每秒发送一次电压

时间:2022-09-06 22:30:00 36v指示灯串电阻c2031滑动电位器

51单片机AD采集电压通过串口每秒发送一次电压值

请添加图片描述
这是主题要求,使用AD转换
芯片ET每秒2046检测一次滑动变阻器电压,转换成ASCLL编码后,通过串口发送数据。同时,添加三个指示灯来显示当前的电压范围。
下面是这个AD芯片的电路原理图也可以改变AD采集的设备(光敏电阻、热敏电阻、外部输入等。)由收集地址确定。

主函数代码

#include “reg52.h”
#include “uart.h”
#include “rtc.h”
#include"adc.h"
sbit LED_R = P0^0;
sbit LED_Y = P0^1;
sbit LED_G = P0^2;
void main(void)
{
// unsigned char i;
unsigned char second = Ds1302Read(0X81);//读秒
unsigned long temp=0x00;
InitUart();
while(1)
{
if(second!=Ds1302Read(0X81))
{
second=Ds1302Read(0X81); //读秒
temp=Read_AD_Data(0x94);//AIN0
电位器
// SendChar(temp>>8); //高八位字节
// SendChar(temp&255); //低八位字节
temp=temp51000/4096
SendChar(temp/1000 ‘0’);//千位
SendChar(‘.’);
SendChar(temp00/100 ‘0’);//百位
SendChar(temp000/10 ‘0’);//十位
SendChar(temp000 ‘0’);//个位
SendChar(‘V’);
SendChar(‘\r’); //换行
SendChar(‘\n’);
if(temp>4000)
{
LED_R = 0;
LED_G = 1;
LED_Y = 1;
}
else if(temp>1000)
{
LED_R = 1;
LED_G = 0;
LED_Y = 1;
}
else
{
LED_R = 1;
LED_G = 1;
LED_Y = 0;
}
}
}
}

这些是主函数代码,adc、uart等模块直接采样普通相应模块的底层代码,未修改

在这个代码中,我觉得最有趣的地方是读秒用的不是定时器计数,而是通过读取ds1302的0x81(读秒地址)
second!=Ds1302Read(0X81)
second=Ds1302Read(0X81)
通过if判断秒是否变化并重新赋值以确定一秒钟。具体代码可以看到上面
我认为这个地方仍然很有趣
然后3个LED灯很简单if判断句子

自己写的51程序,亲测无误,还有其他想法可以讨论。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章