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

视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版

   火... [复制链接]

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-10 13:21:06 | 显示全部楼层
第十集:了解数码管怎么实现的动态显示,学会第一位的数码管的任意内容的显示。
回复 支持 反对

使用道具 举报 送花

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-10 16:06:42 | 显示全部楼层
本帖最后由 sanyang 于 2023-8-19 11:41 编辑

第十一集:
定时器是定时器和计数器的统称。
设置为定时器时,可实现硬件计时,或使程序每隔一固定时间完成 一项操作,
设置为计数器时能够对脉冲进行计数
替代长时间的delay,提高CPU的运行效率和处理速度,能及时 的响应事件

当定时器、计数器T0,T1,及T2工作在定时模式时,特殊功能寄存器AUXR中的T0x12、T1x12和T2x12分别决定
是系统时钟/1(不分频)还是系统时钟/12后让T0、T1、T2进行计数。当定时器/计数器T3和T4工作在定时模式
时,特殊功能寄存器T4T3M中的T3x12和T4x12分别决定是系统时钟/12还是系统时钟/1后让T3和T4进行计数。
当定时器/计数器工作在计数模式时,对外部脉冲计数不分频。
定时方式,定时器/计数器每12个时钟或每1个时钟得到一个计数脉冲,计数值加1
STC32G系列单片机内部设置了5个16位定时器:T0、T1、T2、T3、T4都具有计数方式和定时方式两种工作方式。
T0和T1用它在特殊寄存器TMOD中相对应的控制位C/T来选择它为定时器还是计数器。
T2 用特殊寄存器AUXR中的控制位T2——CT一选择T2为定时器还是计数器。
T3 用特殊寄存器T4T3M中的控制位T3_C/T来选择T3为定时器还是计数器。
T4 用特殊寄存器T4T3M中的控制位T4_C/T来选择T4为定时器还是计数器。

定时器/计数器的核心部件是一个加法器,其本质是对脉冲进行计数。只是脉冲来源不同,计数脉冲来自系统时钟
则为定时方式,此时定时器/计数器每12个时钟或每1个时钟得到一个计数脉冲,计数值加1.如计数脉冲来自单片机
外部引脚,则为计数方式,每来一个脉冲加1.

定时器工作模式TMOD寄存器
                                    

符号   地址   B7    B6   B5  B4   B3   B2  B1 B0
TMOD 89H T1_GATE T1_C/T T1_M1 T1_M0 T0_GATE T0_C/T T0_M1T0_M0
T1_GATE:控制定时器1,置1时只有在INT脚为高及TR1控制位置1时才可打开定时器/计数器1.
T0_GATE:控制定时器0,置1时只有在INT脚为高及TR1控制位置1时才可打开定时器/计数器0.

T1_C/T:控制定时器1用作定时器或计数器,清0则用作定时器,对内部系统时钟进行计数,置1时用作计数器,对引脚T1/P3.5外部脉冲进行计数。
T0_C/T:控制定时器0用作定时器或计数器,清0则用作定时器,对内部系统时钟进行计数,置1时用作计数器,对引脚T0/P3.4外部脉冲进行计数。

定时器0
定时器1
定时器2
定时器3
        定时器4
  模式0
16位自动重载
16位自动重载 16位自动重载 16位自动重载 16位自动重载
  模式1
16位不可重载
  16位不可重载
  模式2  8位自动重载 8位自动重载
  模式3 16位自动重载不可屏蔽
波特率发生器

T0_M1/T0_M0:定时器/计数器1模式选择。
模式0:0,0 :16位自动重载模式,当TH0,TL0中的16位计数值溢出时(65535),系统会自动将16位重载寄存器中的重载值装入TH0TL0中。
模式1:0,1 :16位不自动重载模式,当TH0,TL0中的16位计数值溢出时,定时器0将从0开始计数。
模式2:1,0 :8位自动重载模式,当TL0中的8位计数值 溢出时(255),系统会自动将TH0中的重载值装入TL0中。
模式3:1,1 :不可屏蔽中断的16位自动重载模式,与模式0相同,不可屏蔽中断中断优先级最高,高于其他中断的优先级,并且不
                      可关闭,可用作操作系统的系统节拍定时器,或者系统监控定时器。

定时器0/1控制寄存器TCON
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
TCON
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0


TF0:T0溢出中断标志,T0被允许计数后,从初值开始加1计数,当产生溢出时,由硬件置”1“ TF0,向CPU请求中断,一直保持到CPU响应中断时,
       才硬件清0,也可由查询软件清0.
TR0:定时器T0的运行控制位。由软件置位和清0,当GATE(TMOD.3)=0,TR0=1时就允许T0开始计数,TR0=0时禁止T0计数。
         当GATE(TMOD.3)=1,TR0=1且INT0输入高电平时,才允许T0计数,TR0=0时禁止计数。
IE中断使能寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IE
A8H
EA
ELVD
EADC
ES
ET1
EX1
ET0
EX0
EA:总中断允许控制位,EA的作用是合中断允许形成多级控制,即各中断源首先受EA控制,其次还受各中断源自己的中断允许控制位控制。
       0:CPU屏蔽所有的中断申请,1:CPU开放中断。
ELVD:低压检测中断允许位。  0:禁止低压检测中断, 1:允许低压检测中断。
EADC:A/D转换中断允许位。   0:禁止A/D转换中断,  1:允许A/D转换中断。
ES     :串行口1中断允许位。  0:禁止串口1中断,      1:允许串口1中断。
ET1   :定时/计数器T1的溢出中断允许位。 0:禁止T1中断,    1:允许T1中断。
EX1   :外部中断1中断允许位。                 0:禁止INT1中断,1:允许INT1中断。

ET0   :定时/计数器T1的溢出中断允许位。 0:禁止T1中断,    1:允许T1中断。
EX0   :外部中断1中断允许位。                 0:禁止INT1中断,1:允许INT1中断。



回复 支持 反对

使用道具 举报 送花

1

主题

2

回帖

27

积分

新手上路

积分
27
发表于 2023-8-10 16:15:16 | 显示全部楼层
学的还好,咋照着范例,有的时候也会出错咋整
回复 支持 反对

使用道具 举报 送花

1

主题

14

回帖

90

积分

注册会员

积分
90
发表于 2023-8-10 17:27:44 | 显示全部楼层
第四集学习完毕,点亮LED,进入硬件操作了
回复 支持 反对

使用道具 举报 送花

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-10 18:04:54 | 显示全部楼层
第十二集:
T0_C/T:控制定时器1用作定时器或计数器,置0则作为定时器使用,置1用作计数器(对引脚T1/P3.5的外部脉冲进行计数)
T0_GATE:控制定时器0,置1时只有在INT0为高及TR0置1时才可以打开定时器/计数器0
回复 支持 反对

使用道具 举报 送花

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-10 21:16:05 | 显示全部楼层
本帖最后由 sanyang 于 2023-8-19 20:30 编辑

第十三集:
修饰符extern用在变量或函数的声明前,用来说明”此变量/函数是在别处定义的,要在此处引用“
举例1:如果文件a.c要引用b.c中的变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。
例2:如果文件a.c要引用b.c中变量int v,就可以在b.h中声明extern int v,然后a.c调用b.h就可以引用变量v。
extern修饰的变量不能赋初值
bdata位寻址变量的使用
a.c
u8 bdata LED =0x00;
sbit LED0=LED^0;
sbit LED1=LED^1;

a.h
extern u8 bdata LED;
extern bit LED0;
extern bit LED1;

static 静态变量,下一次再进入函数就不会再次被赋值,

复制多列:ALT+SHIFT

创建文件后添加到工程:
双击SourceGroup1,选中要添加的.c文件双击就可以添加到工程中,
引用这个文件的路径,点击Options for Target "Target 1"图标,点C251,在include Paths的右侧点击三个点的图标,再点new,找到要添加的路径,OK即可。
写头文件,先进行有没有定义过的检测,
回复 支持 反对

使用道具 举报 送花

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-11 08:37:59 | 显示全部楼层
第十四集:有点要跟不上了,以后有开发板多多练习吧
回复 支持 反对

使用道具 举报 送花

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-11 09:31:43 | 显示全部楼层
第十五集:
INT0:是P32脚
INT1:是P33脚
INT2:是P36脚
INT3:是P37脚
这款单片机的外部中断只能在这四个引脚上使用。
外部中断0: IT0   IE0  EX0  EA  
当IT0=0时,上升沿或下降沿均可触发外部中断0.IT0=1,外部中断0为下降没触发方式。
IE0:外部中断0中断请求标志,中断服务程序中,硬件自动清零。上电时最好手动清零,防止上电直接进入中断。
EX0:外部中断0的中断允许位。0:禁用,1:使能。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-05-12 08:50:50

2

主题

21

回帖

1212

积分

金牌会员

积分
1212
发表于 2023-8-11 11:53:03 | 显示全部楼层
本帖最后由 takalama 于 2023-8-30 11:22 编辑

STC的新菜鸟来了,希望多多关照,一起来学飞
序:
    STC32G12K128-实验箱-V9.6我来了!
Day1:
    番外篇:冲哥(令狐大侠、十年老菜鸟),不用谦虚谁还不是第一次。
    内容:认识单片机
    1、什么是单片机?
        (1) 一种集成电路芯片;
        (2) 外观:看个人需求,这边选择和冲哥一样(STC3212K128-LQFP64);
        (3) 试验箱(买个/白漂),或者有能力的DIY一个(呵呵,菜鸟先就算了);
    2、功能
        (1) 总的来说就是做有规律可循的控制应用;
        (2) 用途:仪器仪表、家电、医用设备、航空航天、汽车电子,基本遍布你所熟悉的方方面面;
            ① 技巧:淘宝也是一个可以快速解决未知之谜的圣地;
    3、冲哥解疑答惑
        (1) 30岁还能学单片机吗?
            ① 年龄不是问题,兴趣最重要,开心就好!
        (2) 新手学STC的51还是STM32那些?
            ① 个人推荐51入门,期待STC33;
        (3) 51单片机淘汰了嘛?
            ① 不可能,绝对不可能;
        (4) 怎么才算入门单片机了?
            ① 跟着冲哥即可(so easy!);
            ② 挑几个竞赛小项目试试;
        (5) 小学生可不可以学习单片机?
            ① 可以(图形化编程,逻辑思维培养)
        (6) 做一个普通项目的单片机都需要掌握什么才能不会感觉有压力?
            ① 方法很重要;
            ② 有压力找官网;        
        (7) 汇编有没有必要?
            ① 新手还是先C,遇到需要汇编再用;
        (8) 单片机用库函数好还是寄存器好?
            ① 通用性,寄存器方便修改;个人推荐寄存器;
        (9) STC单片机到底好不好?
            ① 好,非常好(不用谦虚);
            ② 官网技术总工坐阵;
            ③ 合适就是最好;
        (10) 以前从来没有学过单片机,目前还在上班,还能学吗?
            ① 能;
4、冲哥建议
        (1) 静心、沉气;
        (2) 多动手;
        (3) 举一反三,发散思维;
        (4) 多看(资料、别人问题、自己问题);
        (5) 逛论坛(新鸟、老鸟各有所长);
        (6) 动手做项目(没项目找竞赛题);

Day2
    硬件:STC大学计划实验箱-V9.4
    内容:了解硬件
     1、开发板介绍
        (1) 蜂鸣器、调试接口、RS232电路、Flash扩展、RS232接口、USB、LED、LCD、
             独立按键、矩形键盘、24C02、PWM模拟DAC、基准电压、ADC按键、NTC测温18B20、万能板、LED指示灯、数码管、电压比较、红外接收、红外发射;
     2、举例说明了18B20应用、按键、ADC按键、PWM模拟DAC(了解大概意思即可);
          (1) 模数/数模;
          (2) 定时器炸弹、128*64可以模拟;
     3、做了一些芯片的基本讲解(对试验箱有个大体概念);
     4、课后作业
          (1) 想一个项目,作为自己的第一个产品;

Day3
    工欲善其事,必先利其器
    内容:开发环境搭建和程序下载
    1、STC-ISP:所有STC的单片机下载工具(官网下载最新版即可);
    2、STC32手册:工具书;
    3、PDF阅读器:WPS、福昕(自己选用起来舒服的);
    4、C251:还是keil,正常安装就行;
    讲解工具的安装和使用技巧,适合自己的就是最棒的;
    建议:程序包流水灯动手下载一个程序,依次解决遇到的各种设置问题,加深印象;

Day4
开土动工
    内容:建立工程点亮一颗LED上
    1、LED点亮原理
            ① 了解基本硬件电路,GPIO的概念(传统单片机的IO口);
    2、新建工程
            ① 跟着手册创建工程,敲完这个工程,你会发现各种意想不到的状况(标点符号、大小写、单词),没有试验箱一样收获多多;   
    3、 点亮第一个LED
            ① 举一反三,拓展思维(其实宏定义是个好东西);
            ② SFR寄存器的引入(操作内容后期慢慢分解);
    例:
    /*Demo:点灯*/
    //------------------------------------------------------------------------------------------------
    sfr P0        =        0x80;        //P0口设置
    sfr P0M1   =        0x93;      
    sfr P0M0    =        0x94;

    sfr P4        =        0xC0;      //P4口设置
    sfr P4M1   =        0xB3;      
    sfr P4M0    =        0xB4;

    sfr P6        =        0xE8;       //P6口设置
    sfr P6M1   =        0xC8;      
    sfr P6M0    =        0xCC;

    sbit P40     =        P4^0;     //三极管控制引脚
    sbit P60     =        P6^0;     //LED控制引脚

    void main()
    {
        P0M0 = 0x00;                //准双向模式
        P0M1 = 0x00;

        P4M0 = 0x00;
        P4M1 = 0x00;

        P6M0 = 0x00;
        P6M1 = 0x00;

        while(1)                         //大循环
        {
            //P0++;
           P40 = 0;
           P60 = 0;
        }
    }         
    //------------------------------------------------------------------------------------------------

Day5
开土动工
    硬件:STC大学计划实验箱-V9.4
    内容:建立工程点亮一颗LED下  
    4、实现自动下载工程;
            ① 优点:不需要每次断电(手册5.15有详解,照本宣科即可,此处不需要发挥你的想象);  
            ② 了解头文件:COMM/STC.h 和 COMM/usb.h;
            ③ 拿来主义(复制过来直接用);     
   
Day6:
    内容:C语言运算符和进制数入门上
    1、C语言printf函数的实现;                         //常规用法,不懂补充C基础知识
            ① printf("Hello World!");
            ② printf("室内温度:%2f\r\n",11.2);      
    2、数的进制:2/10/16进制;
            ① 0、1;
            ② 0、1、2、3、4、5、6、7、8、9;
            ③ 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;
            提示PC端的计算器是个好东西;

Day7:
    内容:C语言运算符和进制数入门下
    2、数的进制:2/10/16进制;
            实际用途举例:
                    P4端口                          P4^7      P4^6      P4^5      P4^4      P4^3      P4^2      P4^1      P4^0
                    P4 = 0x00                        0            0            0             0            0             0            0             0
                    P4 = 0xEE                        1            1            1             0            1             1            1             0          
                    0xEE 和 11101110 和 238  
    3、C语言常用运算符;
            ① +,-,*,/、模(余);
            ② ++i,--i,i++,i--(注意先后顺序,先计算后加减/先加减后计算)
            ③ >>、<<、&、|、^、~(实操一下很容易理解);
            ④ 其他+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=(同上);
    4、数据的基本类型;  
        

数据类型

数据类型

     
Day8:
    内容:LED闪烁和花式点灯上
    硬件:STC大学计划实验箱-V9.6(多了一个示波器试验)、软件和手册官网都更新了
    #define MAIN_Fosc 24000000UL          //IRC系统时钟,方便后期修改(宏定义的小技巧)
    1、基于Delay实现的LED闪烁;
            ① void delay_ms(u16 ms)               //延迟多少毫秒,注意使用时的一个小弊端
                {
                    u16 i;
                    do
                    {
                        i = Main_Fosc/6000;
                        while(--i);
                    }
                    while(--ms);
                }   
               拓展:do while、for,都可以做延迟,STC_ISP下载器提供有样例;  
     
Day9:
    2、函数的使用;
            ① 函数定义
                返回值    函数名称(入口参数)
                {
                    函数要执行的功能;
                }
                注意格式,按要求办事;
            ② 函数声明
                返回值  函数名称(入口参数);      //使用前要打招呼(先声明)
           ③ 函数调用      
                 函数名称(入口参数);                  //声明过了,别人就可以呼叫你
    3、新建文件,使用模块化编程;
             新建xxx.c 和 xxx.h文件,代表一个功能块
             xxx.h格式:
             #ifndef __XXX_H
             #define __XXX_H
            调用头文件
            函数声明
            #endif

             xxx.c格式
             #include “xxx.h”
             函数定义
             添加文件一定要记得引用路径和添加到工程里;
             十年老菜鸟得经验所得(建议使用,后期受益多多哦),当然也可以任性不用。

Day10:
    内容:按键点灯上
    作业分析:
         void SOS_Led(void);  //三长两短LED闪烁
         用延迟函数实现,对P60亮灭200(和500)毫秒得延迟实现,可自行调整参数观察显示效果
    1、按键的原理;
          机械按键:自身特性,导致触电断开、闭合时据不完全统计会有5-10毫秒的接触不良(需要做按键消抖处理);
          思考:机械方面是否能解决呢?
    2、按键的代码实现过程(KEY按需宏定义需要控制的引脚);
          if(KEY == 0)                           if(KEY == 0)
          {                                             {
              Delay_ms(10);                         Delay_ms(10);
              if(KEY == 0)                            if(KEY == 0)
              {                                              {
                  执行功能;                                 while(KEY == 0)
              }                                                     执行功能;
          }                                                   }
                                                          }
         做好CV工程师;
    3、按键的应用
         按键的各种玩法:
         按下LED点亮,松开熄灭;                      //消抖,判断按键是否按下
         按下LED熄灭,松开点亮;                      //同上,反过来
         按键按下一次,LED状态改变一次;        //消抖,判断按键是否按下,取反

Day11:
    内容:按键点灯下
         按键按下一次,LED往左边走一个;        //消抖,判断按键是否按下,移位
    4、数组的使用;
         ① 定义:类型 名称[长度] = {数值};
         ② 赋值:名称[索引] = 数值;
         提前把需要设置的值存入数组,然后需要的时候调用;
    提示:多多联系,举一反三;

Day12:
    内容:蜂鸣器的应用
    1、认识蜂鸣器;
         ① 有源、无源蜂鸣器;
             有钱能使鬼推磨,有源的给电就响;无源需要给定频率;
    2、控制原理;
         ① 按键改写,按下给电,响(试验箱的蜂鸣器是有源的);
    3、蜂鸣器实战应用;
         ① 电磁炉;
         ② 洗衣机;                 
    4、课后作业(按键3);

Day13:
    内容:课后作业(按键3)
    敲代码很枯燥,但效果展示让人兴奋,欢迎更多朋友入坑。
    大概思路:
    1、3个输入:开机、模式、运行/停止;
    2、开机给标志位(同时打开蜂鸣器),点亮全部LED,延迟200毫秒;
    3、其他情况:模式在未开机和开机情况下,处理各自内容;
    4、运行/停止:运行状态和未运行状态下,处理各自内容;
    5、调试修补位置情况下的异常处理,不断完善功能;

Day14:
    内容:数码管的静态使用
    1、认识数码管;
         ① 开发板2个4位共阳数码管;  
          前面的进制、数组、延迟、蜂鸣器有了用武之地;  
    2、控制原理;
         ① SS8550(9012、2N5401和2N2907三极管8550是一种常用的普通三极管。 它是一种低电压,大电流,小信号的PNP型硅三极管;     
    3、数码管实现0-9的显示;
         ① 通过置位,转换出(0-9的编码,此处注意用的数码管是共阴还是共阳);
    4、课后练习(虽然简单,但并不枯燥);
         ① 其他字符的显示;
         ② 0-9的循环(并且蜂鸣器对应响声);

Day15:
    内容:数码管的动态使用
    1、数码管动态刷新原理;
    2、控制原理;
    3、8位数码管同时点亮;
         ① 视觉差:人眼不容易分辨出50HZ以上的动态刷新(延迟1ms为准,循环不大于20ms);
         技巧:一个数组控制位显,一个控制显示字符,利用时间差可以在8个数码管同时显示字符;
              挑战十秒:实际应用,可以做个在家自己慢慢玩;
    4、课后练习:简易时钟;
          直接参考资料中的程序(搞明白实现过程);

Day16:
    内容:定时器的使用
    1、定时器的作用和意义;
         ① 定时器(计数器):本质就是对脉冲进行计数;
         开发板有5个定时器T0-T4;
    2、STC32G单片机定时器使用原理;
         ① 不分频和12分频;
         例子不错:变速自行车轮,不变速(脚踏板1圈,后轮1圈:不分频),变速(脚踏12圈,后轮1圈:分频);
         ② 工作模式;
         16位自动重载(常用);波特率发生器(串口会用到),后面再解;
         其他看手册用到再解;
         ③ 中断
          EA:总中断;        
    3、定时器的简单应用;
          微信图片_20230815165849.png
         ① TMOD、TL0、TH0(知道怎么计算即可,可以通过工具快速生成);
         ② 详细信息查询手册很清晰;
    4、定时器的快速使用方法;
         ① STC-ISP的定时器计算器界面,设置相应参数,生成代码(稍作修改即可);

Day17:
    内容:计数器的使用
    1、计数器的用途;
         ① 马达后面可以接码盘(不错,还能这样玩);
         ② 转换为数字信号(波形),计算得到计数;
    2、计数器的配置;
         ① T1_C/T、T1_GATE、TL1、TH1;
         ② 手册14.5.11 定时器1的实例;         
    3、计数器的应用;
         ① 上项目了:见2017年全国大学生电子设计竞赛试题-直流电动机测速装置;
         ② M法测速:又叫做频率量法;
    4、课后总结;
         ① T法测速:又叫做周期测量法;

Day18:
    内容:简易多任务处理上
    1、回顾;
         ① 重点理清程序的逻辑思路。重点理清程序的逻辑思路。重点理清程序的逻辑思路。
         ② 规范化;
    2、应用模块化的编程(.c .h);
         ① led_seg、key、beep、tim;
         ② 修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”;
    3、工程文件编写;
         ① 逐步完善程序的结构更合理完善;
         //========================================================================
         // 函数名称:
         // 函数功能:
         // 入口参数: @
         // 函数返回:
         // 当前版本: VER1.0
         // 修改日期: 2023
         //当前作者:
         // 其他备注:
         //========================================================================

Day19:
    内容:简易多任务处理中
    1、注意代码格式(小实战);
    2、led.c 和 led.h;
         ① 巧用搜索中的Replace;   

Day20:
    内容:简易多任务处理下
    1、注意代码格式(小实战);
    2、key.c 和 key.h;
         ① 规范后的代码,很容易看清楚程序的设计思想,更快领会作者的意图;
         KEY_Deal(void);                    //10ms检测一次按键状态:按键扫描
         KEY_ReadState(u8 keynum);  //读取指定按钮的状态

Day21:
    内容:简易多任务处理终
    1、注意代码格式(小实战);
    2、beep.c 和 beep.h;
         ① 逐步适应模块化编程的概念(后期收益多多);
         ② 打开/关闭/响时间;
                 
Day22:
    内容:矩阵按键
    1、矩阵按键是什么;
         ① 减少IO的占用,本例用了6个IO控制8个按键;   
    2、矩阵按键的控制原理;
         ① 按键扫描;
         第一步:扫描列输入;
         第二部:扫描行输入;
         第三部:根据行列确定按键位;
    3、矩阵按键程序的编写;
         ① 密码锁(仿写一个,根据自己的需要改版一个);

  Day23:
    内容:外部中断
     1、中断和中断系统;
         ① 爸妈优先级举例(符合大众情况的例子,不赖);
         ② 查手册看各个中断参数;
     2、什么是外部中断;
        ① 有复用中断功能的引脚才能当作外部中断检测;
     3、外部中断的用法;
        ① 优先级(0-3);        
        ② 上升下降沿;
     4、其他中断可以试试;

  Day24:
    内容:IO中断           
     1、什么是IO中断;
        ① 中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程;
             即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。
     2、IO中断的用法;

        ① 中断号大于31号(手册里面有多种解决方案,新手暂时应该还用不到);
     3、中断优先级的设置;

        ①
     4、实战小练;
  

  Day25:
    内容:模数转换器ADC上
     1、模数转换器是什么;
        ① 模拟信号转换为数字信号的电子元器件;
        ② 木板实例(很形象生动,好玩);
             1.png

     2、STC32G单片机ADC使用原理;
       2.png
     3、编写最简单的ADC采集代码(查询&中断);
  

  Day26:
    内容:模数转换器ADC下
     1、代码;
        ① void ADC_Init(void);
        ② u16 ADC_Read(u8 no);
         u16 ADC_CAL_Voltage(u16 num);
      
  Day27:
    内容:ADC采集电源电压和ADC按键上
     1、ADC反推电源电压;
        ① 测试出Vref引脚电压的意义?
             有了基准电压可以,可以通过电路采集各种电压信号进行对比,然后做出判断;
             比如按键,1个ADC采集引脚可控制一堆的按键;
        ② 通过对比基准电压,可以精确判断用户按下了一堆按键中的哪一个;

  Day28:
     2、ADC扫描按键(长按循环触发)
         ① 上一节主要实现了扫描获得某个按键按下了,这一届升级后,可实现判断按键按下了多久;
     3、实战小练
          简易时钟:显示、蜂鸣器、按钮综合型试验;

  Day29:
      内容:NTC温度采集
      1、NTC的原理;
         ① NTC一种可以随温度上升电阻呈指数关系减小、具有温度系数的热敏电阻现象和材料;
         ② 形状多种多样(贴片电阻、金属头、高压电容模样的);
         ③ 看手册都有对应表格,然后进行优化调整,算出须要的值;
         ④ 两个电阻串联,取分压值(与手册对比);
      2、NTC的测温程序编写;
         ① 通过算法增加小数位显示,提高温度显示精度;         
      3、实战小练;      
         ① 温度计;

  Day30:   
      内容:串口通信上
       1、串口通信的基础知识;
         ① 并行(多车道);串行(单车道);
         ② 2个同步(可以发数据块)/2个异步(固定长度格式,常用);
         ③ 全双工、半双工、单工;
         ④ 波特率/数据位/校验位/停止位;
         ⑤ RS232(全双工)15米【20kb/s】、RS422(全双工)1200米【10Mb/s】、RS485(半双工)1200米【10Mb/s】;

  Day31:   
      内容:串口通信下
       2、STC32的串口通信实现原理;
       3、串口通信代码实现;

  Day32:   
      内容:串口应用上
      1、串口与PC通信的接线;
      2、利用实验箱示例代码移植驱动程序;
      3、串口通信实战;


  Day33:   




      





回复 支持 1 反对 0

使用道具 举报 送花

3

主题

11

回帖

64

积分

注册会员

积分
64
发表于 2023-8-11 20:14:36 | 显示全部楼层
冲哥,为什么视频里的例程包里有些没有呢?例如:25-高级PWM1-PWM2-PWM3-PWM4,驱动P6口呼吸灯实验程序
回复 支持 反对

使用道具 举报 送花

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

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

GMT+8, 2025-5-13 07:03 , Processed in 0.137286 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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