找回密码
 立即注册
查看: 324|回复: 7

Ai8051U教学视频笔记打卡

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-05-03 04:06:42
已绑定手机

1

主题

7

回帖

453

积分

中级会员

积分
453
发表于 2025-3-13 12:11:06 | 显示全部楼层 |阅读模式
截图202503131158059387.jpg
截图202503131209377468.jpg
截图202503131210002819.jpg
截图202503131210564448.jpg
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-13 12:12:00 | 显示全部楼层
**Ai8051U教学视频笔记打卡——第一天**<br><br>**序言概述**  <br>STC单片机教程以8051U为核心,逐步过渡到32位51架构的大型实战项目,旨在帮助学员深入理解单片机的原理与应用。讲师特别指出,8051U相较于STC32G在功能上实现了显著提升,尤其是在屏幕显示、视频播放、录音放音、PWM与DMA兼容性以及频谱分析仪等领域的应用。通过实例演示,如摄像头屏幕显示、数字录音、视频播放和手写计算器功能,充分展现了8051U的强大性能。  <br><br>**功能亮点**  <br>1. **显示与多媒体能力**:支持高分辨率屏幕显示与视频播放,满足复杂人机交互需求。  <br>2. **音频处理**:集成录音与放音功能,适合语音识别与音频处理场景。  <br>3. **硬件兼容性**:PWM与DMA的优化设计,提升了信号处理效率与兼容性。  <br>4. **频谱分析**:内置频谱分析功能,适用于信号处理与调试场景。  <br><br>**兼容性与开发友好性**  <br>8051U在存储与处理能力上表现出色,同时对旧型号单片机开发者保持了良好的兼容性,降低了学习与迁移成本。  <br><br>**总结**  <br>8051U作为一款功能强大的单片机,不仅提升了硬件性能,还通过丰富的应用实例为开发者提供了广阔的应用空间,是嵌入式系统开发的理想选择。  <br><br>**打卡目标**  <br>后续将重点关注8051U的硬件特性与实战项目实现,逐步掌握其核心应用场景与开发技巧。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-05-03 04:06:42
已绑定手机

1

主题

7

回帖

453

积分

中级会员

积分
453
发表于 2025-3-13 15:03:58 | 显示全部楼层

Ai8051U教学视频笔记打卡第二集

问:实验箱的主要组成部分是什么?实验箱上有哪些关键的功能接口?
答:实验箱由透明外壳、集成元器件的PCB主板、连接线缆及短路帽等构成。PCB主板为焊接完成的电路板,短路帽用于开发调试。正面接口包括:

  • USB Type-A:连接电脑烧录程序;
  • USB Link ED:直接接入调试工具;
  • USB Type-C:兼容手机数据线下载。
    背面接口含双串口转换芯片(支持串口实验)及TF卡槽(用于文件系统操作)。

图片.png


问:实验箱在音频方面具备哪些功能?显示和控制功能有哪些配备?
答:音频功能支持双通道输出(立体声接口/耳机接口)及麦克风录音。显示系统配备OLED屏、SPI/I2C接口、八位数码管及并口TFT彩屏接口,可执行点灯实验、时钟实验及动态画面展示。控制单元含八路流水灯与4×2矩阵键盘,适配单片机教学。


问:实验箱是否具备掉电检测功能?
答:集成电压调节模块,可模拟掉电场景并触发检测机制,断电前自动保存关键数据,确保数据完整性。


问:为何要在关机前保存用户数据?掉电检测的作用是什么?
答:保存数据旨在维持使用连续性,防止意外断电导致信息丢失,类似计算机自动保存机制。掉电检测通过预判电源异常触发应急存储,避免数据损毁与系统故障。

图片.png


问:红外接收头在电子设备中的功能是什么?
答:接收并解码红外遥控信号,内置光电二极管与信号处理电路,支持家电等设备的无线控制。


问:矩阵键盘与ADC键盘有何区别?
答:

  • 矩阵键盘:行列扫描(如4×2矩阵用6引脚控制8键),硬件利用率高;
  • ADC键盘:单引脚独立检测(16键需16引脚),扩展灵活性强。
    差异主要在于电路复杂度与按键规模适应性。

问:主芯片AI8051及相关按键的作用是什么?
答:AI8051为LQFP48封装主控芯片,集成定时器(T0/T1)、中断控制器(INT0/INT1)。功能按键包括:

  • 复位键:强制进入下载模式;
  • 电源键:硬件断电控制。

问:QSPI Flash的作用是什么?
答:存储上位机传输数据(如图片、动画),供主控芯片读取并显示,实现数据持久化与复杂可视化应用。


问:LCD对比度调节、RTC电池与LCD屏的关系是什么?
答:对比度调节接口通过电位器优化显示效果;RTC电池为时钟模块提供后备电源,断电时维持计时,确保LCD屏时间显示准确。


问:插针的作用是什么?如何选择其功能?
答:插针通过短路帽配置电路路径,具体功能选择根据实验需求连接。


问:板背面的重要组件及其作用是什么?
答:背面组件包括:

  • 无源晶振:高精度RTC时钟源;
  • 24C02芯片:非易失存储关键数据;
  • DS18B20:高精度温度检测;
  • SP3485:485通信支持;
  • 无源蜂鸣器:声音信号输出。

图片.png


问:如何配置软件环境开发基于实验箱的项目?
答:需安装以下工具:

  1. CARE IDE:官方编程软件,用于代码编写与调试;
  2. STC-ISP(V6.94Y+):通过官网下载,烧录程序至单片机。

图片.png


问:如何确保软件兼容性?
答:官网持续更新版本,新版软件均向下兼容,直接下载最新版即可。


问:为何添加头文件?如何添加头文件及安装中断插件?
答:

  1. 头文件:包含国产芯片寄存器定义,添加路径:CARE仿真设置→添加型号→选择CK51目录;
  2. 中断插件:官网下载C251专用版本,安装至KRV5工具链目录以扩展中断支持。

问:如何下载ISP软件及手册?
答:访问STCAI官网,于“软件工具”栏下载最新版STC-ISP(如V6.94Y),解压后创建桌面快捷方式。手册可在官网“资料下载”区获取。


问:如何安装编程软件C251?
答:从实验箱资料包或官网获取安装包,推荐安装至C盘。具体步骤参考包内指南,或联系技术支持。


问:如何安装PDF查看软件?
答:自行安装极光PDF、WPS或福昕阅读器,用于查看实验手册(如STC手册需书签导航功能)。


问:实验箱包含哪些内容?如何下载程序?
答:含实验箱布局图、程序下载教程、CARE项目模板等。下载步骤:

  1. 选择AI8051UU芯片型号;
  2. 进入下载模式(按住P32键→断电→按电源键);
  3. 软件识别设备后烧录程序。

问:如何正确进入下载模式?
答:操作顺序:

  1. 按住P32键不松;
  2. 短按电源键断电;
  3. 再次按下电源键通电,等待识别为HID设备。

问:如何通过软件烧录程序?
答:在STC-ISP中选择芯片型号,打开代码文件(如.c或.hex),设置时钟频率(需与代码定义一致,如24MHz),点击“下载/编程”完成烧录。


问:如何设置代码文件的时钟频率?
答:在代码主文件(如main.c)中查看宏定义(如 #define MAIN_Fosc 24000000L),于软件下拉菜单选择对应值(24MHz)并保存。

问:烧录程序过程是什么?
答:

图片.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-05-03 04:06:42
已绑定手机

1

主题

7

回帖

453

积分

中级会员

积分
453
发表于 2025-3-14 16:49:47 | 显示全部楼层

Ai8051U教学视频笔记打卡第三集

  1. 新建8051U工程
  • 打开开发软件(如Keil或STC-ISP)
  • 点击菜单栏"File → New Project"
  • 在弹出窗口选择项目存放路径(示例:D:\demo)
  • 输入工程名(建议英文如"LED_Test")
  • 选择单片机型号:STC AI8051U(注意选择32位版本)

图片.png

  1. 添加源代码
  • 右键工程 → New File → 保存为main.c
  • 双击工程目录的"Source Group" → 添加main.c到工程
  • 推荐创建以下基础代码框架:

图片.png

#include <AI8051.h>  // 头文件根据实际型号调整

void main() {
    // 初始化代码
    while(1) {
        // 主循环
    }
}
  1. 配置工程参数
  • 右击工程选择"Options"
  • 在"Target"选项卡:
    • Memory Model选"xsmall"(小项目)或"Large 64K"(大项目)
  • 在"Output"选项卡:
    • 勾选"Create HEX File"
    • HEX格式选择"Intel-HEX"
  1. 添加头文件技巧
  • 从STC官网下载最新头文件包
  • 解压后复制AI8051U.h到工程根目录
  • 在代码中使用绝对路径包含:
    #include "D:/demo/AI8051U.h"
    (或使用相对路径#include "AI8051U.h"
  1. 点亮LED技巧

图片.png

#include "ai8051u.h"
void main(void)
{
	P2M0=0X00;//P0端口为准双向口
	P2M1=0X00;
	P4M0=0X00;//P4端口为准双向口
	P4M1=0X00;
	
	P40=0;//P40端口输出0V
	
	while(1)
	{
	P2=0X01;	//P20-P27端口输出0X01
	
	}
	
	
}

效果如下:

f2e36c313f9d6fc985a2ccdcc7a5aae.jpg

关于端口的软硬件知识如下:

图片.png

LED点亮需要低电平。

图片.png

说明:烧录擎天柱时,需插电,先按住P32端口后按一下off(Power键)可以进入刷机模式。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-05-03 04:06:42
已绑定手机

1

主题

7

回帖

453

积分

中级会员

积分
453
发表于 2025-3-17 16:10:42 | 显示全部楼层

Ai8051U教学视频笔记打卡第四集

图片.png

如何获取和使用STC官网上的USB库文件?

答:在STC官网(stcar.com)找到软件工具库函数中的USB库文件,下载该文件至本地电脑。下载完成后解压至特定文件夹,并确认文件中包含适合8系列和32G系列带硬件USB芯片的库文件。根据所选单片机的位数(8位或32位),选择相应的库文件进行移植和使用。

图片.png

如何将新下载的库文件与之前的项目代码整合?

答:首先复制新下载的库文件到新创建的示例代码文件夹中,确保新文件与原有的C语言源文件(.c文件)和头文件(.h文件)等配套资源在同一目录下。然后,在上一节课的源代码基础上,添加新的头文件,以便利用新库文件中的功能。最后,对整合后的代码进行编译,确保移植的库文件与原有代码无冲突,且能正常运行。

如何将库文件移植到项目中?

答:首先复制所需的头文件(.h)和库文件(.lib)至项目目录下的指定文件夹(如slowC)下。这样做的目的是确保这两个文件能够被稳定且高效地调用,同时由于.lib文件是加密的,这样也便于防止代码被篡改,保证USB功能正常使用。

图片.png

为什么无法直接查看USB相关函数的源码?

答:在当前工程中,由于对安全性及移植便捷性的考虑,USB的初始化函数和其他关键函数是在隐藏的.lib文件中实现的,因此无法直接查看其源码。但开发者可以通过全局搜索功能查找USB相关函数,并可以在代码包中找到不加密的源码进行参考。

在USB中断连接过程中,EUSB和EA的作用是什么?

答:EUSB是用于控制USB的开关,当我们需要使用中断时,必须确保EUSB处于开启状态。而EA则是一个总开关,所有中断都会经过它。因此,为了启用中断,必须先打开EA。

图片.png

图片.png

图片.png

在提供的几行代码中,它们的功能是什么?

答:

if (bUsbOutReady)
        {
            USB_SendData(UsbOutBuffer,OutNumber);  
            
            usb_OUT_done();
        }

这几行代码的功能是确保USB无论接收到什么数据,都会将接收到的数据发送回去,并且还实现了不停电下载功能。当USB接收到特定代码时,会自动进入HID模式并把数据回传。

编译时出现以下问题,应该怎么处理?

WARNING L14: INCOMPATIBLE MEMORY MODEL

答:
图片.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-05-03 04:06:42
已绑定手机

1

主题

7

回帖

453

积分

中级会员

积分
453
发表于 2025-3-17 16:36:57 | 显示全部楼层

Ai8051U教学视频笔记打卡第五集

图片.png
如何在单片机上使用printf函数?
答:在USB库中启用printf的HID宏定义即可使用。具体操作是在代码中找到相关宏定义(如 #define USE_PRINTF_HID),解除注释后重新编译即可实现printf功能。

图片.png

图片.png

如何正确使用字符串及转换说明?
答:字符串需用英文双引号包裹,转义字符需符合C语言规范(如换行符应为 \n而非错误表述的"\n")。格式说明符需与变量类型严格匹配,例如 %s对应字符串,%d对应整型。

图片.png

如何在代码中运用printf进行数据输出?
答:接收数据后可通过格式控制输出,例如:

int value = 42;
printf("当前数值:%d\n", value);  // 正确换行符

输出位置应避免在中断服务例程中直接使用,建议通过缓冲区机制处理。

串口通信中如何正确显示发送数据?
答:当使用 printf发送数据时:

  1. 确保串口初始化正确
  2. 发送指令示例:printf("AT+CMD\r\n");
  3. 在循环中使用时应添加适当延时,例如:
while(1) {
    printf("心跳包\n");
    HAL_Delay(1000);  // 添加1秒延时
}

如何正确使用格式说明符?
答:标准格式说明符应为:

  • %s:字符串(注意大小写敏感,应小写)
  • %d:十进制整型
  • %ld:长整型
  • %f:浮点型
  • %x:十六进制
    错误示例修正:
// 错误示例
printf("数值:%S", str); 
// 正确示例
printf("数值:%s", str);

如何处理不同进制转换?
答:二进制转换示例:

uint8_t num = 0b10100101;
printf("十进制:%d\n十六进制:%02x\n", num, num);
// 输出:
// 十进制:165
// 十六进制:a5

如何配置64位变量支持?
答:32位编译器支持64位变量的正确方法:

  1. 使用标准类型定义:
int64_t bigNumber = 9223372036854775807LL;
uint64_t uBigNumber = 18446744073709551615ULL;
  1. 打印时使用正确格式符:
printf("64位数:%lld\n", bigNumber);

如何规范变量定义?
答:推荐使用标准类型别名:

typedef unsigned char  uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long  uint32_t;

错误修正:

// 错误示例
#define U8_UNSIGNED char
// 正确示例
typedef unsigned char uint8_t;

算术运算符注意事项:

  1. 整数除法示例:
int a = 5, b = 2;
printf("5/2=%d,余数=%d\n", a/b, a%b);  // 输出2余1
  1. 浮点运算需类型转换:
float result = (float)a / b;
printf("精确结果:%.2f\n", result);  // 输出2.50

关系运算符的正确使用:

if(x > y) {
    // 当x=5,y=3时执行
} else if(x == y) {
    // 相等时执行
} else {
    // 其他情况
}

逻辑运算符原理:

// 与运算(&&)
if(condition1 && condition2)  // 需同时成立
// 或运算(||)
if(condition1 || condition2)  // 任一成立
// 取反(!)
if(!flag)  // flag为假时成立

位运算示例:

uint8_t a = 0x05;  // 00000101
printf("取反:%02x\n", ~a);    // 输出fa(11111010)
printf("左移:%02x\n", a<<2);  // 输出14(00010100)
printf("右移:%02x\n", a>>1);  // 输出02(00000010)

类型溢出处理:

uint16_t result = (uint16_t)var1 * var2;  // 强制类型转换

特殊符号转义:

printf("显示百分比:%%\n");        // 输出%
printf("制表符:开始\t结束\n");    // 输出带空格分隔

图片.png

若出现以下错误信息如何解决?

main.c(93): warning C95: 'printf': too many actual parameters 
main.c(93): warning C140: 'printf' undefined; assuming 'extern int printf()'

答:原因是usb库中未定义;去掉#define PRINTF_HID 的注释符号。

图片.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-05-03 04:06:42
已绑定手机

1

主题

7

回帖

453

积分

中级会员

积分
453
发表于 2025-3-17 16:56:55 | 显示全部楼层

Ai8051U教学视频笔记打卡第六集

图片.png

什么是GPIO?它在单片机中的作用是什么?如何利用单片机的IO口检测按键输入?
答:GPIO(General Purpose Input/Output)是通用输入输出接口,具有可编程控制电平特性。在典型40引脚单片机(如STC89C52)中,其作用包括:

  1. 数字信号输入:读取外部设备状态(如按键检测)
  2. 数字信号输出:驱动外部设备(如LED、继电器)
  3. 复用功能:部分GPIO支持PWM、I2C等特殊功能

按键检测标准电路接法:

// 硬件连接:
// P3.2引脚 -> 按键 -> GND
// P3.2引脚 -> 10KΩ上拉电阻 -> VCC
void main() {
    P3M0 &= ~0x04;  // 设置P3.2为准双向模式
    while(1) {
        if(P32 == 0) {  // 检测低电平
            // 按键按下处理
            delay_ms(20);  // 消抖处理
        }
    }
}

高电平和低电平在单片机中的具体含义是什么?
答:电平标准依据供电电压而定:

供电电压 高电平(V) 低电平(V)
5V系统 ≥2.0V ≤0.8V
3.3V系统 ≥2.0V ≤0.8V
注:具体阈值需参考对应芯片数据手册的VIH/VIL参数

单片机的IO口有哪些工作模式?在3.3V系统中如何界定电平?
答:典型IO模式及特性:

模式 驱动能力 典型应用场景
准双向口 20mA灌电流 常规数字IO
推挽输出 20mA拉/灌 LED驱动、高速信号
高阻输入 >1MΩ阻抗 模拟信号采集
开漏输出 仅灌电流 I2C总线等需要线与的场合

在3.3V系统中,当施密特触发器使能时:

  • 低电平阈值:MAX 0.99V (VIL)
  • 高电平阈值:MIN 2.31V (VIH)

图片.png

图片.png

图片.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-05-03 04:06:42
已绑定手机

1

主题

7

回帖

453

积分

中级会员

积分
453
发表于 2025-3-18 11:05:14 | 显示全部楼层

Ai8051U教学视频笔记打卡第七集

图片.png

在单核CPU中,如何解决在一个任务执行期间无法执行其他任务的问题?

答:在单核CPU环境下,由于其只能执行一个任务,所以在某一任务(如从100数到0)执行期间无法进行其他操作。为解决这个问题,引入了定时器的概念,通过定时器中断可以在主任务执行过程中打断它,从而实现对其他任务的响应和处理。

定时器的主要作用是什么?定时器中断如何实现对主任务的打断并执行其他操作?

答:定时器的主要作用有两个方面,一是用于计时,可以周期性地执行一项操作,每隔固定时间完成一项任务;二是替代长时间的delay,提高运行效率和处理速度,它能打断主循环,确保在定时到达时执行预设的操作。定时器通过定时器中断机制,在预设的时间间隔到达时打断正在执行的主任务,执行相应的中断服务函数,实现对其他任务的响应和处理。例如,在本案例中,定时器中断使得LED能在3秒闪烁一次的同时,能够在按下按钮的任意时刻打断主任务并打印按键次数。

图片.png

如何使用ISP软件生成定时功能的函数?

答:在ISP软件中,通过定时器计算器功能,选择指定的时钟频率(例如24兆赫兹),配置定时时间和定时器模式(如24位自动重载),软件会自动生成相应的定时函数。在实际操作中,需要将生成的定时器初始化函数复制到主函数之前,并确保在主函数内部正确调用该初始化函数。

初始化函数为何建议放在后面执行?

答:初始化函数建议放在后面执行是因为其中包含了中断处理的逻辑,当单片机上电后会先执行主程序,然后在执行到特定中断触发时,会跳转到中断函数执行,并在中断完成后回到主程序继续执行。

如何实现LED灯每3秒取反一次状态变化?

答:通过设置定时器中断,使得每3秒触发一次中断,从而在大括号内对LED灯的状态进行取反操作,并输出状态。在24兆时钟下,定时器函数每3秒执行一次,利用这个特性实现LED灯的定时取反变化。

全局变量如何在不同大括号间调用?

答:全局变量可以在函数外部定义,这样它就可以被多个大括号内的函数所调用。例如,在给出的代码中,全局变量用于控制LED灯的状态取反操作,并在其他大括号内用于输出状态。

按键按下次数如何统计及显示?

答:通过创建一个局部变量(如count)来记录按键被按下的次数,并在按键按下时递增该变量值。注意局部变量具有作用域限制,只能在创建它的大括号及其内部有效。此外,为确保首次按键按下时能正确显示次数,需要给局部变量赋初值1。

如何解决串口打印乱码的问题?

答:在编程过程中,若出现串口打印乱码的情况,可能是因为编译器对某些特殊字符如“\”、“\xfd”等进行了特定处理。解决办法是在这些特殊字符后面添加一个相同的字符,即使用“\xfd”作为替代,以确保正常显示数据。

系统时钟的作用是什么?如何调整系统时钟以减慢定时器的计数速度?

答:系统时钟是定时器工作的重要组成部分,它为定时器提供计数脉冲,决定了定时器从一个状态到另一个状态(如从0到65536)的转换速度。在下载时配置的时钟频率(例如24兆赫兹)决定了每秒钟或每微秒时钟信号的次数,从而影响定时器的计数速率。通过修改TM0PS寄存器可以减慢定时器的计数速度。当TM0PS设置为0时,系统时钟不分屏,即计数器直接以系统时钟频率计数。若要分屏,可以通过除以1或除以12的方式减慢计数速度,具体倍数取决于所选的分频模式。

16位自动重载定时器的工作流程是什么?

答:定时器从设定值递减到6536后置位标志位,触发一次中断;然后继续递减直至达到下一个置位条件再次触发中断。如此循环,实现了定时功能。

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

函数定义、声明和调用的基本要素是什么?

答:函数定义包含返回值类型、函数名、入口参数以及具体功能的实现,最后以return语句结束。函数声明则是在被调用前,在头文件或之前添加,仅包含函数名称和返回值类型,无具体功能描述和分号。函数调用时需使用函数名加括号,如果有入口参数,则在括号内填入参数,多个参数间用逗号分隔。

图片.png

如何解决函数未找到的问题?

答:若函数定义不在调用处附近,可手动添加函数声明来指示编译器查找函数定义。声明需包含函数名称和返回值类型,结尾加英文分号。

图片.png

在编程中如何实现灯按一下后点亮3秒并熄灭?

答:首先,在编程时需先判断按键是否按下,然后通过设置P00等于零来点亮灯,并在3秒后通过定时器关闭灯。具体实现方式是初始化定时器并在3秒后将定时器值设为1以停止计时,从而关闭灯。

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 07:17 , Processed in 0.208395 second(s), 96 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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