STC8增强型单片机开发【电位器案例(ADC)⭐⭐】

目录

一、引言

二、硬件准备

三、电路连接

四、软件编程

五、案例实现

六、总结


一、引言

STC8系列增强型单片机以其高性能、低功耗和丰富的外设接口,在嵌入式系统开发中得到了广泛应用。其中,模数转换器(ADC)是单片机的一个重要组成部分,能够将模拟信号转换为数字信号,便于微处理器进行处理。本文将通过一个电位器案例,详细介绍如何在STC8增强型单片机上实现ADC功能。

二、硬件准备

  1. STC8增强型单片机开发板
  2. 电位器(旋转式或滑动式)
  3. 杜邦线若干
  4. 电阻(可选,用于分压)
  5. 电源及连接线路

三、电路连接

  1. 将电位器的一个引脚连接至单片机的ADC输入引脚(如P1.0)。
  2. 将电位器的另外两个引脚分别连接至电源(VCC)和地线(GND)。
  3. 如果需要,可以在电位器和ADC输入引脚之间串联一个电阻,用于分压。

四、软件编程

  1. 初始化ADC:在单片机程序中,首先需要对ADC进行初始化设置。这包括设置ADC的工作模式、输入通道、分辨率等参数。具体设置方法可参考STC8单片机的数据手册。
  2. 读取ADC值:在需要读取电位器值时,调用ADC读取函数,将ADC输入引脚的模拟信号转换为数字信号。通常,ADC读取函数会返回一个表示电压值的整数或浮点数。
  3. 处理ADC值:根据实际需求,对读取到的ADC值进行处理。例如,可以将ADC值转换为百分比、电压值或其他物理量。
  4. 显示或输出:将处理后的ADC值通过LED、LCD或其他显示设备显示出来,或者通过串口等通信接口传输给上位机。

五、案例实现

以下是一个简单的示例代码,演示了如何在STC8增强型单片机上实现电位器案例(ADC):

 

#include "STC8G_H_GPIO.h"
#include "STC8G_H_ADC.h"
#include "STC8G_H_Delay.h"
#include "STC8G_H_UART.h"
#include "STC8G_H_Switch.h"
#include "STC8G_H_NVIC.h"


void GPIO_config(void) {
    GPIO_InitTypeDef	GPIO_InitStructure;		//结构定义
    GPIO_InitStructure.Pin  = GPIO_Pin_5;		//指定要初始化的IO,
    GPIO_InitStructure.Mode = GPIO_PullUp;	//指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    GPIO_Inilize(GPIO_P0, &GPIO_InitStructure);//初始化
}

void UART_config(void) {
    // >>> 记得添加 NVIC.c, UART.c, UART_Isr.c <<<
    COMx_InitDefine		COMx_InitStructure;					//结构定义
    COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;	//模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
    COMx_InitStructure.UART_BRT_Use   = BRT_Timer1;			//选择波特率发生器, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
    COMx_InitStructure.UART_BaudRate  = 115200ul;			//波特率, 一般 110 ~ 115200
    COMx_InitStructure.UART_RxEnable  = ENABLE;				//接收允许,   ENABLE或DISABLE
    COMx_InitStructure.BaudRateDouble = DISABLE;			//波特率加倍, ENABLE或DISABLE
    UART_Configuration(UART1, &COMx_InitStructure);		//初始化串口1 UART1,UART2,UART3,UART4

    NVIC_UART1_Init(ENABLE,Priority_1);		//中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
    UART1_SW(UART1_SW_P30_P31);		// 引脚选择, UART1_SW_P30_P31,UART1_SW_P36_P37,UART1_SW_P16_P17,UART1_SW_P43_P44
}

void ADC_config() {
    ADC_InitTypeDef init;
    init.ADC_SMPduty = 31;		//ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
    init.ADC_Speed = ADC_SPEED_2X1T;			//设置 ADC 工作时钟频率	ADC_SPEED_2X1T~ADC_SPEED_2X16T
    init.ADC_AdjResult = ADC_RIGHT_JUSTIFIED;	//ADC结果调整,	ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
    init.ADC_CsSetup = 0;		//ADC 通道选择时间控制 0(默认),1
    init.ADC_CsHold = 1;		//ADC 通道选择保持时间控制 0,1(默认),2,3

    // 初始化ADC配置
    ADC_Inilize(&init);
    // 开启ADC电源
    ADC_PowerControl(ENABLE);

    // ADC中断配置
    NVIC_ADC_Init(DISABLE, Priority_0);
}

int main() {
    u16 adc;  // 用于存储ADC转换结果的变量
    float v;	// 用于存储电压值的变量
    EA = 1;   // 全局中断使能

    // 初始化IO的工作模式
    GPIO_config();
    UART_config();

    // 初始化ADC的工作的参数
    ADC_config();
    // 开始测量
    while(1) {
        // 获取ADC通道13的转换结果
        adc = Get_ADCResult(ADC_CH13);
        // 将ADC值转换为电压值,假设参考电压为2.5V,ADC精度为12位(4096个值)
        v = adc * 2.5f / 4096.0f;
        // 打印ADC值和对应的电压值
        printf("adc: %d, v : %2f\n", adc, v);
        // 延时100毫秒
        delay_ms(100);
    }

}

上列代码所属库函数文件:

 

上列代码所需ADC配置所在位置:

六、总结

本文通过一个电位器案例,详细介绍了如何在STC8增强型单片机上实现ADC功能。通过硬件连接、软件编程和案例实现三个方面的讲解,读者可以掌握STC8单片机ADC的基本使用方法,并应用到实际项目中。在实际应用中,还需要根据具体需求进行更复杂的ADC设置和数据处理。

单片机火灾报警器(防火系统)设计
runweipa的博客
06-04 1193
随着现代家庭用火、用电量的增加,家庭火灾发生的频率越来越高。火灾报警器也随之被广泛应用于各种场合。 本课题所研究的无线多功能火灾报警器采用STC89C51为核心控制器,利用气体传感器MQ-2、ADC0832模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现火灾报警,智能化提示。
STC8ADC串口输出
m0_60313295的博客
04-21 1763
STC8A8K64D4,它具有高速12位A/D转换器。其中16个管脚与ADC测量密切相关,其中15个为ADC外部测量通道,而1个则是用来获取出厂时校准的1.19V电压参考源的内部测量通道。据官方手册介绍,该芯片ADC的最快速度为每秒800K,每秒可进行80万次ADC转换。此外,内部电压参考源可用于反推测量未知外部电压。如需更详细信息,可查阅芯片手册以获取应用方法。本文章,只是介绍ADC获取和串口输出的基本应用。
stc8单片机12位ad程序(查询模式)
12-05
stc8单片机12位ad程序(查询模式),实现16通道ad值输出到数组中,有详细设置说明。
STC8H单片机利用 ADC 第 15 通道测量外部电压或电池电压
最新发布
qq_61705610的博客
09-06 907
STC8H 系列 ADC 的第 15 通道用于测量内部参考信号源,由于内部参考信号源很稳定,约为 1.19V, 且不会随芯片的工作电压的改变而变化,所以可以通过测量内部 1.19V 参考信号源,然后通过 ADC 的 值便可反推出外部电压或外部电池电压。
STC8G1K08 实现ADC采集电压(主要是讲解思路)
weixin_39226439的博客
04-07 6948
STC8G1K08 实现ADC采集电压(主要是讲解思路)
嵌入式进阶——电位器案例(ADC)
qiuyeyyy的博客
05-26 1056
通过控制滑动变阻器,来观察电压变化。通过万用表测量 P0.5位置的电压通过代码读取出 P0.5位置的电压。
STC8ADC相关程序.rar
07-30
做了很久的STC8的详细ADC列程,发出来方便一些爱好学习单片机的烧友们寻找资料
基于STC8G1K08A使用ADC采集数据实例
金戈鐡馬
05-31 933
基于STC8G1K08A使用ADC采集数据实例
基于STC 单片机的经济型步进电机控制系统
10-24
为了实现电机转速的连续调节,系统通过一个4.7kΩ的可调电位器连接到单片机的P1.4(ADC4)口,利用单片机的A/D转换功能将模拟信号转换为数字信号,进而控制输出脉冲的频率。过流保护功能通过将检测结果直接引入外部...
STC15F2K60S2单片机:内部结构与电源引脚解析
STC15F2K60S2是一款基于8051内核的增强型单片机,由宏晶科技生产。它具有高速度、高性能的特点,其工作速度比传统的8051内核快8到12倍。这款单片机包含60KB的Flash程序存储器,1KB的数据Flash,以及2048字节的SRAM,...
STC12C5A60S2
07-01
【STC12C5A60S2】是一款由宏晶科技生产的单片机,具备增强型8051内核,具有低功耗、抗干扰性强的特点,其运行速度比普通8051快8到12倍。这款芯片内置8通道10位ADC和2路PWM,为开发各种智能控制系统提供了便利。在...
ADC-电位器-控制小灯
11-16
任务之一
单片机旋钮电位器控制电机速度
03-30
单片机旋钮电位器控制电机转速,本程序适用于可使用C语言编程的单片机程序编译器。
STC8A8K_ADC.zip
09-23
测试了一下STC8A8K64S4A12的ADC,使用的是中断方式读取数据。效果还是挺不错的,屏幕用的是OLED12864,IIC通信方式。3.3V供电,2.5V基准源
基于单片机的数字电子称设计
05-11
然而,实际设计中可能因为某些原因采用了电位器作为替代,虽然它们的工作原理相似,但电位器无法像应变片那样精确地反映微小的力变化。 模数转换(A/D转换)是将传感器输出的模拟信号转化为数字信号的关键步骤。在...
STC8学习 ——ADC 1
m0_51371386的博客
11-09 3610
1.普通的IO口只能识别0和1,以STC8的IO口为例,输入0.7V识别为0,输入3.3V识别为1,输入一个0.7 ~3.3 V的电压,IO口的输入结果就是随机的了。2.STC8有10位的ADC模数转换口,10位指的是将0到3.3V电压进行分割的份数,即1024份,位数越多,测量结果越精确,因为分割的份数多。3. 因为要通过串口观察查询到的结果,所以串口初始化函数要保留。//设置采集到的数据右对齐,采集速度为16分频。4.串口自带的输出功能太麻烦,这里要用的printf函数。
STC8A单片机ADC功能使用
qq_44712722的博客
01-29 9212
1、概述 STC8系列单片机内部集成了一个12位15通道的高速ADC转换器。ADC的时钟为系统时钟的2分频的16分频的32分频到系统时钟的2分频的16分频的512分频。转换结果有2种格式:左对齐和右对齐。 注:ADC不能多通道同时进行,一次只能检测一个通道! 2、ADC相关的寄存器: ADC_CONTR:ADC控制寄存器 低4位(ADC_CHS):ADC通道选择位。 第6位(ADC_FLAG)...
写文章

热门文章

  • 运行springboot出现“A component required a bean of type...that could not be found“问题 11488
  • Java - 求n的阶乘 4001
  • Java 案例- 打印九九乘法表 2330
  • C语言基础入门案例(3) 1557
  • 上位机开发PyQt5(一)【创建窗口、窗口标题、气泡、显示图片和图标、显示文字】 1544

分类专栏

  • STC8增强型单片机开发 8篇
  • python上位机开发PyQt5 5篇
  • JavaScript 1篇
  • C语言 10篇
  • python 8篇
  • Java 19篇

最新评论

  • STC8增强型单片机开发 【第一个程序 - 点亮第一盏灯】

    普通厨师刘昴星: 感谢up,创建成功

  • STC8增强型单片机开发【LED呼吸灯(PWM)⭐⭐】

    卡丘. 钦爱: 为啥还有结构体的

  • STC8增强型单片机开发【LED呼吸灯(PWM)⭐⭐】

    普通网友: 这篇文章真是一篇佳作!作者运用了生动有趣的语言,将枯燥的理论知识娓娓道来,让人如沐春风。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • python高级进阶(二)[切片、推导式、公共方法]

    普通网友: 大佬的文章写的太精辟了 让我深刻了解了这篇文章的精髓 谢谢大佬分享,希望继续创作优质博文。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • python基础知识三(运算符、while循环、for循环)

    普通网友: 优质好文,支持支持。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

大家在看

  • 激荡四十年,NAND闪存技术的演进 1
  • 大咖征稿|复旦大学:浅谈高校邮件系统启用二次验证的实施经验
  • 通过github创建自己网页链接的方法 1358
  • PMP--必刷题–解题–121-130 356
  • Python NumPy

最新文章

  • STC8增强型单片机开发【热敏电阻】
  • STC8增强型单片机开发【LED呼吸灯(PWM)⭐⭐】
  • 流水灯效果探索与实现
2024年34篇
2023年22篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家上海开业商场美陈多少钱佳木斯玻璃钢雕塑价格小黄人雕塑玻璃钢摆件开封人物玻璃钢彩绘雕塑定制山西玻璃钢花盆造型山东大型商场创意商业美陈报价山东仿铜玻璃钢雕塑制作商场展厅美陈制作玻璃钢雕塑教程池州校园玻璃钢雕塑定制玻璃钢花盆厂家北京哪里有玻璃钢雕塑神像烟台园林玻璃钢雕塑定做济源玻璃钢商场美陈陕西玻璃钢雕塑施工湖南玻璃钢雕塑定做玻璃钢雕塑报价计算肇庆玻璃钢雕塑设计玻璃钢桶雕塑效果图武威彩色玻璃钢雕塑厂家杭州夏季商场美陈湖南长沙玻璃钢雕塑定做玻璃钢卡通雕塑怎么设计聊城玻璃钢雕塑多少钱房地产水景玻璃钢彩绘雕塑制作德州人物玻璃钢雕塑价格德庆玻璃钢造型雕塑价格长宁区镜面玻璃钢雕塑在线咨询划算的宁夏玻璃钢雕塑惠州玻璃钢雕塑生产香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化