第一集学习心得
第一节课介绍了8051u单片机的卓越性能与创新特点,相比传统单片机,其集成度更高,处理速度更快,功能更丰富,支持视频播放与语音录音等多媒体功能,显著提升了应用的智能化水平。需要您将所有的打卡内容整合到同一篇帖子里哦,您也可以跟着视频敲一敲代码,截图分享到论坛上来哦 第八课 在单片机的运行机制中,定时器多任务调度是一种极为高效且实用的技术手段。通过它,能够实现多个任务在同一时间维度上的并发运行。这意味着原本需要按顺序逐个执行的任务,现在可以在定时器的精准控制下同步推进,极大地优化了单片机的资源利用效率。短时间内无法响应其他任务,造成了大量的时间浪费。而定时器多任务调度技术的应用,能够巧妙地避开这一问题。它借助定时器精确的计时功能,为每个任务分配合理的执行时间片,让各个任务在互不干扰的情况下有序进行,从而省去了那些不必要的延时操作。
通过定时器多任务调度,单片机可以在单位时间内完成更多的工作,有效提升了整体的运行效率,为实现复杂的功能和更高效的系统运行提供了有力的支持。 第二课 我接触到了许多前所未有的知识。比如 LCD 接口,这可是个新鲜玩意儿。我们之前学习的单片机在显示汉字方面存在很大的局限性,通常只能借助自定义字模来实现,然而这样呈现出来的效果并不理想,不仅显示质量欠佳,而且操作起来也颇为繁琐。还有 FLASH 扩展,在学校里从未接触过,经过冲哥细致入微的讲解,我终于明白了它的功能和作用,了解到它在数据存储和程序运行中的关键价值。这些都是我在第二节课中收获的宝贵知识财富,让我对相关领域有了更深层次的认识和理解。 第四课 课程伊始聚焦于点亮一颗 LED 这一基础且关键的实践操作。从电路原理层面来看,实现 LED 点亮的基本要素在于构建完整的通路,并且通路中需存在高低电平差,在数字电路的逻辑体系里,通常以 1 代表高电平,0 代表低电平 。这里涉及到的 I/O 口,其全称为 GPIO(General - Purpose Input/Output),即通用输入输出端口,它是微控制器与外部设备进行数据交互的关键接口。通过软件编程,我们能够灵活读取其输入电平状态,或者精准控制它输出高低电平,以此实现对外部设备诸如 LED 的有效控制。
随后,课程深入到利用软件建立工程的环节。我们选用的是 Keil 软件,这是一款在嵌入式开发领域广泛应用的集成开发环境(IDE)。在 Keil 软件中,我们依据项目需求进行代码编辑,编写完成后,经过一系列复杂的编译、链接过程,成功创建出.hex 文件。当编译顺利完成时,软件会自动生成该文件,这个.hex 文件是我们代码编写的最终产物,它包含了经过编译优化后的机器码,这些机器码能够被目标芯片直接识别并执行。最终,我们将这个.hex 文件下载到芯片中,芯片按照文件中的指令序列,控制电路的通断,从而实现 LED 的点亮。
考虑到部分同学可能暂时没有实验板,课程还介绍了通过 Proteus 软件进行仿真的方法。Proteus 是一款功能强大的电子设计自动化软件,它不仅能够进行电路设计,还支持对各种电路进行仿真分析。在仿真环境中,我们同样使用.hex 文件,能够模拟出与实际实验板相同的效果。这种仿真方式为我们提供了一个虚拟的实验平台,即便没有实际硬件,也能对设计思路和代码进行验证,大大降低了实验成本和时间成本。
在实际操作过程中,如果遇到 LED 不亮的情况,首先需要排查的是引脚连接是否正确。因为引脚连接错误会直接导致电路无法正常工作,进而使 LED 无法点亮。此外,还需要根据需要点亮的 LED,仔细检查并改变 P 口配置寄存器。P 口配置寄存器决定了 I/O 口的工作模式和电气特性,只有正确配置 P 口配置寄存器,才能确保 I/O 口按照预期输出高低电平,实现 LED 的正常点亮。
第三课 在跟随视频深入学习的过程中,我严格按照视频里的详细步骤,有条不紊地开展准备工作。首要任务便是对学习所需的各类资源进行下载与整理。软件方面,精心挑选并成功下载了适用于本次学习的专业编程软件,这些软件将成为我后续代码编写与调试的关键工具。同时,我深知芯片手册对于理解芯片内部架构、寄存器配置以及各类功能特性的重要性,它就如同芯片的 “使用说明书”,涵盖了从电气特性到操作时序的详细信息。因此,我从官方渠道获取了精准且全面的芯片手册,为后续深入学习芯片相关知识筑牢根基。
此外,例程包的下载也至关重要。例程包中包含了丰富的示例代码,这些代码是基于实际应用场景编写的,能够直观地展示如何运用芯片的各种功能,为我在实际编程中提供了宝贵的参考范例。我将这些软件、芯片手册以及例程包分类整理,建立了清晰的目录结构,方便随时查阅与调用。
在搭建 Keil 编译环境时,我深刻体会到了其在嵌入式开发中的核心地位。Keil 作为一款功能强大的集成开发环境(IDE),支持多种微控制器的开发。搭建过程并非一帆风顺,从软件的安装到各种参数的配置,每一个环节都需要谨慎对待。我仔细设置了编译器路径、工程模板以及目标芯片型号等关键参数,确保编译环境能够准确无误地将我编写的高级语言代码转换为目标芯片可执行的机器码。在这个过程中,我还深入了解了编译、链接的原理和流程,明白了如何通过优化编译选项来提高代码的执行效率和可维护性。
通过完成这些准备工作,我不仅掌握了实际操作技能,更对嵌入式开发的流程和原理有了更为深入的理解,为后续的学习和实践奠定了坚实的基础。 第五课 先是深入学习了单片机相关知识,从代码编辑开始,将编写好的代码下载到单片机中,这一过程涉及到对硬件和软件的协同操作。之后,在串口助手中打开串口,当发送 “1” 时,成功接收到 “Hello World!”,这让我切实感受到了串口通信的奇妙之处,也明白了数据在硬件之间传输的原理。
在数据处理方面,我了解到文本模式下一个汉字对应 HEX 模式的两个数,这涉及到不同进制之间的转换。二进制逢二进一,十进制数逢十进一,十六进制逢十六进一 ,这些进制转换规则在数据存储和处理中起着关键作用,是理解计算机底层数据表示的基础。
在 C 语言编程知识的学习上,格式字符以 % 开头,通过一个字母或者两个字母去实现一个特殊字符的定义,这为格式化输出提供了便利。C 语言常用运算符涵盖多个类型,算术运算符有加(+)、减(-)、乘()、除(/);模(余)运算符(%)不允许出现浮点型,余数正负取决于被除数正负;还有自增(++i,--i;i++,i--)等特殊运算符。位运算符包括右移(>>)、左移(<<) 、按位与(&)、按位或(|)、按位异或(^)、取反(~),它们在对数据进行位操作时十分有用。赋值运算符则有 += 加赋值(a += 3 等价于 a = a + 3)、-= 减赋值、= 乘赋值、/= 除赋值、%= 求余赋值、&= 按位与赋值、|= 按位或赋值、^= 按位异或赋值、<<= 左移位赋值、>>= 右移位赋值 。在逻辑运算中,进行与运算时,相同位上同时为 1,才能出 1,全 1 为 1;或运算是只要有一个 1 就能出 1;异或则是相反出 1。这些知识的学习,让我对 C 语言编程有了更深入的理解,为后续的编程实践打下了坚实的基础。
第六课 LCD 接口,这可是个新鲜玩意儿。我们之前学习的单片机在显示汉字方面存在很大的局限性,通常只能借助自定义字模来实现,然而这样呈现出来的效果并不理想,不仅显示质量欠佳,而且操作起来也颇为繁琐。还有 FLASH 扩展,在学校里从未接触过,经过冲哥细致入微的讲解,我终于明白了它的功能和作用,了解到它在数据存储和程序运行中的关键价值。
在这节课中,还深入学习了基于 Delay 函数实现 LED 的闪烁。这里涉及到单位换算,1 秒等于 1000 毫秒,又等于 1000000 微秒 ,在设置延迟时间时需要精准换算。同时,学习了 define 函数的用法,它是用 define 后面的名称去代替名称后面需要定义的内容,通过这种方式可以方便地定义常量或者宏,提高代码的可读性和可维护性。typedef 的用法也很独特,它是用末尾的名称代替 typedef 后面的名称,结尾要加一个分号,常用于定义新的数据类型别名,让代码更加简洁和易读。
在循环结构的学习上,while 循环括号里的条件判断是否为真(条件是否等于 0,是 0 就是假,非 0 就是真),若为真则执行大括号里的功能,每执行完一次再回到 while 判断,直到条件为假才跳出循环,继续往下执行。do - while 循环则是开始后先执行一次大括号里的功能,然后再去判断条件,若条件为真则继续执行功能,若为假则跳出循环往下执行。
关于模块化编程,这是一种非常实用的编程理念。函数使用分为三个步骤:首先是函数定义,格式为返回值 函数名称(入口参数){函数要执行的功能} ,其中返回值若没有就是 void;函数名称要避开关键词,不重复,且不能包含特殊字符;入口参数是类型加名称,多个参数用 “,” 分开,若没有参数就写 void。其次是函数声明,格式为返回值 函数名称(入口参数);最后是函数调用,直接使用函数名称(入口参数)即可。在实际操作中,模块化编程需要新建 xxx.c 和 xxx.h 文件,代表一个功能块。xxx.h 文件格式为 #ifdef __XXX_H #define __XXX_H ,接着调用头文件并进行函数声明,最后 #endif ;xxx.c 文件格式为 #include “xxx.h” ,然后进行函数定义。需要特别注意的是,添加文件时一定要记得引用路径并添加到工程里,这样才能确保程序的正常运行。
页:
[1]
2