找回密码
 立即注册
查看: 809|回复: 16

32G12K128学习心得=====实验箱已安排发出

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-14 10:36:50 | 显示全部楼层 |阅读模式
32G12K128学习心得 <>
观看冲哥的第一集视频,让我对单片机进行了重新的认识,之前只使用过STC官方的STC89C52芯片,这也是自己使用的第一块的单片机芯片,因为学习是通过哔哩哔哩的视频教程学习的,所以学习起来还是很容易的,但是由于后面项目的需求,就转战学习stm32,现在看到AI官方的32位芯片,难免有一种渴望,渴望能够学习心的芯片去丰富自己的大学生活。选择学习AI的32位单片机,是因为有着完善的参考资料,虽然还没有真正的开始学,但是看到冲哥的寄存器的视频教程,的的确确是让我心动了,毕竟我也想通过手册写代码,通过手册去学习,官方的参考文档,我认为才是一手的资料,不存在其他的问题。冲哥是一个从业十来年的工程师,跟着冲哥的视频教程进行学习,这个机会是十分难得的,我也很珍惜这个机会。
从冲哥的视频中,我重新认识了单片机,集成了RAM、ROM、IO和中断系统等电路的这个微型计算机系统,就是我们所学习的单片机,我自己身边的电子设备内部大多数都是含有单片机的,比如家中的电饭锅、洗衣机等。
我将在接下来的时间里,努力跟随冲哥的教学视频,学习学校里面无法学习到的知识。

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-14 12:05:28 | 显示全部楼层

STC32G12K128学习心得 <二>
冲哥的第二集是一个相关的硬件电路的学习。正好已经学习了数电和电路的知识,也已经学习有单片机开发的基础,这次跟随冲哥的步伐,对硬件电路的知识做一个巩固与补充。
首先,通过冲哥的教学视频对硬件电路的讲解,我了解到STC32G的试验箱上面含有红外发射、红外接收、电压比较、数码管、LED灯、NTC测温、DS18B20、ADC按、pwm模拟DAC、24C02、矩阵按键、独立按键、LCD接口、USB、232接口、蜂鸣器灯硬件模块。在该试验箱上,我们能够学到很多知识,比如最简单的点灯、pwm、adc等知识,话能够学习到通信协议的知识。我很期待接下来的教程所带给我的知识。
在教程中,了解到了平时我我在项目中所不曾使用的adc按键,adc按键是通过采集模拟电压的值,来判读具体是哪一个按键按下,在我们平时的项目中,更多的使用gpio口控制的按键,一个io控制一个按键,相对于芯片资源,个人感觉adc的按键更加节省资源。我也了解到24C02这个存储芯片,我们可以吧数据保存在这个外部存储芯片中,在开机时,就可以获取到之前的数据。该试验箱上的lcd接口,是接lcd12864的接口。
看完了硬件电路的教程,我对试验箱的硬件电路有了进一步的了解,我将在接下来的教程中,继续努力学习。争取早日入门。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-14 13:19:42 | 显示全部楼层
STC32G12K128学习心得 <三>
学习完了前面的两节,激动人心的还得是第三节——环境搭建,有时候并不是做不了,而是搭建环境让人无可奈何,我在大二寒假学习yolov5的时候,这个环境搭建了一周才搭建好,之前一直出现各种错误,直到最后,在新系统上重新搭建了一次,才完成相关环境的搭建,对于开发的人来说,搭建环境是至关重要的,这是开发的第一步,也是最为关键的一步。下面我将开始学习环境的搭建教程。
第一步:STC-ISP软件下载
在学习51的过程中,已经有下载这个软件,但是跟随学习,我还是选重新下载一遍。我选择的是ISP-V6.95F的版本,因为只看到这一个。

E:\STC32G\PIC\1.png
E:\STC32G\PIC\2.png
第二步:手册下载
通过STC-ISP软件进行手册下载
E:\STC32G\PIC\3.png
E:\STC32G\PIC\4.png

第三步:阅读器下载
因为我自己有阅读pdf的阅读器,所以我就不在下载,我用自己的pdf阅读器
第四步:搭建C251的环境
我的电脑上已经有keil的软件,我将再进行keil软件的安装,我直接跟随视频进行环境的搭建。
E:\STC32G\PIC\5.PNG
通过以上步骤,已经完成了环境的搭建,然后进行下一步
第五步:程序包的下载
我选择的是通过官网进行下载代码
E:\STC32G\PIC\6.png
第六步:编译第一个工程
编译工程和stm32一样,先用keil软件打开工程,进行编译
可以很清除的看到,编译的结果是0错误0警告,所以我的环境搭建是成功的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-14 15:35:47 | 显示全部楼层
STC32G12K128学习心得 <四>
第四节冲哥讲的是点亮第一颗LED,首先讲解了led点亮的原理,因为之前有学习过其他型号的单片机,所以,学习起来还是很容易理解的。以下是我看完冲哥的视频以后,对驱动led原理的理解:
在编程时,将控制LED的引脚配置为输出模式。大多数单片机(如51单片机、AVR、STM32等)都有GPIO(通用输入输出)引脚,可以通过程序来设置其状态。可以在LED和单片机之间串联一个限流电阻,以防止LED电流过大而损坏。根据电路图可知,led是低电平点亮,所以当单片机引脚输出低电平时,点亮led。
理解了原理以后,就开始新建工程,编写代码。新建工程参考STC32的使用说明书进行新建。新建工程也是很简单的步骤,点亮led的代码是通过设置寄存器完成的,代码如下
sfr P4 = 0xC0;
sfr P4M1 = 0xB3;
sfr P4M0 = 0xB4;

sbit P40 = P4^0;

void main(void)
{
        P4M0 = 0x00;
        P4M1 = 0x00;
       
        while(1)
        {
                P40 = 0;
        }
}

通过以上代码,就可以成功的点亮P4^0端口的一颗lled
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-14 15:59:28 | 显示全部楼层
STC32G12K128学习心得 <五>
第五节的内容依然是点亮led,只不过这里是对代码的讲解,对其进行更加深入的理解。再讲解之前,首先实现自动下载,而不需要我们反反复复的去按按键进行程序的下载。实现的步骤如下:
实现不停电 ISP下载的步骤如下:
1、编写用户代码,并在用户代码中添加串口命令监控程序
#include "stc8h.h'
#define FOSC   11059200UL
#define BAUD   (65536-(FOSC/115200+2)/4)

char code *STCISPCMD="@STCISP#":
char index;
void uart isr() interrupt 4
char dat;
if (RI)
RI= 0:
dat = SBUF;
if (dat == STCISPCMD[index])
index++;
elsc
if (STCISPCMDindex|==“0’)
IAP CONTR=0x60:
index=0;
if (dat==STCISPCMDlindex])
index++;

void main()
{
    POM0=0x00;POMM1=0x00:
    P1M0=0x00:P1M1=0x00:
    P2M0=0x00;P2M1=0x00:
    P3M0=0x00:P3M1=0x00:
    SCON=0x50:
    AUXR=0x40:
    TMOD=0x00:
    TH1= BAUD >>8:
    TL1= BAUD
    TR1 = 1;
    ES =1;
    EA=1;
    index=0;
    while (1):
}

2、按下图所示的步骤进行设置自定义下载命令(范例使用 STC默认命令“@STCISP#”)

3、第一次下载时需要对目标单片机重新上电,之后的每次更新只需要点击下载软件中的“下载/编程”按钮,下载软件自动将下载命令发送给目标单片机,目标单片机接收到命令自动复位到系统ISP区,即可实现不停电更新用户代码。

4、Alapp-ISP还可实现项目开发阶段,完全自动下载功能,即当下载软件侦测到目标代码被更新了就会自动发送下载命令。要实现这个功能只需要勾选下图中的两个选项中的任意一个即可
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 00:52:30 | 显示全部楼层
STC32G12K128学习心得 <六>
第六集的主要内容是学习led闪烁和花式点灯,闪烁主要是加入延时函数使得led的状态按照指定时间进行闪烁。延时函数可以使用这个函数进行:
void delay(unsigned int time)
{  
    while (time--);  
}  
通过执行while语句进行延时,但是这个延时是不准确的,所以还是进行配置,然后进行精准延时。代码如下:
void  delay_ms(u8 ms)
{
     u16 i;
     do{
          i = MAIN_Fosc / 6000;
          while(--i);
     }while(--ms);
}
该延时函数是自动适应主频的延时函数,是比较精准的延时函数。可以通过改变延时时间的长短,进行led的闪烁功能。
改变主频是通过改变这个宏定义所进行改变的#define MAIN_Fosc        24000000UL,因为STC32G12K128的主频是24MHz,所以这里把MAIN_Fosc   定义为24000000
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 00:56:10 | 显示全部楼层
STC32G12K128学习心得 <七>
进行按键点灯,首先需要明白这些知识点:
1. 寄存器操作
GPIO 数据寄存器:
每个 GPIO 引脚对应一个数据寄存器(如 P1, P2),用以读取输入状态和控制输出。
方向寄存器:
每个引脚的输出或输入模式由方向寄存器设置:
输出模式:寄存器位设置为 1
输入模式:寄存器位设置为 0
2. 按键去抖动
去抖动:
按键在物理接触时,可能会产生抖动(快速开关的现象),导致输入信号不稳定。
常用的去抖动方法有:
软件去抖动:在检测到按键按下后,延时一定时间后再读取状态,确保稳定。
硬件去抖动:使用 RC 电路(电阻和电容)来平滑信号。
3. 按键状态检测
按键状态通常通过读取 GPIO 输入引脚来实现:
使用逻辑判断,检测引脚状态(如 P2.0)。
通常使用非运算符判断按键是否按下(按下为 0)。
4. LED 控制逻辑
使用按键状态控制 LED 的状态:
当按键被按下时设置相应的 GPIO 引脚为高电平(点亮 LED)。
松开按键时将 GPIO 引脚设置为低电平(熄灭 LED)。
5. 实时操作和循环
使用 while(1) 循环来持续监测按键状态和控制 LED。
程序通常需要设计成实时响应,即在每次循环中持续检查按键状态。
这是我自己的按键点灯的代码:
#include <STC32G.h>  // 引入 STC32G 的头文件  

void main() {  
    P1DIR |= 0x01;  // 设置 P1.0 为输出  
    P2DIR &= ~0x01; // 设置 P2.0 为输入  
    P1 &= ~0x01;    // 初始状态 LED 关闭  

    while (1) {  
        if (!(P2 & 0x01)) {  // 检测按键是否按下  
            P1 |= 0x01;      // 点亮 LED  
        } else {  
            P1 &= ~0x01;     // 熄灭 LED  
        }  
    }  
}
通过这个按键控制 LED 的示例,我们学习了如何使用寄存器读取按键状态并控制 LED 的点亮。直接操作寄存器的方式,有助于我们更加深入地理解单片机的 GPIO 操作,为后续更复杂的项目打下基础。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 00:59:24 | 显示全部楼层
STC32G12K128学习心得 <八>
第八集学的知识是蜂鸣器的应用,蜂鸣器和led一样,都是gpio的输出,但是在蜂鸣器这一节里,我认为更重要的是对硬件电路的理解。以下是我对蜂鸣器驱动电路的理解:
硬件电路中,蜂鸣器通过三极管进行驱动,原理图中使用的三极管是NPN型的三极管,三极管等同于两个二极管串联。NPN型的三极管,当基极为高电平时,三极管导通,此时三极管开始响,三极管的基极为低电平时,三极管截止,蜂鸣器不再响,如果三极管选用PNP型的三极管,则驱动电平刚好与NPN型的三极管相反。蜂鸣器可以分为:有源蜂鸣器和无源蜂鸣器。有源蜂鸣器有内置振荡器,连接电源后自动发声;无源蜂鸣器只需简单的高低电平控制,通常只需要连接到一个 GPIO 引脚。需要外部信号(PWM 或方波)来产生声音。需要控制频率和占空比来改变音调和音量。对于有源蜂鸣器,直接将 GPIO 设置为高电平(开启)或低电平(关闭)即可。对于无源蜂鸣器,需要通过控制引脚的频率来响铃。设置输出引脚为高电平,使蜂鸣器发声;可以设置延时,然后再将引脚设为低电平停止声音。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 01:06:28 | 显示全部楼层
STC32G12K128学习心得 <九>
第九集讲述的内容是关于数码管静态显示的内容,通过教学视频与之前单片机的基础,我对数码管静态显示的理解如下:
1. 数码管类型
共阳数码管:

所有阳极连接在一起,数码管的各个段通过 GPIO 引脚控制其阴极。
需要将对应段引脚设置为低电平以点亮该段。
共阴数码管:

所有阴极连接在一起,数码管的各个段通过 GPIO 引脚控制其阳极。
需要将对应段引脚设置为高电平以点亮该段。
2. 数码管的引脚定义
数码管通常有 8 个 LED 段,用于显示数字 09 及一些字母(如 AF)。
每个段对应一个引脚,通常称为 a, b, c, d, e, f, g, dp(小数点)。
3. 硬件连接
将数码管的段引脚连接到单片机的 GPIO 引脚。
为了方便控制,可以使用限流电阻来保护数码管,避免过流损坏。
4. 数码管编码
每一个数字或字母对应一个特定的段控制编码。例如,数字 '0' 可能需要点亮 a, b, c, d, e, f 段,编码为 0b00111111。
5. GPIO 控制
使用 GPIO 设置和清除引脚的高低电平来控制数码管的显示。
通过将所有段的引脚设置为低电平/高电平来显示所需的数字。
6. 程序实现
6.1. 初始化
确保相关的 GPIO 引脚配置为输出模式,准备好控制数码管。
6.2. 显示数字
创建一个显示数字的函数,通过提供数字编码控制数码管的显示。
这是我数码管静态显示的代码:
#include <STC32G.h>  // 引入 STC32G 的头文件  

// 数码管的字典,数字到段编码的映射  
const unsigned char digitCode[10] = {  
    0x3F, // 0  
    0x06, // 1  
    0x5B, // 2  
    0x4F, // 3  
    0x66, // 4  
    0x6D, // 5  
    0x7D, // 6  
    0x07, // 7  
    0x7F, // 8  
    0x6F  // 9  
};  

void displayDigit(unsigned char digit) {  
    if (digit < 10) {  
        P1 = digitCode[digit];  // 将对应的编码输出到 P1 口  
    }  
}  

void main() {  
    P1DIR = 0xFF;  // 将 P1.port 设置为输出  
    while (1) {  
        for (int i = 0; i < 10; i++) {  
            displayDigit(i);  // 显示 0-9  
            delay(1000000);    // 延时,便于观察  
        }  
    }  
}
通过掌握以上知识点,可以有效地驱动静态数码管显示数字或字母。了解数码管的基本工作原理、硬件连接方式以及驱动方法将帮助你在实际项目中应用这些技能。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 01:10:20 | 显示全部楼层
STC32G12K128学习心得 <十>
第十集是关于数码管的动态显示内容。学习了静态显示,动态显示相比于静态显示,稍微有一点难度,但是跟随冲哥的教学视频,掌握起来还是很容易的。我对本节内容的理解如下:
动态显示数码管是一种较为高效的数字显示方式,广泛应用于时钟、仪表和其他设备中。与静态显示不同,动态显示通过快速切换和刷新的方式在一个或多个数码管上显示信息。以下是动态显示数码管中我所掌握的知识点:
1. 数码管类型
共阳数码管:所有阳极连接在一起,各个段通过 GPIO 控制阴极。
共阴数码管:所有阴极连接在一起,各个段通过 GPIO 控制阳极。
静态数码管的编码和连接方式与前面提到的相似,动态显示也基于这些基本概念。

2. 动态显示原理
动态显示的核心在于“闪烁伪影”原理。通过快速地切换数码管的显示,使人眼无法察觉到其中的变化,从而达到展示多个数字的信息。关键的步骤包括:

轮流激活数码管:在给定的刷新时间内,快速地顺序点亮不同的数码管。

频率与持续时间:根据人眼的视觉暂留效应,刷新频率应足够高(通常大于 50Hz),以确保稳定显示。

3. 多位数码管显示
对于多个数码管,可以使用一个位选信号来控制当前活跃的数码管,同时通过段控制信号来显示所需的数字。
制作一个数组来保存各个数码管要显示的数字或信息。
数码管控制引脚
一般而言,连接如下:

各个数码管段(a, b, c, d, e, f, g, dp)连接到单片机的 GPIO 引脚。
每个数码管的共阳或共阴引脚连接到控制引脚。
4. 硬件连接
连接数码管的段引脚到单片机的 GPIO 引脚(例如 P0.0-P0.7)。
通过额外的控制引脚连接每个数码管的公共引脚(例如,P1.0, P1.1, ..., P1.n)。
5. 代码实现
5.1. 通讯协议
使用一个适当的延时,轮流激活每个数码管。可以通过以下步骤实现动态显示的算法:

定义每个数字的段编码。
通过循环激活数码管,并更新其段的显示状态。
我在学习过程中,自己编写的动态显示的代码如下:
#include <STC32G.h>  

// 数码管的编码表(以共阴数码管为例)  
const unsigned char digitCode[10] = {  
    0x3F, // 0  
    0x06, // 1  
    0x5B, // 2  
    0x4F, // 3  
    0x66, // 4  
    0x6D, // 5  
    0x7D, // 6  
    0x07, // 7  
    0x7F, // 8  
    0x6F  // 9  
};  

void delay(unsigned int time) {  
    for (unsigned int i = 0; i < time; i++);  
}  

void display(unsigned char digit, unsigned char position) {  
    P0 = digitCode[digit];     // 设定段码  
    switch (position) {  
        case 0: P1 &= ~0x01; break; // 激活数码管1  
        case 1: P1 &= ~0x02; break; // 激活数码管2  
        case 2: P1 &= ~0x04; break; // 激活数码管3  
        // 可以根据需要扩展  
    }  
    delay(1); // 短暂延时  
    P1 |= 0x07; // 关闭所有位的选择,防止重叠显示  
}  

void main() {  
    P0DIR = 0xFF;  // P0 设置为输出,用于数码管段  
    P1DIR = 0xFF;  // P1 设置为输出,用于选择数码管  

    unsigned char numbers[3] = {1, 2, 3}; // 假设要显示的数字  
    while (1) {  
        for (unsigned char position = 0; position < 3; position++) {  
            display(numbers[position], position); // 显示当前数字  
        }  
    }  
}
掌握动态显示数码管的知识,能有效提高信息显示的灵活性和效率。在实际设计中,结合具体需求和应用场景,可以灵活调整代码和硬件连接,以实现优质的用户体验。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 20:30 , Processed in 0.121932 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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