STC8G1K08A单片机读取ADC引脚值输出到串口
创作时间:
作者:
@小白创作中心
STC8G1K08A单片机读取ADC引脚值输出到串口
引用
CSDN
1.
https://blog.csdn.net/m0_47459564/article/details/136308197
STC8G1K08A单片机引脚图
如上图,STC8G1K08A的6个IO口均支持ADC转换。本次例程使用3号引脚(ADC5)。
所需硬件:
电位器模块一个,需要接三根线,电源两根线,输出接到单片机P5^5,如下:
STC8G1K08A单片机,为了方便调试,画了个板子,引脚接了排针,状态指示灯:(板子上的开关,按下断开单片机电源,省去串口下载程序时插拔电源冷启动的步骤)
硬件连接:
对下载程序,串口通信有疑问可观看我上篇发文【STC8G1K08A串口使用】
本次例程完整代码:
#include<stc8g.h>
#include<stdio.h>
#include<intrins.h>
#define ADC_Power 0x80 //使能ADC模块 打开ADC 将ADC引脚设置到
#define ADC_Start 0x40 //开始ADC转换
#define ADC_Flag 0x20 //转换完成标志位
#define ADC_SYS 0x2f //将ADC系统时钟设定为SYSclk/2/16
//******************************************
//延时ms函数,参数:ms
//使用条件:晶振/系统频率30.000MHz
//******************************************
void delay(int ms){
unsigned char data i, j;
while(ms){
i = 30;
j = 43;
do
{
while (--j);
} while (--i);
ms--;
}
}
//******************************************
//函数说明:串口初始化
//******************************************
void Serial_begin() //9600bps@30.000MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器时钟1T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TL1 = 0xF3; //设置定时初始值
TH1 = 0xFC; //设置定时初始值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
}
void Sendbyte(unsigned char dat){//发送8位数据到串口
SBUF = dat;
while(!TI);
TI=0;
}
char putchar(char c){//重定义printf()函数,用于串口打印信息
Sendbyte(c);
return c;
}
//******************************************
//函数说明:读取指定ADC引脚值。参数:ADC引脚编号(编号见上单片机引脚图)
//******************************************
unsigned int analogRead(unsigned char ADC_Pin){
ADC_CONTR = ADC_Power + ADC_Pin; //使能ADC,向寄存器写入将要读的ADC引脚
ADCCFG = ADC_SYS; //将ADC系统时钟设定为SYSclk/2/16
ADC_CONTR |= ADC_Start; //开始ADC转换
_nop_();
_nop_();
while(!(ADC_CONTR & ADC_Flag)); //等待完成
ADC_CONTR &=~ ADC_Flag; //清除完成标志位
return (ADC_RES<<8) | ADC_RESL; //合并高8位低8位,返回合并后结果
}
//******************************************
//主程序
//******************************************
void main(){
Serial_begin();//初始化串口
while(1){
printf("读取ADC5的值 = %d\n",analogRead(5));//读取ADC5的值并打印到串口输出
delay(1000);//延时1秒
}
}
下载上述程序需注意设置运行频率为30MHz
程序下载后打开串口助手输出效果:
打开串口调试软件,波特率设置9600,每秒会收到一次ADC5的值,调整电位器旋柄,输出值跟随变化。
本文部分程序源自博主“CM_1095111730”的【STC8G1K08A单片机数模转换】一文,原文讲解ADC模数转换更为详细,点击跳转
热门推荐
承诺的力量:如何通过诚信建立稳固的人际关系
为人之本,立业之基——诚信
《熊出没》:一个陪伴我们十年的动画IP如何长盛不衰?
《熊出没》春节档逆袭秘籍:合家欢制胜法宝
华强方特:《熊出没》现象级IP的成功密码
《熊出没》:培养孩子环保意识的生动教材
直逼全球票房纪录!《哪吒2》为何如此让人“上瘾”?
数据驱动+赋能实战+支撑全警 打造智慧刑侦新质战力
独居老人去世,遗产该由谁继承?
遗产继承纠纷中的遗嘱执行人责任
中国票房最高的10部动画电影排行榜,哪吒系列强势领跑
黄金价格波动的原因是什么?这种价格波动会带来哪些市场反应?
蛇年市场行情怎么走?十大券商、公募“把脉”A股
3招让孩子一起做饭,教育美食两不误!
战后心灵的重建:重拾生活的美好
洪向阳教你如何重新开始职业规划
喉咙痛是什么导致的
连接杭州的这条高铁进入开通倒计时 沪苏湖高铁开始试运行
周末打卡龚滩古镇,感受冬日慢生活
洪崖洞最佳拍摄点大揭秘!
双江古镇:清代一条街的建筑奇迹
BCS2024新型网络犯罪侦查与打击研讨会在北京成功举办
值得关注的10种新兴网络安全威胁
交通执法和交警执法,两支队伍区别在哪里?
子婴身世之谜:他真的是扶苏的儿子吗?
QQ好友管理技巧大全:分组、标签、备注、动态和权限管理一文掌握!
尼古拉·费欣 | 画布上的激情与和谐
线条与明暗的舞蹈:尼古拉·费欣素描作品
尼古拉·费欣 | 画布上的激情与和谐
秋冬心理压力管理:远离流感的科学指南