微控制器在工控方面的使用对策..doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微控制器在工控方面的使用对策.

微控制器在工控方面的使用对策 前言 单片机是微型计算机的一个重要的分支。自1976年Intel公司推出第一款8位单片机MCS—48开始,单片机在短短几十年间获得了长足的发展,从最开始的4位机到更高性能的8位机,到速度更快,片内资源更为丰富的增强型8位机、16位机甚至32位机,其性能不断增强,功能也日益完善。目前64位机已经面世。在这微控制器大家族中,MCS—51、52系列兼容机借助其本身雄厚的基础与实力,重回单片机霸主的宝座。既然微控制器功能如此强大,那是否可以像PLC一样,在工业自动化程控中得到普及。 本论文将分六章介绍如何用单片机构造一个PLC小型控制系统。 该系统包括:(一)设计一个12进8出带通讯功能的控制板 (二)输入输出部份程序的编写 (三)外置EEPROM外部数据存储器的编写 (四)STC系列内置EEPROM单片机的编写 (五)多机通讯程序的编写 (六)与PC通讯的编写 /*********************************************************/ 设计一个12进8出带通讯功能的控制板 在线路设计构造上分为:输入部份、输出部分、CPU部份、RS485通信部份、外部EEPROM部份。接线端口J1、R18、D1—D12、U1—U3、R1、R2共同组成输入部份,其中D1—D12为发光二级管,主要是用作输入显用,R18这它们总的限流电阻。U1—U3为光耦型号TLP_521_4。R1、R2为9脚电阻排,阻值为4.7K—10K均可。输出部份:KA1—KA8为输出小型继电器(均为常开输出方式)。U10型号ULN2803为8位电流驱动放大器,高电平触发。R10—R17、D14—D21组成输出显示,即当某个KA得电吸合时与之相对应的LED就会被点亮。J3为输出接线端子。CPU部份:U5为DIP_40封装形式的单片机,可选用AT89系列,也可选用STC系列等。C1为单片机的上电复位电容。C2、C4、Y1为单片机晶振系统。RS485通信部份由R3—R5、R7—R9、U6、U7、C3、D13组成,其中U6为75176,U7为NE555。外部EEPROM部份只有一块24C16串口寄存器(2K×8bit),线路中已将A0—A2(地址码)端相联接并且接地。 外部I/O接线图如图(二)。 为了提高控制板的他稳定性,输入输出均采用全光耦隔离设计。如果输入信号线较远,可以将12伏的直流电改为24伏,与此同时也要将R18改为2.2k左右,小型继电器线圈电压也改为24V即可。 (图二) /*********************************************************/ (二)输入输出部份程序的编写 2.1如何跳过按键抖动 实际上,在人按下一次按键时,并不是理想中的只出现一次干净利落的低电平脉冲,由于按键中弹性元件或用导线替代按键时导线弹性、触点的接触电阻和电路的分布电容的影响,在按下按键或抬起按键时,脉冲前沿和后沿均会出现一系列尖毛刺,如下图三所示: (图三) 而单片机运行的速度特别快,结果在按下一次按键时单片机却检测为多次按键。为避免出现这种情况,通常:(一)根据按键抖动的频率和人们按键的速度,调用10ms左右的延时程序来跳过按键抖动的时间:(二)检测按键按下后稳定的低电平即可。 据此,在按键判断程序中则要调用一个延时10ms的延时子程序。 ;-----------以下是延时汇编程序,延时约10ms------------------ ;时间继电器 KT10MS: MOV R5,#0BH F1: MOV R7,#02H F2: MOV R6,#0FFH F3: DJNZ R6,F3 DJNZ R7,F2 DJNZ R5,F1 RET ;-----------以下是延时C程序,延时约10ms子函数------------------ /*====================================== */ void kt10ms(unsigned int count) /*在这个调用子函数中设计了一个计数器count,*/ { /*设计用时为1则为10ms,如为100则延时为100*10ms */ unsigned int

文档评论(0)

dbtx + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档