找回密码
 立即注册
查看: 175|回复: 6

关于Ai8051u的学习历程

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-09 15:40:06
已绑定手机

3

主题

5

回帖

33

积分

新手上路

积分
33
发表于 2026-3-30 15:50:56 | 显示全部楼层 |阅读模式
首先,在小程序中添加芯片型号,keil仿真设置
截图202603301606264384.jpg
接着打开keil软件,按照如下步骤进行操作,选择所采用的芯片
截图202603301610009096.jpg
1.新建项目
截图202603301559339332.jpg

2.选择项目路径
截图202603301559572715.jpg
前两步操作之后的结果如下
截图202603301600382133.jpg

3.新建main主函数
截图202603301600506745.jpg


选择编译的语言,c语言,保留路径如上


4.接下来点击魔法棒,选择target选项,对cpu模式进行选择,选项卡中的cpu mode进行选择,由于AI8051限制我们选择c251即可,同时勾选右侧的4字节
截图202603301601094873.jpg
所有设置如下图
截图202603301601193452.jpg
接着切换output选项卡,生产hex文件,由于代码在64k下,选择hex80即可,同时勾选右侧文件生成create
截图202603301601335545.jpg
5.下载头文件,使用官方Aicube-isp小程序进行下载,注意芯片型号一定要选对,同时选择文件格式keil的c语言模式
截图202603301601449736.jpg
保存文件至main函数所在的文件夹里,文件名为所选用单片机型号,如“Ai8051u.h”
截图202603301602057058.jpg
保存成功后显示如下
截图202603301602181339.jpg

添加库文件,将库文件移动至keil创建项目的目录下
屏幕截图 2026-03-30 154023.png
在魔法棒中切换到c251选项卡,include paths,添加库文件,头文件路径
截图202603301603079928.jpg
编写代码如下
截图202603301603202045.jpg
6.打开烧录小程序,进行烧录,首先打开程序文件,obj中选中hex文件
截图202603301603411613.jpg
在烧录箱中进行下载,具体操作为先进行长按断电,长按p32,再松开电源开关,接着松开p32,即可进行下载,通信地址变成如下时可以进行下载(左下角点击下载)
截图202603301603592617.jpg
按键如上图
截图202603301605374238.jpg
烧录按键如上图

下载成功后如图
截图202603301604186133.jpg
点自动下载,之后再次断电下载(如上操作),每当文件代码有变动时,都需要重新断电下载(注意查看hex文件是否为最新编译的结果)
截图202603301604445461.jpg
最终实验效果如下,圈中的灯亮起
截图202603301604549975.jpg




回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2026-04-03 08:37:07
已绑定手机

14

主题

143

回帖

986

积分

版主

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

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

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

下载 最新的 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不停电下载, 演示视频链接



回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-09 15:40:06
已绑定手机

3

主题

5

回帖

33

积分

新手上路

积分
33
发表于 2026-3-31 16:37:05 | 显示全部楼层
第四节

前置工作:官网下载usb库函数,使用的硬件仍为Ai8051u试验箱,接着如下操作

1.将上一节的全部文件复制到下载的usb示范文件中

点击cdc查询模式的文档



将如下两个文件复制到示范文件中,主要是lib文件和.h文件



左键双击group1,添加lib文件,如果查找不到lib文件,则有可能是文件查找范围没有切换,需要切换至全部文件





调用新添加的.h文件

最终所有代码如下


编译结果显示重复引用,得在烧录小程序里更改官网名定义,此为官方定义自动进入下载的字符


自定义更改后依旧失败



删除部分段落后,再无错误,删除char定义的三行代码后,上半部分段落如下,下半部分保持不变


接着进入烧录小程序打开最新程序文件,obj中找到hex文件

下载成功如下显示

硬件显示为如下图








第六节
首先打开前面的代码,修改如下,删除定义的X,A赋值语句

截图202603311539138525.jpg
不按时灯不亮
截图202603311542484342.jpg
按下之后灯亮,实验1结束
截图202603311543156874.jpg
实验2代码所需修改部分如下
截图202603311548411022.jpg
灯常亮
截图202603311549019273.jpg
按下之后灯灭
截图202603311549195349.jpg
实验3代码如下
截图202603311627586203.jpg

但是上面这串代码实操时,灯会有一瞬间出现频闪,想要解决这个问题可以通过新增一段延时函数来修正,具体修改如下

屏幕截图 2026-04-01 102802.png
截图202604011032002692.jpg
在烧录小程序中进行如下更改,记得更新hex文件
截图202604011040529508.jpg







回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-09 15:40:06
已绑定手机

3

主题

5

回帖

33

积分

新手上路

积分
33
发表于 2026-3-31 16:38:59 | 显示全部楼层
第五节

首先把上一个帖子的代码打开,打开h文件(在头文件引用用将双引号内.h文件选中,右键open document打开文件),将define printf—HID前面的斜杠去掉,意思为将此功能打开,修改完毕之后重新编译

接着打开main主函数,对如下部分进行修改,“\r\n”为换行字符,注意,双引号为英文状态输入法下才有效


注意串口更换,否则就会像我这样。同时注意在程序文件打开最新的hex文件


更换串口usb-cdc串口模式,才能进行下载,下载完成效果如下



展示成果如下



如果想要进行简单运算,首先需要对代码进行修改,定义参数


赋值


修改输出内容,改为你想让它执行的运算


打开烧录软件,在keil中更新最新hex文件,在烧录中打开


下载


发送数据,得到如下结果


硬件显示如下


如果需要进行判断则对部分代码进行如下修改


将keil生成的hex文件更新,再重新烧录,发送数据后显示如下




















回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-09 15:40:06
已绑定手机

3

主题

5

回帖

33

积分

新手上路

积分
33
发表于 2026-4-1 16:27:39 | 显示全部楼层
第七节

1.灯每3秒闪烁一次,按下p32时进行计数

首先在烧录小程序中调用时钟代码,硬件选择和生成的时钟代码频率要一样,都选择24MHz
截图202604011628264285.jpg




生成c语言代码,插入到如下的位置

截图202604031059116899.jpg
截图202604031059304547.jpg

再对时钟进行初始化

截图202604031059477107.jpg
为时钟初始赋值

截图202604031101095998.jpg



再将中断函数插入,对if语句进行修改
截图202604031102278463.jpg


进入烧录小程序,进行修改如下
截图202604030950191381.jpg

打开最新hex,进行烧录
截图202604030951527149.jpg

按下按键p32,打开串口工具之后即可观察到如下情况

截图202604031052573603.jpg


2.按下之后三秒灭
截图202604031456063813.jpg

先将灯打开,对其进行初始化,计数3秒之后打断,停止计数灯灭
截图202604031456415568.jpg

3.先为跑马灯进行初始状态设定

截图202604031517506722.jpg

将时钟改为500毫秒,替换原来三秒的时钟
截图202604031518054944.jpg

当按下p32,灯开始闪烁时,对时钟进行初始化,如果按下p32灯没有闪烁,则关闭定时器,两个灯都关掉
截图202604031525294811.jpg


截图202604031518562816.jpg














回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-09 15:40:06
已绑定手机

3

主题

5

回帖

33

积分

新手上路

积分
33
发表于 前天 10:15 | 显示全部楼层
第八节



1,首先依旧使用上一节的代码,对LED初始状态进行初始化,同时修改时钟延迟时间

屏幕截图 2026-04-07 101220.png
定时器频率都改为24MHz,修改如下



打开定时器初始化,对if语句进行如下修正

截图202604071016556741.jpg

对中断函数进行如下修改

截图202604071017563500.jpg


实物每个灯每次3ms亮一次
截图202604071018567187.jpg


2,不使用冗杂的语句,使用for语句实现延迟

首先定义数组
截图202604071501434456.jpg


再定义计数变量
截图202604071502582024.jpg

撰写新的延迟3ms的代码
截图202604071503596643.jpg

实物为第一个灯实验现象为间断几秒的频闪

3,跑马灯

用数组进行对灯的点亮顺序进行一个说明,接着将u8 num进行初始化
截图202604071535358517.jpg




对if语句进行修改,当时钟计数大于等于500次时
将状态至零,p0-p7引脚的灯状态取反,num继续加,从零加到7,大于7时,num又清零
截图202604071537529580.jpg

由于在for语句中已经进行清零,上面修改的中断函数还需要进行修改

截图202604071543044966.jpg


最终实验现象为p0-p7的灯依次亮起熄灭,跑马灯成功



4,

定义按键按下持续时间,修改定时器,24MHZ,24位,12T,延迟10ms
截图202604071650144061.jpg



对for语句进行如下修改,使得每1s将所要打印的东西输出
每10ms判断p32是否按下,如果按下,对按键按下次数进行累加
当按下等于五次时,数组累加,若按下次数小于五次则直接清零

截图202604071653414889.jpg
截图202604071701598921.jpg


实验现象为,按下累计五次之后,灯的亮灭便切换了一种别的形式,未按满五次则灯一个一个亮灭
多次长按之后数组亮灭更换成如下状态,每按5次亮起的灯均不相同
截图202604071705046729.jpg





5,

对函数进行如下修改,将main里的部分函数抽出,重新建立c和h文件,使得主函数看起来更简洁

截图202604081102209601.jpg

截图202604081102417148.jpg

截图202604081103015818.jpg

截图202604081103199374.jpg


增减c和h文件至编写main的同一路径下。
点击左上角任务栏的空白纸张,可以看到新建了一个文件
此时,将其保存至这个项目同一路径下
截图202604081105333872.jpg
分别命名为config.h和config.c


将上一步骤的这些函数复制到c文件中
截图202604081107283655.jpg

再对h文件进行编写如下
截图202604081108024716.jpg

两个文件都进行保存,编译

双击source group1 将c文件添加至项目中,此时项目下拉会有三个文件
截图202604081109512188.jpg

之后编译会发现我们编写的文件找不到这是因为,没有定义查找路径

添加路径。点击魔法棒,切换到c251,标蓝位置右侧省略号展开添加
截图202604081111544444.jpg

展开后如下,点击红色叉叉左边进行目录添加,出现如下空白之后点击其右侧的省略号
找到main函数所在文件,不需要具体找到哪个文件,只要保证文件在此目录下即可。
选择,添加,ok完成
屏幕截图 2026-04-08 105056.png

再次进行编译,就不会有错

6,
再新增两个文件,专门放管脚有关的代码

io.c代码如下,遗漏的部分照葫芦画瓢自行补充
截图202604091043058018.jpg

io.h的代码如下

截图202604091044092027.jpg

task.h的代码,或有更新
截图202604091044586369.jpg

task.c的代码,或有更新
截图202604091045244751.jpg

截图202604091045489032.jpg

截图202604091045599433.jpg

config的代码如下
截图202604091047158324.jpg
c文件如下
截图202604091047582951.jpg

截图202604091048169052.jpg

main函数如下
截图202604091048448924.jpg
截图202604091048599304.jpg
截图202604091049129331.jpg
截图202604091049243931.jpg

编译之后烧录,发现程序无法运行,进行代码更改,main中删除所选蓝色部分

屏幕截图 2026-04-09 105838.png














截图202604091100048192.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-09 15:40:06
已绑定手机

3

主题

5

回帖

33

积分

新手上路

积分
33
发表于 2 小时前 | 显示全部楼层
第九节

首先打开烧录工具,点击工具,字库生成工具

截图202604091539055124.jpg


打开右侧数字8,LED数码管字体,将所需要点亮的灯点上
截图202604091541002600.jpg


这里我们默认即可,点击确定,所需要的代码就会生成

截图202604091544311777.jpg

接着将代码填入IO.C的数组中
截图202604091545494666.jpg
接着在io.h中定义引脚
截图202604091553252769.jpg
对io.c进行如下修改
截图202604091701506804.jpg


回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-9 18:07 , Processed in 0.118149 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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