找回密码
 立即注册
查看: 596|回复: 8

学习AI8051U打卡

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-26 13:27:24 | 显示全部楼层 |阅读模式

第1集、


AI8051U增加了较多功能,对于数据处理和音视频播放有巨大提升。

在下载对应的程序后显示的由PWM_DMA控制的灯组,说明功能正常,据视频所说可以控制1000多个灯,在广告领域或者显示领域有不错的应用。


360截图20241226132416121.jpg

可以通过flash编程器将视频播放显示,可以看到十分的不错。
FFT绘图.jpg

其中最让我感到意外的就是FFT的操作,对于一些声音的信号似乎又多了一种可以选择的芯片。

AI8051较前有提升,增加了许多适用功能如:图所示。

AI8051较前有提升,增加了许多适用功能如:图所示。
36.864.jpg
DMA_DW12.jpg
flash编程器.jpg
触摸屏良好.jpg
对于音频要切换对于的频率3.jpg
可兼容.jpg
显示屏显示功能和刷新率高.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-26 14:05:41 | 显示全部楼层

打卡第2集、

keil251.jpg 开发板.jpg

在决定学习新的AI8051U的时候我已经将keil251和一些插件和程序下载器下载好,并且昨天申请了一块样板,擎天柱,顺风发货,一天就到了。这样实践起来也很方便。

软件下载和插件安装还是简单的。
在测试代码发现灯不亮,查找代码将P0引脚改成样板的P2引脚 成功实现跑马灯。


此外本集还讲到了对应的硬件,我下载了对应的原理图,等到时候查找原理图即可
截图202412261344179865.jpg

软件下载

软件下载
程序实现.jpg
实验箱硬件说明.jpg
实验硬件说明2.jpg
硬件背面.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-26 14:07:44 | 显示全部楼层

而且这个芯片只要用一个type C连接,即可下载数据,很方便,下载时只要按住P32 INTO,然后按power就能识别了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-26 14:45:40 | 显示全部楼层
第三集打卡、
根据提示创建工程,选择对应的开发环境,这里选择32bit,需要注意的是在target中配置 CPU mode、 memory model、code ROM size、勾选4byte。。
选择 Source  Xsmall  large  这是程序代码<64K的 配置情况。  output中也要勾选 create HEX file HEX-80
如果>64K则需要选择 large  huge  在#1中输入 start:0XFE0000 size0X20000 并且output中勾选 cteate HEX file HEX-386






配置完成后需要完成头文件的地址配置
头文件3.jpg 头文件.jpg
使用软件添加头文件也可以使用鼠标右键导入



方法2.jpg

电灯9.jpg

按照编写代码即可实现灯的点亮 P20和P22两个灯。
灯99.jpg
也可以通过调试软件进行配置
配置5.jpg

对于16进制来说在单片机的开发中十分常见
简单来说就是 四个二进制数组成一位 16进制数 可以简单理解为8 4 2 1  即每4位相加为一个16数据 权位相乘即可  
如0X00 ->高位低位都是零0000 0000
0X10->0001 0000 代表的就是0X10
如果是0X40 则是0100 0000  ->高位:0*8+1*4+0*2+1*0  低位:0*0+0*0+0*0+0*0 =0X40

IO口的寄存器.jpg
tab4.jpg
创建工程和配置1.jpg
结果4.jpg
配置2.jpg
配置3.jpg
配置4.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-27 16:51:23 | 显示全部楼层
第四集打卡、
本节主要学习自动下载的功能,先下载一下之后就不需要重复的下载对调试十分方便。同时也对一些寄存器的认识得到了提高。
首先是移植CDC查询的例程,将头文件和库文件依次导入,前几集有讲过。

CDC库文件_轮询方式.jpg CDC例程_轮询方式.jpg 移植_1.jpg 移植2_头文件和编译.jpg 移植2补充.jpg


移植好后,由于有些代码没有调用所以可以设置消除警告。
去除警告.jpg 屏蔽效果.jpg
对于一些地址来说,可以进行位选址,有些则不能,可以通过查看数据手册进行查看,本次使用的是IE2寄存器。EA可位寻址,所以可以直接使用EA=1;
或者对数据使用位操作 如IE|=0X80; 其中不仅有| 也有&操作  |是或操作,&是与操作,|有1出1  &有0出0;实际上就是1|任何数据都是1  0&任数都是0;根据上节课所学的,既可以给任意寄存控制,而不影响寄存器
原来的数据。
EA总中断.jpg SW2_寄存器.jpg
需要注意的是调试软件中的重复下载接收的字符要一致。
移植5_命令相同.jpg
可以看到效果,十分方便,本来录了视频但是刚好21.9M就放了一张图片。



配置自动下载.jpg
无调用警告.jpg
移植3_ctrl_F查找.jpg
移植4_命令参数.jpg
效果9.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-27 17:33:03 | 显示全部楼层
第五集打卡、

本节主要学习了一些串口的数据打印和一些转义字符和条件判断与或非操作。
首先就是串口操作,由于我是2024年12月下载的最新代码,和视频里略有区别,但是都是一样的,可以直接通过USB打印数据,这里的波特率任意都可以打印数据。
C语言打印数据格式.jpg 替换.jpg 串口数据和一些操作符.jpg

ASCII表,一些字符都是基于ASCII表的,当调试时可以观察或者通过调试软件的HEX显示功能来实现。
ASCII表.jpg 程序员模式进行数据转换.jpg

操作符和运算符和判断也是很重要的内容,在进行条件判断和数据处理中都要大量的使用,如上几节课使用的与或非,以及&& || += -= 等。
逻辑运算符.jpg 条件判断.jpg 条件判断串口打印.jpg

进制的转换,可以看权重,在接收串口的数据时可以转换,因为常常接收到十六进制的数据,转换为对应的数据。
进制转换.jpg

最重要的还有一些变量的取值范围,有时数组可能会越界,比如一些数据过大,也需要注意变量的长度和变量的作用域。
注意1_64.jpg 自定义变量和变量作用域.jpg



串口打印.jpg
串口打印2.jpg
串口打印3.jpg
条件判断2.jpg
重定义.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-27 18:38:34 | 显示全部楼层
第六集、GPIO操作。

输入输出引脚的高低电平不是随意添加的,一般和电源匹配。
电源和高低电平说明.jpg

引脚有不同的作用,比如准双向口,即可以作为输入也可以作为输出,根据不同的需求来配置引脚。
引脚说明.jpg

电压引脚有时需要注意,低电平可能有时不是0而是更高,如施密特模式。
施密特电压.jpg

电路硬件,因为我手上的是最小系统板,但是我看了丝印都是一样的对应的引脚,
电路硬件.jpg


通过编写代码即可通过按键控制LED灯的亮灭。

代码编写1.jpg P32控制1.jpg P32控制2.jpg

按键实际上会有抖动这个时候需要进行消抖操作,需要配置一个20ms从而到达稳定时间这个时间是不同的,需要实时调整。
按键消抖原理.jpg 延时函数.jpg 延时定义.jpg

控制灯:使用计算器来辅助。
使用计算器.jpg 编写程序2.jpg

可观察视频效果:


https://www.stcaimcu.com/forum.php?mod=attachment&aid=NzczMDh8MGFiY2I5NmQ5Y2I3ZTQ0ZGYwMDBlZTkzOGFiMTQyMTl8MTc0NjU1OTY2OA%3D%3D&request=yes&_f=.mp4



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-27 19:04:58 | 显示全部楼层
第七集、定时器操作
由于使用软件延时,会产生阻塞,即此时系统就会一直执行延时函数,而不去执行其他代码。







对此,需要使用一个功能那就是定时器中断的功能,即用定时器来替换延时函数,从而其他时间,程序可以执行其他程序,其重点就是在于就是中断功能。
使用调试软件来定时。
配置定时器1.jpg

将代码复制到main.cz中,即配置成功。


在中断服务函数中编写取反函数,由于需要看见效果,将时间修改为0.5S.
3S取反.jpg
修改后:需要注意的的是EA=1,否则将不会进入中断。
定时器修改.jpg

实验现象:



定时器原理:定时器每一个寄存器都有作用,可以根据数据手册来进行修改,分别能控制时钟计数频率,是否外部计数,还有计数器寄存器,等。

定时器原理1.jpg
定时器配置2.jpg

配置3.jpg

硬件清零.jpg

可以通过控制TR0来控制是否来计数,从而是否来进入中断,其他的功能皆是通过控制标志位从而控制,此时程序不会一直等待而是可以继续进行按键操作,
需要注意的是在使用按键的时候注意控制的灯是否和定时器的灯重复,从而影响实验现象。


一直执行延时.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-30 10:33:57
已绑定手机

1

主题

8

回帖

39

积分

新手上路

积分
39
发表于 2024-12-27 19:54:33 | 显示全部楼层
第八集打卡、定时器任务调度

定时器任务调度主要是通过定时器来进行不同时间的计数,从而在某一时刻,产生效果,一般有个时间基数,如定时器每1ms进入一次中断,即可以通过计数器count来累计,如果累积了300次则代表已经过了300ms了,
然后将count清零,则一直会产生每过300ms能操作某件事的能力。其他类似。






对于数组来说,如u8 buff[5]={1,2,3,4,5};   buff[0]=1 buff[1]=2  buff[4]=5;需要注意的是数组索引从0开始到N-1结束 如5 ,则是4就结束了即buff[4],如果数组越界会出现错误。


如下图所示,可以通过数组存储对于的变量赋值即可,如视频所示: 由于有其他状态 所以灯的状态会互相干扰,反过来说明灯可以独立各自完成任务。
定时器数组配置.jpg
效果:



可以通过定时器消抖,从而减少系统的等待时间。
按键按一下移动一下.jpg


头文件创立,通过创建不同的头文件,可以让代码可读性高,并且方便移植,创建方式如下:
首先创建一个文件夹,这个文件夹的名字应该清晰明了。
创建文件夹.jpg

随后在keil软件中点击分组,创建对应的文件夹,这个名字可以和之创建的文件夹名字不同,只是分类
创建3.jpg

找到之前创建的文件夹中的.C文件导入

4.jpg

如下:找到对应的.c文件双击即可
5.jpg

头文件地址要包含进来 即创建hardware的文件夹
6.jpg

7.jpg

手动添加包含头文件 #include "task.h"
在头文件中包含你要使用的变量和文件名 如下所示,在头文件引用即可
创建头文件和C文件.jpg

9.jpg

可以使用结构体,使变量名和任务创建更加方便。
使用结构体.jpg

实际使用方法:通过结构体再使用数组既可以将其每个任务的状态赋值.
实际用法.jpg

这样通过任务来实现主程序的最大简化,再main.c中就只有头文件和少量的函数运行了。

最后.jpg


程序执行.jpg

因为我最近也在期末,所以刚好看到第八集,先备战考期末,如果试验箱申请到了,我将会更新试验箱系列,并且参考例程,来实现更多的功能。

创建2.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-7 03:27 , Processed in 0.124871 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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