找回密码
 立即注册
查看: 2258|回复: 14

《STC 32 G单片机视频开发教程打卡》

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:13:24 | 显示全部楼层 |阅读模式
《第一节打卡》
主讲人凭借其丰富的从业经验,对知识点的讲解清晰透彻,使我这个初学者能够较好地理解和吸收。
以下是此次学习的课堂笔记:

      单片机,作为现代电子技术的核心组件之一,是一种将中央处理器(CPU)、存储器、输入/输出接口等集成在一块芯片上的微型计算机系统。STC 32 级单片机具有高性能、低功耗的特点。其 CPU 架构先进,运算速度快,能够高效地处理复杂的任务。在存储器方面,它拥有程序存储器和数据存储器,程序存储器用于存储用户编写的程序代码,而数据存储器则用于临时存储运行过程中的数据。
      单片机的输入/输出接口丰富多样,包括数字输入输出口和模拟输入输出口。数字输入输出口可以实现高低电平的检测和控制,常用于连接开关、LED 等简单的数字设备。模拟输入输出口则能够处理连续变化的模拟信号,如温度传感器、压力传感器等输出的信号。
在编程方面,我们学习了使用 C 语言对 STC 32 级单片机进行编程。了解到程序的基本结构包括初始化部分、主循环部分和中断服务程序。初始化部分用于设置单片机的工作模式、时钟频率、IO 口状态等初始参数。主循环部分则是程序的主要执行逻辑,不断地检测和处理各种输入信号,并产生相应的输出控制。中断服务程序用于处理突发事件,如外部中断、定时器中断等,能够提高系统的实时响应能力。
       此外,我们还学习了单片机的通信接口,如 UART(通用异步收发传输器)、SPI(串行外设接口)和 I2C(集成电路总线)等。这些通信接口使得单片机能够与其他设备进行数据交换,实现更复杂的系统功能。
通过这次打卡学习,我深刻认识到单片机在现代电子系统中的重要地位和广泛应用。它不仅可以用于工业控制、仪器仪表、智能家居等领域,还在消费电子、汽车电子等行业发挥着关键作用。
      同时,我也意识到自己在学习过程中还存在一些不足之处。例如,对于一些复杂的编程算法和电路设计原理的理解还不够深入,在实际项目开发中还缺乏足够的经验。但我相信,通过不断地学习和实践,我能够逐渐弥补这些不足,提高自己的单片机开发水平。
在未来的学习和工作中,我将继续巩固所学的知识,积极参与实际项目的开发,不断积累经验。我期待能够运用所学的单片机技术,设计出具有创新性和实用价值的电子系统,为推动电子技术的发展贡献自己的一份力量。
      总之,这次打卡学习是我在单片机领域探索的重要一步,为我打开了一扇通往电子技术世界的大门,让我更加坚定了在这个领域深入钻研的决心。

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:24:35 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:32 编辑

《第二节打卡》
Snipaste_2024-07-30_09-26-43.png
      开发板上的模块丰富多样,从红外发射与接收模块,到数码管、流水灯,再到各种温度传感器、按键、存储芯片等。其中,红外发射模块通过头部的透明灯珠实现红外信号发射,而红外接收则用于接收相应信号。数码管能够通过单独点亮或熄灭每一横或一竖,组成各种字母、符号和数字。NTC 测温是采集连续的电压信号,只要 ADC 采样速度够快,能检测到细微的电压变化;而 18B20 作为数字温度传感器,精度高但速度慢,可能会遗漏中间的线性变化值。
      ADC 按键只需一个单片机引脚就能读取 16 个按键,在引脚有限的情况下非常实用。基准电压对于 ADC 采集的校准至关重要,通过已知的基准电压和采集到的数值,可以反推出当前的实际电压。PWM 则能实现数字转模拟量,例如生成正弦波来控制相关设备。
      24C02 作为存储芯片,可用于保存单片机运行中的数据,如温度数值、校准数值等。矩阵键盘通过特定的连接方式,减少了引脚占用,在密码锁等场景应用广泛。LCD 接口可连接 12864 显示屏,能显示汉字和字符。
      单片机方面,STC32G 是 64 引脚的,工作电压为 1.9 - 5.5 伏,程序存储在 128K 的 Flash 中,运行时产生的数据暂存在 RAM 中,断电会丢失,如需保存可存至 Flash 或外部存储芯片。
      这次打卡学习让我深刻体会到了单片机开发的复杂性和趣味性。开发板上众多的模块和功能,让我感受到了其强大的应用潜力。每个模块都有其独特的原理和应用场景,需要我们深入理解和掌握。
      通过对这些模块的学习,我不仅扩充了自己的知识储备,还提高了对电子电路和编程的综合运用能力。同时,也让我认识到在实际开发中,需要根据具体需求合理选择和运用这些模块。
      学习过程中也并非一帆风顺。对于一些复杂的概念和原理,如 ADC 采集和校准、PWM 波形生成等,理解起来存在一定的难度。但通过反复观看视频、查阅相关资料以及自己的思考和实践,逐渐攻克了这些难题。
这次打卡学习还培养了我的自主学习能力和解决问题的能力。在面对不理解的知识点时,不再依赖他人的解答,而是主动去探索和尝试,寻找解决问题的方法。


我将继续深入学习单片机开发的相关知识,将所学应用到实际项目中。同时,我也会保持这种积极的学习态度和探索精神,不断提升自己的专业水平,为今后在电子领域的发展打下坚实的基础。



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:29:53 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:34 编辑

《第三节打卡》

      首先是 STC ISP 软件的下载。老师强调,这一软件是 STC 单片机开发的“神器”,它能够支持 STC 全系列单片机的程序下载,并且具备众多实用功能。在最新版本中,集成了虚拟显示、范例程序、定时器延时函数生成,还有最新的 USB 驱动安装等。我们通过给定的链接获取软件,下载完成后将其解压放置在桌面或指定文件夹。解压后的软件双击即可打开,其界面清晰明了,易于操作。
手册的下载同样重要。
STC 32G 的手册详细阐述了所有用到的功能,无论是通过软件内的“资料下载和用户手册”选项在线观看后下载,还是在官网的芯片手册中找到 STC 32 系列进行下载,都是获取这一重要参考资料的有效途径。将手册下载至桌面备用,方便随时查阅。
PDF 阅读器的选择也是不容忽视的环节。电脑上若有 WPS 软件,可直接用其打开手册;若没有,安装福星阅读器也是不错的选择。在处理大型 PDF 文档时,福星阅读器具有不卡顿的优势。学会运用阅读器的目录功能,能够快速定位到所需章节,比如查找 LQFP 32 的封装尺寸图;利用书签功能,可以迅速找到如 IO 口等特定功能的页面;而通过快捷键 Ctrl + F 进行搜索,或者使用高级搜索输入关键词,能够精准查找相关内容,极大地提高了查阅手册的效率。
接下来是 C 251 开发环境的搭建。这一环节需要严格按照手册的指引进行操作。手册的第五章详细介绍了开发环境的建立与 ISP 下载的步骤。为了演示效果,老师甚至卸载了电脑上已安装的软件,与我们一同重新搭建。我们找到手册中提供的官网,下载安装包并解压。双击打开安装程序后,按照提示依次点击“Next”、同意相关协议、选择默认安装路径(当然,也可根据个人需求更改路径,但为了后续安装插件的方便,建议选择默认路径),输入名称等信息,等待安装完成。安装结束后,桌面上会出现相应的图标,双击打开即可。
程序包的下载也是关键的一步。我们可以在软件内的“资料下载软件库函数及范例程序”中找到 STC 32G 实验箱相关的程序包进行下载,下载成功后将其移至桌面并解压。当然,如果对官网下载的路径感兴趣,也可以在官网的应用方案中的实验箱部分进行代码下载。
编译程序是开发过程中的重要环节。打开工程后,点击绿色的编译按钮,如果编译成功,会提示“0 错误,0 警告”。但在实际操作中,可能会遇到诸如“未检测到 SDC 芯片”的错误提示。这时,我们需要按照手册进行操作,比如找到“K2 仿真设置”,添加头文件等。重新打开工程,再次编译,直至成功。在下载程序前,驱动程序的安装必不可少。将开发板通过 USB 线与电脑连接,按照特定的按键操作进入下载模式。不同的板子可能操作方式略有差异。对于实验箱,需要先按下 P3.2 按钮,再按下中间的按钮,然后松开,最后松开 P3.2 以进入 USB 下载模式。如果是其他类型的板子,如屠龙刀,也需要关注电源灯是否亮起。进入下载模式后,在软件中选择正确的单片机型号,确保与实际使用的芯片对应。根据程序中定义的时钟,选择合适的下载参数,如 24 兆。
通过这堂课的学习,我深刻体会到了单片机开发的
复杂性和严谨性。每一个步骤都需要精确操作,稍有疏忽就可能导致整个开发过程的失败。同时,我也感受到了手册和参考资料的重要性。在遇到问题时,仔细查阅手册和相关资料,往往能够找到解决问题的关键。

截图202407300931062206.jpg

截图202407300931377439.jpg





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:35:25 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:40 编辑

《第四节打卡》
通过简单的实验,我们了解到LED灯的点亮需要一边为5伏,另一边为0伏。在单片机中,用高低电平来表示,输出电压等于VCC为高电平,输出电压等于GND为低电平。单片机的GPIO(通用输入输出端口)可以读取输入电平并控制输出电平。一个64引脚的单片机上,如P2.3等标注的引脚就是IO口,一组GPIO口最多有8个,如从P0.0到P0.7。
在新建工程部分,我们按照手册的指引,在char软件中进行操作。先选择project新建工程,在桌面新建文件夹保存,选择STC MCU类型和相应的单片机型号。然后新建源代码文件,注意文件名和格式的规范。编写代码时,要注意关键词的大小写和格式,如SFR。设置软件的编码和缩进等参数,编译工程,若没有错误和警告,生成hax文件,即可进行下载。
在点亮第一个LED的过程中,我们最初的代码因为引脚选择错误而未能点亮LED。通过分析手册,修改引脚为P4和P6,并引入SBIT功能来单独控制引脚。配置引脚为准双向口,输出低电平,最终成功点亮了LED。在这个过程中,我们学会了如何查找问题、修改代码和理解寄存器的使用。
实现自动下载工程功能是课程的一个重要部分。通过参考手册的5.15章节,我们了解到可以通过特殊功能寄存器实现无需断电的下载。按照手册设置软件参数和程序代码,虽然过程中遇到了一些错误,但通过仔细排查,如大小写错误、函数未定义等,最终成功实现了自动下载功能。我们还尝试了CDC模式的下载,通过对比不同模式的程序差异,解决问题,实现了CDC模式的成功下载。
此外,课程中还涉及了很多细节和知识点,如代码的书写规范、注释的使用、搜索功能的运用、函数的定义和声明等。同时,我们对一些关键的寄存器、头文件和函数进行了深入的理解和分析。

4.png
4.1.png
Snipaste_2024-07-30_09-41-13.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:35:39 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:43 编辑

《第五节打卡》
课程讲解了 C 语言中 printf 函数的实现过程。基于上节课的工程,我们在主函数中通过 printf 函数实现了字符串的输出,如“Hello World”。printf 函数的格式是以括号内加引号的形式,通过特定的格式字符和控制符来实现更复杂的数据输出,如%2f用于控制小数位数,\r\n用于换行。课程深入探讨了数制的转换。包括二进制、十进制和十六进制之间的相互转换。在十六进制转十进制时,通过分析位权进行计算。二进制转十进制则是根据逢二进一的原则,将每一位的数值乘以对应的权值后相加。而二进制与十六进制的转换,可以通过四位二进制对应一位十六进制的方法快速实现。同时,还讲解了通过整组端口操作控制 LED 灯的亮灭,如通过给 P6 端口赋值十六进制或十进制数来实现特定灯的控制。
在常用运算符方面,我们了解了加减乘除、取余、位运算等。通过实际的代码示例,如 100/99 计算出整数部分和余数部分,以及通过位运算中的与、或、左移等操作,深入理解了其运算规则和结果。介绍了数据的基本类型,如 BIT 为一位二进制数,取值只有 0 和 1;CHAR 为 8 位,取值范围为 -128 到 127;UNSIGNED CHAR 为无符号 8 位,取值范围 0 到 255;SHORT INT 为 16 位二进制数,取值范围 0 到 65535 等。
通过这堂课的学习,我深刻认识到数制转换和数据类型在编程中的重要性。在实际编程中,需要根据具体需求选择合适的数据类型和运算符,以确保程序的准确性和高效性。同时,对于 printf 函数的灵活运用,能够方便地实现数据的输出和调试。
Snipaste_2024-07-30_09-42-35.png
Snipaste_2024-07-30_09-43-13.png

Snipaste_2024-07-30_09-43-24.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:43:46 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:47 编辑

《第六节打卡》
从 9.4 实验箱更新到 9.6 实验箱,多了示波器实验。同时,软件和手册也有了新版本,为了避免旧版本可能出现的问题,我们需要保持软件为最新版,并及时更新手册。
——基于 delay 实现 LED 闪烁。首先了解了闪烁的概念,如闹钟上两个不断闪动的点,通过 0.5 秒点亮、0.5 秒熄灭的交替实现闪烁。在代码实现中,使用 define 定义了主时钟频率,方便后续修改和代码编写。然后编写了 delay 函数实现延时,其中 U16 是变量类型的定义。通过控制 P60 灯的点亮和熄灭,并分别延时 500 毫秒,实现了 LED 的闪烁效果。
在循环部分,学习了 while 和 do-while 循环。while 先判断条件再执行功能,条件为真执行代码,直到条件为假跳出循环;do-while 则先执行一次功能再判断条件,只要条件为真就继续循环。通过代码示例,深入理解了它们的执行流程和区别。
在函数使用方面,函数的使用分为定义、声明和调用三步。定义函数需要确定返回值、函数名称和入口参数,声明函数则在定义前加上分号,调用函数时只需输入函数名称和参数。通过加法函数的示例,清晰地展示了函数的完整使用过程。
此外,还学习了模块化编程,通过新建 .c 和 .h 文件来实现功能块。以四则运算为例,在 .h 文件中进行条件判断和定义,在 .c 文件中进行函数定义和声明,在主函数中引用头文件并调用函数,使主函数更加清晰简洁。这种方式在大型项目中便于分工合作,提高代码的可读性和可维护性。
回顾这堂课,不仅掌握了 LED 闪烁的实现方法和循环、函数、模块化编程的相关知识,还通过实际的代码编写和调试,加深了对这些概念的理解。
在实现 LED 闪烁的过程中,深刻体会到了延时函数的作用和编写细节。通过对 while 和 do-while 循环的学习,明白了条件判断在程序流程控制中的重要性,以及它们在不同场景下的应用选择。函数的使用让代码更加模块化和可复用,提高了编程效率。而模块化编程则为处理复杂项目提供了良好的架构和组织方式。
然而,在学习过程中也遇到了一些问题和挑战。例如,在代码编写时容易出现语法错误,如遗漏分号、关键词拼写错误等。在函数调用时,参数的传递和类型匹配也需要格外注意,否则会导致编译错误。对于模块化编程的概念和引用路径的设置,一开始理解起来有些困难,需要更多的实践和思考来巩固。我将继续加强对这些知识的运用和巩固。不断练习编写代码,提高编程的准确性和效率。深入研究函数和模块化编程的高级应用,提升自己处理复杂项目的能力。同时,积极探索更多的单片机开发技术和应用场景,为进一步提升自己的技术水平打下坚实的基础。
Snipaste_2024-07-30_09-46-38.png
Snipaste_2024-07-30_09-46-53.png

Snipaste_2024-07-30_09-47-54.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:43:54 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:51 编辑

《第七节打卡》
课程开始,老师回顾了上节课布置的 SOS 求救灯的编写作业,展示了其实现效果,即快速闪三下、慢慢闪三下、再快速闪三下的循环。代码通过控制灯的点亮和熄灭时间来实现这一功能,同时将延时函数和相关声明进行了合理的组织和调用。
接着,课程进入按键原理的讲解。按键本质上是控制两个引脚之间的通断,有常开和常闭两种类型。对于常开按键,按下导通,常态断开;常闭按键则相反。通过按键的按下和松开,单片机引脚检测到的电平会从高电平变为低电平,或者从低电平变为高电平。但由于机械开关的特性,按键按下和松开时会有 5 - 10 毫秒的抖动,因此在代码中需要进行按键消抖处理。
在代码实现部分,首先通过宏定义确定按键引脚,然后使用 if 语句判断按键状态。当检测到按键按下后,延时 10 毫秒再次判断,以确定按键是否真正按下。在此基础上,实现了按键点灯的功能,包括按下点亮、松开熄灭,以及按下熄灭、松开点亮等不同的控制逻辑。同时,还探讨了如何实现按键按下状态改变一次、按键按下只执行一次以及按键控制 LED 状态移动等功能。
例如,在实现按键按下只执行一次的功能时,使用了 while 循环来等待按键松开,确保只有在按键按下的瞬间执行一次操作。对于按键控制 LED 往左移动的功能,通过对端口值进行左移操作,并处理边界情况和初始值,实现了预期的效果。
此外,课程还介绍了数组的应用。数组通过定义类型、名称和长度,并设置初始值来创建。在使用时,需要注意索引从 0 开始,最大索引值为长度减 1 。通过数组,可以方便地实现流水灯等功能,并且可以灵活地修改数组中的值来改变输出效果。
回顾这堂课的学习,我不仅掌握了按键控制的基本原理和编程方法,还深入理解了数组的使用技巧。然而,在学习过程中也遇到了一些问题和挑战。
在按键编程中,对于按键消抖的时间设置需要根据实际情况进行调整,以确保准确检测到按键状态,同时避免误判。在处理复杂的按键逻辑时,如多个按键的组合控制或根据按键持续时间执行不同的操作,需要更加清晰的思维和严谨的代码结构。
在数组的使用方面,容易出现索引越界的错误,需要特别注意数组长度和索引的关系。同时,对于如何根据具体需求优化数组的初始值和修改值,还需要更多的实践和思考。
Snipaste_2024-07-30_09-50-34.png
Snipaste_2024-07-30_09-50-44.png

Snipaste_2024-07-30_09-51-45.png



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:51:20 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:53 编辑

《第八节打卡》
课程首先介绍了蜂鸣器的分类,包括有源蜂鸣器和无源蜂鸣器。它们的主要区别在于内部是否有震荡源,有源蜂鸣器通电即响,控制方便;无源蜂鸣器需要高低电平变化才能发声,常用于对成本有要求或特定发声效果的项目。我们开发板使用的是有源蜂鸣器,通过给P54引脚高电平或低电平来控制其开关。
在实际编程中,基于之前的按键知识,实现了通过按键控制蜂鸣器的简单功能。通过修改代码,成功实现了按键按下时蜂鸣器响和停止的效果。这让我对代码的逻辑和引脚控制有了更熟练的操作。
接着,课程进入了更具实战性的应用——模拟电磁炉的功能。电磁炉具有开机自检、功能选择、功率调节、定时预约等功能,我们本次课程主要实现了开机、功能选择和关机的部分功能,涉及到两个按键、八个LED灯和一个蜂鸣器。
在实现过程中,新建了测试文件夹,包含.c和.h文件。通过定义变量来表示开关机状态和灯的模式,使用函数来实现具体的功能。在开机函数中,按下按键后进行消抖,判断开关机状态,若未开机则开机,使蜂鸣器响10毫秒,八个LED灯全亮200毫秒后熄灭。在关机函数中,同样进行按键判断和消抖,将开关机变量清零,蜂鸣器响10毫秒,LED灯全部熄灭。
对于功能选择按键,通过模式变量的递增和循环处理,实现LED灯的轮流点亮,并在按键按下时伴有蜂鸣器响10毫秒。在编写代码过程中,遇到了一些问题,如变量定义和操作的错误、函数声明和调用的遗漏等,但通过仔细检查代码和逻辑分析,最终成功实现了预期的功能。
回顾这堂课,我深刻体会到了从理论知识到实际应用的过程中需要注意的细节和可能遇到的问题。
在蜂鸣器的控制方面,理解了其工作原理和引脚控制的方法,能够根据需求实现简单的发声控制。在电磁炉功能模拟的实现中,学会了如何合理地定义变量和函数来处理复杂的逻辑关系,同时也更加熟悉了按键、LED灯和蜂鸣器的协同工作。
然而,在学习过程中也遇到了一些挑战和不足。例如,在初次编写代码时,容易忽略函数声明和变量的正确初始化,导致程序出现错误。对于一些逻辑判断和边界情况的处理,还需要更加严谨和细致,避免出现意外的结果。
在今后的学习中,我将继续加强对单片机开发的实践练习,提高自己的编程能力和问题解决能力。对于类似的项目,会更加注重前期的规划和设计,明确需求和功能,优化代码结构,提高代码的可读性和可维护性。同时,积极探索更多的应用场景,将所学知识运用到实际项目中,不断积累经验,提升自己的技术水平。

Snipaste_2024-07-30_09-51-45.png

Snipaste_2024-07-30_09-54-31.png

Snipaste_2024-07-30_09-54-41.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:51:30 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:56 编辑

《第九节打卡》
对数码管的种类进行了介绍。数码管形态多样,有一位、两位、四位等,显示内容也丰富,不仅能显示数字,还能显示各种符号和标志。其本质是由多个发光二极管组成,颜色和外形各异。
接着深入探讨了数码管的内部结构和控制原理。数码管分为共阳和共阴两种类型。共阳数码管是二极管的正极接在一起,给相应引脚低电平则点亮;共阴数码管则是负极接在一起,给相应引脚高电平则点亮。开发板上使用的是共阳的四位数码管,通过控制引脚的电平状态来实现数字的显示。
在实际操作中,首先分析了数码管引脚的连接情况,如开发板上的 a 角接在 P60,b 角接在 P61 等。为了点亮数码管,需要建立码表。以显示数字 0 为例,a、b、c、d、e、f 点亮,g 和 DP 熄灭。将 0 到 9 的显示状态都整理出来后,由于程序中不能直接使用二进制,需将其转换为十进制或十六进制。通过计算和表格转换,得到了十六进制的码值。
在编程实现时,先定义数组存储 0 到 9 的十六进制码值。通过给 P6 引脚输出相应的码值,并设置 P70 引脚为低电平,成功实现了静态显示数字 0。随后,通过循环和延时实现了 0 到 9 的自动循环显示。在此基础上,使用按键控制数字的加减。当按键按下时,判断数字是否在合理范围内进行加减操作,并增加了蜂鸣器提示。
回顾本次学习,收获颇丰,但也遇到了一些问题和挑战。
在建立码表和转换进制的过程中,需要清晰的逻辑和耐心的计算,稍不注意就可能出错。在编程实现过程中,对于引脚的控制和变量的定义及使用需要非常准确,否则会导致显示异常。同时,在调试过程中,需要根据实际现象逐步排查问题,这锻炼了问题分析和解决的能力。
在未来的学习中,将进一步加强对数码管相关知识的练习和应用。尝试使用数码管实现更复杂的显示功能,如显示多个数字、字母组合等。同时,提高代码的可读性和可维护性,优化编程思路和方法。
总之,通过本次课程的学习,对数码管有了全面的认识和掌握,为后续更复杂的单片机开发项目打下了坚实的基础。
课堂笔记:
数码管种类多样,根据显示位数、外形、显示内容等区分。
数码管由多个发光二极管组成,内部有共阳和共阴两种结构。
开发板使用共阳的四位数码管,引脚连接如 a 角接 P60,b 角接 P61 等。
建立码表实现数字显示,从 0 到 9 整理出点亮和熄灭的状态,转换为十六进制用于编程。
编程中通过数组存储码值,控制引脚电平实现显示,用循环和按键实现数字的自动循环和加减控制,并增加蜂鸣器提示。

Snipaste_2024-07-30_09-54-31.png

Snipaste_2024-07-30_09-57-09.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-7-30 09:54:04 | 显示全部楼层
本帖最后由 爱吃西红柿 于 2024-7-30 09:58 编辑

《第十节打卡》
数码管动态刷新的原理。要实现多位数码管同时点亮,如显示 1234 ,需依次打开每个数码管的位码,并输出对应的段码,通过快速切换和适当的延时,利用视觉残留效应,给人以同时点亮的错觉。同时,要注意延时时间不能太短,整个循环周期不能大于 20 毫秒,以保证刷新率高于 50 赫兹,避免肉眼察觉闪烁。
在实际编程中,基于上节课的基础,新增了位码选择数组,通过控制位码和段码实现了多位数码管的显示。先点亮第一位数码管并输出段码,延时 1 毫秒,再依次处理后续数码管,成功显示 0123 。为了更方便地调整延时时间,使用宏定义设定延时值。通过引入变量,优化了代码结构,实现了 0 - 7 的循环显示。进一步地,新建显示数组,实现了任意数字的动态显示,如显示手机号码的前八位。
此外,还进行了实战演练,如制作 10 秒免单计数器。在八位数码管的前四位显示目标时间 10.00 ,后四位显示当前计时,最小单位为 10 毫秒。通过新建计时变量和控制变量,结合按键操作,实现了计数功能。在实现过程中,还学习了如何处理小数点的显示以及数字的取位运算。
课堂笔记:
数码管动态刷新原理:依次点亮每位数码管,快速切换并适当延时,利用视觉残留实现同时点亮效果,循环周期不能大于 20 毫秒以保证刷新率。
新增位码选择数组控制多位数码管,通过位码和段码的输出实现显示。
利用宏定义调整延时时间,引入变量优化代码,实现数字的循环和任意显示。
实战演练 10 秒免单计数器,前四位显示目标时间,后四位显示计时,新建计时和控制变量,结合按键操作,处理小数点显示和数字取位运算。
回顾本次学习,深刻体会到了数码管动态显示的复杂性和灵活性。
在理解动态刷新原理时,需要清晰地把握每个数码管位的切换顺序和时间控制,这对于实现稳定、清晰的显示效果至关重要。在编程实现过程中,数组的运用和变量的管理是关键,需要准确地赋值和更新,以确保显示内容的正确性。同时,对于实战演练中的功能需求,如计时、按键控制和数字处理,需要细致地设计逻辑和算法,避免出现错误。

Snipaste_2024-07-30_09-54-31.png

Snipaste_2024-07-30_09-59-10.png
Snipaste_2024-07-30_09-59-24.png


回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-9 03:52 , Processed in 0.128842 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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