找回密码
 立即注册
查看: 648|回复: 12

开启《8051U深度入门到32位51大型实战教学》学习

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-1-26 20:39:10 | 显示全部楼层 |阅读模式
**在此贴记录学习心得...**
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-1 17:43:26 | 显示全部楼层

学完《8051U深度入门到32位51大型实战教学视频》第一集,才真的是了解了Ai8051U的强大!

表现在:

  1. 屏幕显示和视频播放(flash 编程器):具备强大的屏幕显示与视频播放功能,依托于 flash 编程器实现高效稳定的运行。
  2. IlS 录放音:支持 IlS 录放音功能,满足多种音频处理需求。
  3. PWM DMA:PWM 与 DMA 协同工作,优化系统性能。
  4. 频谱分析仪(上位机):配备频谱分析仪,通过上位机实现对信号的精准分析。
  5. 手写计算器:具备手写计算器功能,方便快捷进行数据运算。
  6. QSPI,PWM 移相,硬件乘除,单精度浮点:支持 QSPI 接口,具备 PWM 移相功能,拥有硬件乘除及单精度浮点运算能力,提升数据处理速度和精度。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-1 19:23:17 | 显示全部楼层
第二集

介绍了硬件工具和开发软件

这里介绍了 ~~超级强大的 Ai8051U实验箱~~

01.jpg 02.jpg


开发软件 keil C251 + stc-isp

01.PNG
00.PNG

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-2 20:24:25 | 显示全部楼层
第三集 点亮第一个Led

在上一讲中,按冲哥讲解的,安装好了Kail C251软件包和补丁。

在这一讲中,用keil创建新工程选择Ai8051U芯片。
截图202502061010527297.jpg

手头上暂时没有实体硬件实验板,先下载了擎天柱的示例代码

截图202502061019091914.jpg

通过使能P2口为准双向口,置P20为0低电平,即可点亮led


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-3 17:55:37 | 显示全部楼层
第四集 USB不停电下载


本讲实现了开发板不停电下载,非常实用。提高了开发效率。

要实现这个功能,就需要调用官方提供的usb库。要将这个库加入项目中。

截图202502061023416117.jpg

因为Ai8051U单片机支持32位模式,选
择这个USB库的时候对应将32位的文件(stc_usb_cdc_32.lib)考入项目文件夹。
记得加上头文件。

在代码中调用库函数 usb_init() 就可设置USB端口。

截图202502061030413384.jpg

此后,ISP的串口模式变成了 USB-CDC

截图202502061032422939.jpg



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-3 17:59:42 | 显示全部楼层
第五集 C语言基础

这一集带我们回顾了标准C语言的基础知识。重点讲解了51单片机的C语言特点。
通过将STC-USB库实现的printf函数替换标准C的同名函数,可以直接与上位机通信,方便调试及与单片机交互。

在上一集上下载使用了STC-USB库,该库中提供了一个 printf_hid 函数,可以通过USB与上位机的ISP软件通信,输出单片机信息。

在头文件是这样定义的:
截图202502061041455785.jpg

在主模块代码中调用 printf 就可以向上位机发送信息,
见示例代码

截图202502061045052046.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-3 18:02:07 | 显示全部楼层
第六集 I/O输入输出


本集简要介绍了GPIO,1高电平、0低电平的概念。

并通过将按键接入IO端口进行了讲解。
见上图,按键按下时,接地为低电平,端口读回0, 释放按键,端口被拉高电平,读回1。
通过读取端口电平,高电平对应逻辑1,低电平对应逻辑0,可以判断示例中的按键状态。

本集讲解了3个任务,通过按键的按下或释放,来点灭Led

任务1:按下P32按钮灯亮,松开P32按钮灯灭;
任务2:按下P32按钮灯灭,松开P32按钮灯亮;
任务3:按一下灯亮,按一下灯灭

代码片断如下

截图202502061058362833.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-3 19:32:14 | 显示全部楼层

第七集  定时器

在本集一开篇,冲哥就举了一个非常形象的例子来解释为什么要使用定时器。

image.png

因为STC MCU是单核的,同一时间只能执行一个事情,没有特殊情况不能被打断。而在实际生活中,有许多事情是要并行处理的,所以这里就要引入一个特殊的情况,定时器中断。实现在做一件事情的同时,可被另一件更紧急的事情中断先去处理,完毕后又回到原事情来接着处理。

在本集中,冲哥通过抛出一个任务:

让LED每三秒重复闪烁一下,这三秒期间允许按下按键并且能及时反应。这怎么办呢?就需要引入定时器来解决:

主循环判断按键是否按下,另外开启定时器0,让它每3秒中断一次来闪烁Led。

上代码片断:

image.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-3 19:47:51 | 显示全部楼层

第八集-定时器周期性调度任务

本集接续上集,讲解如何在实际项目中应用定时器解决问题。

目标是周期性执行3个任务。如下:

  • 任务1:用一个定时器实现,LED1实现0.3秒取反一次,LED2实现0.6秒取反一次,LED3 0.9秒取反一次。
  • 任务2:数组点亮LED,实现流水灯。
  • 任务3:按键1按一下,LED通过数组移动一下等。

这三个任务并行执行,在时间序列上存在交叉重叠,完成这个任务就必须把定时器派上用场。

因为任务多了,代码量也上了。如果全部写在一个主文件上,行数太多,逻辑不清,难以维护。

冲哥在这一集讲解了代码分拆,多文件管理。非常值得学习,在以后的项目应用中多是这种情况。

代码按功能进行了拆分:

  1. 主模块 main.c 主要执行主循环
  2. 定时器的配置等工作拆分到了 config.c
  3. Led显示和按键处理拆分到了 io.c
  4. 任务的处理给了 task.c

本讲重点讲解了多任务的执行,核心就在任务的安排中,task.c 代码片断,这是一个结构数组

static TASK_COMPONENTS Task_Comps[]=
{
//状态  计数  周期  函数
 {0, 300,   300,   LED0_Blink},      /* task 1 Period: 300ms */
 {0, 600,   600,   LED1_Blink},      /* task 1 Period: 600ms */ 
 {0, 900,   900,   LED2_Blink},      /* task 1 Period: 600ms */  
 {0, 10,    10,    KEY_Task},      /* task 1 Period: 600ms */  
};

主模块通过任务回调来循环执行任务数组

image.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-16 09:38:09
已绑定手机

1

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2025-2-3 19:56:43 | 显示全部楼层

第九集 数码管

数码管是我们日常最常用的显示器件。

LED数码管由8个发光二极管构成,通过不同的组合可用来显示数字0~9、字符A~F和小数点“.”。

最大的收获就是学到了原来还可以通过AIapp-ISP虚拟仿真数码管和LED灯的显示。太好了!

来看看效果:

捕获.PNG

这里调用了STC-USB库函数 SEG7_Showcode()

image.png

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-30 20:20 , Processed in 0.151528 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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