《8051U深度入门到32位51大型实战教学视频》学习打卡_Arsun
# 第一集 课程视频 学习心得1. AI8051U的显著特点应该是视频最后提到的计算器功能的实现。OCR通过这颗U独立实现,确实就很强。
2. 序言没有了解到开发版的相关参数,主要是展示了功能了。看到第二个视频讲硬件参数,那能理解了。但感觉序言最好还是提一下一些单片机主要关心的参数,提起大家兴趣好一点嘞。
3. 疑问:为啥烧录能够IIS录音程序需要把频率调成32.864?
# 第二集 课程视频 学习心得
1. 对实验箱开发版的各部分硬件组成有了认识。
2. 对开发环境的搭建有新的了解。
3. 上节课的疑问在这节课有了答案,程序工作频率是在代码内设定的,所以烧录时选的工作频率要对应。为啥选32.864,我猜测是与相关元器件工作频率有关。(待后续学习验证)
# 第三集 课程视频 学习心得
1. 本节课主要讲了Keil工程的创建以及文件配置,以及点灯程序的编写。(有51的基础,听起没压力)
2. 课程最后提到了ISP工具直接生成I/O口配置代码,这功能之前还没想着用过,感觉是很高效。
3. 前面课程提到的疑问。冲哥也回复啦!
!(data/attachment/forum/202412/05/224009s03c98ewv080o3oa.png "image.png")

感觉和之前学51单片机,设置延时,做闹钟的原理类似。由其工作原理所决定的时钟。
I²S(Inter-IC Sound)是用于数字音频设备之间传输数据的接口,频率的选择与系统的采样率、位深度以及声道数密切相关。36.864 MHz 是一个常见的时钟频率,选择它是出于以下几个原因:
1. 与常见采样率兼容
36.864 MHz 频率可以很好地支持多种常见的音频采样率,因为它是多种采样率的整数倍。例如:
44.1 kHz 系列采样率(如 44.1 kHz、88.2 kHz、176.4 kHz)
36.864 MHz 是 44.1 kHz 的 256 倍(36.864 MHz ÷ 44.1 kHz = 256)。
48 kHz 系列采样率(如 48 kHz、96 kHz、192 kHz)
36.864 MHz 也是 48 kHz 的 768 倍(36.864 MHz ÷ 48 kHz = 768)。
这种倍数关系使得时钟分频非常简单,能够高效支持不同采样率。
# 第四集 课程视频 学习心得
1. 这节课主要讲了如何实现USB不停电下载烧录(不通过按键断电切换串口模式)。
2. 步骤:
a.在官网下载USB库源码。(示例代码也在同文件夹下)
b.参考示例代码添加头文件、初始化函数,对指针进行命名,将 扩展特殊功能寄存器列表XFR初始化为1即
P_SW2 = 0X80;
将USB允许中断位 EUSB 打开, 即 IE2 |= 0X80;
将所有中断打开,即EA = 1;
利用while等待 DEVSTATE 设备状态变为连接成功
c.在循环语句利用if判断将接受到的字符串再发送回去
<h1>第五集 课程视频 学习心得</h1>
<ol>
<li>这节课主要讲了基础的C语言知识,主要讲了转义字符,ASCII码表,数据基本类型,运算符,</li>
<li>USB-CDC任意波特率都能工作。</li>
<li>注意变量类型,小心数值溢出。</li>
</ol>
<h1>第六集 课程视频 学习心得</h1>
<ol>
<li>
<p>这节课主要讲了IO口的输入与输出。以按键控制点灯为案例。</p>
</li>
<li>
<p>学会利用while循环隔断按键标志位一直翻转和加延时避免抖动是关键。</p>
</li>
<li>
<p>使用延时函数时,要初始化程序指令延时参数等数值。<code>_nop_()</code>函数需要添加 <code>#include "intrins.h"</code>头文件</p>
<p><img src="data/attachment/forum/202412/07/104110q5aqha4j5ft5ixns.png" alt="Snipaste_2024-12-07_10-22-11.png" title="Snipaste_2024-12-07_10-22-11.png" /></p>
</li>
</ol>
<h1>第七集 课程视频 学习心得</h1>
<ol>
<li>这节课主要讲了定时器中断。要理解定时器中断,主要是要理解定时器的工作原理和对应的寄存器控制。关键代码如下</li>
</ol>
<pre><code>TM0PS = 0x0F; //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xDC; //设置定时初始值
TH0 = 0x0B; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
</code></pre>
<p>2.学习到了一种中文乱码现象的原因和解决办法,如下图。</p>
<p><img src="data/attachment/forum/202412/23/160243y5s5koccztso15cc.png" alt="image.png" title="image.png" /></p>
<h1>第八集 课程视频 学习心得</h1>
<p>1.这接课主要讲了定时器的中断调度,以控制led灯闪烁和按键控制printf输出打印为离职。不使用<br />
定时器时,按键按下会阻塞,导致灯光闪烁卡在当前状态。</p>
<p>2.还讲了如何通过普通变量定义、数组和结构体定义三种方式实现led等0.3、0.6、0.9秒间隔闪烁。</p>
<p>3.同时补充了数组,结构体,构建.c和.h文件的相关知识。</p>
<p>4.在判断按键按下时,避免阻塞,我们可以采用计数按键是否连续按下的形式来避免阻塞。</p>
页:
[1]