触摸屏与单片机通讯C语言程序,讲述如何实现单片机与触摸屏的通信
描述
随着触摸屏的应用和产量的增加,价格下降。因而有可能使用触摸屏作为单片机控制设备的键盘和显示装置,提高单片机控制设备的档次。触摸屏与PLC联合使用时,触摸屏的主要功能是:
①显示PLC输入,输出端13或辅助继电器的开关状态。
②用触摸按键强制PLC输入,输出端口或辅助继电器的开/关。
③显示PLC中定时器、计数器和数据寄存器的内容。
④用触摸屏键盘把设定数据送入PLC的数据寄存器中。
可规纳成触摸屏与PLC问对应地址的数据位、字的读和写。因此可以利用MOD—BUS通信协议来实现触摸屏与单片机的通信和控制,或触摸屏与多台单片机通信,构成一个集散控制系统。
1 触摸屏与单片机的硬件联接
采用MT500触摸屏与AT89C52单片机一对一通信。把触摸屏的PLC232 9针插座与带有RS232接口的AT89C52单片机相连接。如图1所示。注意:通信电缆DB9是2-2、3—3、5-5。
这种接法的电缆也可用于与PC机通信或做通信摸拟。作PC机通信时在连接PC机端的DB9短接4—6、7—8。由于AT89C52单片机无RS232接口,因此需要扩展一片MAx232,把RXD、T×D的TTL电平转换成RS232电平。
图1 触摸屏与单片机通信联接方法
2 建立触摸屏与单片机的内部存储器地址对应关系
打开触摸屏组态软件,从[编辑]下拉菜单中选[系统参数],弹出如图2所示参数设置对话框。触摸屏的系统参数中PLc类型设置成MODBUS RTU,通信参数设置必需与单片机通信参数设置一致。通信口类型设置成RS232,数据位设置成8位,1个停止位,波特率9600,校验位设置与单片机编程一致,PLC站号是单片机定义的站地址一样,站号需从1开始。参数设置完成,按确定键。
图2参数设置对话框
这时触摸屏的可操地址范围如表1所示。
表1 触摸屏在设置成MODBUS RTU摸式时可操作地址范围
Ox1—Ox9999、1×1—1x9999用于位操作的存储器,3xl一3x9999、4xl一4x9999用于字操作的存储器。lxl一1x9999作为输入节点(只读)位操作的存储器,用作触摸屏上的位状态指示灯。Oxl~oX9999可读可写,可作位状态指示灯、按键、触发控制摸位等。3xl-3x9999作为输入数据存储器,可作触摸屏中的数值显示元件和多状态指示灯等。4xl一4x9999可读可写,可作触摸屏中的数值输入元件和多状态设定元件等。其地址采用十进制数表示。OxO、lx0、3xO、4x0不可使用,否则编译时会出错。
在单片机中可自由定义分配与触摸屏相对应的寄存器地址。
如假设P2、P3口为输入口,P0、P1为输出口。为了便于单片机编程,可以把P2、P3口的引脚状态映射到20H、21H,与触摸屏lxl一1x16相对应。把P0、P1输出口数据存到寄存器22H、23H,与触摸屏0xl一0x16相对应。24H一28H作为位操作存储区,与触摸屏0x16-1x56相对应。把30H-3F:H设置成8个数据显示寄存器,与触摸屏3xl-3x8相对应。把40H一4FH设置成8个数据设置寄存器,与触摸屏4x1-4x8相对应。这样可列出触摸屏与单片机通信地址对应表,位地址如表2所示。字地址如表3所示。
表2摸屏与单片机通信位地址对应表
表3摸屏与单片机通信字地址对应表
3 触摸屏组态软件编辑
打开触摸屏组态软件,先按上述方法设置[系统参数],光标移到[窗口/元件选择列表框],单击鼠标右键,新建一个窗口,按要求填写对话框。按确定键,出现一个编辑窗,下面以设置一个位状态显示元件(指示灯)和一个数值显示元件(数据显示窗)为例,说明触摸屏编辑的地址与单片机内的地址建立相互联系的方法。现以要显示单片机中位20H(24H.0)的状态和显示40H、41H的数值为例。把鼠标点击元件工具箱中的元件图或从菜单[元件]的选项中拖出一个位状态指示元件。并弹出位状态显示元件属性对话框。
在读取地址栏[设备类型]中选0x,[设备地址]写入17,见表2,0x17对应20H,选择适当的图形、标签、大小和位置。按确定键。对话框消失,在编辑窗口出现一个位状态显示元件L1。一旦建立了正确的通信关系,则这个位状态显示元件的不同显示状态反应了单片机中位20H状态的变化。
把鼠标点击元件工具箱中的元件图或从菜单[元件]的选项中拖出一个数值显示元件。并弹出数值显示元件属性对话框。如图3所示。
图3数值显示元件一性对话框
在读取地址栏[设备类型]中选叙,[设备地址]写入1,见表3,3xl对应40H(高位),41H(低位),选择适当的图形、标签、大小和位置。按确定键,对话框消失。
在编辑窗口出现一个数值显示元件,一旦建立了正确的通信关系,则这个数值显示元件显示单片机中位40H(高位),41H(低位)的数值。
4 MODBUS RTU(远程终端设备)通信协议简介
触摸屏与单片机通信是主从通信方式,触摸屏是主机,单片机是从机。触摸屏根据画面编辑的控件,不断发送位、字的读或写的指令。单片机不断应答指令。
本文介绍MODBUS RTU通信格式,字符帧由8个数据位,1个起始位,1个停止位,1个奇偶校验位(当不采用校验位时,则设置2个停止位)。发送或接收每个字节,必需经过一次CRC出错校验运算。运算方法详见参考文献。
一个指令帧由从机地址、功能码、数据域和CRC校验码组成。数据域由读、写位或字数据的十六位首地址(高位在前,低位在后)、十六位操作数(高位在前,低位在后)、最后为十六位CRC校验码(低位在前,高位在后)。发送或接收前后必需有大于3.5MS的延时,以示一个指令帧的开始或结束。地址码和功能码均为一个字节。
下面举例说明用MODBUS RTU通信协议的通信格式:
1)读触摸屏指定首地址0x17对应单片机中首地址20H的一个字(十六位)的位状态。
触摸屏发送通信格式:
单片机应答通信格式:
触摸屏位地址0x17对应单片机首地址24H.0,回送24H.
0~20H.7,25H.0-25H.7,十六位状态。
2)读触摸屏指定首地址4xl对应单片机中首地址40H的一个字(40H。41H)的数值。
触摸屏发送通信格式:
单片机应答通信格式:
3)将触摸屏指定地址位0x18对应单片机中21H(24H.1)位置1或清零。
触摸屏发送通信格式:
单片机应答通信格式:
表中置位命令0FF00H为置1,0000H为清零。
4)将触摸屏指定首地址4x2对应单片机中首地址42H的一个字42H,43H写入一个设定值oal64H。
触摸屏发送通信格式:
单片机应答通信格式:
用类似的方法,根据项目要求,选择控件和编辑控件属性。
建立触摸屏与单片机的地址联系,按照MODBUS协议编写单片机与触摸屏的通信程序。则可实现用触摸屏显示单片机中位状态变化,设定数值或显示数值。
打开APP精彩内容
点击阅读全文
触摸屏与单片机通讯C语言程序,讲述如何实现单片机与触摸屏的通信相关推荐
- 触摸屏与单片机通讯c语言程序设计,讲述如何实现单片机与触摸屏的通信
随着触摸屏的应用和产量的增加,价格下降.因而有可能使用触摸屏作为单片机控制设备的键盘和显示装置,提高单片机控制设备的档次.触摸屏与PLC联合使用时,触摸屏的主要功能是: ①显示PLC输入,输出端13或 ...
- 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信
描述 STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信.串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口. 51单片机的串口引脚为P3.0引脚与P3.1引脚 ...
- 51单片机温度控制C语言程序详解,基于单片机的温度控制系统设计(附程序清单及原理图).doc...
您所在位置:网站首页 > 海量文档  > 电子工程/通信技术 > 电子设计 基于单片机的温度控制系统设计(附程序清单及 ...
- 单片机光敏电阻c语言程序怎么写,STC12C5A60S2 单片机,光敏电阻,步进电机,制作寻光器,始终指向光源...
光纤传感专业的我转行做了嵌入式软件,可是心系光学专业啊.下班回来发现个 stc 的 51 单片机最小系统,是我之前做的,好久没碰了.正好手边有两个光敏电阻,结合着步进电机,琢磨着做一个寻光器玩玩,让箭 ...
- 单片机 spwm c语言程序,基于STC系列单片机的SPWM波形实现
摘要:文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA实现SPWM控制软件的编写过程,并 ...
- 89c51c语言程序,89C51单片机计算器C语言程序.doc
89C51单片机计算器C语言程序 89C51单片机[计算器]C语言程序 89C51单片机[计算器]C语言程序2010-12-15 16:54/*89C51单片机[计算器]C语言程序*/ /*P2位选P ...
- 触摸屏与单片机通讯c语言程序设计,触摸屏与单片机的通信实现
随着触摸屏的应用和产量的增加,价格下降.因而有可能使用触摸屏作为单片机控制设备的键盘和显示装置,提高单片机控制设备的档次.触摸屏与PLC联合使用时,触摸屏的主要功能是: ①显示PLC输入,输出端13或 ...
- 51单片机c语言程序执行顺序,51单片机程序执行流程详细分析
这里是一个循环,根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去.很显然这是一个循环,那么RO的值是多少呢,在以 ...
- 单片机流水灯全亮c语言程序,终极流水灯单片机C语言程序.doc
终极流水灯单片机C语言程序 #include #include #define uint unsigned int sbit beep=P2^3; void ji_ou(); void sx(); v ...
- 单片机红外线c语言,自己写的51单片机的红外线遥控接收程序(C语言)
自己写的51单片机的红外线遥控接收程序(C语言) (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 //51单片机做的红外遥控实验(C ...
最新文章
- alexnet训练多久收敛_如何将深度学习训练速度提升一百倍?PAISoar 来了
- mysql不存在就批量新增_mysql批量插入,存在则修改,不存在则插入
- 【填坑】博客搬家造成的博客重复问题
- Topcoder Asia Programming Competition
- 线上线下同步开启安全盛宴 BCS 2020将于8月7日正式开幕
- linux 查看网络流量
- html登录注册页面验证代码,登录注册页面验证码问题
- 【更新于2019】SCI EI 索引最新查询方法(已验证有效)
- 终于,连字节、腾讯都烧不起钱了
- poj 1129 Channel Allocation——四色定理
- 工业机器人介绍及机器人学概述
- mysql中ceil的函数语法_MySQL ceil()函数
- word图文混排复制到TinyMCE图片不显示
- 如何自己设计一个扫码登录
- QQ浏览器怎么同步通讯录?QQ浏览器同步通讯录的方法
- Hyperf权限管理组件hyperf-permission发布
- Android大型实战:《亲信,优雅的从入门到进阶》-刘桂林-专题视频课程
- mysql高级查询练习题_MySQL高级查询习题
- 蓝桥杯单片机比赛学习:8、PWM的基本原理之呼吸灯
- 字节跳动P0级事故:实习生删除GB以下所有模型,差点没上头条......
热门文章
- 提升效率!技术宅、学生党必备!大学四年使用的几十个高效工具都在这里了
- php卡盟主站_《卡盟源码秒卡购》运营级别卡盟系统源码支持API站对接站[带有SUP+商户+支持秒搭建主站]...
- JZOJ5946. 【NOIP2018模拟11.02】时空幻境(braid)
- Python:第六次全国人口普查数据分析及可视化(pandas、matplotlib)
- 家用智能门锁常见的开锁方式,主要有哪些?
- [安全防护]诺顿产品之Symantec Endpoint Protection
- ssh1—xshell免密登录
- 【Web文件上传下载】各种类型文件对应的content-type
- jsp九大内置对象的使用详解
- ICMPV6协议及NDP协议