今日头条
能做多大的单片机项目程序开发,就代表了你的敲代码的水平
不一定非要多好,但是至少在对应的时间能达到对应的水平。
新手前期做项目写代码以实现功能为主,特别是51单片机,你代码写好了内存也未必够你用。
在你没接触过大项目程序开发的时候,你根本不知道代码的好坏,在功能上有什么区别,
反正都能实现功能对吧?
///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我或者看个人简介就可以找到我哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///
等你真正碰到一些大项目的时候,如果你代码水平不行,肯定是做不出来的。
代码量大了你Hold不住,不知道怎么去整合,整合完以后功能之间也有冲突。
最后好不容易整合好了,又发现移植性太差,可扩展性太差,万一项目经理让你增加或者改个功能,你就挂逼了。
这个时候就是你该去思考怎么样把代码写得更好的时候了。
因为你知道痛点在哪里了,在针对这个痛点去找解决的办法。
最好的方法依然是去参考,写程序比你厉害的人。
你再针对性去学习,比如说看我录制的那个程序架构教程。
我那个教程就是我这么多年产品开发当中碰到问题,再学习解决,最终总结出来的精华。
文章字数可能比较多,打开头像关注我,之后翻找会比较容易,有特殊需求可以输入口令“林老师”查看干货。
如何让红外遥控产生38K的载波,实际上就是控制它的亮和灭的时间,低电平低时候亮,亮高电平的时候灭,让它亮灭亮灭就实现38K了,然后再搞循环,让它亮灭亮灭560个微秒,然后再把它关掉,这个时候就产生的是比特0。
如果当前这些位从这里面取出来,当前这位是1,如果说传出的比特为1的话,它产生的还是560个微秒的红外脉冲,也就是说不停的闪烁,产生38K的闪烁560个微秒,然后要把它熄灭,熄灭的时间和我们传输比特0的时间就不一样了,它要熄灭1.685个毫秒,这个大家要注意,这里说的这个传输比特0和传输比特1指的就是通和断的时间控制,通一定要注意是通的不是灯点亮通的,是这个灯的闪烁时间,闪烁的频率是38K,位1无红外光是1.685个毫秒,位0无红外光是0.56个毫秒。
这样的话就可以传输比特0和比特1,然后按照这个方式就可以去发射了,首先产生红外脉冲,也就是产生38K9毫秒,然后不产生4.5毫秒,这个就代表引导码,接着传输的是用户码,然后把这个用户码当中的每比特位都取出来,取出来之后来判断当前这个比特位是0还是1,这样的话就发射出去了,接着发命令码一样的道理,如果命令码当中的当前位置是0,那就是通38K560个微秒。
然后不同也就是断开,不让它产生红外光560个微秒,大家如果说看着代码在参考这个图就很容易理解,NEC编码的格式和解码都是按这个来做的,编码格式就是第一步先发引导码,载波发射9毫秒加载波不发射4.5毫秒,载波一发射就是这个管子产生9毫秒的38K的闪烁,这个就是这个载波的含义,然后接着发低八位低用户码和高八位的用户码的反码,然后接着就是八位的数据码和八位数据码的反码,这些位里面的数据都是要取出来,它当前的位是0还是一,然后按照这种方式去传输0和传输1,最后就是结束码,结束码上就是发送比特位0。
下一期会给大家讲解如何来实现38K的载波,以及如何来利用这个协议来编写代码,我们的课程会用软件来介绍如何实现红外遥控的编码功能,有兴趣可以关注一下,大家可以先看一下上面这个图简单介绍一下38K载波如何来实现,实际上38K载波一般是用的是1 : 3的,也就说发射的载波的它的红外占空比一般是1 : 3。
全部0条评论
快来发表一下你的评论吧 !