KAIM 发表于 2025-8-19 19:37:17

学习感悟分享

在第一集教程中,主要围绕 AI8051U 试验箱的基础认知与初步上手展开。​
试验箱硬件介绍:​
接口: USB - TypeA 接口,可用于与电脑通信及下载程序;USB - TypeC 接口,功能与 TypeA 一致,为用户提供了更多连接选择,且具备更高的数据传输速率和更广泛的兼容性;USB Link 1D 接口,专门适配 STC 官方烧录工具,方便将编写好的程序烧录至单片机中;还有 USB 转双串口,这是 STC 自研芯片实现的功能,能把一个 USB 接口转换为两个串口接口,满足更多串口通信需求,最高波特率可达 10M 左右,基本支持市面上常用的通讯协议 ,为调试与数据传输带来极大便利。​

功能模块:展示了板载的丰富资源,如具有录放音设备,配合 AI8051U 的录音程序可实现高质量录音,适用于语音识别、录音分析等应用;设有 TF 卡插座,支持外扩 TF 卡,便于搭建文件操作系统,实现大容量的文件存取;拥有 8 路流水灯和 8 位数码管,可用于直观展示数据或程序运行状态;具备 TFT 彩屏接口,能够实现高帧率屏幕显示,支持 8080 八位并口的显示屏驱动,可实现快速界面刷新和图形菜单显示,展现出在嵌入式图形化应用中的潜力;还板载了 RTC 芯片、红外接收头、一路 2*4 的矩阵键盘、一路 16 位的 ADC 键盘以及两个 T0、T1 键盘和 INT0、INT1 键盘等,按键功能丰富,可用于各种实验场景;此外,还支持掉电监测,并板载了 EEPROM 芯片和 QSPI flash 芯片 。​

软件与工具推荐:​
开发软件:推荐使用 keil 进行开发,为与教程保持一致,需进行一系列软件安装与配置工作。如获取 c251v560 软件(可找销售获取),从官网www.stcai.com下载 AI8051U 手册以及 ISP 软件包(AIapp - ISP - V6.94),并将 ISP 软件的快捷方式发送到桌面(该软件为绿色软件)。在 keil 中添加 AI8051U 芯片型号,找到 keil 目录进行相关操作,同时添加中断修改中断。另外,还需下载 keil 中断拓展插件,以满足开发需求。​

头文件添加:下载代码包和手册(AI8051U 实验箱相关),准备配置 <AI8051U.h> 头文件。值得注意的是,若将头文件下载到原先的 C51 中生成的是 8 位的 AI8051U 头文件,而下载到 C251 中生成的则是 32 位的 AI8051U 头文件,应根据实际开发需求选择合适的路径。





KAIM 发表于 2025-8-19 19:44:37

第二章:硬件及工具介绍
在第二章的教程里,主要围绕 AI8051U 试验箱的硬件组成、相关开发工具以及初次上手实践展开
硬件构成剖析:
接口类型:
USB 接口:试验箱配备了 USB - TypeA 与 USB - TypeC 接口,它们均可实现与电脑的通信以及程序下载功能
USB 转双串口:采用 STC 自研的芯片,将一个 USB 接口转化为两个串口接口,最高波特率能达到 10M 左右,支持市面常见通讯协议
功能模块:
存储拓展:TF 卡插座设计,可外接 TF 卡,助力搭建文件操作系统,满足大容量数据存储需求。
显示模块:板载 8 路流水灯与 8 位数码管,可直观呈现数据或程序运行状态。同时预留 TFT 屏插座,支持屏幕显示,特别是在配合 AI8051U 支持 8080 八位并口显示屏驱动时,能实现高帧率屏幕显示与图形菜单展示,适用于嵌入式图形化应用开发。
音频模块:具备立体声输出与咪头输入功能,结合 IIS 功能可实现语音播放与录制,配合板载录放音设备,可进行高质量音频处理,在语音识别、语音交互等应用中有广阔前景。
其他模块:拥有 RTC 芯片,可提供实时时钟功能;红外接收头,可接收红外信号,配合板载红外发射可模拟遥控器;设有一路 2*4 的矩阵键盘、一路 16 位的 ADC 键盘以及 T0、T1、INT0、INT1 键盘,按键种类丰富,适用于各种实验场景。此外,还支持掉电监测,板载 EEPROM 芯片可存储关键参数,QSPI flash 芯片则用于高速数据存储与传输。
开发工具详述:
编程软件:推荐使用 Keil 进行开发,根据不同芯片类型有多种版本可供选择,其中 C251 版本专门用于 STC AI8051U 单片机编程。安装时需注意分目录安装,避免与其他版本冲突,安装完成后利用注册机进行激活,确保软件正常使用。
烧录软件:从 STC 官网下载最新的 ISP 软件(AIapp - ISP - V6.94),这是一款绿色软件,可将其快捷方式发送至桌面方便使用。该软件用于将编写好的程序烧录至单片机中,在烧录时需正确选择单片机型号为 “AI8051U - 34K64” 。
其他工具:需在 Keil 中添加 AI8051U 芯片型号,同时下载 keil 中断扩展插件并进行中断号扩展,以满足开发过程中的中断处理需求。此外,还需从官网下载代码包和手册,为开发提供参考资料。
初次实践操作:
工程搭建:依据数据手册 6.5 章节,在 C251 软件中新建工程,并建立名为 main 的.C 文件添加到工程中。
头文件配置:参考手册 6.4 章节,利用 ISP 软件添加 <AI8051U.h> 头文件。注意,若将头文件下载到原先的 C51 中生成的是 8 位的 AI8051U 头文件,而下载到 C251 中生成的则是 32 位的 AI8051U 头文件,应根据实际开发需求选择合适路径。
程序下载与运行:使用 USB 线将试验箱与电脑连接,打开 AIapp - ISP - V6.94R 下载软件,选择正确的单片机型号,打开需要下载的用户程序。对于硬件 USB 下载,需先按住试验箱上的 P3.2/INT0 按键(P32 接地),然后按一下 ON/OFF 电源按键断电,接着松开 ON/OFF 电源按键上电,最后松开 P3.2/INT0 按键,正常情况下软件能识别出 “STC USB Writer (HID1)” 设备,点击 “下载 / 编程” 按钮即可将程序烧录进试验箱。以点亮 LED 灯程序为例,输入给定代码并编译成功后,下载到试验箱中,即可观察到 LED 灯亮起,完成初次硬件与软件结合的实践操作。

KAIM 发表于 2025-8-19 19:52:36

第三章:点亮一颗 LED 灯​
视频中,点亮一颗 LED 灯的操作被拆解为 “硬件对应关系确认 — 代码编写 — 程序烧录 — 效果验证” 四个连贯步骤,全程结合试验箱实物演示,突出实操细节:​

[*]硬件引脚对应(视频重点演示):​

[*]视频中明确指出,试验箱的 LED 灯组中,左侧第一颗 LED(标注为 “LED1”)的正极通过橙色限流电阻连接至P2.0 引脚,负极直接焊接在 GND 排针旁的接地焊点。​

[*]演示时用万用表蜂鸣档实测:红表笔接 P2.0 引脚,黑表笔接 LED1 负极,蜂鸣器发声,验证两者电气连接;同时强调 “务必确认引脚编号,避免误接 P2.1 导致其他 LED 点亮”。​


[*]代码编写(视频逐行讲解):​


[*]头文件引入:视频中特别说明,需从官网下载的代码包中复制<AI8051U.H>头文件到工程目录,并在代码首行添加:​
#include <AI8051U.H>


[*]IO 口模式配置:视频通过示波器演示默认高阻输入模式下 P2.0 引脚的电平波动,随后讲解配置代码:
void init_led(void) {​
    P2M0 = 0x00;// 视频中强调:直接将P2口8位均设为00,即准双向模式​
    P2M1 = 0x00;// 相比单独配置某一位,此方法更适合新手​
}


[*]主函数控制:视频中用动画演示电流流向,说明 “低电平点亮” 原理,并给出最简代码:​
void main() {​
    init_led();​
    while(1) {​
      P2_0 = 0;// 视频中在此处停顿,提示“0代表低电平,对应LED点亮”​
    }​
}​

​编译与下载(视频实操演示):​
编译步骤:视频中打开 Keil C251,点击 “Project—New μVision Project”,选择保存路径后,在 “Select Device for Target” 中搜索 “AI8051U” 并选中。添加 main.c 文件后,点击编译按钮,提示 “0 Error (s), 0 Warning (s)” 即为成功。​
烧录操作(视频特写镜头):​
用USB-TypeC 线连接试验箱与电脑(视频中特别推荐使用包装盒内附赠的 1.5 米短线)。​
打开 AIapp-ISP 软件,点击 “检测 MCU” 按钮,软件界面左侧出现 “STC AI8051U (USB)” 设备(视频中用红框标注)。​
点击 “打开文件”,选择编译生成的 “LED1.hex”,然后按住试验箱上的 “下载键(标有 ISP)”,同时按一下电源开关,待软件显示 “正在下载...” 后松开按键,进度条走完提示 “编程成功”。​

效果与故障排查(视频常见问题演示):​
成功效果:视频中 LED1 亮起,用手机拍摄慢动作展示 “瞬间点亮无闪烁”。​
常见问题:​
若 LED 不亮,视频中演示了两种排查方法:① 用镊子短接 P2.0 与 GND,LED 点亮则说明代码问题;② 检查 ISP 软件中 “最低波特率” 是否设为 “2400”(视频中默认此值,修改后可能导致下载失败)。​
特别提示:若出现 “LED1 闪烁”,多为误将P2_0 = 0写成P2_0 = ~P2_0,需检查主函数逻辑。​

总结:点亮第一颗 LED 的核心是 “确认引脚 — 配置模式 — 输出低电平”,这三个步骤在后续流水灯、按键控制中会反复用到,建议新手实际操作 3 次以上以加深记忆。





KAIM 发表于 2025-8-19 19:59:08

第四章:USB 不断电下载
视频中,USB 不断电下载作为 AI8051U 试验箱的核心便捷功能被重点讲解,通过对比传统断电下载的弊端,突出其 “无需反复插拔电源、提升开发效率” 的优势,操作步骤拆解清晰且附带实物演示:
功能原理与硬件基础:
每次下载需断开主电源,通过下载按键触发 MCU 进入 BootLoader 模式。而 USB 不断电下载的核心是试验箱内置的 “USB 电源管理模块”,该模块通过二极管隔离主电源与 USB 供电,实现 “电脑 USB 单独为 MCU 供电并维持下载状态”。

硬件标识:试验箱背面丝印标注 “USB_PWR” 的绿色 LED 灯,视频中强调 “此灯常亮说明 USB 供电正常,是不断电下载的前提
前期配置(视频逐步操作):
ISP 软件设置:打开 AIapp-ISP 软件,在 “下载选项” 栏勾选 “启用 USB 不断电下载”(视频中用黄色箭头标注该选项),并将 “复位方式” 设为 “软件复位”(默认值为 “硬件复位”,需手动修改)。
硬件连接检查:视频中用特写镜头展示:① USB-TypeC 线必须插在试验箱标有 “DEBUG” 的接口(非普通 USB 接口);② 主电源开关可保持开启状态,但需确保试验箱未外接其他大功率模块(如电机驱动板,可能导致供电冲突)。
下载操作流程(视频对比演示):
与传统下载对比:视频左侧分屏展示传统方式(需按电源键 + 下载键),右侧展示不断电下载步骤:
点击 ISP 软件 “检测 MCU”,软件自动发送复位指令,试验箱上的 “RUN” 指示灯闪烁 3 次(表示进入下载模式)。
选择编译好的.hex 文件,点击 “下载” 按钮,进度条开始滚动(视频中提示 “此时主电源无需关闭,LED 灯、数码管等外设会短暂熄灭,属正常现象”)。
下载完成后,软件提示 “复位 MCU”,试验箱自动重启,“RUN” 灯常亮,外设恢复工作。

常见问题:
下载失败提示 “找不到 MCU”:视频中演示排查步骤:① 检查 “USB_PWR” 灯是否亮起,不亮则更换 USB 线;② 重新插拔 USB 接口,确保接触良好(试验箱 USB 口易积灰,视频建议用棉签清洁)。
外设异常:若下载后 LED 灯闪烁异常,视频指出可能是 “软件复位未生效”,需在代码中添加复位函数:
void software_reset(void) {
    ISP_CONTR = 0x60;// 触发软件复位,视频中强调此寄存器值为STC芯片专用
}
兼容性限制:视频特别说明 “当程序中使用了外部中断 0(INT0)且优先级设为最高时,可能屏蔽下载指令”,建议调试阶段暂时关闭高优先级中断。
视频最后强调:USB 不断电下载是 AI8051U 试验箱的核心功能之一,熟练掌握后可显著提升开发流畅度,尤其适合新手高频次调试代码的场景,建议结合第二章的 LED 灯程序反复练习,直至形成肌肉记忆。


KAIM 发表于 2025-8-19 20:07:26

第五章:C 语言基础
在 AI8051U 试验箱的学习进程中,C 语言基础是极为关键的一环。这部分内容将为学习者后续深入开发试验箱功能,实现复杂应用程序奠定基石。视频通过理论讲解、代码演示与实际案例相结合的方式,系统地阐述了 C 语言在该试验箱开发场景下的核心要点。
C 语言基本结构与程序执行流程:
结构剖析:视频开篇强调,一个完整的 C 语言程序由函数和变量构成。其中,main()函数是程序执行的入口,不可或缺。例如,一个简单的点亮 LED 灯程序框架如下:
#include <AI8051U.H>// 引入试验箱相关头文件,提供硬件寄存器定义等void main(void)
{
// 初始化代码,如配置IO口模式
    while(1) {
// 主循环,实现具体功能,如控制LED灯亮灭
   }
}

运算符与表达式:​
算术运算符:加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)等算术运算符在试验箱开发中常用于数据计算。比如,在计算 PWM(脉冲宽度调制)占空比时,可能会用到除法运算。若要设置 PWM 占空比为 50%,假设总周期为 100,有效高电平时间为int highTime = 100 * 50 / 100;
赋值运算符:=用于将右侧表达式的值赋给左侧变量。此外,还有复合赋值运算符,如+=、-=等。在试验箱中,当需要对某一寄存器的值进行累加操作时,可使用+=运算符,如P2 += 1;表示将 P2 口寄存器的值加 1。​
关系与逻辑运算符:关系运算符(如>、<、==等)用于比较两个值的大小或是否相等,逻辑运算符(&&与、||或、!非)用于组合多个关系表达式。在编写按键检测程序时,if((P3 & 0x01) == 0x01),通过与运算符&检测 P3.0 引脚是否为高电平,若为高电平则执行后续代码块。​

控制语句:​
条件语句:if - else语句用于根据条件执行不同代码块。在温度监测程序中,if(temperature > 30),若检测到的温度大于 30 摄氏度,则执行开启风扇的代码;否则执行关闭风扇的代码。视频中还介绍了嵌套if - else以及switch - case语句的应用场景,如在多按键控制不同功能的程序中,使用switch - case可清晰地根据按键值执行相应操作。​
循环语句:for、while和do - while循环语句在试验箱开发中用于重复执行某段代码。以流水灯效果为例,可使用for循环控制不同 LED 灯依次点亮,for(int i = 0; i < 8; i++),循环 8 次,每次点亮不同位置的 LED 灯。while循环常用于等待某一条件满足,如while((P3 & 0x02) != 0x02),等待 P3.1 引脚变为高电平。do - while循环则先执行一次循环体,再判断条件,适用于某些需要先执行一次操作再进行条件判断的场景。​

函数:​
函数定义与声明:函数是模块化编程的关键,可将特定功能封装在函数内,提高代码的可读性与可维护性。函数定义包括返回值类型、函数名、参数列表和函数体。例如,定义一个延时函数:void delay(unsigned int time) {    while(time--)    // 空循环,消耗时间实现延时 函数声明需在调用函数前进行,告知编译器函数的返回值类型、函数名和参数类型,如void delay(unsigned int time);。​
函数调用与参数传递:在主函数或其他函数中可调用已定义的函数,传递参数时分为值传递和引用传递(在 C51 中,部分编译器支持通过指针实现类似引用传递效果)。在点亮 LED 灯程序中,调用延时函数实现闪烁效果,delay(1000);,这里 1000 即为传递给delay函数的参数,控制延时时间。​

数组与指针(基础部分):​
数组:数组用于存储多个相同类型的数据。在试验箱中,可使用数组存储多个传感器的读数,如int sensorReadings;定义了一个可存储 5 个整型传感器读数的数组。通过数组下标可访问和修改数组元素,sensorReadings = getSensorValue(0);将第一个传感器的值存入数组。​
指针(初步认识):指针是 C 语言的强大特性,虽较为复杂,但在试验箱开发中用于高效访问硬件资源等场景。视频简单介绍了指针变量的定义,如int *ptr;定义了一个指向int型数据的指针变量。在后续章节将深入讲解指针在操作寄存器地址、内存管理等方面的应用。​




KAIM 发表于 2025-8-19 20:12:26

第六章:IO 输入输出​
IO 口工作模式:​
共 4 种模式,结合寄存器配置说明:​
高阻输入(默认):P2M0 &= ~(1 << 0); P2M1 |= (1 << 0);,适用于读微弱信号。​
准双向口(弱上拉):P2M0 &= ~(1 << 0); P2M1 &= ~(1 << 0);,常用输出模式,如点亮 LED.推挽输出:P2M0 |= (1 << 0); P2M1 &= ~(1 << 0);,驱动能力强,适合大功率外设。​
开漏输出:配置高阻输入,需外接上拉,用于 I2C 等总线。​
模式选择:小功率用准双向口,大功率用推挽,读输入用高阻,总线用开漏。​

IO 输出操作:​
单个 IO 口:P2_0 = 1;(熄灭 LED),准双向口高电平约 3.3V,推挽更稳定。
多个 IO 口:操作端口寄存器,如P2 = 0x00;(8 路 LED 全亮)、P2 = 0xAA;(奇数位亮),注意用&=、|=避免影响其他 IO。​

IO 输入操作:​
按键检测:​
P3.0 配置为高阻输入,按键按下为低电平,代码判断:​
if(P3_0 == 0) { P2_0 = 0; } else { P2_0 = 1; }​
软件延时 10ms 消抖,确认状态后操作。​

传感器读取:以光敏电阻为例,int lightLevel = P1_0;读电平判断光线(需配合 ADC)。​​
按键控制流水灯:​
unsigned char direction = 1; bit running = 0;​
void main() {​
while(1) {​
if(P3_0 == 0) { delay(10); if(P3_0 == 0) running = 1; }​
if(P3_1 == 0) { delay(10); if(P3_1 == 0) running = 0; }​
if(P3_2 == 0) { delay(10); if(P3_2 == 0) direction = !direction; }​
if(running) { /* 控制流水灯方向 */ }​
}​
}​
外部中断:IO 口检测电平变化(如下降沿)触发中断,适用于快速响应场景。​
视频强调需熟练掌握模式配置和代码实现,结合外设多做练习。




KAIM 发表于 2025-8-19 20:20:25

第七章:定时器中断
视频围绕 AI8051U 试验箱的定时器中断功能,从定时器基础、中断配置到实际应用展开讲解,全程结合代码演示和硬件实操。
定时器工作原理:
视频中通过动画展示,定时器本质是计数器,通过内部时钟脉冲累加计数,当计数值达到预设值时产生溢出,可用于实现精确延时。AI8051U 有多个定时器(如 T0、T1),视频以定时器 0 为例进行讲解。
定时器 0 有 4 种工作模式,视频重点介绍模式 1(16 位定时器),其计数范围为 0~65535,溢出后需重新装载初值以维持定时周期。
定时器初始化配置:模式设置:通过 TMOD 寄存器配置,设置定时器 0 为模式 1:TMOD &= 0xF0; TMOD |= 0x01;(视频中用红框标注寄存器位含义)。
初值计算:根据晶振频率(11.0592MHz)计算定时时长对应的初值。例如定时 1ms,计算得初值为 0xFC66,代码中装载:TH0 = 0xFC; TL0 = 0x66;(视频中用计算器演示计算过程)。启动定时器:设置 TR0 位启动计数:TR0 = 1;。中断系统配置:
允许中断:需开启总中断和定时器 0 中断,代码为:EA = 1; ET0 = 1;(视频中强调中断允许位的层级关系)。
中断服务函数:函数名固定为timer0_isr,无返回值和参数,需在函数中重新装载初值并执行定时任务,例如:
void timer0_isr(void) interrupt 1 {
    TH0 = 0xFC; TL0 = 0x66;// 重装载初值
    // 定时任务代码(如LED灯翻转)
    P2_0 = ~P2_0;
}
实际操作演示:视频中编写程序实现 “定时器 0 中断控制 LED 灯 100ms 闪烁”,步骤为:初始化 IO 口→配置定时器 0→开启中断→主函数循环等待(while(1);)。下载程序后,LED 灯按设定频率闪烁,用示波器测量周期确认为 200ms(亮 100ms、灭 100ms),验证定时器中断功能正常。
常见问题:若 LED 不闪烁,视频演示检查:① 定时器初值是否正确;② 中断允许位是否开启;③ 中断服务函数名是否正确(尤其interrupt 1不可遗漏)。若闪烁频率异常,多为初值计算错误,需重新根据晶振频率核对。




西西研究员 发表于 2025-8-20 09:12:20

推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接
https://v.stcai.com/sv/1c5eec2-197fcd9b766/1c5eec2-197fcd9b766.mp4
https://v.stcai.com/sv/1fce8086-197cf2b9dd4/1fce8086-197cf2b9dd4.mp4

KAIM 发表于 2025-8-20 11:32:53

西西研究员 发表于 2025-8-20 09:12
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接

{:OK:}
页: [1]
查看完整版本: 学习感悟分享