txbweiwu123 发表于 2025-9-27 10:34:27

学习Ai8051U教学视频心得实验箱

感谢STC官方 免费+包邮 的活动,让我有机会获得 Ai8051U 实验箱。

第一集序言
首先介绍了Ai8051U单片机的强大性能。并且做了功能演示
1、彩屏显示功能。
2、声音录制、播放功能。
3、点阵屏显示时间功能。
4、频谱分析仪功能。
5、手写计算器功能。
6、flash动画视频播放功能。
然后,简单介绍了单片机基本的参数。
通过学习Ai8051U单片机已经远远超越了过去51单片机的性能,功能更强大,应用更广。有待于我们进一步的开发。


国芯人工智能 发表于 2025-9-27 10:38:00

感谢STC官方提供的Ai8051U实验箱,不仅在硬件配置上体现了高性价比,而且通过免费+包邮的方式,极大降低了初学者和教学用户的入门门槛。作为一名关注嵌入式系统与人工智能结合发展的技术爱好者,我在学习完第一集《序言》的教学视频后,深感这款单片机平台在传统51架构基础上的革新与拓展。

一、Ai8051U的性能提升令人印象深刻

视频中首先展示了Ai8051U单片机的多项功能演示,包括:

1. 彩屏显示功能
   传统51单片机受限于处理能力,难以驱动彩色显示屏。而Ai8051U凭借更强的CPU架构和内存资源,能够流畅驱动彩屏,支持图形化界面,大大提升了人机交互体验,为教学和项目开发提供了更丰富的展示形式。

2. 声音录制与播放功能
   音频处理能力的引入,使得该平台不仅可以作为基础控制单元,还能胜任语音识别、语音交互等更高级的应用场景,这在以往的51平台上是难以实现的。

3. 点阵屏显示时间功能
   通过点阵屏显示时间,展示了其对GPIO资源的高效管理与定时器功能的稳定运行,体现了其在实时控制方面的优势。

4. 频谱分析仪功能
   该功能表明Ai8051U具备一定的信号处理能力,结合ADC模块,可以实现音频频谱分析等较为复杂的信号处理任务,为教学中的信号与系统课程提供了实践平台。

5. 手写计算器功能
   手写识别结合触控输入,展示了其对人机交互接口的整合能力,也预示了该平台在嵌入式AI应用中的潜力。

6. Flash动画视频播放功能
   这一功能的实现,说明Ai8051U具备一定的多媒体处理能力,其主频和内存资源已远超传统51系列,具备运行轻量级操作系统或图形库的潜力。

二、参数介绍与传统51对比

在视频中简要介绍了Ai8051U的基本参数,虽然具体数值尚未详尽披露,但从其功能表现来看,可以推测其具备以下优势:
更高的主频(可能达到100MHz以上)
更大的Flash和RAM容量
多种外设集成(如SPI、I2C、ADC、DAC、PWM等)
支持多种通信接口(如UART、USB、WiFi/蓝牙模块扩展等)
支持图形化开发环境和AI加速指令集

这些特性使得Ai8051U不再是传统意义上的“8位单片机”,而是一个融合了高性能计算与丰富外设的嵌入式智能控制平台。

三、教学与开发意义

Ai8051U实验箱的推出,标志着STC在推动国产单片机教育与应用方面迈出了重要一步。对于高校学生和嵌入式开发者而言,该平台具有以下几个方面的教学与开发意义:
降低AI与嵌入式开发门槛:通过集成AI加速功能与图形界面支持,使学生能够在基础单片机学习中接触AI概念,提前适应未来技术趋势。
提升实践能力:多功能演示与实验箱的硬件支持,使得理论与实践结合更加紧密,有助于学生掌握从硬件连接到软件编程的全流程开发能力。
激发创新思维:丰富的功能模块和接口扩展能力,为学生开展创新项目提供了坚实基础,鼓励他们探索更多实际应用场景。

四、展望

Ai8051U的出现,不仅是对传统51系列单片机的一次全面升级,更是国产单片机在AI时代转型的一次成功尝试。它为嵌入式教学注入了新的活力,也为未来的智能硬件开发提供了新的思路。

期待后续教学视频中能更深入地讲解其AI功能模块、开发环境搭建、代码示例等内容,帮助更多开发者快速上手并充分发挥其性能优势。

再次感谢STC的用心与支持,愿Ai8051U成为更多嵌入式爱好者与学习者手中的利器。

[本文内容由国芯人工智能辅助生成,仅供参考]

西西研究员 发表于 2025-9-28 09:26:43

推荐优先看的 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

txbweiwu123 发表于 2025-9-28 11:47:19

感谢STC官方 免费+包邮 的 Ai8051U 实验箱。
第二集硬件及工具介绍
继续学习冲哥的教学视频。
一、学习8051U试验箱的结构组成,打开方式,内部硬件接口功能模块。
1、USB接口,可以为试验箱提供电力及下载软件程序。
也可以利用USB转串口及USB转TYPEC接口进行软件下载,板上也集成了USB Link1D接口,用于烧录软件。
2、TF卡插座,可插入TF卡。
3、示波器BNC输入接口,接入示波器表笔将进行测量。
4、音频输出接口包括立体声耳机输出和立体声线路输出。
5、录音话筒。
6、OLED显示屏接口,也是SPI/I2C 8/7线接口。
7、8路流水灯,有8个LED灯,可以演示流水灯程序。
8、8位数码管,用于显示数字,时钟等。
9、TFT彩屏接口,可以显示文字,图片,动画。
10、掉电检测电压调节,就是一个可调电阻器。
11、红外接收与发射装置。用于红外遥控。
12、按键区,有矩阵键盘和ADC键盘以及T0,T1按键,INT0,INT1按键。
13、芯片,包括主芯片Ai8051U,48脚,个头很小,但功能强大。
       QSPI/SPI芯片,这是一颗FLASH存储芯片。
       扩展32K SRAM芯片
14、插针,用短路帽来实现一些功能。
15、板子背面的元器件及芯片:32768Hz无源晶振,24C02EEPROM存储芯片
       DS18B20温度传感器,无源蜂鸣器
       还有一些其他芯片,将在以后的相关章节中进行详细讲解。



二、软件下载及用处
1、KEIL编程软件,去KEIL官网下载并安装,用于程序编辑。
2、ISP软件,在STC官网下载,解压后就可以直接使用了。
   打开ISP软件添加头文件,就可以使用STC 的单片机及头文件了。
3、在STC官网下载一个扩展插件,并且安装在KEIL文件夹里。
4、在STC官网下载试验箱 的代码包和8051U的手册,方便今后使用和查看。、
通过学习,了解了Ai8051U试验箱的基本组成结构,各个模块接口的功能。然后在 网站下载了KEIL 编程软件,ISP软件,并且添加了头文件下载了试验箱代码和说明文件。方便下一步的学习。



txbweiwu123 发表于 2025-9-29 17:29:47

继续学习。
第三集点亮第一颗LED灯
先学习新建工程,他包括三步:
1、创建空工程,
2、添加头文件,
3、输入代码,并编译。
创建工程,视频中要参照手册6.5章节,而新的手册是2.7章节。该章节详细介绍了新建超64K程序代码的项目的步骤,
项目建好后,还需要根据手册的内容修改项目的设置。才能真正使用该项目文件。添加头文件,添加头文件要用到C语言的include命令,后面用<>也可,用""也可。一般我们使用""。
打开ISP软件,点击“头文件”选项卡,选择单片机系列,点击保存文件,在出来的窗口中选中你创建的工程文件夹,点击保存。这样就添加了头文件。
然后添加代码完善程序。
include "ai8051u.h"
void main(void)
{
P0M0 = 0X00;
P0M1 = 0X00;
P4M0 = 0X00;
P4M1 = 0X00;
P40 = 0;
while(1)
{
P00 = 0;
}
}
点击编译,然后下载到试验箱查看效果,终于点亮了第一个LED灯。
P0M0 = 0X00;P0M1 = 0X00;是用来设置P0口为准双向口
P4M0 = 0X00;P4M1 = 0X00;是用来设置P4口为准双向口
P40 = 0;表示置P40口为低电平,
P00 = 0;表示置P00口为低电平,
学到这里就明白了。


txbweiwu123 发表于 2025-10-2 16:31:22

继续学习第四集 USB不停电下载
   上一集学会了如何点亮第一个LED灯,但是,利用AICUBE_ISP下载程序到试验箱的过程是比较麻烦的,先要设置好ISP,此时点击下载按钮是没反应的,要按下试验箱P3.2接地按钮,再按下 电源按钮,然后断开,此时再单击下载按钮,才能下载程序到试验箱。

      这一集学习了不停电下载程序的方法,先在STCAI 官网下载USB库文件,打开库文件夹,复制其中的stc_usb_cdc_32g.LIB,stc32_stc8_usb.h两个文件到自己的创建的项目文件夹下,,然后在Keil软件中添加到项目工程中去,并在程序中添加头文件stc32_stc8_usb.h 。加入相应的语句如下:
void main()
{
    EAXFR = 1;
    WTST = 0;
    CKCON = 0;
    usb_init();
    EA = 1;
    while()
    {
      if(busboutready)
      {
            USB_SENDDATA(usboutbuffer,outnumber);
            usb_out_done();
         }
    }
}



在ISP中选择“收到用户命令后复位到ISP监控程序区”页面,勾选“USB_CDC串口模式”,并勾选下面的三个选项。做好设置。
写好程序后,第一次下载与上集的方法一样,先按住试验箱上的两个按键,再点击下载,下载完成以后,再次下载时就可以实现不停电直接下载了。
这个功能太好用了。






txbweiwu123 发表于 7 天前

感谢STC官方提供的Ai8051U实验箱,不仅在硬件配置上体现了高性价比,而且通过免费+包邮的方式,极大降低了初学者和教学用户的入门门槛。
第五集C语言基础
学习C语言已经很长时间了,忘光了。重新学习一下。
首先,C语言USB-CDC串口之printf函数的实现。
2,数的进制:2进制,十进制,十六进制。
3,数据的基本类型。
4,C语言的常用运算符。
一,C语言USB-CDC串口之printf函数的实现。创建一个项目,将上一集项目中的代码复制到新项目中,修改其中的代码,以实现printf()函数的功能。输出的内容将在电脑Aicube_ISP软件中的CDC/HID串口助手页面中显示。并且可以实现USB不停电下载了。最新版本的库文件已不需要自己去修改程序就可以直接实现不停电下载功能了。程序中的# define printfprintf_hid是预处理命令,替换名称的意思。理解printf函数的参数,int printf_hid(const char *fmt,...)fmt是格式控制字符串,包含两种类型对象:普通字符,转换说明符。普通字符括在双引号内,直接输出显示。转换说明符%,后面加参数,s表示字符串,d表示整数,f表示实数,c表示单个字符。该参数即可以是变量,也可以是常量,其具体内容放在双引号后面,以逗号隔开,转换说明符与参数要一一对应,。
二,数的进制:包括二进制,十进制,十六进制。二进制,逢二进一,只有0,1两个数字,十进制,逢十进一,有0----9十个数字。十六 进制,逢十六进一,有0----9,A,B,C,D,E,F共十六个数字。进制的相互转换可以使用电脑上的计算器的程序员功能进行转换。
三,数据类型:单片机的最大数是32位的,如果需要使用64位的数,可以在文件中申明#pragma float 64。int整型数,float单精度浮点型,char字符型,double双精度浮点型,前缀符包括short,long,sighed,unsighed。
四,运算符:
4.1,算数运算符:+,-,*,/,%,++,--,,这里可以利用第一部分的printf()函数来演示运算结果。
4.2,关系运算符:==,!=,>,<,>=,<=,
4.3,逻辑运算符:&&,||,!,
4.4,赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=。
4.5,位运算符:&,|,^,<<,>>。运算符的具体含义等用到时在做详细讲解。

txbweiwu123 发表于 7 天前

学习继续
第六集IO输入输出
一,什么是GPIO(General Purpose I/O Ports),通用输入输出端口,就是单片机的引脚。可以通过它输出高、低电平或读入引脚的状态。高电平的意思是接近于电源电压的电平值,而低电平则接近于0伏 的电平。这些值在单片机的电气手册上有详细的规定。
IO口的工作模式由PnM1,PnM0两个特殊功能寄存器来控制,如下表:
PnM1      PnM0            I/O口工作模式
0      0      准双向口,灌电流20毫安,拉电流200微安
0      1      推挽输出,拉电流也可达到20毫安
1      0      高阻输入
1      1      开漏输出


二,按键输入检测
I/O口的地址:P080H,P190H,P2A0H,P3B0H,P4C0H, 它们的复位值都是1.。即所有I/O口的初始值都是高电平。当I/O口接一个按键及限流电阻后,按下按键为低电平,用==来判断I/O口的按键是否按下。新建一个项目,将示例项目复制过来,打开项目,删除不用的语句。
任务1:按下P32引脚的按键灯亮,不按则灯灭。在程序中while(1)语句中加入
If(P32 == 0)//判断P32按键是否按下
{
   P00 = 0;//点亮P00口的LED灯
}
Else
{
         P00 = 1;
}
注意要在while()语句前面加入语句 P40 = 0;才能点亮LED灯,因为LED灯的总开关是P40
任务2:不按按键灯亮,按下按键灯灭。只要将任务1中的P00=0改为P00=1,P00=1改为P00=0就可以了。
任务3:按一下按键灯亮,按一下按键灯灭。
这时要注意由于机械按键有抖动现象,需要在程序中软件延时20毫秒消抖。将任务1中的if else语句改为
If(P32 == 0)                  //判断按键是否按下
{
Delay20ms();                //延时20毫秒消抖
If(P32 == 0)
{
State = !state;
P00 = state;
While(P32==0);          //等待按键释放
}
}
延时函数可以在ISP软件延时计算器中生成。

txbweiwu123 发表于 6 天前

继续学习第七集定时器中断
为了解决每隔一定的时间执行某个操作,就需要延时程序,而软件延时无法在该时间段内执行其它操作,降低了单片机的效率,而利用定时器中断来延时,则可以在延时期内执行其他操作。
一,定时器介绍:
Ai8051U单片机内置了6个24位定时器(计数器)16位定时器+8位分频器,定时器的本质就是对系统时钟脉冲的计数,当计数溢出时触发中断去执行某一操作,然后返回主程序继续运行。

二,定时器的作用:
1,用于计时系统,可以实现软件计时,使程序每隔一段时间完成一项操作。
2,替代长时间的延时函数delay(),提高程序的运行效率和处理速度(定时器中断可以打断主循环)
3,可以对外部脉冲进行计数。
任务:LED灯每三秒亮灭一次,这期间按下按键,串口打印按键的次数。
使用软件延时函数来实现:
void Delay3000ms(void)      //@24.000MHz延时3秒函数
{
      unsigned long edata i;

      _nop_();
      _nop_();
      i = 17999998UL;
      while (i) i--;
}
这是在ISP软件中生成的。
主程序中添加代码:
Delay3000ms();//调用延时3秒函数
State = !State;//状态变量取反
P00 = state;//灯亮或灭
If(P32 == 0)//检测按键是否按下
{
Delay20ms();//延时20毫秒消抖
If(P32 == 0)//按键按下
{
While(P32==0);//等待按键弹起
Printf(“按键按下次数/xfd/%d\r\n”,count++);//串口输出显示次数
}
}
这个程序不能实现按一次按键串口显示一次。因为延时3秒过程中是无法响应按键的操作的。只有按键时间长一些才能有显示。
下面利用定时器中断来实现任务:
利用ISP软件来实现定时器初始化:
Void timer0_Init(void)
{
TMOPS = 0X5B;//设置定时0器时钟预分频
AUXR &=0X7F;//定时器0时钟12T模式
TMOD &=0XF0;//定时器016位模式
TL0 = 0X3F;
TH0 = 0X01;//定时器初始值
TF0 = 0;//清除TF0标志位
TR0 = 1;//启动定时器
ET0 = 1;//使能定时器0中断
}

Void timer0_tsr(void) interrupt 1//定时器0中断执行函数
{
State = !State;//状态变量取反
P00 = state;//灯亮或灭
}
知识点:KEIL软件中对于FD编码会跳过,导致带FD编码的字符无法正确显示,因此需要在此编码的字符后面加\xfd。

三,函数的定义,声明,调用
定义:返回值类型 函数名(入口参数){}
声明:返回值类型 函数名(入口参数);
调用:函数名(入口参数);
函数声明要放在主函数前,这样函数定义就可以放在主函数的后面,调用则在主函数内部。




txbweiwu123 发表于 昨天 09:47

首先感谢STC公司免费送的AI8051U试验箱。今天收到试验箱了。图片:


继续学习第八集定时器周期性任务调度编程过程中难免有错误,要根据编译错误提示的行数及上一行、下一行进行查找错误。1,周期性任务介绍2,文件的创建3,结构体的介绍4,结构体数组的周期性任务调度一,周期性任务任务1:用一个定时器来实现LED1 0.3秒反转一次,LED2 0.6秒反转一次,LED3 0.9秒反转一次。任务特点都有定时器1毫秒加的变量,都有一个设定的计数目标,都有需要执行的功能,定时时间到了才能执行。编程思路:通过一个变量计数,假定每1毫秒自加一次,加到300即为300毫秒,加到600即为600毫秒,加到900即为900毫秒,计数达到次数后清0重新开始计数,进行下一次的循环。数组定义:数组类型 数组名[长度] = {元素};各元素之间用逗号隔开。赋值:数组名[下标] = 数值;使用:数组名[下标]      下标是从0开始的正整数。#define u8 unsigned char;//u8为unsigned char的重命名u8 static = {1,2,3,4,5,6,7,8};//定义数组staticPrintf(“static数组的第一个元素是:%d\r\n”,Static);//使用数组的第一个元素。[]中的0为//下标,表示第一个元素。\\定义计数变量数组U8 count_ms[] = {0,0,0};\\使用计数变量Void timer0_isr(void) interrupt 1{For(i=0;i<3;i++){Count_ms++;If(count_ms>=300){count_ms = 0;State 1= !state1P00 = state1;}If(count_ms>=600){count_ms = 0;State 2= !state2P01 = state2;}If(count_ms>=900){count_ms = 0;State 3= !state3P02 = state3;}}}任务2:流水灯的数组实现,从P00---P07八个灯依次点亮熄灭定义state = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};主程序中加入While(1){If(count_ms<=500)//定时器延时到500毫秒时{Count_ms = 0;P0 =~ state;//按位取反Num++;If(num>7)Num = 0;}}任务3:按键按一下,流水灯移动一下,不能再使用while()语句来判断按键是否弹起了。If(count_ms>=10){Count_ms = 0;If(P32 ==0){Key_vol++;If(key_vol==5)Num++;}ElseKey_vol = 0;
}
由于第八集的内容太多,分两次发表。这是前一部分。

页: [1] 2
查看完整版本: 学习Ai8051U教学视频心得实验箱