cl_lemon 发表于 2023-10-13 19:32:35

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

第一课
就像其他的课程开头一样,讲师做了启蒙的教学,主要教的是什么是单片机,



单片机封装的演化历史:



单片机的应用范围



和给新手的学习建议。





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

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

cl_lemon 发表于 2023-10-13 19:44:28

第2课

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


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


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




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

cl_lemon 发表于 2023-10-16 19:35:12

第3课

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


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

开发工具做的比较人性化,在开发工具中就可以直接下载手册了需要的库。



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

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

另外STC-ISP不仅是程序的下载工具,也是单片机的设置工具,
可以用来设置单片机的频率等参数:


cl_lemon 发表于 2023-10-16 20:07:37

第4课

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

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







然后创建工程,进行点亮LED的编码:


并通过STC-ISP进行烧录:



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

cl_lemon 发表于 2023-10-20 19:38:11

第4课 - 下集

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

进行编程文档必不可少,STC的pdf中有详细的功能实现方法。



另外还有更简单的方法,就是参照示例程序,
在示例程序上进行小的改动,比自己重新设计要简单得多。



这一课以及前面的上一课,是使用STC进行开发的基础,
基于这个示例和自动升级框架,可以开发更多的程序。



cl_lemon 发表于 2023-10-20 19:54:55

第5课


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


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


要实现这个printf,需要在程序中进行如下的初始化。




在后半段,主要围绕C语言的基础




如ASC码



数据类型




常用的计算符号




以及如何使用Excel辅助进行编程中的各种数据运算。




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

cl_lemon 发表于 2023-10-23 18:43:30

本帖最后由 cl_lemon 于 2023-10-23 18:45 编辑

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


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


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


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




进行完频率的define后,就可以使用这个值实现一个定时器,
用来让mcu等待特定的时间(毫秒)




接着在主程序中使用定时器实现LED的亮灭。
点亮LED我们在上一章中学过,使用过控制IO的值影响电平控制的,这里的原理相同。




随后顺便介绍了巩固和循环的细节:


以及函数的写法。



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




cl_lemon 发表于 2023-10-26 19:09:48

本帖最后由 cl_lemon 于 2023-10-27 09:25 编辑

第7课 - 按键点灯


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


教程首先介绍了常用的按键:




单片机读取按键的典型电路:




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




如果是模拟电路,
这一瞬间的跳动一般不会影响电路功能,设计上可以不用考虑,
单片机领域仅仅用按键的开关直接控制LED的亮灭,也不用考虑,
只要写这段简单的代码就可以:

但如果要在按键上进行一些逻辑操作,比如按一下由亮变灭,或由灭变亮,则由于单片机的判断速度很快,
这种跳动就会让单片机误以为按键被多次按下和放开,从而产生不希望的结果。


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




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




后面结合按键做了一个按键控制的循环灯,主要的思路是通过数组实现LED的操作,
则可以避免一大堆冗长的代码:




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

cl_lemon 发表于 2023-10-26 19:39:04

第8课 - 蜂鸣器的应用



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


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


跟往常一样,作者首先介绍了蜂鸣器这个外设的原理和型号分别:




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


接下来介绍了单片机控制蜂鸣器的电路,与之前想的不同,
蜂鸣器由于需要电流较大,还需要一个三极管扩流,这个跟LED不同。




接下来就是具体的程序,用来模拟电磁炉的操作,
这个程序比先前的控制要复杂的多,因为实现的逻辑也很复杂。


随后还加入了KEY3的控制逻辑,
这个KEY3是实现电磁炉的暂停功能的,
同样这段代码包含了防抖和等待松开(防止按下反复触发)的功能。
随后



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

神农鼎 发表于 2023-10-26 20:15:28

http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.92D.zip


http://www.stcmcudata.com/STC8F-DATASHEET/STC32G.pdf


http://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pdf




页: [1] 2
查看完整版本: 跟着视频学习32位8051单片机打卡