设计与开发

51单片机精通 单片机学习,应该从51单片机学起?(一)

小编 2024-10-12 设计与开发 23 0

单片机学习,应该从51单片机学起?(一)

做电子行业,肯定会接触到单片机,很多人会问,现在的单片机这么多,我应该学那个单片机,需要学习最新的单片机吗?

要想学习单片机技术,还是先要学习51单片机,这里不是指所有人,一部分人吧,因为有人认为,51单片机已经过时了,学习没有必要了,学会了也不会找到工作。

一开始不要想着挣钱,要把学习难度降到最低,短时间最容易学会,如果51单片机可以非常精通,待遇也不会低,而且当你会了51单片机,在学习其它的单片机,那就非常容易了。

那么该如何学习呢,首先是应该买一本书,再买一块开发板,再有一台电脑就可以了。

单片机选用国产的STC单片机,STC单片机被人喷的不行了,网站多的LOW,手册做的LOW,但是对于学习是一个非常好的平台,价格便宜,烧坏了也无所谓,进口的都在十几块以上,现在的STC做的也很好了,功能也比较多,很多产品都在使用呢,还是需要我们支持的。

那么就要找一本STC的书籍,一块STC的开发板,开发板就是个人或者厂家制作的一个系统电路板,把单片机的外围电路都集成在一块电路板上,方便学习,买开发板的目的是方方便学习,不用自己动手去焊接。不用考虑硬件电路的问题,只专注软件程序的编写,所以最好有一块开发板,这样学起来就比较快。

当然也可以自己动手焊接一块开发板,开发板的电路图也很多,只要焊接出一个最小系统就可以,一点一点往上添加电路,这样不仅可以写程序,还可以锻炼动手能力,熟悉硬件电路的设计。但需要一定的电路知识和动手能力,否则电路不运行,你判断不了是硬件焊接的问题还是程序的问题。

后续我会更新一些零基础的教程,从零开始搭建单片机的最小系统,制作各种各样的单片机电子制作。

本人多年单片机软件硬件开发经验和电路维修经验,学电路,加关注,让你学习不迷路,您的点赞是我分享经验的最大动力,有问题请留言探讨。

51单片机 ESP8266模块 APP控制继电器,物联网DIY入门新手指南

题目

大家好,超子能力有限,技术不高,有什么错误的地方,欢迎批评指正。超子之前写过一篇STM32单片机配合ESP8266的WiFi模块接入阿里云生活物联网平台的DIY实验,有小伙伴问我51单片机能不能实现,答案是能。那么今天超子就给大家介绍下51单片机的实现方法。

程序设计中,我们使用的软件是Keil集成开发环境,C语言编写。如果大家想要程序源码的话,可以私信我,超子不是专业的程序员,水平不高,大家不嫌弃就行。

一说到51单片机的型号那就太多了,因为我们要使用MQTT协议对接阿里云生活物联网平台,所以对RAM空间要求比较多,一些常见的型号比如89C51,89C52,因为RAM空间太少不能用,所以我们本次DIY程序设计使用的单片机型号是STC12LE5A60S2。

ESP8266模块是通过串口AT指令控制的那种,网上有很多,价格也比较便宜,非常适合我们做DIY。

虽然我们前面使用STM32单片机做了第一个DIY设计,但是考虑到有些小伙伴,没有看过,所以超子还是说的详细一点,把每一个步骤再重新走一遍。

图1

首先进入我们自己的阿里云生活物联网平台,然后创建项目,我们就创建一个51单片机DIY项目吧,以后所有51单片机相关的DIY设计,我们都加入到这个项目内。

图2

项目建立完毕后,可以在项目列表中,看到51单片机DIY项目,旁边的第一个DIY设计项目,是上次STM32单片机DIY设计时建立的。然后我们点击51单片机DIY项目,进入项目管理界面。

图3

接下来,我们需要创建新产品。

图4

产品名称就叫51单片机插座,大家也可以起自己喜欢的名字。然后所属品类选择电工照明下的插座。节点类型选择设备,不接入网关,因为ESP8266可以连接WiFi路由器,直接具备接云的能力,所以是直连设备,不需要网关。连网方式一定要注意,虽然ESP8266是WiFi模块,但是不能选择WiFi连网,因为我们使用的是通用的,AT指令控制的ESP8266,没有在阿里云生活物联网平台认证,不兼容阿里云生活物联网平台APP的配网协议,如果我们选择WiFi方式的话,配网过不去,程序设计就无法进行了。所以我们取个巧,使用蜂窝连接方式,跳过阿里云生活物联网平台APP的配网,我们可以用ESP8266模块自己的APP配网或是直接把WiFi的SSID以及密码写在程序里。然后数据格式选择JSON,不适用ID2认证,最后点击完成就行了。

图5

产品建立完成后,我们要先进行第1步的功能定义的设置,我们选择的是电工照明分类下的插座,所以阿里云生活物联网平台自动帮我们添加了电源开关的功能属性。所以这一步我们不需要做什么额外的设置,直接点击下一步:设备调试。

图6

我们新建设备的时候,为了跳过配网协议,所以故意选择了蜂窝的连接方式,所以我们随便选一个通过认证的模组就行,选哪个型号都不会影响我们的DIY设计。

图7

选好模组后,我们点击新增测试设备,每个产品下可以添加最多50个免费的测试设备,我们做DIY程序设计,50个足够我们用了。

图8

新增测试设备时,我们要输入设备名称,就叫D001吧,超子喜欢用这种编号命名设备,大家可以根据喜好自己设置设备名称,然后点击确定就行。

图9

然后会弹出激活凭证,也就是三元组信息,这个是登录阿里云生活物联网平台的认证信息,稍后我们修改51单片机C语言程序时要用到这些重要信息。然后我们点击下一步:人机交互。

图10

和使用STM32单片机做DIY设计时一样,我们使用阿里云生活物联网平台的公版APP,也就是云智能APP。我们打开上图中红圈所示的开关。

图11

然后我们点击未设置,选择一个界面。

图12

自己喜欢哪个,选一个就行,然后点击确认。

图13

然后页面下方,我们要配置APP功能,同STM32单片机DIY时一样,我们主要设置多语言管理,填写品牌名称,设备名称,产品编号等等,大家根据喜好自己填一个就。最下方我们看到了天猫精灵,插座是天猫精灵支持的品类,所以可以直接绑定天猫精灵的账号,用天猫精灵控制开关,非常方便。然后我们点击下一步:批量投产。

图14

我们勾选上充分了解的对勾,然后点击开发完成,到此我们整个项目的配置就算完成了,就下来我们要修改51单片机的程序了。

图15

首先看esp8266.c源文件,wifi_mode变量用于设置使用哪种方式进行配网,大家根据注释自行选择就行,如果选择0的话,SSID和密码要在esp8266.h头文件中设置。

图16

然后我们需要修改mqtt.h头文件中的6个字符串,最麻烦的就是第3个,也就是MQTT协议中CONNECT报文中的包含的密码信息。我们一个一个来,讲一下怎么修改。

我们先看第6个需要修改的字符串,服务器的域名,格式如下所示:

*.iot-as-mqtt.cn-shanghai.aliyuncs.com

我们把*号替换成我们自己设备的ProductKey,这个ProductKey就是我们新建设备时弹出的3元组信息,图9所示,以我新建的设备作为例子,我们修改一下,最终结果如下:

a1jWDQfzbVB.iot-as-mqtt.cn-shanghai.aliyuncs.com

然后看第4和第5个字符串, 都是Topic主题,第4个set是用来接收控制开关命令推送的Topic,我们需要订阅它,第5个post是用来往服务器上传数据的,这次的实验post不是关键点。那么这两个Topic再那找呢?看下图。

图17

测试设备点击红圈圈中的查看。

图18

然后在Topic列表下,可以看到post和set,根据自己设备的实际内容,修改程序中第4和第5个字符串即可。

接下来看第1个字符串,也就是MQTT协议中CONNECT报文中包含的客户端ID信息,格式如下:

*|securemode=3,signmethod=hmacsha1|

其中*号是设备名称,以我的设备为例,修改一下,结果如下:

D001|securemode=3,signmethod=hmacsha1|

然后再看第2个字符串,也就是MQTT协议中CONNECT报文中包含的用户名信息,格式如下:

*&#

其中*号是设备名称 ,#号是ProductKey,都是图9中的三元组信息,就以我的设备为例,修改一下,结果如下:

D001&a1jWDQfzbVB

最后再看最麻烦的第3个字符串,也就是MQTT协议中CONNECT报文中包含的密码信息,需要经过一步加密,我们先要构建待加密的明文字符串,格式如下:

clientId*deviceName*productKey#

其中*号是设备名称 ,#号是ProductKey,以我的设备为例,修改一下,结果如下:

clientIdD001deviceNameD001productKey a1jWDQfzbVB

加密用的秘钥是图9中,三元组信息里的DeviceSecret,我们网上找一个加密算法的网站。

图19

我们复制待加密的字符串和密钥的时候,一定要多检查,不要多空格,不要多回车,错一点加密后的结果都不会正确的,所以大家一定要小心。加密后的结果就是第3个字符串的内容,到此6个需要修改的字符串我们都修改完毕了,重新编译程序,下载到开发板就行了。然后我们再回到阿里云生活物联网平台。

图20

我们进入第3步,人机交互设置页面,我们点击红圈所示的内容,然后弹出页面,需要我们填写设备名称,以我的为例,填上D001,然后就可以生成我们需要的,添加设备的二维码,因为文章中不能出现二维码,所以超子就不展示了。到此我们本次51单片机的DIY程序设计,基本就完成了。

大家如果有什么想做的,或者有什么想法,都可以评论区留言告诉超子哦~~~

想要程序的小伙伴,可以举手哦~~~

相关问答

怎么用 51单片机 控制4个舵机工作,有程序的更好?

模拟输出4路PWM即可网上程序很多搞清楚舵机的控制信号就行了舵机的控制信号为周期为20ms高电平时间为1ms-2ms(不同型号时间可能会有微小差别)的pwm信号...

怎么用 51单片机 控制输出稳定连续的0~5V的电压?

51单片机IO口输出高电平时,接近VCC,可以按VCC来计算。你使用5V供电,IO输出高电压平应该按5V计算。LED限流电阻=(5V-led工作时端电压)/led工作电流LE...

51单片机 谁的教学最好?

郭天祥的51单片机教学好,51单片机是学习单片机非常好的入门书,还有教学视频,网上有卖的,非常适合学习应用的,非常好。郭天祥的51单片机教学好,51单片机是学习...

51单片机 学到什么程度才好学stm32?

不学51都可以学stm32啊,51是8位,还不如学习stm8,stm32和51有很大的区别,stm32的IO可以复用。stm32有IIC,spi,ADC,等,只要能理解stm32各种库函数,stm3...

51单片机 怎么多任务通信?

1、51单片机无法实现多线程任务,只能实现单线程。这是由51单片机的硬件决定的,否则多线程芯片就没有必要设计出来了。2、51单片机的硬件资源,如:定时器、计...

51单片机 中“ACC”怎么用?

A和ACC的实质是一样的,对应地址都是0E0H,只是汇编在使用时,在格式上取了两个名字。你看看它们的使用方法,有的地方用A,有的地方用ACC,会发现有一定的规律...

51单片机 中断怎么跳出去继续执行主程序的问题?

中断函数执行完成退出后,便自动返回主程序继续下一个指令的执行的;在中断函数里,不要做太多的事情,更不要有延时函数,除非其延时值比中断间隙要小,否则中...

51单片机 和stm32单片机学哪个好学?

51单片机和stm32单片机学51单片机好学些学习51不浪费时间,相反,手册简单易懂,资料多如牛毛,不用管STM32中各种库的互相学习和混合编程,51的操作寄存器方式...

51单片机 按键释放时候为什么不用消抖?

由于按键按下有消抖,所以按键释放的抖动绝对不会又被当作按键按下的信号按键按实了,就不会抖动既然检测到释放,就??会有假释放按下消抖是因为单片机处理...

51单片机 码速表说明?

51单片机码速表是一种常用的51单片机指令速查表,它包含了51单片机的大部分指令及其对应的操作码、机器码、指令周期、执行时间等信息。使用51单片机码速表可以...

猜你喜欢