无用科技 发表于 2025-2-22 09:45:58

学习官方Ai8051U视频教程打卡 |已送实验箱

感谢STC 免费 + 包邮提供的Ai8051U转89C52核心功能实验板

我是今年年初,无意间看到AI有推出这款芯片。感受到了国产MCU的技术发展的速度。


也非常实际感受一下这款芯片的魅力。


客服小姐姐在和我简单沟通后,便寄出了擎天柱:Ai8051U转89C52核心功能实验板。


这就是我"入坑"AI8051U的起点。






Ai32位8051
8 0 5 1凌绝顶,核心算力在哪里 !
算力一日同风起,扶摇直上九万里 !
百兆硬件真浮点,三角函数运算器 !
神州春色三万里,封神榜永远是你 !
===老骥伏枥志在万里,来我们再战三万里

无用科技 发表于 2025-2-22 09:49:56

8051U深度入门:初识AI8051U

哪怕梦想让我们拼的遍体鳞伤,这一次我们也要勇往直前。


今天正式开始了学习之路,上面这句话让我很有感触。


很多时候,我们有了学习的热情,但却经不起时间的磨砺,如果我们一直勇往直前,终能成就更好的自己。


今天听冲哥介绍了AI8051U的强大功能。我都开始想像自己学会之后的各种炫技了。


最让我感兴趣的是,手写计算器,功放,录音功能。


由于实验箱还没发,不能测试感受,等实际东西到了,再和大家分享。



无用科技 发表于 2025-2-25 08:37:52

AI8051U学习打卡2


这一节的内容总结一下就三个:


1,硬件介绍


2,软件介绍


3,程序下载


硬件部分
主控芯片 • AI8051U:核心微控制器,推测为增强型8051内核单片机,支持仿真功能(可直接仿真),具备高性能和丰富外设接口。   


显示与交互模块
1.OLED显示屏:用于图形或文本显示,低功耗。
2.TFT彩屏:彩色触摸屏,支持更复杂的界面交互。
3.8位数码管:显示数字或简单字符,常用于基础实验(如计数器、时钟)。
4.LCD显示屏:可能为字符型液晶,用于基本信息显示。
   
输入与输出设备
1.矩阵键盘:多按键输入,适合菜单操作或密码输入实验。
2.T0、T1按键:独立按键,可能用于中断触发或功能选择。
3.红外接收与发射:支持红外遥控通信(如家电控制实验)。
4.立体声话筒录音 & 耳机输出:音频输入/输出功能,可用于语音处理或播放。
5.线路输出(Line Out):音频信号输出接口。    通信与扩展接口 1.SPI/I2C接口:连接传感器、存储器等外设(如OLED、EEPROM)。
2.USB转双串口:通过Type-C或Type-A接口实现串行通信和程序下载。 3.QSPI/SPI总线:高速数据传输,用于扩展存储或外设。
4.外部并行总线:扩展高速设备或存储器(如32K SRAM)。
5.TF卡插座:存储扩展,支持文件系统操作实验。   


调试与测试功能


1.示波器BNC输入:接入外部信号进行波形观测(需配合示波器)。 2.信号源(AI):可能提供可调信号输出(如PWM、方波)。 3.ADC(模数转换):支持模拟信号采集(如温度、光强传感器)。 4.掉电检测 & 电压调节:监控电源状态,支持2.0-5.5V宽电压输入。   


其他功能


实时时钟(RTC):依赖电池供电,用于时间记录功能。 • 8路流水灯:基础GPIO控制实验(如跑马灯)。 • 复位按键 & 电源按键:硬件复位和电源控制。 • 扩展32K SRAM & FLASH:外部存储扩展,支持大程序或数据存储。


软件部分和程序下载和之前的STC89C52类似,新增了一个USB下载功能。

无用科技 发表于 2025-2-26 09:47:52

AI8051U学习打卡2 点亮一颗LED灯 点亮AI805U的学习之路

成功在擎天柱开发板上亮起了一颗LED, 注意开发板是低电平亮灯。下面是完整代码。
#include "AI8051_32BIT.H"


void main()
{

    P2M0 = 0xff; P2M1 = 0x00; //设置P2口工作模式

    P2=0XFE;//低电平亮灯
   
    while(1){
   
   
    }

}

接下来说一下本次视频的内容,及碰到的问题。
AI8051U教学视频第三集,主要内容总结下来就三点。

一,新建工程

二,写代码

三,输出烧录文件,下载程序


新建工程后要先设配置一下开发环境,头文件路径。
这个按文件配置就行,我今天碰到的问题是,在新建工程时,如果选用AI3051U-32bit.KEIL找不到系统头文件。
如果选用AI3051U-8bit.则没问题。
解决方法,自已去ISP里面下载头文件,并在C251里面配置路径。



写代码这一块就不多说了,需要花时间打磨。总体来说和89C52差不多。 区别是要先配置IO. STC89C52不用配置。




程序下载我是通过USB下载,刚开始很难成功的进入USB-Writer
后来总结了一个方法,在带电的情况下,先按住P32,长按不松手。再按一下POWER键。点按一下就行。100%能进入USB下载。



无用科技 发表于 2025-3-2 20:57:44

学习Ai8051U四,不掉电USB下载

移值官方的的USB不掉电下载程序,代码能编译成功,也能通过USB下载,但是程序现象和代码不一样

我目前暂没有官方的开发板,直接买了一颗DIP的AI8051U,放到了之前的普中开发板上。


可能是电路硬件问题,目前没办法达到和官方演示一样的效果。


#include <AI8051_32BIT.H>
#include "stc32_stc8_usb.h"

/*定义的三个 char* 类型的指针变量*/

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";



void main()

    {   
      
    P_SW2 |=0X80;//使能访问XFR
   
      P0M0 = 0xff; P0M1 = 0x00; //P0设为准双向口
      
    usb_init();//初始化USB
    IE2 |=0X80;//充许USB中断
    EA=1;      //开总中断
   
    while (DeviceState != DEVSTATE_CONFIGURED);//等待USB完成配置
      
    while(1)
    {
      if (bUsbOutReady)
      {
         USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区
            
            usb_OUT_done();
      }
    P0=0x02;

    }


}


代码中定义的是亮第二颗指示灯。实际上全部点亮了

zhaoye818 发表于 2025-3-2 21:29:12

{:qiang:}

无用科技 发表于 2025-3-2 21:45:43

无用科技 发表于 2025-3-2 20:57
移值官方的的USB不掉电下载程序,代码能编译成功,也能通过USB下载,但是程序现象和代码不一样

我目前暂没 ...

明天拿擎天柱的开发板试一下

无用科技 发表于 2025-3-3 10:10:16

程序运行错误居然是软件设置不对

无用科技 发表于 2025-3-2 20:57
移值官方的的USB不掉电下载程序,代码能编译成功,也能通过USB下载,但是程序现象和代码不一样

我目前暂没 ...
经过一天的研究,发现是软件设置问题。{:shui:}

如下图示,Memory Model:一定要选择:XSmall

选其它选项,系統不会有任何报错问题,但程序就是不能正确运行。




MEMORY MODEL(内存模式)是用于设置程序和数据在单片机内存中的存储方式和分配策略的参数。不同的内存模式会影响变量的存储位置、访问速度以及代码的生成方式

无用科技 发表于 2025-3-5 23:54:41

学习Ai8051U五,C语言基础知识

学习Ai8051U五,C语言基础知识

本节内容主要是总结了进制转换, 数据类型,数据运算。

下面是我总结在8051中的用法,当然在8051中也是一样的。
#include <reg51.h>// 包含8051单片机的头文件

// 定义位类型变量,取值为0或1
bit flag_bit = 0;

// 有符号字符型,占8位,取值范围 -128 到 +127
signed char signed_char_num = -10;

// 无符号字符型,占8位,取值范围 0 到 +255
unsigned char unsigned_char_num = 200;

// 枚举类型,这里简单定义一个示例
enum color {RED, GREEN, BLUE};
enum color my_color = RED;

// 有符号短整型,占16位,取值范围 -32768 到 +32767
signed short int signed_short_int_num = -1000;

// 无符号短整型,占16位,取值范围 0 到 +65535
unsigned short int unsigned_short_int_num = 50000;

// 有符号整型,占16位,取值范围 -32768 到 +32767
signed int signed_int_num = -5000;

// 无符号整型,占16位,取值范围 0 到 +65535
unsigned int unsigned_int_num = 60000;

// 有符号长整型,占32位,取值范围 -2147483648 到 +2147483647
signed long int signed_long_int_num = -1000000000;

// 无符号长整型,占32位,取值范围 0 到 +4294967295
unsigned long int unsigned_long_int_num = 3000000000;

// 单精度浮点型,占32位,取值范围 ±1.17549435E-38 到 ±3.4028235E+38
float float_num = 3.14;

// 双精度浮点型,默认与单精度浮点型大小和范围相同,如需不同需使用FLOAT64编译指令
double double_num = 2.71828;

// 指向idata、data、pdata的指针,占8位,取值范围 0 到 0xFF
idata char *idata_ptr;
data char *data_ptr;
pdata char *pdata_ptr;

// 指向near、xdata、code的指针,占16位,取值范围 0 到 0xFFFF
near char *near_ptr;
xdata char *xdata_ptr;
code char *code_ptr;

// 指向far、huge的指针,占32位,取值范围 0 到 0xFFFFFFFF
far char *far_ptr;
huge char *huge_ptr;

// 位寻址变量,从sfr定义的字节中选取一位,取值为0或1
sbit my_sbit = P1^0;

// 特殊功能寄存器,占8位,取值范围 0 到 +255
sfr my_sfr = 0x80;// 假设P0口地址为0x80,仅作示例

// 16位特殊功能寄存器,占16位,取值范围 0 到 +65535
sfr16 my_sfr16 = 0x82;// 假设一个16位特殊功能寄存器地址从0x82开始,仅作示例

void main() {
    // 这里可以添加具体的功能代码
    while(1);// 死循环,防止程序跑飞
}

#include <reg51.h>// 包含8051单片机的头文件,定义了特殊功能寄存器等

// 假设A和B的值,括号内为二进制表示,但在代码中直接用十进制体现
unsigned char A = 5;// 二进制:0000 0101
unsigned char B = 10; // 二进制:0000 1010

void main() {
    bit result_logic_and;// 定义一个位变量用于存储逻辑与结果
    bit result_logic_or;   // 定义一个位变量用于存储逻辑或结果
    bit result_logic_not;// 定义一个位变量用于存储逻辑非结果
    unsigned char C = 0;   // 定义变量C用于演示赋值运算符

    // 逻辑运算符演示
    result_logic_and = (bit)(A && B);// 逻辑与,全真为真,有假为假,这里A和B都为非零值,视为真
    result_logic_or = (bit)(A || B);   // 逻辑或,有真为真,皆假为假,这里A和B至少一个为非零值,视为真
    result_logic_not = (bit)(!A);      // 逻辑非,真变假,假变真,A为非零值视为真,取反后为假

    // 赋值运算符演示
    C = A + B;// 把A + B的值赋给C
    C += A;   // 相当于C = C + A
    C -= A;   // 相当于C = C - A
    C *= A;   // 相当于C = C * A
    C /= A;   // 相当于C = C / A
    C %= A;   // 相当于C = C % A

    // 移位和位运算赋值运算符演示
    C = 1;
    C <<= 2;    // 相当于C = C << 2
    C = 8;
    C >>= 2;    // 相当于C = C >> 2
    C = 3;
    C &= 2;   // 相当于C = C & 2
    C = 3;
    C ^= 2;   // 相当于C = C ^ 2
    C = 3;
    C |= 2;   // 相当于C = C | 2

    while(1);// 主循环,防止程序跑飞
}

无用科技 发表于 2025-3-7 08:29:16

学习官方AI8051U视频教程打卡6:IO输入输出及按键控制LED状态


首先我们需要定义MCU的IO工作模式。

常见的工作模式有:双向输入输出开漏模式 推挽模式 高阻模式

本次案例我们需要用到按键扫描及点亮LED的功能。

所以IO口的模式定义为准双向。

下面是按键按下时LED点亮, 松手LED熄灭的代码:
#include <AI8051U.H>
#include "intrins.h"


void Delay20ms(void)        //@24.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        i = 119998UL;
        while (i) i--;
}



void main(){
   
    WTST = 0;      
    EAXFR = 1;      
    CKCON = 0;      
   
    P0M0 = 0x00; P0M1 = 0x00;
    P1M0 = 0x00; P1M1 = 0x00;

    P0=0X00;
   
    while(1){
   
    if(P10==0){
   
    P01=1;
         
    }
    else{
   
    P01=0;
    }
   
   
    }


}

页: [1] 2
查看完整版本: 学习官方Ai8051U视频教程打卡 |已送实验箱