找回密码
 立即注册
楼主: 养只***

STC32G冲哥视频学习笔记----已完成到第十九集(包含所有完成代码)申请的试验箱到啦

[复制链接]

该用户从未签到

4

主题

18

回帖

170

积分

注册会员

积分
170
发表于 2023-4-23 15:30:08 | 显示全部楼层
厉害!强悍!搬着小板凳来学习了
回复 支持 反对 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-23 17:09:05 | 显示全部楼层
十三、多任务_课后练习之分时显示翻转LED灯


刚开始的实现是在定时器0中对10ms定时时间进行计数
1.png
然后再While循环中对计数值进行判断
2.png

结果过我发现问体LED0和LED1的闪烁是不正常的,因为在while循环中判断的周期是很快的,也就是说在TIM0_10MS_NUM=20到TIM0_10MS_NUM=21这中间时间已经过去了10ms,在这10ms时间中TIM0_10MS_NUM 一直都是等于20的,所以会导致LED0 = !LED0会被多次执行,LED1的已是由于这样引起的!!!!
最后修改后实现的程序实这样的:
在定时器中多加了一个10ms的定时累计和一个100ms的标志位
3.png

在while循环中每100MS进行一次判断,这样就完美避开了上面出现的问题,当然你也可以根据实际使用情况进行200MS判断一次,我这里用100MS可以去兼容在奇数MS进行其他的动作
4.png


完整工程代码,有兴趣的可以下载附件进行观看。

13_多任务_练习1.zip

85.58 KB, 下载次数: 14

回复 支持 1 反对 0 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-23 21:12:29 | 显示全部楼层
十三、多任务之电磁炉重写
需求分析:
1.png

主要代码如下:
2.png 3.png

定时器0产生1ms时间中断刷新数码管与LED,同时产生10ms定时标志信号
在While循环中每10ms进行一次按键状态扫描与蜂鸣器状态更新,然后根据读取按键返回值执行相应的操作,
这里主要的点是开机时候的200ms延时由定时器来完成,不对程序进行阻塞。

完整工程请下载附件观看。

13_多任务_练习2.zip

203.86 KB, 下载次数: 15

回复 支持 1 反对 0 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-24 01:38:40 | 显示全部楼层
本帖最后由 养只小猫咪 于 2023-4-24 01:40 编辑

十四、矩阵键盘之门锁实现

实现功能:

1.通过LED0模拟门锁状态,LED点亮表示门锁打开,熄灭表示门锁锁上;
2.增加8位数码管,可以动态显示8位的密码,无密码时显示 “- - - - - - - -”;
3.通过矩阵按键可以输入1-8的数字表示密码,并依次显示在数码管上;
4.每输入一个数字,蜂鸣器响20ms表示有数字按下;
5.密码正确打开LED0,密码错误蜂鸣响2秒;

6.LED0(门锁)打开后,5秒后自动关闭;
7.增加门内的手动开门按钮,按下按钮门锁打开;
8.10秒内没有输入密码自动数码管熄灭省电;有按 键按下时再显示。  
9.用for去改写一下密码判断的地方。


可以通过下载附件中的视频直接看视频演示效果:
完整的工程源码,请下载附件获取。


14_矩阵按键.zip

88.08 KB, 下载次数: 16

矩阵按键演示视频.zip

21.98 MB, 下载次数: 14

回复 支持 反对 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-24 14:14:14 | 显示全部楼层
十五、外部中断
STC32G12K128有五个外部中断,分别是外部中断0-4,对应着INT0(0)、INT1(2)、INT2(10)、INT3(11)、INT4(16)
STC32G中断结构图如下(这里只关注外部中断)
1.png

以外部中断0为例
1、查找外部中断0的引脚
2.png

P32引脚是外部中断0的引脚
2、配置外部中断0的中断方式
3.png

4.png

也就是IT0 = 0的时候外部中断是上升沿和下降沿都产生中断IT0 = 1的时候是只有下降沿才产生中断
IE0是外部中断发生时,IE0自动置1,向CPU发出中断请求,当CPU对该请求响应后,会被自动清0

3、允许外部中断0产生中断
5.png 6.png
EX0是允许和禁止外部中断0的控制位,EX0 = 1;允许外部中断0中断
4、打开总中断
7.png

EA = 1; 打开总中断

然后再书写相应的中断服务函数进行相关操作即可。
主要代码如下所示:
8.png


完整工程代码请下载附件观看

15_Exit外部中断.zip

214.31 KB, 下载次数: 18

回复 支持 1 反对 0 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-25 11:31:20 | 显示全部楼层
十六、普通IO中断

STC32G12K128支持IO中断,有四种中断模式,下降沿中断、上升沿中断、低电平中断和高电平中断。没个IO都可以独立设置中断模式。
由于我使用的板子和冲哥的不一样,所以用P35引脚来测试IO中断功能。(配置成低电平中断)
1.png

1、配置端口中断模式(PxIM0、PxIM1)
2.png

P3IM1 |= (1<<5)
P3IM0 &= ~(1<<5)
2、配置端口中断优先级

3.png

不能单个IO口配置中断优先级,只能配置某个IO端口的中断优先级
配置P3口中断优先级为最低级
PINIPL &= ~(1<<3)
PINIPH &= ~(1<<3)
3、配置端口中断标志位寄存器

4.png

P3INTF  &= ~(1<<5)   软件清0
4、配置端口中断使能

5.png

P3INTE |= (1<<5)
5、编写端口中断服务程序

主要的代码如下所示:
6.png


实战小练习
7.png

完整工程代码请下载附件观看






16_IO中断.zip

245.7 KB, 下载次数: 22

回复 支持 1 反对 0 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-25 14:21:42 | 显示全部楼层
本帖最后由 养只小猫咪 于 2023-4-25 14:49 编辑

十七、ADC模数转换

STC32G系列具有0-15总共16个通道的12位精度的ADC采样引脚(由于15通道被用作芯片内部1.19V的测试读取)实际只有15个通道可用
通道对应的引脚如下:
1.png
先配置下ADC读取内部测试电压1.19V
1、ADC输入时钟配置(ADCCFG)

2.png

12位ADC配置成数据右对齐输出ADCCFG |= (1<<5)
3.png

系统时钟是24Mhz,在进行2分频之后再进行16分频后得到ADC的输入时钟是750KHZ
ADCCFG |= 0x0F

2、ADC时序控制寄存器的配置(ADCTIM)
4.png 5.png

使用示例程序中的配置
ADCTIM = 0x3F    //采样时间配置成32个ADC时钟
3、ADC控制寄存器(AD_CONTR)

6.png

7.png

打开ADC电源  ADC_POWER = 1
4、读取ADC采样值
8.png
完整工程代码,请下载附件观看。





17_ADC.zip

267.21 KB, 下载次数: 18

回复 支持 反对 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-25 15:13:41 | 显示全部楼层
十七、ADC_简易电压表

完整工程代码请下载附件观看!!


17_ADC_简易电压表.zip

270.16 KB, 下载次数: 23

回复 支持 反对 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-25 15:18:20 | 显示全部楼层
十八、ADC按键

1.png

通过电阻将VDD进行划分,相关按键按下,对应到不同的电阻分压连接到ADC输入端实现按键键值的识别,由于手边没有相关的电路,所以不做说明。

回复 支持 反对 送花

使用道具 举报

该用户从未签到

8

主题

26

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-4-25 17:36:24 | 显示全部楼层
十九、NTC测温

总结一下,NTC测温主要用的是,一个热敏电阻与一个高精度电阻组成的分压电路,然后由于热敏电阻随着温度变化,阻值相应发生变化,ADC读取到的数据也随之变动。
1、根据热敏电阻本身的特性构建数组
2、根据ADC读取带的数值,查找与数组中数值相近的,进行温度换算。
这个查找的过程也可以通过二分法进行实现
3、通过与实际值相邻两个整数计算出小数部分。
回复 支持 反对 送花

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 18:42 , Processed in 0.073391 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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