找回密码
 立即注册
查看: 1588|回复: 23

看冲哥32位8051视频学STC32单片机,赢STC32实验箱

[复制链接]

该用户从未签到

1

主题

19

回帖

73

积分

注册会员

积分
73
发表于 2023-8-17 01:11:01 | 显示全部楼层 |阅读模式
本帖最后由 zjczssdbybyd 于 2023-8-17 01:12 编辑

我来打卡冲哥8051视频了,打卡冲哥STC32系列视频。
以前经常使用8051,随着STC发布STC32系列,准备


在这认真学习32位8051教学视频希望能欢迎一下我


回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-13 11:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    340

    回帖

    1673

    积分

    版主

    积分
    1673
    发表于 2023-8-17 16:54:57 | 显示全部楼层
    欢迎打卡学习,冲哥视频学习到第十五集,发表详细的学习感悟
    提前【免费+包邮送】STC32G12K128实验箱9.6版


    QQ:2269694595     微信:18106296594
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-17 23:48:41 | 显示全部楼层
    本帖最后由 zjczssdbybyd 于 2023-8-17 23:52 编辑

    【打卡第1讲】

    1: 什么是单片机

    定义:
    单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

    1.png
    2:功能用途

    功能:
    单片机基本就是一个小的功能减少的计算机,能写入用户程序;能读取在输入引脚上的电压信号,能在引脚上输出特定的电平信号,能在特定引脚上输出电压信号,能计算时间,能计数,能做数学运算,能做逻辑运算,能顺序动作,能通信等功能,最概括的来说就是他能做有规律可循的控制应用。



    用途:
    单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
    ●智能仪器:电压、电流、功率、频率、湿度、温度、流量等的仪器仪表
    ●工业控制:工厂流水线的智能化,电梯智能化控制、各种报警系统等
    ●家用电器:电饭煲、洗衣机、电冰箱、空调机、彩电等
    ●网络和通信:手机,电话机、楼宇自动通信呼叫系统、列车无线通信等
    ●医用设备领域:医用呼吸机,监护仪,超声诊断设备及病床呼叫系统等
    ●模块化系统:电子音乐贺卡,PLC工控板等
    ●汽车电子:发动机控制器,基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、abs防抱死系统、制动系统、胎压检测等。

    3:问题解答
    学习单片机不分年龄,不分基础,但需要精心,动手,多思考,多看网上知识

    4:学习建议



    1.一定要静得下心,沉得住气;
    2.多动手,千万别一看就会,一写就废;
    3.举一反三,发散思维,时常思考为什么;
    4.多看看官网,多看看手册,有问题多交流;
    5.逛逛论坛,吸收一些别人好的东西;
    6.尝试着自己做一些项目,竞赛题。


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-18 00:01:15 | 显示全部楼层
    【打卡第2讲】硬件介绍

    1: STC实验箱
    包含了STC的MC和很多常用的外设

       红外发射接收、数码管、 洞洞板、电压比较、 LED、 NTC测温、 18B20测温、 ADC按键、PWM DAC、 外置存储、 矩阵键盘、LCD接口、 RS232、独立按键、 调试接口、 蜂鸣器等
      然后举例说明了18B20应用、按键、ADC按键、PWM、DAC等;
            
    2:STC 32G单片机的参数

    可以在STC官网上查找,注意芯片的规格参数
    1.png

    3:课后作业
    假如我是一个产品经理,想做个什么东西出来。

    可以做温度计测室温,遥控器进行智能遥控

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-18 00:18:18 | 显示全部楼层
    【打卡第3讲】开发环境搭建


    1.STC-ISP软件的下载


    STC-ISP软件是开发STC家的单片机的必备神器,他不仅能下载STC全系列单片机的程序,甚至集成了虚拟显示功能,范例程序程序,在线生成工具,驱动安装等等功能。

    打开https://stcai.com/gjrj,找到最新版本的STC-ISP软件的压缩包,直接下载运行即可,STC ISP不需要安装。

    2.STC32手册下载

    ISP软件内下载或者官网下载(打开https://stcai.com/xpsc,在左边找到STC32系列,点击“STC32规格书下载”即可。)

    3.PDF阅读器下载

    WPS或者福昕阅读器,STC手册有1000多页,内容很多

    4.学会PDF阅读器查阅手册

    教我们如何使用PDF阅读器打开手册,如何查阅目录和详情,快速查阅章节,使用搜索功能等

    5.跟着手册搭建C251开发环境

    在STC手册中详细描述了Keil的安装和设置教程,跟着手册安装即可,注意安装的是C251环境


    安装后图标为


    6.程序包的下载

    可以通过STC ISP去下载STC32G实验箱的程序包,也可以在官网下载(打开https://stcai.com/yyfa,在左边找到试验箱,找到“STC32G实验箱9.4”,点击代码下载即可。)


    7.第一个工程的编译和下载

    编译:
    打开STC32G的程序包中的实例程序,打开第一个程序,然后在Keil中编译,在编译前,需要使用STC ISP向Keil添加型号和头文件

    下载:
    将板子通过USB线链接电脑,按下P3.2按钮,此时按下并松开OFF按钮,在松开P3.2进入USB下载模式
    STC ISP中在打开程序文件中选择编译出的HEX文件,即可烧录单片机,可以调节时钟的频率,型号一定要正确

    STC32G可以直接使用USB下载程序,不需要额外的USB转TTL设备




    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-18 00:42:26 | 显示全部楼层
    本帖最后由 zjczssdbybyd 于 2023-8-18 00:45 编辑

    【打卡第4集】建立工程点亮第一颗LED上


    1.LED点亮原理
    单片机输出的高电平VCC,对应1,低电平GND就是0V,对应0,LED单向导通。



    GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来读取其输入电平,或者控制他输出高低电平。

    P0是一组GPIO口,既可以用于输入,也可以用于输出。
    P0.0是一组的其中一个GPIO口,P5.0就是一个GPIO口。


    我们一次可以操作一个IO口,也可以此同时操作一组。


    通过PNP三极管为所有LED提供电源,为了增大电流,要点亮LED,需要P40输出低电平,P60输出低电平

    1.png



    2.新建工程

    跟着手册:《STC32G12K128实验箱-V9.4使用说明书》

    需要 新建工程、选择单片机型号、新建C语言文件、将C文件加入工程、编辑程序源代码
    程序中使用P4.0控制三极管,P6.0控制LED

    //------------------------------------------------------------------------------------------------
        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;
            }
        }         
        //------------------------------------------------------------------------------------------------

    输出HEX-386格式,Hex文件用于把编译后的程序烧写到单片机中。

    代码中sfr用于将一个变量和它的特殊功能寄存器的地址联系起来,可以进行访问
    sbit用于将一个变量与另一个变量的位联系起来


    3.点亮第一个LED

    重点

    1.思考LED为什么不会亮?
    引脚不对。
    2.怎么控制单独的一个引脚?
    sbit P00 = P0^0;        //选择P0.0引脚
    3.怎么控制这个引脚输出电平?
    P00 = 1;         //输出低电平
    4.书写规范
    一行一句,大括号缩进(需要设置),缩进四格,注释完整
    5.注释符号
    //  单行注释
    /*   */  多行注释
    6.学会搜索
    CTRL+F



    4.实现自动下载工程

    实现不断电下载,手册5.15有详解,用户程序复位到系统区进行 USB 模式 ISP 下载的方法
    通过移植USB_CDC驱动。USB-HID和USB-CDC都可以实现不停电下载,在程序改变时直接下载
    stc.h头文件中通过stc32g.h定义了很多sfr,使用头文件很方便
    函数位置在调用者后的时候,需要在前面进行声明



    5.课后练习:点亮全部LED灯
    希望有机会领到试验箱进行操作





    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-18 00:57:42 | 显示全部楼层
    【打卡第五集】C语言运算符和进制数入门


    1.C语言 printf函数的实现

    普通C语言可以直接使用printf函数
    但单片机上需要在主循环中加入主函数添加程序:
    if(DeviceState != DEVSTATE_CONFIGURED)
        continue;
    if (bUsbOutReady)
    {
        usb_OUT_done();    //接收应答(固定格式)   
    }       


    常规用法
          printf("Hello World!");
          printf("室内温度:%2f\r\n",11.2);   
    1.png
    2.png   
      在Windows系统中我们输入回车时,输入的字符是\r\n,
    unix系统中回车为\n,而mac系统中回车的字符为\r.

    printf支持各种进制和长度的输出,可以兼容ASCII码

    2.数的进制:2进制、10进制、16进制

    2进制 0、1;
    10进制 0、1、2、3、4、5、6、7、8、9;
    16进制 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;


    3.C语言常用运算符


    一、算术运算符
    加(+)减(—)乘(*)除(/)
    模(余)运算符(%):不允许出现浮点型,余数正负取决于被除数正负
    自增(++i,–i;i++,i–)
    二、位运算符
    右移(>>)左移(<<)
    按位与(&)
    按位或(|)
    按位异或(^)
    取反(~)


    4.数据的基本类型


    3.png



    Keil C支持各种通用C语言的数据类型,除了常用的char,int,long等之外, 还有bit, sbit, sfr, sfr16
    long int与CPU的位数相关,STC32G中的 short int和int都是16位,long int是32位。
    同样在STC32G中, float和double都是32位。


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-18 01:07:27 | 显示全部楼层
    【打卡第六集】LED闪烁和花式点灯



    1.基于Delay实现的LED闪烁

    1秒 = 1000毫秒 = 1000 000微秒

    在工程中添加如下语句:

       #define MAIN_Fosc 24000000UL          //宏定义
               void  delay_ms(u16 ms)
    {
         u16 i;
         do{
              i = MAIN_Fosc / 6000;
              while(--i);
         }while(--ms);
    }
    do while、for,都可以做延迟

    1.png

    语法分析:
    1.while
    2.do
    {
    }while();
    3.--ms 的用法
    4.#define
    while是先判断再循环,do while是先循环再判断

    2.函数的使用

    在模块化编程里,函数使用分为如下三步:
    1.函数定义
    返回值 函数名称( 入口参数 )
    {
    函数要执行的功能
    }
    @返回值:没有返回值就是void
    @函数名称:避开关键词,不重复,非特殊字符随便取
    @入口参数:类型+名称,多个参数“,”分开,空就写void
    2.函数声明
    返回值 函数名称( 入口参数 );
    3.函数调用
    函数名称( 入口参数 );


    3.新建文件,使用模块化编程

    新建xxx.c和xxx.h文件,代表一个功能块。

    xxx.h格式:
    #ifndef __XXX_H
    #define __XXX_H
    调用头文件
    函数声明...
    #endif

    xxx.c格式
    #include “xxx.h”函数定义

    模块化编程能让代码更清晰,特别是在大型项目中更需要
    .h文件中需要使用#ifndef xxx避免头文件重复引用
    .c文件需要#include对应的.h文件

    添加文件一定要记得引用路径和添加到工程里。


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-18 11:26:48 | 显示全部楼层
    【打卡第七集】按键点灯

    1.按键的原理

    形状
    1.png

    按键本质就是两个引脚之间的通断。有的是按下之后两个引脚导通;有的是按键之后两个引脚断开

    实验箱电路:按键SW17松开,P3.2高电平,按键按下,P3.2是低电平。

    2.png
    但对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,
    一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动, 需要做按键消抖。
    因此可以在单片机内部的代码中,设计一个10ms的延时,
      当10ms后的状态与10ms之前相同是,才判断为按键的按下或松开。



    2.按键的代码实现过程


              if(KEY == 0)                           if(KEY == 0)
              {                                             {
                  Delay_ms(10);                         Delay_ms(10);
                  if(KEY == 0)                            if(KEY == 0)
                  {                                              {
                      执行功能;                                 while(KEY == 0)
                  }                                                     执行功能;
              }                                                   }
                                                              }

    在主循环中可以同时检测多个按键的动作

    3.按键的应用
    可以组合出多种按键动作,

    按键按下LED点亮,松开熄灭
    按键按下LED熄灭,松开点亮

    按键按下一次,LED状态改变一次

    按键按下一次,LED往左边走一个。

    这里通过移位可以控制类似流水灯的效果,
    移位操作移进来的数字是0,如果希望移动进1,需要通过代码给补上去
       如果希望灯循环点亮,可以通过代码在一圈转完后,重新设置初始的第一个灯。


    4.数组的使用

    数组使用分为如下两步
    1.定义
    类型 名称[长度] = { 数值 };

    2.使用
    赋值:名称[索引] = 数值
    使用数组可以存储相互关联的一组数字,
    合理的使用数组可以是代码简化。

    提前把需要设置的值存入数组,然后需要的时候调用;

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    19

    回帖

    73

    积分

    注册会员

    积分
    73
     楼主| 发表于 2023-8-18 14:09:29 | 显示全部楼层
    本帖最后由 zjczssdbybyd 于 2023-8-18 14:11 编辑

    【打卡第八集】蜂鸣器的应用

    1.认识蜂鸣器
    蜂鸣器分有源蜂鸣器和无源蜂鸣器

    1.png


    区别
    1、有源蜂鸣器内部带震荡源,所以只要一通电就会叫,而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。
    2、价格不同,有源蜂鸣器要比无源蜂鸣器贵,贵在里面多了震荡源。

    一般可以通过蜂鸣器背面去判断,如果背面裸露了电路板,则为无源蜂鸣器,如果背面是黑胶,则是有源蜂鸣器。

    2.控制原理

    实验板上用的有源蜂鸣器,控制方便

    电路中,蜂鸣器使用三极管如SS8550增大电流
    接个电容进行滤波

    2.png


    P54引脚给高电平关闭
    P54引脚给低电平打开

    代码中,控制蜂鸣器与控制LED灯的方法类似


    3.蜂鸣器实战应用
           电磁炉
    需求


    按键*2,LED*8,蜂鸣器*1
    1、按键1按下,蜂鸣10ms,
    LED1-8全部点亮200ms在熄灭,表示开机。
    2.开机后,按键2按下,蜂鸣10ms,LED1-8轮流点亮,表示切换煲汤、烧水等功能。
    3.开机后按键1再次按下,蜂鸣10ms,LED全部熄灭,表示关机。


           洗衣机


    编写程序要细心,开机时要重新设置模式变量

    程序中,可以在按键检测中设定模式等变量, 在主循环中执行根据变量的值去执行动作,
    用户的习惯一般是按下时产生工作,因此一般需要把动作代码放在等待按键松开之前。
    关机时重置变量很重要, 编程重点在于对功能的灵活应用

    课后练习:增加按键3,按下后表示启动,选择的对应的功能的LED持续闪烁,表示正在工作,且在工作的时候无法切换功能
    希望获得试验箱后可以进行操作




    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-22 10:14 , Processed in 0.099510 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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