找回密码
 立即注册
查看: 3602|回复: 18

跟着视频学习32位8051单片机打卡

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-13 19:32:35 | 显示全部楼层 |阅读模式
第一课
就像其他的课程开头一样,讲师做了启蒙的教学,主要教的是什么是单片机,
0.png


单片机封装的演化历史:
1.png


单片机的应用范围
3.png


和给新手的学习建议。
4.png

5.png


讲师讲的很中肯,其中最有价值的一句话不是单片机的知识,
而是学习要能静的下心,不能浮躁,不能骄傲,并且坚持下去,
才能学习到深入的知识。

讲师自己能在单片机领域达到这么高的水平,
应该也是遵从了上面的研究方法吧。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-13 19:44:28 | 显示全部楼层
第2课

这一课的大部分时间介绍的是STC的开发板,也就是跟着视频认真学习后,STC公司送的这块板子。
0.png

单片机开发板有很多,比如最早的8051开发板。
但听了介绍后,感觉STC这块开发板比常见的开发板包含了更多的接口和外设,
这对开发来说是件好事,基本上不需要准备其他零件,就能完成基本的开发。


学习期间使用开发板比核心板要简单不少,
可以把大部分精力放在单片机本身的了解上,
不需要过于关注外设的选型与连接。

1.png


后面还介绍了STC32的特性,它比传统的51之内扩展了很多,
例如USB之内,传统的51是做不到的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-16 19:35:12 | 显示全部楼层
第3课

这一节主要介绍使用STC进行开发的准备工作,牵涉开发软件的下载,手册的下载和查看,
讲师介绍的非常详细,几乎是手把手的帮助完成环境的架设。
{E7CCF0AC-FF1D-49BB-8204-42AD451B3E7E}.png

需要注意的是要时刻保持软件和手册的最新版状态,
使用最新版不仅可以支持更新的型号,还修复了原先的错误,
和进行了功能上的扩充。

开发工具做的比较人性化,在开发工具中就可以直接下载手册了需要的库。
{5F3513D6-71A5-4468-9ADD-0AAE7BA11E8E}.png


STC的开发依赖KEIL,这是一个很优秀和主流的C51编译集成环境,
只要导入STC的库就能进行STC的开发。

最后讲座演示了第一个程序的下载与实验。
现在的单片机通过ISP进行下载,免去了原来专用烧录设备的麻烦。

另外STC-ISP不仅是程序的下载工具,也是单片机的设置工具,
可以用来设置单片机的频率等参数:
{4D41F7F5-EBD7-4535-AEFF-674F1D69C999}.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-16 20:07:37 | 显示全部楼层
第4课

这一课用最简单的程序讲解如何进行单片机开发,也就是点亮一个灯。

首先是LED的原理,以及单片机通过IO口点亮LED的原理:

{5CB53E28-475D-4CC3-938E-0C46F959A1E8}.png


{16ED547C-4FBF-49A9-BF2C-8BBCBC8AE871}.png


然后创建工程,进行点亮LED的编码:
{A6A07E5E-D77F-490A-A88B-A573F98A4FF8}.png

并通过STC-ISP进行烧录:
{6BE4BEA0-B09D-4C7D-83CC-83A7829DB1E0}.png


因为这个逻辑比较简单,所以程序很小,但通过不同的简单逻辑的组合,
就能发挥单片机的能力,做出各种复杂的产品。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-20 19:38:11 | 显示全部楼层
第4课 - 下集

这一课专门用来讲解如何使用USB实现在线升级,实现在线升级后,只需要通过开发环境编译和上传代码,
就能直接看到代码运行的结果,而不需要进行烧录。
严格来说,其实烧录并没有被省略,只是通过代码和STC的功能,结合STC-ISP,被自动完成了。

进行编程文档必不可少,STC的pdf中有详细的功能实现方法。
{A024C8F2-505C-471B-9004-18BEACD106D8}.png


另外还有更简单的方法,就是参照示例程序,
在示例程序上进行小的改动,比自己重新设计要简单得多。
{4988E7DD-A795-49FD-A019-01C13E707B65}.png


这一课以及前面的上一课,是使用STC进行开发的基础,
基于这个示例和自动升级框架,可以开发更多的程序。
{AB8F0028-8F77-481C-83C7-60BDDACFB973}.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-20 19:54:55 | 显示全部楼层
第5课


这一课也是讲解基础知识,但涉及另一部分基础知识,也就是如何实现printf和C语言的基础数据类型和运算。


printf可以看作C语言的起步,一般第一个程序HelloWorld就是通过printf打印的。
但STC上的printf与PC机上不同,原因是STC单片机没有接显示器,所以不能像PC机那样直接显示在屏幕上,
作为代替的方法,STC可以通过USB线把内容显示在STC-ISP上。


要实现这个printf,需要在程序中进行如下的初始化。
{4ABBCEE4-D44E-4F5F-A827-AE3110122DB3}.png



在后半段,主要围绕C语言的基础
{7E7702FD-8F3F-4B49-BC7B-058362CFBD36}.png



如ASC码
{26AE5710-C39C-4B4F-97D8-CDF5B3341B56}.png


数据类型
{FB1F1908-255E-4D44-B910-048A11A28C30}.png



常用的计算符号
{2868CAB5-9D36-4543-824B-584A381F77AA}.png



以及如何使用Excel辅助进行编程中的各种数据运算。
{D339E639-840E-49C0-8F27-DD0567F52D54}.png



所以这一部分也是编程的基础,基础打牢了才能掌握后面的知识,
但到了这个时候,也跃跃欲试去学习真正的单片机操作了。
偷偷的往下看了下,下一节终于可以实际使用单片机了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-23 18:43:30 | 显示全部楼层
本帖最后由 cl_lemon 于 2023-10-23 18:45 编辑

第6课 - LED闪烁与花式点灯


这一章终于进入了使用STC单片机进行实际控制,越来越好玩了。


整个章节围绕如何使用单片机控制LED的亮灭,顺带着教程也讲解了另一部分基础知识,
比如define,循环和函数使用,这种方式是不错的,如果一开始先把所有的基础知识讲完再进行实操,
估计会比较枯燥,所以理论知识结合实操,是最顺畅的学习方法。


讲师首先介绍了define的使用,define用来固定设置一个变量,
在这个变量多次使用时,用名称代替它的值,会让程序看起来易读,并且也方便后续更改,
比如在单片机上,我们可以使用不同频率的设置,如果把写入代码,那么在改动MCU频率时就必须跟着改动大量代码,
而使用define时,只要改动这一个量就可以了。
{15C5CE75-F0EF-440B-9C0A-B043FE0E49BA}.png



进行完频率的define后,就可以使用这个值实现一个定时器,
用来让mcu等待特定的时间(毫秒)
{FE8B2C57-8717-4DFD-84DB-B76D978D607F}.png



接着在主程序中使用定时器实现LED的亮灭。
点亮LED我们在上一章中学过,使用过控制IO的值影响电平控制的,这里的原理相同。
{63693A40-5222-423D-8945-DA441DC21D32}.png



随后顺便介绍了巩固和循环的细节:
{391D4F3E-8568-4DD8-AA3B-37E79E8A7EC8}.png

以及函数的写法。
{BAB53E54-95C1-40CB-9456-A90979B564A2}.png


函数在小程序中可能并不是很重要,但随着程序越写越大,不使用函数简直寸步难行。
就像我们不能从钢铁直接造汽车一样,函数就是已经造好的发动机和轮子。
比如使用函数构造一个简单的算数库。
{8A4AFC73-577B-4168-8E3C-33A3B4753D78}.png



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-26 19:09:48 | 显示全部楼层
本帖最后由 cl_lemon 于 2023-10-27 09:25 编辑

第7课 - 按键点灯


前面的第6课学习了对LED的控制,其实严格来说,学习的不仅是对LED的控制,而是对所有简单外设的控制,
比如LED可以换成蜂鸣器、继电器、小马达等,只要是通过通断驱动的设备,都可以通过这个方法来控制。
如果说第6课属于计算机的输出设
备,那么这一课就属于输入设备了,这一课的主要内容是对按键的读取。


教程首先介绍了常用的按键:
{687A5534-0731-4421-95B9-17E1F78D1F72}.png



单片机读取按键的典型电路:
{CA10BA0E-5BF2-4002-ADB1-78B8F3AC0B53}.png



以及在读取按键时,一些我们没想到的问题,
比如抖动处理。
我们通常认为按键就是按下和放开,对应的单片机引脚上就是高电平和低电平,
但在现实情况下,上述只是理想按键,实际的按键接触可能并不是这样快速,
在按下和放开的一瞬间,按键会存在反复的跳动情况。
{A71014BD-EDBE-4294-BC07-52BEBE486ECF}.png



如果是模拟电路,
这一瞬间的跳动一般不会影响电路功能,设计上可以不用考虑,
单片机领域仅仅用按键的开关直接控制LED的亮灭,也不用考虑,
只要写这段简单的代码就可以:
111.png
但如果要在按键上进行一些逻辑操作,比如按一下由亮变灭,或由灭变亮,则由于单片机的判断速度很快,
这种跳动就会让单片机误以为按键被多次按下和放开,从而产生不希望的结果。


不知道通过为按键加电容能不能减少上述情况的发生,
但加电容一则不一定能100%消抖,二则增加成本和故障率,
因此如果能在程序上进行消抖,说最合适的方法,比如这段代码:
{7505856E-D67C-4BEB-A263-8B2F2CBA843F}.png



另外还有一个类似问题,是按键的连续按下处理,
如果不考虑这个问题,按键的连续按下会让单片机反复认为按键按下,
而产生反复操作,对于这种情况,同样可以通过软件处理:
{27465F4F-F385-448F-9562-E7A8D618AC24}.png



后面结合按键做了一个按键控制的循环灯,主要的思路是通过数组实现LED的操作,
则可以避免一大堆冗长的代码:
{12B8A8FC-B6F1-4C4A-872A-807D61469BA4}.png

{2A2BA4C0-CC5D-435B-BD3C-E6612693DAD8}.png

上述例子可以看出,编出程序是一回事,编出漂亮的程序是另一回事儿。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-04 02:31:50

2

主题

30

回帖

2194

积分

金牌会员

积分
2194
发表于 2023-10-26 19:39:04 | 显示全部楼层
第8课 - 蜂鸣器的应用



这一章从标题上看,是介绍单片机对蜂鸣器的控制,但实际上单片机控制蜂鸣器的方法在第6章就已经讲解过了,
从控制上说,蜂鸣器与LED其实是一种方法。


进行学习后,发现这一章的内容,其实可以总结成:通过单片机的按钮和外设,实现复杂的控制逻辑,
这一章的控制逻辑已经不仅限于前面的按下就亮、或按下改变亮灭,而是多个按键之间的功能组合,
以及多个外设的整体控制,这一章以电磁炉进行举例。


跟往常一样,作者首先介绍了蜂鸣器这个外设的原理和型号分别:
{AF57501F-0E8F-4A35-B378-5A9373620959}.png



我在想,无源蜂鸣器价格便宜,但通过单片机其实可以很方便的产生通断信号,也就是说,
如果进行单片机开发的话,其实没有必要使用昂贵的有源蜂鸣器,付出的代价无非是代码复杂一些,
但节省了硬件成本,另外无源蜂鸣器还可以输出不同的声调,这是有源蜂鸣器做不到的,
不知道这个想法对不对,了解的专家请指正。


接下来介绍了单片机控制蜂鸣器的电路,与之前想的不同,
蜂鸣器由于需要电流较大,还需要一个三极管扩流,这个跟LED不同。
{B35B5ED5-FEBD-4FAF-B6FA-5AFC389980CD}.png



接下来就是具体的程序,用来模拟电磁炉的操作,
这个程序比先前的控制要复杂的多,因为实现的逻辑也很复杂。
{8CEE5CF3-E16B-4EF8-B89A-C33D2E0BBBE7}.png

随后还加入了KEY3的控制逻辑,
这个KEY3是实现电磁炉的暂停功能的,
同样这段代码包含了防抖和等待松开(防止按下反复触发)的功能。
{3341E394-45E6-4E08-B517-FCA08BB57751}.png 随后



这一章的代码相对复杂,但只要抓住对按钮和外设的控制核心,
结合STC的各种示范例程,就能不断积累经验,深入理解这些操作。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15648
发表于 2023-10-26 20:15:28 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 06:00 , Processed in 0.237919 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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