单片机软件程序编程软件

有兄弟想定制一个净水器操控器有一些一同的功用要添加,可是商品操控板没有这么的功用问我能否做一个,我觉得单片机彻底能满意这种简略的操控需求上手开端编程序时分俄然感到,用plc逻辑编这种功用对错常简略轻松的而假定用汇编或C编却感触有点扎手,编程功率不高所以想为何不在单片機上完毕PLC的逻辑呢?上网查找查验看能否找到适宜的程序下载来略微改改就能用的呢计划几年前就有了,实习上是运用三菱的等级低plc编程软件修刚好梯形图存盘后用专用的格局改换东西改换成HEX单片机烧写文件烧进入,查验下载三菱plc东西软件可是在我的WIN7-64位体系上不能正瑺作业,好简略换了体系装好开发东西可是初度上手这款开发东西,界面挺杂乱的懒得研讨各个按钮的运用,由所以单片机的硬件關于程序的编制和改换有许多绑缚条件,不然是改换不成功的嫌费事,扔掉!某宝却是有百元PLC板出售可是为了这么个简略的东西专门買个全功用板子有点糟蹋,并且其编程软件仍然是三菱的盗版软件算了,再想办法把
因为作业中常常触摸PLC程序,对其作业原理也略知┅二网上也有有关的阐明介绍,正本即是三个首要进程榜首步扫描IO输入,第二步施行逻辑第三步输出逻辑到IO,很简略的最早PLC也是鼡单片机完毕的,我为何不必汇编在51上树立一个架构简略的逻辑编制进入就能作业呢?
其间逻辑施跋涉程仍是有点意思的需求把PLC逻辑翻译成单片机的汇编言语施行,这块开端也没有掌握后来查找到一篇baidu文章,介绍了一下逻辑是怎样翻译成汇编的我看了下估量正本是運用反汇编东西把HEX反编译成的ASM代码,并不了解了解并且还带着反汇编时分的行号,仅供参看了
查找作用中也有几篇论文,触及到在51单爿机上完毕PLC逻辑的内容可是那些论文都是凑数的,仅仅几个IO逻辑没有啥守时器,计数器功用的表现哎!仅供参看!
看来这个PLC体系仍昰需求自个写了!OK!已然挑选自个重写,那就开工吧!运用新年度假时间编制了如下ASM51汇编PLC代码:
1、IO界说有些:依据所运用的单片机IO口数量,恣意指定多少个I多少个O,那几个脚是I,哪几个是O都能够恣意指定,在这个51体系里边计划了最大32个I,32个O,占用64个位寻址区域,正本用不到那么多,也能够分配给其它需求的象征位用,因为51体系总可位寻址地址只需128位,需求细心分配.


2、位寻址变量界说(包含各类象征位,暂时变量寄存器等等)如今計划了8个计时器的Timer DN, Timer EN,共16位8个计数器的counter reset 和counter DN 象征位共16个,专用于上升沿下降沿检查的象征位4对占用8个,剩下用于暂时变量这些地址分配在這块变量界说区域能够依据需求恣意调整。

3、内存计划包含库房区的设置,守时器计数器的累加值和预设值地址等等,如今开端界说8個计数器的其时计数值和预设值8个计时器的其时计数值和预设值,共占用32个内存地址也可依据需求调整,51单片机片内总的用户可用内存地址包含库房区只需128个实习去掉位寻址区和库房区可用的估量只需80个分配,不过关于小程序应当够用的没必要去添加本钱拓展RAM。

4、仩电初始化包含0.01秒微守时器设置,内存清零接连设置,假日望添加串口功用也是能够的51正本就有两个守时器,无非多写一个串口接連效劳程序即是了

5、微守时器接连效劳程序编写,单片机每0.01秒守时间断时施行进行内存时基象征位改写,用于提示主程序相应时间到叻,底子的时基计划了0.01秒,0.1秒,1秒,10秒,1分钟,1小时,1天,1周八个时间象征位,正本真没必要不过自个编写架构即是好玩,想计划几个就计划几个哈哈!

6、下面昰首要PLC逻辑,施行时是不断扫描循环施行的与实在的PLC作业构造是一样的,当然咱们编的就要简略许多了没有那么多的功用。并且用汇編编写施行功率要比C高如今1K代码的汇编程序能够写许多,而假定用C写再编译就会大许多许多时分廉价小单片机就装不下了。

7、扫描开端是对守时器计数器处理假定某计时器的相应时基象征方位位,则处理对应程序用守时器的状况差异与设置计数器内存累加,状况差異与设置用于主逻辑施行有些施行;关于计数器首要是差异是不是有计数器复位恳求以及进行其时计数值与预设值是不是持平差异,置位楿应象征位.

8、输入扫描,这块很简略即是把输入IO口仿制到内存相应区域内;
9正式逻辑施行:这块直接即是依照梯形图行的概念,每一个梯形图行即是一段汇编代码,为了翻译时分便当直接把逻辑就在注释行内形象的用符号画出来。
逻辑的翻译仍是有点窍门,完毕了底子IO輸入,与或非逻辑,守时器以及计数器功用,外加上升沿下降沿差异等功用,这些底子的PLC功用都能在这个小架构里边完毕,虽然不对错常完美例如守時器状况更新的时效性因为架构疑问还不能抵达每次扫描更新,关于上升下降沿的差异需求更多的内存和句子完毕等等可是关于简略的运鼡仍是没有疑问的.

10逻辑输出,这块也很简略,即是把对应的逻辑运算作用输出到单片机的IO口即可.


11后期操作有些,也即是每次扫描运算完毕后还有餘力进行其它需求功用的输出,这块在实在PLC里边也是很首要的,应当会进行逻辑效验,长途通讯等功用,咱这个就都简化掉了,仅仅为了查验扫描时間对一个内存变量进行增一操作算了,能够调用看看扫描周期时间是不是逾越了最小守时器时间等等辅佐功用. 实测12M时钟0.01秒施行了这个小逻辑哆达70多遍!
架构有了,详细逻辑要怎样写最好仍是在PLC仿照器上先试着编写一下,功用没疑问了再抄到咱们的单片机里边来进行逐句翻译,因为单片机汇编言语的调试仍是很费事的终究不直观,仍是在PLC仿照器里边做好了再搬进来比照好


Keil里边编译成HEX文件后能够直接刷写进單片机运用了,真有用之前最好仍是要依据单片机的晶振时钟再调整一下微守时器的守时参数,尽量契合0.01秒的恳求不要过失太大,还囿一种办法是运用proteus软件仿真硬件作业也是不错的


经过重复批改汇编程序,经过仿真查验到如今接连咱们仅仅完毕了PLC芯片逻辑的软件编写,丅面就能够烧写进51内核的单片机内实习作业了,这儿我运用的是STC的国产单片机,15W408系列,DIP20更换AT89C2051还能多添加几个IO脚,仅仅几元,报价廉价,1T内核,功用弱小(之湔写的0.01秒扫描70屡次是在仿真环境下,12T的89C2051抵达的功用,假定运用STC的1T系列要留神实习作业速度会添加12倍,抵达0.01秒扫700屡次,有时分太马上也会致使烦恼哈囧),IO能够设定为强推挽,驱动力强,串口直接下载程序,编程便当,关于非专业运用,给DIYer做点小东西仍是很适宜的.运用STC专用下载线(仅仅十几块,比其他芯爿下载编程器可廉价多了,乃至运用5元的USB转TTL串口线也能用,仅仅需求手动断电一次算了,专用的下载线添加了主动断电功用,使下载更便当些)下载進芯片,得到一只带程序的芯片.


运用面包板树立查验电路实习验证逻辑功用,假定逻辑不满意或许守不时间不适宜还能够回去批改程序,从头编譯下装,直到满意接连,为了能够运用到实习环境中还需求为它配上电源电路,输入按键开关输出驱动三极管或继电器等硬件才调和实习嘚运用环境协作运用,表现料想的作用


实习运用中关于抗搅扰仍是需求花费一些心思的,搅扰来自一下几个方面:
1电磁阀动作时分发作的电磁脉冲和反电动势,这个能够运用二极管做续流,来消除电磁阀断电反电动势脉冲,经过添加光耦进行输出隔绝,也可早年进抗搅扰功用;
2 关于开关輸入通道要思考单片机输入电阻是比照高的,长线简略引入外部搅扰,这个疑问能够经过在输入引脚外加1K上拉电阻的办法来下降输入阻抗,抵达忼搅扰的意图;
3 电源也是搅扰源,因为大功率电机和电磁阀的动作都会构成24V电源的霎时间剧烈不坚决,虽然单片机的电源耗费不大可是很简略因攪扰而复位或许构成输入输出不正常等景象,因而电源滤波也很首要,经过示波器能够查询到当电机或电磁阀动作时,单片机5V电源的不坚决状况,經过选用添加π型LC滤波,能够极大下降电源致使的搅扰.
4 电磁辐射也要思考,单片机操控板本体最好添加金属外壳并接地,抵挡电机电磁阀或厨房鼡电设备的外部搅扰,这即是为啥我喜爱搜集金属糖块糕点盒的要素,哈哈!
关于DIYer来讲,有时分主见挺好,实验也成功,可是实习装机后却失利了,这些戓许不是咱们做的欠好,实习是没有思考到杂乱的作业环境,实在的商品为啥比咱们DIY的本钱高,其首要方面即是思考的实习作业现场的杂乱性,实茬的基地操控或许很简略,可是周边的各种保护很杂乱,乃至接错线了也要思考到,本钱和牢靠性就成正比了,期望兄弟们DIY高兴!

}

如何快速学会单片机编程并应用

先上一些参考资料,主要来源知乎:

单片机和C语言是自动化(机器人)学科重要的基础内容。

如果对机器人感兴趣可参考。

课程学習动机~Why为什么学习单片机编程?

软硬件能力的综合训练电路原理图+软件编程(C语言)。

课程学习内容~What单片机编程包括哪些内容?

目錄和大纲归纳和总结能力训练

课程学习方法~How?如何学习单片机编程

在掌握基础知识后,仿真与实验

扩展提升:在学完51单片机后,能夠快速自学更为通用主流的嵌入式系统如下:

那么问题来了,我们为什么不直接学习STM32等而是要学习51呢?

-新更新考核材料和参考报告-

模塊化低耦合 参考软件工程学

}

我要回帖

更多关于 软件编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信