找回密码
 立即注册
查看: 826|回复: 19

AI8051U学习之旅

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-23 17:24:40 | 显示全部楼层 |阅读模式
i8051U,USB 型 1T 8051,支持32位和8位指令集 RMB2.3
管脚兼容:89C52RC, 12C5A60S2
要兼容8位8051指令集,可以用Keil C51/IAR/SDCC 编译器==就相当于更强大的 8H8K64U•
要兼容32位8051指令集:可以用KeilC251编译器,双核兼容设计
==就相当于更强大的32G12K128,32G8K64
三种封装:PDIP40;LQFP48;LQFP44
34K SRAM(2K edata, 32K xdata), 64K Flash
TFPU@120MHz,硬件浮点/硬件三角函数 运算器
DMA支持PWM,DMA支持外设直接到外设,P2P
支持DMA 8080/6800接口 TFT彩屏模块驱动;
全速USB,支持USB-CDC、USB-HID;
串口并可掉电唤醒;
支持硬件USB直接下载和仿真,本身就可在线仿真;
带有I2S音频总线;
TFPU(108MHZ)硬件浮点、硬件三角、反三角函数运算器;
MDU32 硬件32位乘除法器;
支持上升沿、下降沿中断以及边沿中断,传统的PCA/CCP/PWM(可当外部中断并可掉电唤醒)  
掉电唤醒专业定时器;
DMA 12位15路高速ADC;
内部高精准时钟(42MHZ以下可调);
定时器/计数器(T0/T1/T2/T3/T4/T11外部管脚也可掉电唤醒


回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:76
  • 最近打卡:2026-03-31 08:31:51

27

主题

94

回帖

956

积分

版主

积分
956
发表于 2026-1-24 08:33:42 | 显示全部楼层
要 做到 USB不停电下载
要 尝试 AiCube 图形化自动配置生成程序工具
推荐优先看的:  
printf_usb("Hello World !\r\n")
USB不停电下载, 演示视频链接:
https://www.stcaimcu.com/thread-19077-1-1.html

下载 最新的 AiCube-ISP-V6.96P 或以上版本软件 !

深圳国芯人工智能有限公司-工具软件

下载 最新的 USB库函数,永远用最新的 USB库函数 !
深圳国芯人工智能有限公司-库函数
下载 最新的 用户手册 !
下载 最新的 上机实践指导书 !

下载 最新的 Ai8051U 用户手册
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf

下载 最新的 Ai8051U 实验指导书,
AiCube 图形化自动配置生成程序工具使用说明
https://www.stcaimcu.com/data/do ... %AF%BC%E4%B9%A6.pdf

推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接



回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-24 09:46:47 | 显示全部楼层
配置I/O口
每个I/O口 的配置都需要使用两个寄存器进行设置
以P0口为例,配置P0日需要使用P0M0和P0M0两个寄存器进行配置,如图

即 P0M0的第0位和 P0M1的第0位组合起来配置P0.0口的模式;
即 P0M0的1位和P0M1的第一位组合起来配置P0.1口的模式
其他所有I/O的配置都与此类似!
PnM0与PnM1 的组合方式如下表所示
PnM1、PuM0、I/O 口工作模式
PnM1=0、PuM0=0 准双向口(传统8051端口模式,弱上拉)
灌电流可达20mA,拉电流为270~150uA(存在制造误差)
编译运行结果如下:


寄存器

寄存器

代码编译

代码编译

上位机显示

上位机显示
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-24 10:54:07 | 显示全部楼层
USB不停电下载
1.实验对比演示
2.下载所需文件(STC官网-软件工具-库函数-USB库文件)
3.移植关键部分到工程
3.1添加头文件
3.2 USB初始化函数(lib+.h库实现)
3.3 命令参数
3.4打开P_SW2寄存器和IE2寄存器(只打开一个位!)


库文件

库文件

添加函数

添加函数

头文件

头文件

USB函数

USB函数

编译代码

编译代码
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-26 12:00:05 | 显示全部楼层
任务1:按下p32按钮灯亮,松开p32按钮灯灭

任务2:按下p32按钮灯灭,松开p32按钮灯亮
任务3:按一下灯亮,按一下灯灭

截图202601261159203133.jpg 截图202601261158116200.jpg 截图202601261158117629.jpg
截图202601261159578647.jpg
截图202601261158116824.jpg
截图202601261158117507.jpg
截图202601261159205391.jpg
截图202601261159207988.jpg
截图202601261159208619.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-27 10:18:17 | 显示全部楼层
定时器

1.定时器的介绍
2.定时器的应用

定时频率(HZ) =Sysclk (hz)/(TM0PS +1)(65536-[TH0,TL0])*T)
定时时间(s)=(TM0PS +1)(65536-[TH0,TL0])*T)/Sysclk (hz)
[TH0,TL0]= 65536-(Sysclk (hz)*定时时间(s))/(T*(TM0PS +1))
T=1或者12
16位自动重载定时器的本质就是从设定值数到65536(溢出)之后置位一次标志位,如果使能ET0就可以进入中断!

3.函数的定义、声明、调用
定义:包含返回值,函数名和入口参数,并定义了函数具体功能。

返回值类型 函数名(入口参数)
{
    //函数体
    // 函数执行的代码
    return 返回值;
}

函数的名称应当能够描述函数的功能,便于代码的阅读和理解。
函数名称应当使用有意义的英文单词或者组合的英文单词,避免使用特殊字符或数字。
函数名称不能与C语言的关键字同名。


声明:在头文件或者被调用之前使用,注意末尾要加分号
返回值类型 函数名(入口参数);


调用:在需要调用的地方直接使用函数名,加上括号和分号。
如果有入口参数的,需要在括号的多个参数之间加逗号隔开。

函数名(入口参数);


任务1:LED灯三秒取反一次,这期间任意时刻按下按钮,串口打印按键次数
截图202601271016097227.jpg
任务2:灯按一下点亮3秒后熄灭       
截图202601271018069794.jpg
任务3:救护车灯控制器,按下报警按钮,红蓝交替闪烁(LED1和LED2  表示红和蓝灯),再按一下报警按钮,红蓝灯停止。
截图202601271011334044.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-29 16:05:14 | 显示全部楼层
周期性任务
任务:用一个定时器实现这个任务。LED1实现0.3秒取反一次,LED2实现0.6秒取反一次,LED3实现0.9秒取反一次
通过一个变量计数,假设这个变量1ms自加一次,加到300即为300ms,
加到600就是600ms;计数到达后重新清0;
数组使用分为如下两步
1.定义
类型 名称[长度]={数值};
2.使用
赋值:名称[索引]=数值
截图202601291604468536.jpg
截图202601291604584479.jpg

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-30 16:47:59 | 显示全部楼层
数码管显示“12345678”

截图202601301645548446.jpg
截图202601301646059707.jpg
数码管显示“时、分、秒”
截图202601301646376599.jpg
截图202601301646458041.jpg
截图202601301646553323.jpg
虚拟显示LED数码管
每一颗灯灭
截图202601301647157557.jpg
一颗一颗亮过去
截图202601301647425674.jpg
截图202601301647515755.jpg

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-1-31 11:10:02 | 显示全部楼层

虚拟显示
任务1:P2口流水灯,p10闪烁

截图202601311108265769.jpg
截图202601311108466132.jpg
任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数
截图202601311109132829.jpg
截图202601311109233813.jpg
任务3:按下数字按键在数码管显示对应的按键数字
截图202601311109421883.jpg



回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 10:49:30
已绑定手机

1

主题

18

回帖

75

积分

注册会员

积分
75
发表于 2026-2-2 16:24:20 | 显示全部楼层

矩阵键盘
任务一:数码管显示当前的按键号

①第一步:现将P0.0-P0.3输出低电子,P0.6-P0.7输出高电平,如果有按键按下,按下的那一行的I/O就会变成低电平,就可以判断出哪一行按下了。
②第二步:现将P0.0-P0.3输出高电平,PO.6-PO.7输出低电平,如果有按键按下,按下的那一列的IO就会变成低电平,就可以判断出哪一列按下了。
③第三步:行列组合一下就可以判断出是哪个按键按下了。

截图202602021540437627.jpg
截图202602021541155543.jpg
任务二:密码锁显示12345670正确显示1错误显示-------
截图202602021623218351.jpg
截图202602021623374178.jpg
截图202602021623529769.jpg
截图202602021624044017.jpg
截图202602021624145041.jpg

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-31 22:49 , Processed in 0.125268 second(s), 81 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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