找回密码
 立即注册
查看: 786|回复: 0

AI8051U学习-功能超强-学习心得体会=====实验箱已安排送出

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:139
  • 最近打卡:2025-05-06 23:37:45

12

主题

0

回帖

209

积分

中级会员

积分
209
发表于 2024-12-14 12:02:49 | 显示全部楼层 |阅读模式

第一节视频心得体会:

首先,其强大的功能令人印象深刻。它在屏幕显示与视频播放方面表现卓越,借助 flash 编程器能够实现丰富的视觉呈现。IIS 录放音功能拓展了其在音频领域的应用,而 PWM DMA 可驱动多达 1000 颗 WS2812 彩灯,这对于需要大量彩灯控制的项目极具吸引力。频谱分析仪和手写计算器功能更是体现了它的多元性与专业性。同时,QSPI、PWM 移相、硬件乘除以及单精度浮点等功能,为复杂的计算与数据处理提供了有力支持。

image.png

image.png

其硬件资源也相当丰富,34K SRAM(2K edata,32K xdata)和 64K Flash 为数据存储与程序运行提供了充足空间。TFPU@120MHz 的硬件浮点和三角函数运算器可加速数学运算,DMA 对 PWM 以及外设直接到外设的支持,还有 120MHz - PWM 支持硬件移相、16 位 PWM 和真 12 位 ADC 等,再加上多种接口如 USB、4 组串口、QSPI、SPI、I2S、I2C 以及 TFT - i8080/M6800 接口等。

Ai8051U单片机性能总结:
架构与性能优势:32位8051架构,单时钟(1T)设计,在相同工作频率下比传统8051约快70倍,具备宽电压、高速、高可靠、低功耗、强抗静电与较强抗干扰特性,且超级加密。
时钟系统:内部集成高精度R/C时钟,常温下精度达±0.3%,不同温漂范围有精确指标。提供4种时钟源,包括内部高精度IRC时钟(可ISP编程调整频率)、内部32KHz低速IRC、外部4M33M晶振或外部时钟信号以及内部PLL输出时钟,时钟源选定后可经8bit分频器分频后供CPU和外设使用,还可省掉外部晶振与复位电路(内部集成高可靠复位电路,ISP编程时有4级复位门槛电压可选)。
低功耗模式:有IDLE模式和STOP模式。IDLE模式下停止给CPU供时钟,CPU停止执行指令,但外设仍工作,6MHz工作频率时功耗约1.3mA;STOP模式主时钟停振,CPU和全部外设停止工作,功耗可降至1uA以下。
丰富外设:数字外设包含4个串口、6个定时器、2组用于三相电机控制的16位高级PWM定时器以及I2C、SPI、QSPI、USB接口;模拟外设包括超高速12位ADC和比较器,可满足多样化设计需求。
指令集与硬件单元:拥有268条强大指令,涵盖32位加减法指令和16位乘除法指令,硬件扩充32位硬件乘除单元MDU32(支持32位除以32位和32位乘以32位运算)以及硬件三角函数运算单元TFPU。

第二节

通过这第一课的学习,我深刻感受到 STC AI8051U 芯片的强大魅力与无限潜力,渴望进一步挖掘它在实际项目中的更多价值。

image.png

image.png

开发板硬件资源极为丰富,立体声、OLED 显示屏、TFT 彩屏可构建多样交互界面;话筒录音与耳机输出完善音频链路;SPI/I2C 等接口便于外联设备;流水灯、数码管利于调试;矩阵键盘、ADC 键盘提供多种输入;TF 卡插座、EEPROM 用于存储;还有 USB 接口与各类传感器等。

通过这一课的学习,我不仅对开发板的硬件架构和功能有了透彻的了解,还掌握了开发所需软件的安装与程序下载方法,这为后续深入学习 STC AI8051U 的编程与应用开发奠定了坚实的基础。

第三节

image.png

实验代码:

image.png

实验现象:

点亮了P00和P01两个LED灯。

LED灯.jpg

注意事项:点亮LED需要先开启P40,控制三极管导通才能给LED供电。

学习笔记:

AI8051U可以在32位和8位指令集之间进行切换,具体方法如下:
使用不同的编译器:
32位指令集编译:使用KeilC251编译器可将AI8051U设置为以32位指令集运行,利用其32位运算扩展部分进行更高效快速的运算。
8位指令集编译:若使用KeilC51/IAR/SDCC编译器,则AI8051U会工作在8位指令集模式下。
AI8051U在32位和8位指令集下并非不同型号,而是同一芯片支持两种不同的工作模式。

这节课让我清楚地了解到新建工程的步骤,包括创建空工程需参考手册6.5章节,添加头文件要结合手册6.4章节使用ISP软件。当输入给定代码并编译后,就能实现点亮LED这一基础操作。这看似简单的操作却是后续更复杂开发的基石,让我对硬件编程有了更直观的感受,明白了程序是如何通过代码控制硬件实现功能的,为进一步探索芯片功能打下了良好基础。

第四节

image.png

USB转双串口参考电路:

image.png

程序下载步骤:

将数据线连接开发板的下载USB接口,打开ISP软件,先按下P32按键,然后再按一下Power_SW断电按键,然后先松开Power_SW断电按键,再松开P32按键,ISP软件将自动识别出,HID1。

image.png

image.png

注意事项:主频需要选择和程序中的一样,不然会导致时序错误。

通过实验对比演示,能直观地看到相关操作的效果。在操作过程中,明白了要从STC官网下载软件工具中的库函数和USB库文件,这是实现功能的重要前提。而移植关键部分到工程的步骤十分关键,包括添加头文件、用tiLib +.h库实现USB初始化函数、配置命令参数,以及正确打开P_SW2寄存器和IE2寄存器。这一系列操作让我对USB不停电下载的原理和实现方式有了清晰的认识,体会到了硬件操作中细节的重要性。

第五节

image.png

学习笔记:

sfr关键字
定义:sfr是“specialfunctionregister”(特殊功能寄存器)的缩写。在8051单片机编程中,它用于声明一个特殊功能寄存器变量。这些特殊功能寄存器用于控制单片机的各种硬件功能,如定时器、串口、中断等。
语法格式:sfr寄存器名=地址;

示例说明:
例如,对于8051单片机的P0口(端口0),它对应的特殊功能寄存器地址是0x80。可以使用以下语句来声明一个代表P0口的特殊功能寄存器变量:sfrP0=0x80;。这样,在程序中就可以通过P0这个变量来访问和操作P0口对应的特殊功能寄存器了。

sbit关键字
定义:sbit是“specialbit”(特殊位)的缩写。用于访问特殊功能寄存器中的单个位。因为在单片机的特殊功能寄存器中,很多时候需要单独对某一位进行操作,比如设置某个中断使能位、某个引脚的方向位等。
语法格式:
方法一:直接位寻址方式:sbit位变量名=寄存器地址^位序号;
方法二:通过已定义的寄存器变量方式:sbit位变量名=寄存器变量名^位序号;

示例说明:
以8051单片机的P0口为例,P0口有8个位(P0.0P0.7)。假设要单独访问P0.0位,P0口对应的特殊功能寄存器地址是0x80,P0.0是该寄存器的第0位。可以使用直接位寻址方式:sbitP0_0=0x80^0;。也可以先定义P0寄存器变量(如前面提到的sfrP0=0x80;),然后通过寄存器变量方式:sbitP0_0=P0^0;。

在USB - CDC串口实现printf函数方面,明白了如何将C语言标准输出适配到硬件接口,这对调试很有帮助。数的进制部分,复习了2进制、10进制、16进制的转换方法,在嵌入式开发中处理数据时非常重要。对于数据基本类型,了解了不同类型在内存中的存储和应用场景,在资源有限的嵌入式开发中要合理选择。最后,C语言常用运算符的学习,让我掌握了运算符的用法和优先级,有助于编写精确控制硬件的程序。这一课为后续开发奠定了坚实的C语言基础。

第六节

第六课主要围绕 I/O 输入输出展开。首先,对 GPIO 有了清晰的认识。GPIO 即通用输入 / 输出端口,是芯片与外部设备进行交互的关键接口。通过这些端口,可以控制输出高低电平或者读取引脚的电平状态。

image.png

image.png

在按键输入检测部分,通过电路图直观地了解了按键与芯片引脚的连接方式。明白了未按下按键时引脚为高电平,按下时为低电平这一原理。并且,学习到代码实现按键输入检测的原理很简单,程序只需直接读取按键 I/O 的电平,一般使用 “==” 进行判断即可。此外,课程中的 I/O 口相关寄存器表格。它是软件控制硬件的桥梁,通过对寄存器的配置,可以实现对 I/O 口的精确控制。

核心实验代码:

通过if-else语句判断P32按键的状态,如果按下了就点亮P00的LED,如果没有按下就熄灭。

image.png

实验现象:

image.png

第七节

image.png

第七课主要介绍了定时器。从一个实际问题引入:当LED三秒闪烁时,这三秒内按下按键却无反应,原因是MCU单核同一时间只能执行一件事。由此引出定时器中断这个解决办法。

第八节

image.png

image.png

周期性任务介绍,给出了一个具体任务,即使用一个定时器让LED1每0.3秒取反一次,LED2每0.6秒取反一次,LED3每0.9秒取反一次。这展示了如何利用定时器来实现不同频率的周期性操作。文件的创建(.c和.h),了解到在处理这些任务时需要创建.c和.h文件。这是进行程序开发的基础步骤,.c文件用于存放函数的实现代码,.h文件用于存放函数的声明和相关结构体等的定义。结构体的介绍,结构体的引入为组织和管理数据提供了方便。在周期性任务调度中,合理地使用结构体可以更好地对任务相关的数据进行封装和操作。结构体数组的周期性任务调度,学习了如何通过结构体数组来实现多个周期性任务的调度。这是一种高效且灵活的方式,能够同时管理多个具有不同参数和执行频率的任务。
对文件创建和结构体的应用有了更深入的理解,这有助于我在后续编写更复杂的程序时能够更好地组织代码和数据,提高代码的可读性和可维护性。

第九节

数码管的静态、动态显示

image.png

数码管的显示原理:

image.png

3461表示的是数码管的规格尺寸,AS表示是单色。

image.png

实验箱使用2个74HC595,驱动8位数码管。
74HC595是一种串行输入并行输出的移位寄存器芯片。它主要用于扩展单片机等微控制器的输出端口数量,能够将串行输入的数据转换为并行输出,方便控制多个外部设备,如数码管、发光二极管(LED)矩阵等。

image.png

引脚功能介绍

数据输入引脚(14-SER):用于接收串行数据。数据按照时钟信号(SCK)的上升沿一位一位地从这个引脚输入到芯片内部的移位寄存器中。低位数据先输入芯片。

移位时钟引脚(11-SCK):每产生一个上升沿,就会将SER引脚输入的数据移入移位寄存器的下一位。

输出寄存器时钟引脚(12-RCK):高电平有效,当该引脚出现上升沿时,移位寄存器中的数据会被传输到存储寄存器,并且从并行输出引脚(QA~QH)输出。

清零引脚(10-SCLR#):当该引脚为低电平时,会将移位寄存器和存储寄存器中的数据清零。在正常工作时,通常将其接高电平,以避免数据被意外清除。

并行输出引脚(QA~QH):这8个引脚用于输出数据。数据在输出寄存器时钟引脚(RCK)的作用下,以并行的方式输出。

输出使能引脚(13-G#):用于控制并行输出引脚(QA~QH)的输出状态。当G#为低电平时,允许数据输出;当G#为高电平时,输出引脚处于高阻态。

74HC595驱动核心代码:

image.png

数码管动态驱动过程:
开始->选择第一位数码管,输出对应的位码->输出该位数码管的段码->延时->选择第一位数码管,输出对应的位码->输出该位数码管的段码->延时->选择下一位数码管输出对应的位码->输出该位数码管的段码->延时->选择第N位数码管,输出对应的位码->输出该位数码管的段码->延时。

实验现象:数码管显示实时时钟

数码管.jpg

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-7 08:11 , Processed in 0.107460 second(s), 49 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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