找回密码
 立即注册
楼主: Jeff

冲哥32G单片机视频教程学习记录帖

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-2 20:20:02 | 显示全部楼层
第十七集:模数转换器ADC上 冲哥

一、模数转换器(ADC)是什么
二、STC32G单片机ADC使用原理
三、编写最简单的ADC采集代码(查询&中断)

1、模数转换器是什么?
      模数转换器即A/D转换器,或简称ADC(Analog-to-digital converter),通常是指一个将模拟信号转变为数字信号的电子元件。
      模拟信号  ->  电压
      数字信号  ->  0和1组成的二进制数 (1101 1101 的十进制动画演示略)

2、ADC原理EXCEL表格演示讲解。
3、STC32G单片机ADC使用原理:STC32G芯片内部集成一个12位高速A/D转换器。(12位是细分比较次数)
4、ADC转换格式有两种,左对齐和右对齐。
5、注意:ACD的第15通道是专门测量内部1.19V参考信号源通道。由于制造和测量误差,导致实际内部参考信号源大约1%误差。如果用户需要精准信号值,可外接精准参考信号源。然后利用第15通道测量。ADC_VRef+脚外接参考电源时,可利用第十五通道反推ADC_VRef+脚外接参考电源的电压,如将ADC_VRef+短接到MCU-VCC,就可以反推MCU-VCC电压
6、警告:如果芯片有ADC外部参考电源管脚ADC_VRef+,则一定不能浮空,必须接外部参考电压或直接连到VCC.
7、使用ADC功能时有Vref引脚的单片机千万千万千万不能悬空,必须接外部参考电压源或者VCC!!!
8、ADC控制寄存器(ADC_CONTR),PWM触发ADC控制。
9:、ADC_POWER(B7位)0:关闭ADC电源;1:打开ADC电源。
10、进入空闲或者掉电模式建议关掉电源,降低功耗。
11、特别注意:1、给MCU的内部ADC模块电源打开后,需等待1MS,等MCU内部ADC电源稳定后再让ADC工作。2、适当加长对外部信号采样时间,就是对ADC采样保持电容的充电和放电时间,时间够,内外部电势相等
12、ADC_START(B6位):ADC转换启动控制位,写入1后开始ADC转换,转换完成后硬件自动将此位清零。
13、ADC_FLAG(B5位):ADC转换结束标志。转换完硬件自动置1,并向CPU提出中断请求,此标志必须软件清零。

14、ADC配置寄存器(ADCCFG)
15、RESFMT(B5):转换结果控制位。0:左对齐(右补零)。1右对齐(左补零)、
16、SPEED:设置ADC时钟。

17、ADC时序控制寄存器(ADCTIM)
18、CSSETUP(B7):通道选择时间控制。0,1
19、CSHOLD【1:0】(B6-B5):ADC通道选择保持时间控制。00 01 10 11
20、SMPDUTY[4:0](B4~B0):ADC模拟信号采样时间控制Tduty(注意:SMPDUTY一定不能设置小于01010B)
21、ADC速度计算公式。
22、ADC转换结果计算公式。(注意是否妃有独立ADC_Vref+管脚,如果有以外部精度管脚电压以VCC为准)
23、反推ADC输入电压计算公式。
24、ADC参考采样电路图,VRef+一定要接入VCC基准电源(通过511R电阻和CD431/TL431后),不得悬空不得悬空不得悬空。高精度里面常用,封装22U独石电容,10U电容,0.1电容。
25、经典USB下载电路,务必在原电路上保留此线路,23管脚10K上拉VCC,电阻下方接300R电阻,按钮开关接地。USBD+D-串33R电阻,USB电源正5V,GND接地--TypeA或TypeC电路。也可用SIP4接口。

26、最简单的ADC采样代码。ADC接口一定要设定高阻输入
27、新建文件夹ADC,添加路径,添加文件,写adc.h的头文件,写adc.c的初始化函数文件。

本课时完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-3 21:31:23 | 显示全部楼层
第十七集:模数转换器ADC下 冲哥

第一部分  ADC采集
1、实现ADC采样,爱的adc.c文件中实现ADC_Init初始化函数,ADC_Read读取按键函数,ADC_CAL_Voltage基准电压采集函数(内含采集电压计算方法)。
2、adc.h文件中实现以上三个函数声明,
3、demo.c文件中先引用adc.h的头文件,主main函数中增加ADC_VAL局部变量,进入while循环增加个时间延时,然后printf输出采集按键电压数据。
4、知识点:注意adc采集时的ADCCFG=左右对齐,高八位和低八位数据组合。ADC_START=ADC开启转换命令,ADC_POWER=ADC电源命令,相应管脚的高阻输入。ADC_FLAG=ADC标志位
5、电压读取的计算公式return num*2.5*1000/4096
6、ADC_Read读取电压函数中的(&=)与等于计算方法;选择通道的(|=)或等于赋值方法,while循环中(!ADC_FLAG)不等于结束位的条件判断
第二部分 ADC中断
1、adc.c文件中增加EADC打开中断命令
2、预编译的学习用法:adc.h中声明选择条件的声明与结果条件匹配方法的注意。
3、adc.c文件中预编译的条件分支与作用范围,注意公共函数的位置不在预编译条件分支有效区内。
4、跨C文件引用变量首先要在变量定义C文件对应的.h头文件中用extern 声明共用的变量名和数据类型。
5、ACD采集时因为我们最大12位采集所以要注意局部变量的U16和U8的数据类型长度,避免采集结果超出边界溢出。

本课时完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-5 17:34:40 | 显示全部楼层
第十八集:ADC采集电源电压和ADC按键 上 冲哥

一、ADC反推电源电压
二、ADC扫描按键(长按循环触发)
三、实战小练

1、利用ADC的15通道(内部1.19参考信号源)测量外部电压或电池电压。
2、利用外部电池供电,电压在3.7~4.3V之间,反推电压可以检测外部电压。
3、从CHPID中读取内部参考电压。宏定义CHIPID7,内部高字节,CHIPID8,内部低字节。
4、内部采样逻辑公式。

5、测试代码编写
6、在adc.c文件查询分支里面增加函数u16 ADC_VrefCal(void),读取内部电压,for循环读取8次,保存变量,结果右移三位,然后计算电压return返回值注意:为了电压稳定,本函数进入for循环前要多读取2~4次电压不做操作
7、在adc.h文件中声明ADC_VrefCal函数。
8、在demo.c文件main函数中EA=1总中断中初始化并读取ADC调用函数ADC_VrefCal。
9、注意事项:adc.c文件为要声明查询分支内的局部参数,要声明#define CHIPID7高八位字节和CHIPID8低八位字节。

10、ADC扫描按键电路图功能讲解。ADC按键电源串1K,电容104接地。1K电阻后面100K接地,每个跨界按键中的VREF中间串联301R电阻,最后接地。
11、手册上讲解扫描按键是16个长按按键。12位ADC输出计算最后三次按键输出值,判断有效时允许一定偏差,比如正负16个字的偏差,允许误差64。中间不稳定舍去。
12、adc.c文件中增加共用函数u8 ADC_KeyRead(u16 adc)。

本课时完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-7 20:09:45 | 显示全部楼层
第十八集:ADC采集电源电压和ADC按键 中   冲哥

1、生成下载上节课时程序,数码管显示0-9.按键1激活调试通过。
2、代码练习按键时间和计数。adc.c文件ADC_KeyRead函数增加两个局部静态static参数key_last,key_downtime,新增for循环。注意break的用法
3、代码练习按键+1,长按3秒激活自动累加,更换按键读取的循环逻辑。注意点:本次按键选择、上次按键状态,计数
4、 demo.c文件里主函数增加if(ADC_KeyRead(ADC_Read(0)) == 1)的判断。生成写入调试。

5、程序练习时钟显示并30秒蜂鸣。
6、seg_led.c文件,增加时钟显示函数Clock_InitShow,注意内部时分秒的计算格式(取整和求余),并赋值到8位数码管。SEG数组增加显示时钟中横线数值OxBF,同时数组总数+1,---切记
7、seg_led.h文件声明函数Clock_InitShow。
8、demo.c里面主函数main里面引用Clock_InitShow函数。同时定义三个时分秒全局变量(注意不要和常用保留字段冲突
9、增加时钟设置与运行变量RUN_STATE=0(运行)=1设置。增加时间计数局部参数count。
10、完成时间循环和时分秒判断(>60本时分秒自动归零)。注意单片机时间运行参数计数100*10=1秒的计算
11、测试秒数到30秒自动蜂鸣3秒。

本课时完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-14 05:03:31 | 显示全部楼层
第十八集:ADC采集电源电压和ADC按键 下   冲哥

1、长按按钮A进入设置功能。
2、demo.c文件中main函数增加switch循环,ADC_KeyRead(ADC_Read(0)判断按键那个按下。
3、修改adc.c文件中keyRead函数中按键三秒返回return i+0x80(原来返回的是最低位,现在+上最高位最大17占用0000 0000位),进入设置。
4、seg_led.c文件进入数码管刷新函数SEG_LED_Show,增加两个参数blink(是否点亮本数码管状态),blink_bit(8位数码管循环位置),不要忘记在seg_led.h文件中extern此变量,方便全工程调用。
5、增加数码管进入设置的延时闪烁计时循环。
6、增加函数SEG_LED_Show段码循环中的状态控制。
7、demo.c main函数switch循环中读取长按A的键值case 11+0X80:动作和赋值。
8、switch循环中增加CASE中扫描0-9的按键读值并赋值到相应的数码管闪烁设置位。
9、main函数中增加一个新的局部变量keynum用来保存这个按键闪烁状态,然后把新设置按键赋值到相应的0-7数据管位。(当等于第三位(2),第五位(4)是时间分号要跳过)。
10:、设置完成后重新赋值时分秒重新赋值,这样刷新数码管后设置状态不会跳动。
11、长按下B键(case 12+0X80:)秒数自动增加,抽取秒数自动++的函数为独立函数TIME_SET_Second,代码整洁,移植和调用清晰。
12、switch循环中增加D键case 14:退出设置状态。RUN_STATE = 0;(退出设置状态)blink_bit = 0xff;退出数码管设置闪动状态。


本章节全完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-15 09:14:41 | 显示全部楼层
第十九集:NTC温度采集  冲哥

一、NTC的原理
二、NTC的测温程序编写
三、实战小练


1、NTC原理:NTC(Negative Temperature Coefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。该材料是利用锰、铜、硅、钴、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体陶瓷,可制成具有负温度系数(NTC)的热敏电阻。其电阻率和材料常数随材料成分比例、烧结气氛、烧结温度和结构状态不同而变化。现在还出现了以碳化硅、硒化锡、氮化钽等为代表的非氧化物系NTC热敏电阻材料。
2、NTC公式:Rt = RT0*EXP(Bn*(1/T-1/T0))式中RT、RT0分别为温度T、T0时的电阻值,Bn为材料常数.陶瓷晶粒本身由于温度变化而使电阻率发生变化,这是由半导体特性决定的。
3、NTC接线:开发板上接R6 10K分压电阻 串联NTC,NTC并联C6 106电容(滤波作用,原则高通低滤,低通高滤)。
4、VREF电压换算成ADC就是4096,在NTC两端输出的电阻,原理是根据非线性对应关系的【out电阻值/(out电阻值+分压电阻10K)*4096】=温度, excel表格round取整和保留0位小数。
5、取整求余后的余数做均分求比得出温度后的小数点位精确度。
6、代码练习。

7、复制上一个工程文件夹新命名。
8、在此文件夹HARDWARE中新建子文件夹命名NTC,NTC中增加两个文件ntc.c和ntc.h.
9、在ntc.c中#include "ntc.h"文件,同时在demo.c中也引用此文件。
10、在ntc.c中就添加adc_table数组,内部元素为190个温控阻值对应表,温度有效范围-40~150.
11、在ntc.c中添加Temp_Cal( u16 adc )温度计算函数,并在nec.h中声明此函数。
12、在demo.c的main函数中中声明TEMP_VAL温度变量参数,然后赋值并打印。

13、在ntc.c中Temp_Cal函数添加小数点计算和赋值步骤。根据输出计算小数点位置。
14、数码管调试赋值,注意P1.3管脚高阻输入。(P1M0 = 0x00; P1M1 = 0x08;)
15、实验箱V9.62NTC测温要换位跳线帽,右侧为测电压,左侧为NTC测温。 --切记切记!!!

本课时完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-21 03:53:31 | 显示全部楼层
第二十集:串口通信 上    冲哥

一、串口通信的基础知识
二、STC32的串口通信实现原理
三、串口通信代码实现

1、串口通讯分为并行通信和串行通信。
2、同步串口通信(USART1\USART2)
3、异步串口通信(USART3\USART4)---本课主讲
4、串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
5、数据发送TxD,数据接收RxD,发送和目的位交叉接线
6、异步串口以发送 :注意数据位LSB和MSB
    ①以字符为单位传送信息。
    ②相邻两字符间的间隔是任意长。
    ③因为一个字符中的比特位长度有限,所以需 要的接收时钟和发送时钟只要相近就可以。
    ④异步方式特点简单的说就是:字符间异步,字符内部各位同步。

7、同步串口以数据块发送
     ①以数据块为单位传送信息。
     ②在一个数据块(信息帧)内,字符与字符间无间隔。
     ③因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟。

8、串口分为单工、半双工和全双工。STC全部为4个全双工通信接口
9、波特率:每秒发送的多少位的数据。比如9600/s.
10、波特率、数据位、校验位、停止位。通信四个重要参数。
11、逻辑电平只有5V或3.3V,电平比较低,传输距离比较短,解决用232芯片,422芯片或RS485芯片,
12、应用范围:串口转以太网、串口转WiFi、串口转蓝牙、串口转Zigbee,---智能家居扩展。
13、STC串口引脚4线分时使用。注意可以更换指定固定引脚。
14、STC模式选择,4种。SMO SM1 中间0、1的设置来匹配4种模式 00 01  10  11
15、串口相关寄存器。
16、发送的时候写入SBUF先拉高电平再置地,TI全程低电平,接收的时候写SCON先拉高电平再置地,RI全程低电平。
17、串口1的波特率可变。用定时器根据公式确定时钟精度转换。
18、串口代码实现

19、实验箱用的232芯片   串口接到4.6. 4.7。
20、复制上一个项目。在HARDWARE文件夹新建USART文件夹,添加usart2.c和usart2.h头文件,同时在文件里面引用文件夹地址,添加文件到工程。

上课时完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-2-21 05:05:02 | 显示全部楼层
第二十集:串口通信 下    冲哥

1、usart2.c文件中宏定义BRT,分别实现Usart2_Init、Usart2_Send  、 Usart2_SendStr 三个函数和中断函数Usart_Isr() interrupt 8。并在usart2.h文件中声明前三个函数。
2、usart2.c声明四个全局变量参数busy、wptr、rptr、buffer[16],并在usart2.h中extern这四个变量方便整个工程文件调用。
3、usart2.h中宏定义#define MAIN_Fosc 11059200UL 定义串口通信系统时钟。
4、在usart2.c和demo.c中引用usart2.h文件。
5、demo.c文件main函数中调用Usart2_Init()初始化串口通信。while循环里面增加判断发送然后自动调用串口中断函数Usart_Isr() interrupt 8。
6、程序调试成功。

本课时完结。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-22 10:04:05

0

主题

2

回帖

22

积分

新手上路

积分
22
发表于 2025-5-22 10:04:05 | 显示全部楼层
Je*** 发表于 2025-2-15 09:14
第十九集:NTC温度采集  冲哥

一、NTC的原理

这个资料怎么下载
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-06-16 00:05:11
已绑定手机

3

主题

71

回帖

979

积分

高级会员

积分
979
发表于 2025-5-22 23:38:11 | 显示全部楼层
和硕*** 发表于 2025-5-22 10:04
这个资料怎么下载

论坛软件资源下载相关的,帖子里也有上传的。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 00:15 , Processed in 0.163139 second(s), 94 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表