公告:

STC12C5202AD单片机AD转换,LCD显示采集电压

作者:智凡单片机 / 时间:3个月前 (03/10) / 分类:51单片机 / 阅读:182 / 评论:0

(一)硬件连接(LCD1602沿用上文4线接法) 

1583855048464.JPGX


(二)ADC编程部分
//ADC_CONTR控制寄存器定义;
#define ADC_POWER 0x80
#define ADC_SPEED 0x00
#define ADC_START 0x08
#define ADC_FLAG 0x10
unsigned int dd;//保存AD转换后的数值;

//AD初始化函数

void ADC_Int()
{
P1AS F=0x00;
ADC_CONTR|=ADC_POWER |ADC_SPEED; 

//ADC_CONTR相应位置一,打开电源,设置转换速度;
Delay1ms(5);//打开电源后,需要至少4个空操作延时,保证稳定;
}

//获取AD转换后的数值****************************************************/
unsigned int ADC_Get(unsigned char ch)
{
if(ch>7)ch=7; //通道设置最大为7
ADC_CONTR |=ADC_START | ch; //开启转换,用ch通道做输入端
while(!(ADC_CONTR&ADC_FLAG)); //等待转换完成;没有完成时一直检测
return(ADC_RES); //返回转换的值
ADC_CONTR &=!ADC_FLAG; //标志位取反清零
}

//将获取的数据分成百、十、个位在LCD1602上显示*******************************/


void main()


LCD1602_Int();

ADC_Int();

while(1){ 


dd =ADC_Get(0);

print(0x86,dd/100+0x30);//转换后的数值取百位,加上30,就可转换为指定数值的ASCII码。

print(0x87,dd0/10+0x30);//如1对应的编码是31;2对应编码是32,所以加0x30;

print(0x88,dd+0x30); 

//如254值,运算百位,取编码32;十位,取编码35;个位,取编码34;

}
}


源码:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1UjlejwPGwV00-UnHgCls8g 提取码:dmi7

没有评论,留下你的印记,证明你来过。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。