找回密码
 立即注册
查看: 5860|回复: 24

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

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

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


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


回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-04-27 10:40:24

11

主题

425

回帖

1971

积分

版主

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


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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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
  • 最近打卡:2024-09-15 01:04:00

2

主题

19

回帖

93

积分

注册会员

积分
93
发表于 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, 2025-5-3 00:58 , Processed in 0.132392 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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