SSZ_STCMCU 发表于 2023-8-21 09:09:06

本帖最后由 SSZ_STCMCU 于 2023-8-29 10:07 编辑

看介绍应该还能赶上吧,有实验箱用肯定事半功倍{:lol:}

STC32G单片机开发,视频教程第一集:认识单片机:


    单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
   用途:仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域仪器仪表;
   开始了解了单片机是什么,学习了它的内部结构,以及在生活中的广泛应用。我们讨论了学习单片机的顾虑,并鼓励有兴趣的读者可以尝试学习。   


STC32G单片机视频开发教程第二集:了解硬件:


    看到了实验箱的样子,正是这个实验箱让我们决定踏入单片机学习的领域。我们可以自己做一些小实验,体验这个神奇的世界,也许我们就会有自己的创新产品。

STC32G单片机视频开发教程第三集:开发环境搭建和程序下载:



   学习了基础工具的使用和安装,这不是问题。
   
第四集:建立工程点亮第一颗LED上:
   
   

    LED的亮灭?通电亮,什么时候通电(单片机来控制),简单的逻辑控制就出现了。
    跟着教程建立了工程,并成功编译了代码。虽然没有立即验证板子,但我们理解了简单的程序。
    硬件连接完成,给出相应的电压即可(引脚输出低电平/高电平)。

第四集:建立工程点亮第一颗LED下,USB-CDC/虚拟串口,不停电下载,高手必须懂:
   
    学习了不间断电下载的方法,看了源码,虽说东西不多,但理解还是有点难度。
    资料里面有demo,编译通过,留作后用。

第五集:C语言运算符和进制数入门上:
第五集:C语言运算符和进制数入门下:

    printf("Hello World!");
    学习了经典的“你好世界”例子,这是printf的基本用法。我们复习了进制的概念,包括二进制、十进制和十六进制。
    常用格式化字符(%d:十进制整数,%f:单精度浮点,%x:十六进制整数)
    二进制    八进制   十进制      十六进制
   1111      17         15               F
    数据的基本类型:
   
    在巩固知识的一集中,我们温习了进制、运算符和数据类型。

第六集:LED闪烁和花式点灯上:
第六集:LED闪烁和花式点灯下:

    学习了延迟函数的应用,并考虑创建一个自己的常用函数库,或者直接使用现有的库。
    在模块化编程的概念中,我们学习了如何组织代码,使其更加清晰和可维护。
    代码格式示例(标准的延迟函数,可根据须要定制修改,注意延迟的精度问题):
    #define MAIN_Fosc      24000000UL
    void delay_ms(u16 ms)
    {
         u16 i;
         do
         {
                i = MAIN_Fosc/6000;
                while(--i);
         }
         while(--ms);
    }      

第七集:按键点灯上:
第七集:按键点灯下:
    按键种类:
   
    虽然按键长得千奇百怪,但是本质就是两个引脚之间的通断。
    按键原理及防抖
   

    深入了解了按键的原理和应用,包括按键消抖的过程。我们了解到可以通过按键实现多种控制,并开始考虑如何将这些技术应用到实际项目中。
    进一步探索了按键控制的应用,开始引入数组的概念,以便在按键较多时进行编码,方便在其他地方使用。
   

第八集:蜂鸣器的应用:
   
    主要区别:是否有震荡源,还有价格。
    学习了蜂鸣器的使用,包括有源和无源蜂鸣器的区别。我们还通过按键控制实现了电磁炉的基本功能,进一步理解了电气系统的操作过程。
   
第八集:作业:

   讲解了电磁炉的例子,通过分块讲解加深了对常用功能的理解。

第九集:数码管的静态使用:

   数码管:实际就是将一些发光二极管封装在一起。
   显示除了数码管,还有液晶屏、异型显示屏等。
   学习了数码管静态显示的使用,利用之前学过的进制、数组、延迟和蜂鸣器等知识。
   静态显示简单理解就是,让他怎么亮就怎么亮很听话的那种。

第十集:数码管的动态显示:
   
   学习了数码管动态显示的方法,这种技术通过利用人眼的视觉暂留效应,实现了全亮的显示效果,大大扩展了数码管的使用可能性。
   可以自己做个挑战10秒,留个后门,连点3次必中10秒{:lol:}(哈哈哈)。   

第十一集:定时器的使用:

   STC32系列单片机内部设置了5个24位定时器/计数器(8位预分频+16位计数)。5个16位定时器T0-T4都具有计数方式和定时方式两种工作方式。
   其核心部件是一个加法计数器,其本质是对脉冲进行计数。
   手册14.2.2 定时器0/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_M1      T0_M0
   T0_C/T :
   0:定时器
   1:计数器

   EA:总中断,ET0:溢出中断允许位,0是禁止T0,1是允许T0。
   学习了定时器/计数器的使用,以及计数器的实际应用。
   
第十二集:计数器的使用:


   按键模拟波形说明码盘的控制原理;
   16位自动重装模式,定时器1计数器寄存器(TL1,TH1)
   符号       地址          B7            B6               B5             B4            B3               B2               B1            B0
   TL1      8BH
   TH1       8DH
   学习了计数器的使用方法,并举例说明了它在实际项目中的应用。

第十三集:简易多任务处理上:
第十三集:简易多任务处理中:
第十三集:简易多任务处理下:
第十三集:简易多任务处理终:

   总结之前的学习内容(GPIO和IM的用法),然后拨乱反正(让代码看起来更好看,思路更清晰);
   函数标准化注释模板
   //========================================================================
   // 函数名称:
   // 函数功能:
   // 入口参数: @
   // 函数返回:
   // 当前版本: VER1.0
   // 修改日期: 2023
   //当前作者:
   // 其他备注:
   //========================================================================

   创建程序三步:新建保存、添加到工程、添加引用路径
   函数定义三步:定义、声明、调用
   
   引入编程模块(LED、KEY、BEEP、TIME),将每个功能分别封装成一个独立文件,注重书写规范和编程思想的建立。
   
第十四集:矩阵按键:
   
   
    在按键数量较多时,为了减少I/O口的占用,将按键排列成矩阵排列的形式的按键阵列我们称位矩阵按键。
   优点:省IO口
   缺点:程序复杂
   学习了矩形按键的控制原理,通过定时行列扫描输入信号的方式,有效减少了IO占用的问题。
   STC有64脚STC单片机中,由于IO足够多,对于简单的项目已经足够使用。
   
第十五集:外部中断:   
      
   中断系统(中途打断),为了使CPU具有对外界紧急事件的实时处理能力而设置的。
      没有中断的话,系统一直循环执行同样的命令,对于一般重复性场景可能影响不大,但如果常在河边走哪有不湿鞋,
      一旦设备有个故障(即使很小),可能也会要了整条生产线的命。
      打断的因素可以很多,可以通过优先级来管理,爸爸妈妈外公外婆同时要你拿东西,你会怎么选?请排序。。。
      
      STC-ISP越来越贴心了,提供了的功能越来越好用了。

第十六集:IO中断:

      普通I/O口均可中断,不是传统外部中断,支持4种中断模式(下降沿中断、上升中断、低电平中断、高电平中断),每个I/O可独立设置中断模式。
      STC32GK28-Beta的普通I/O下降沿中断段和上升沿中断暂时不要使用(可以直接跳过这个Beta的芯片或者直接用高低电平中断)。
      端口的配置模式:PnIM1.x 和 PnIM0.x【Pn.x中断模式】          端口中断使能PnINTE.x:0关闭 1使能
                                    0               0            下降沿中断
                                 0               1            上升沿中断
                                    1               0            低电平中断
                                    1               1            高电平中断   
       P2口的低电平中断:
       P2IM0 = 0x00;         //低电平中断设置
       P2IM1 = 0xFF;
       P2INTE = 0xFF;       //使能P2口中断(进入时先清空P2INTE = 0x00;)
       EA = 1;               //打开总中断
      
       中断口大于31的处理:
       热心网友提供的软件:拓展Keil的C代码中断号(支持0~254)
       或者跳转到未使用的中断号(类似嫁接)

       数码管和中断的优先级:解决了数码管显示问题(定时器优先级高于按键按下中断)
       实战:密码锁(获取想要的基础数据信息(用户到底按下了哪个按键),然后加入逻辑判断,一个小程序成型了);

第十七集:模数转换器ADC上:
第十七集:模数转换器ADC下:

      模数转换器就是A/D转换器(将模拟信号转变为数字信号的电子元件)。
      使用ADC功能时有Vref引脚的单片机千万千万千万不能悬空,必须接外部参考电压源或者VCC!!!
      ADC相关寄存器:
      ADC_CONTR(控制寄存器):ADC_POWER(电源控制位)、ADC_START(启动控制位)、DC_FLAG(转换结束标志位,必须手动清零)
      15个引脚可以用ADC功能。
      ADCCFG(配置寄存器) :RESFMT(ADC转换格式控制为,0:左对齐 1:右对齐)、SPEED(ADC时钟,简易慢点)。
      ADCTIM(时序控制寄存器):注意SMPDUTY 一定不能小于01010B。   
      ADC转换结果和反推公式
      
      基准电压源(更高精度的ADC,独立的外部电压源,经典电路TL431)
      初始化过程:
      设置源(采集所用的引脚)---》设置时序---》配置对齐方式---》开启电源控制位
      查询法:
      启动AD转换---》2个命令延迟---》查询ADC完成标志位(用完清除)---》读取ADC结果
      中断法:
      设置ADC(检测引脚、内部时序、时钟)---》使能ADC---》打开ADC中断(和总中断)---》启动AD转换
      进入中断后(清除完成标志位)---》读取ADC结果---》继续

      ADC的15通道有个不随芯片工作电压改变影响的稳定内部信号源(约1.19V),用作反推外部电压。
      
      到这里,内容都能听懂,但脑袋里的???越来越多,准备放慢节奏,慢慢看几遍。
      
第十八集:ADC采集电源电压和ADC按键上:
第十八集:ADC采集电源电压和ADC按键中:
第十八集:ADC采集电源电压和ADC按键下:


      反推:基准电源电压(ADC15通道的固定输入信号源1.19V),如何提高测量精度?
      按钮复用,12位ADC按键检测(16个按键一个IO搞定),最多可以采集多少个按键呢?
      再多的按键采集应该可以实现,但是间距太小估计准确性会堪忧(不知道理解的对不对呢)?
      实战,移动到最右端数码管后,再移动全亮?程序需要继续修改......

第十九集:NTC温度采集:

      NTC(Negative Temperature Coefficient):可以随着温度上升电阻呈现指数关系减小、具有负温度系数的热敏电阻现象和材料。
      原理:半导体特性,温度和电阻建立联系(成一定比例划分对应的表格)。
      NTC温度计原理很简单(做成体温枪怎么样呢,用NTC直接接触式测量,采集1分钟取有效数据)。

第十九集:串口通信上:
第十九集:串口通信下:
      
      NTC
   

第二十一集:串口应用上:
第二十一集:串口应用下:

      NTC




   
      






























行知无涯 发表于 2023-8-21 22:35:38

打卡第九集。

xushu 发表于 2023-8-21 22:49:25

已看完第六集上。冲哥讲解delay与while do的用法。晕乎!{:4_174:{:4_167:}

清风予我 发表于 2023-8-22 08:36:01

xushu 发表于 2023-8-21 22:49
已看完第六集上。冲哥讲解delay与while do的用法。晕乎!{:4_174:

加油{:4_175:}

HL_DPJMCU 发表于 2023-8-22 10:22:42

重新编辑过提示要审核,帖子怎么丢了

xushu 发表于 2023-8-22 10:48:44

已看完第六集下。看来我还得先熟悉下C语言的命令语句。

清风予我 发表于 2023-8-22 11:04:33

HL_DPJMCU 发表于 2023-8-22 10:22
重新编辑过提示要审核,帖子怎么丢了

审核中,稍等

tang01 发表于 2023-8-22 11:44:07

本帖最后由 tang01 于 2023-8-22 12:57 编辑

大学生分在校生与毕业生,其实研究生和在科研沾边的工作社会自然人,也是大学生,也包括老师,各个领域的人,只要是能够用起STC32或STC单片机的都有机会,不管是不是大学生,也不管是不是在校,只要能对stc有益的、有技术推进作用的、贡献的,并且被STC官方承认的人,就要资格领走1000~20万不等奖金。不要只盯着在校大学生,他们虽然有活力,但基础不牢,考虑问题不全,设计的产品简单而单调,当然创意永远是第一位,培养创意人才至关重要,对在校大学生资源倾斜在所难免

sanyang 发表于 2023-8-22 18:57:37

第16集: IO中断
变通IO口均可中断,不是传统外部中断。STC32G系列支持所有的IO中断,且支持4种中断模式:下降沿、上升沿、低电平、高电平中断,每组IO口都有独立的中断入口地址,且每个IO可独立设置中断模式。

sanyang 发表于 2023-8-22 20:16:50

第17集:ADC模数转换
STC32G系列单片机内部集成了一个12位高速A/D转换器。ADC的时钟频率为系统频率2分频再经用户设置的分频数进行再次分频。
ADC转换结果的数据格式有两种:左对齐和右对齐。
ADC的第15通道是专门测量内部1.19V参考信号源的通道。参考信号源出厂时校准为1.19V,大约有1%的误差。
如将ADC_VREF+短接到MCU-VCC,就可以反推MCU-VCC的电压。
如芯片有ADC的外部参考电源管脚ADC_VREF+,则一定不能浮空,必须接外部参考电源或者直接连到VCC。



ADC控制寄存器ADC_CONTR

ADC_POWER:ADC电源控制位,0:关闭ADC电源,1:打开ADC电源,建议进入空闲模式和掉电模式前将ADC电源关闭,以降低功耗。
                        特别注意:1、给MCU的内部ADC模块电源打开后,需等待约1ms,等MCU内部的ADC电源稳定后再让ADC工作。
                        2、适当加长对外部信号的采样时间,就是对ADC内部采样保持电容的充电或放电时间,时间够,内部才能和外部电势相等。
ADC_START:ADC转换控制位。写入1开始ADC转换,转换完成后硬件自动将此位清零。
                  0:无影响,即使ADC已开始转换工作,写0也不会停止AD转换。1:开始转换,转换完成后硬件自动将此位清零。
ADC_FLAG:转换结束标志位。当ADC完成一次转换后,硬件会自动将此位置1,并向CPU发出中断请求。此标志必须软件清零。
ADC_EPWMT:使能PWM实时触发ADC功能。
ADC_CHS:ADC模拟通道选择位,被选择为ADC输入通道的IO口,必须设置PxM0/PxM1寄存器将IO口模式设置为高阻输入模式,另外,
                        如果MCU进入掉电模式/时钟停振模式后,仍需要使能ADC通道。则需要设置PxIE寄存器关闭数字输入通道。以防止外部模拟
                        输入信号忽高忽低面产生额外的功耗。   
         
ADC配置寄存器ADCCFG
RESFMT:ADC转换结果格式控制位,0:结果左对齐,ADC_RES保存结果的高8位,ADC_RESL保存结果的低4位。
                                                   1:结果右对齐,ADC_RES保存结果的高4位,ADC_RESL保存结果的低8位。
SPEED:设置ADC时钟。FADC=SYSclk/2/(SPEED+1)

ADC时序控制寄存器


页: 104 105 106 107 108 109 110 111 112 113 [114] 115 116 117 118 119 120 121 122 123
查看完整版本: 视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版