IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> PCM开发板模块实验指导--工业触摸屏通讯实验 -> 正文阅读

[嵌入式]PCM开发板模块实验指导--工业触摸屏通讯实验

????????22---工业触摸屏通讯实验:

????????????????硬件需求:PC机,PCM模块一个,24V电源一个,工业触摸屏(威纶MT506S)一个,

???????????????? TTL转RS232模块一个(或者使用MAX232芯片),microUSB线;

????????????????软件需求:PCM编译软件,电脑端串口调试助手,触摸屏编辑软件(EB500);

????????????????供电方式:USB线接PC机供电, 24V电源给触摸屏供电;

????????????????连接电路:图17

????????图17 ????????工业触摸屏通讯实验电路图

?

????????图18 ????????触摸屏编辑软件界面

????????????????????????PCM开发板模块带有MODBUS RTU从指令,可以与具有MODBUS RTU通讯功能

????????????????的工业触摸屏通讯。本实验使用威纶公司的一款工业触摸屏MT506S与本开发板通讯,

????????????????触摸屏工作在主模式,开发板工作在从模式,图19--触摸屏编辑软件系统参数设置画

????????????????面,显示了触摸屏编辑软件的系统参数设置。

?

????????图19 ????????触摸屏编辑软件系统参数设置画面

????????????????????????本实验开发板与触摸屏采用RS232通讯,通讯地址设置为0,连接电路参见图17--工

????????????????业触摸屏通讯实验电路图。开发板使用串口2与触摸屏通讯,USB接口接电脑,通过USB

????????????????串口输出调试信息。

????????????????????????开发板模块的输入寄存器Xn为只读寄存器,编号为0-10,共11个,这11个输入口的

????????????????显示,在触摸屏的最左边的输入列(参见图18),一个输入口对应一个指示灯,触摸屏

????????????????使用位状态显示元件,X0-X10依次对应的触摸屏的位状态显示元件的读取地址为0x1-

????????????????0x11,图20为输入点X0设置画面。

????????????????????????当输入口为低电平时,指示灯灭,为高电平时,指示灯亮,用户可以使用一根导

????????????????线,把输入口连接地端,来看看触摸屏上的指示灯变化。注意X9因为已经接串口通讯,

????????????????所以X9不要使用了;X10被系统保留,也不要使用。

?

????????图20 ????????输入点X0设置画面

????????????????????????开发板模块的输出寄存器Yn为可读写寄存器,编号为0-12,共13个,这13个输出口

????????????????的显示,在触摸屏的最右边的输出列(参见图18),一个输出口对应一个切换开关元

????????????????件,Y0-X12依次对应的触摸屏的切换开关元件的读取地址为0x17-0x29,读取地址与输出

????????????????地址相同,图21为输出Y0设置画面。

????????????????????????因为输出口是可读写寄存器,所以在触摸屏的输出列触摸相应的按键,可以改变输

????????????????出口的电平,高电平为1,低电平为0。或者用户可以接一个LED指示灯来观察电平变

????????????????化,或者使用万用表来测量电平值。

?

????????图21 ????????输出Y0设置画面

????????????????????????开发板模块的中间寄存器Mn为可读写寄存器,编号为0-199,共200个,实验只演

????????????????示了M0,M1,M2这3个,M0-M2依次对应的触摸屏的切换开关元件的读取地址为0x33-

????????????????0x35,读取地址与输出地址相同。点击触摸屏上的开关,可以改变M0-M2的电平值,图21

????????????????为中间寄存器M0设置画面。

?

????????图22 ????????中间寄存器M0设置画面

????????????????????????开发板模块的数据寄存器Dn为可读写寄存器,编号为0-999,共1000个,触摸屏可

????????????????以读写任何一个寄存器的值,但本实验使用D0-D6作为可读写寄存器,D7-D13作为只读

????????????????寄存器。

????????????????????????触摸屏可读写元件使用数值输入元件,在屏幕的读写列有D0-D6,共7个元件,设置

????????????????元件的读取地址如下表所示:

????????????????????????数据寄存器 ????????读取地址 ????????字数

????????????????????????D0 ????????????????????????4x1 ????????????????2

????????????????????????D1 ????????????????????????4x3 ????????????????2

????????????????????????D2 ????????????????????????4x5 ????????????????2

????????????????????????D3 ????????????????????????4x7 ????????????????2

????????????????????????D4 ????????????????????????4x9 ????????????????2

????????????????????????D5 ????????????????????????4x11 ??????????????2

????????????????????????D6 ????????????????????????4x13 ??????????????2

????????????????????????因为开发板模块的数据寄存器Dn是4字节数据(或者2个字),所以在触摸屏的元件

????????????????设置字数那里要选择2个字,同时下一个元件的读取地址也要相应的偏移2个字。图23-可

????????????????读写D0寄存器设置画面显示了D0寄存器的设置画面。

????????????????????????触摸D0-D6的任意一个按键,可以输入数值,输入后就改变了Dn寄存器的值。

????????????????????????D7-D13寄存器也是可读写寄存器,本实验为了演示只读功能,所以这几个寄存器我

????????????????们使用数值显示元件来显示值。设置元件的读取地址如下表所示:

????????????????????????数据寄存器 ????????读取地址 ????????字数

????????????????????????D7 ????????????????????????3x15 ????????????????2

????????????????????????D8 ????????????????????????3x17 ????????????????2

????????????????????????D9 ????????????????????????3x19 ????????????????2

????????????????????????D10 ??????????????????????3x21 ????????????????2

????????????????????????D11 ??????????????????????3x23 ????????????????2

????????????????????????D12 ??????????????????????3x25 ????????????????2

????????????????????????D13 ??????????????????????3x27 ????????????????2

????????????????????????触摸屏中地址前缀4x表示可读写,3x表示只读,所以D7-D13的读取地址使用3x前

????????????????缀,但地址编号还是按顺序依次排列,图24-只读D7寄存器设置画面显示了D7寄存器的

????????????????设置画面。

?

????????图23 ????????可读写D0寄存器设置画面

?

????????图24 ????????只读D7寄存器设置画面

????????????????????????实验中我们在程序中把D7-D13寄存器每2秒加1,可以看到触摸屏上的值也会每2秒

????????????????加1,在图-串口输出数据中也会显示这几个寄存器的值。

????????????????????????开发板模块暂不支持浮点寄存器Fn的读写,不过用户可以使用指令mul Fn K Fn和

????????????????mov Fn Dn,先把浮点数扩大K倍(根据精度选择K值为10-一个小数位,100-2个小数位,

????????????????1000-3个小数位),然后把浮点数转换成整数,然后让触摸屏读取寄存器Dn,并设置好小

????????????????数位数。这样做会损失一点点精度。

????????????????????????实验程序如下:

????????????????1 main?//主程序入口

????????????????2 ????????modbusrtuc 0 2 115200 s0 //初始化为从模式,本机站号0,使用串口2,波特

????????????????????????????????????????????????????????????????????????//率115200

????????????????3 ????????mov 1 d0 //D0存入1

????????????????4 ????????mov 2 d1 //D1存入2

????????????????5 ????????mov 3 d2 //D2存入3

????????????????6 ????????mov 4 d3 //D3存入4

????????????????7 ????????mov 5 d4 //D4存入5

????????????????8 ????????mov 6 d5 //D5存入6

????????????????9 ????????mov 7 d6 //D6存入7

????????????????10 ????????mov 8 d7 //D7存入8

????????????????11 ????????mov 9 d8 //D8存入9

????????????????12 ????????mov 10 d9 //D9存入10

????????????????13 ????????mov 11 d10 //D10存入11

????????????????14 ????????mov 12 d11 //D11存入12

????????????????15 ????????mov 13 d12?//D12存入13

????????????????16 ????????mov 14 d13 //D13存入14

????????????????17 ????????while 1?//无限循环

????????????????18 ????????????????delay 2000 //延时2S

????????????????19 ???????????????????????in y0 d20 //读取输出口YO的值到D20

????????????????20 ???????????????????????in y1 d21 //读取输出口Y1的值到D21

????????????????21 ???????????????????????in y2 d22?//读取输出口Y2的值到D22

????????????????22 ???????????????????????in y3 d23 //读取输出口Y3的值到D23

????????????????23 ???????????????????????in y4 d24 //读取输出口Y4的值到D24

????????????????24 ???????????????????????in y5 d25?//读取输出口Y5的值到D25

????????????????25 ???????????????????????in y6 d26?//读取输出口Y6的值到D26

????????????????26 ???????????????????????in y7 d27?//读取输出口Y7的值到D27

????????????????27 ???????????????????????in y8 d28?//读取输出口Y8的值到D28

????????????????28 ???????????????????????in y9 d29 //读取输出口Y9的值到D29

????????????????29 ???????????????????????in y10 d30 //读取输出口Y1O的值到D30

????????????????30 ???????????????????????in y11 d31?//读取输出口Y11的值到D31

????????????????31 ???????????????????????in y12 d32 //读取输出口Y12的值到D32

????????????????32 ???????????????????????prints "d0=%d,d1=%d,d2=%d," d0 d1 d2?//输出D0,D1,D2值

????????????????33 ???????????????????????prints "d3=%d,d4=%d,d5=%d," d3 d4 d5?//输出D3,D4,D5值

????????????????34 ???????????????????????prints "d6=%d\r\n" d6 //输出D6值

????????????????35 ???????????????????????prints "d7=%d,d8=%d,d9=%d," d7 d8 d9 //输出D7,D8,D9值

????????????????36 ???????????????????????prints "d10=%d,d11=%d,d12=%d," d10 d11 d12?//输出D10,D11,D12值

????????????????37 ???????????????????????prints "d13=%d\r\n" d13 //输出D13值

????????????????38 ???????????????????????prints "y0=%d,y1=%d,y2=%d," d20 d21 d22?//输出Y0,Y1,Y2值

????????????????39 ???????????????????????prints "y3=%d,y4=%d,y5=%d," d23 d24 d25 //输出Y3,Y2,Y5值

????????????????40 ???????????????????????prints "y6=%d,y7=%d,y8=%d," d26 d27 d28?//输出Y6,Y7,Y8值

????????????????41 ???????????????????????prints "y9=%d,y10=%d,y11=%d," d29 d30 d31?//输出Y9,Y10,Y11值

????????????????42 ???????????????????????prints "y12=%d\r\n" d32 d33 d34?//输出Y12值

????????????????43 ???????????????????????if m0 //判断m0

????????????????44 ??????????????????????????????????????prints "m0=1," //M0=1,输出1

????????????????45 ???????????????????????else

????????????????46 ??????????????????????????????????????prints "m0=0,"?//M0=0,输出0

????????????????47 ???????????????????????endif

????????????????48 ???????????????????????if m1 //判断m1

????????????????49 ??????????????????????????????????????prints "m1=1," //M1=1,输出1

????????????????50 ???????????????????????else

????????????????51 ??????????????????????????????????????prints "m1=0,"?//M1=0,输出0

????????????????52 ???????????????????????endif

????????????????53 ???????????????????????if m2 //判断m2

????????????????54 ??????????????????????????????????????prints "m2=1\r\n" //M2=1,输出1

????????????????55 ???????????????????????else

????????????????56 ??????????????????????????????????????prints "m2=0\r\n" //M2=0,输出0

????????????????57 ???????????????????????endif

????????????????58 ???????????????????????inc d7 //D7加1

????????????????59 ???????????????????????inc d8 //D8加1

????????????????60 ???????????????????????inc d9 //D9加1

????????????????61 ???????????????????????inc d10 //D10加1

????????????????62??????????????????????? inc d11?//D11加1

????????????????63 ???????????????????????inc d12 //D12加1

????????????????64??????????????????????? inc d13 //D13加1

????????????????65 ????????endwhile

????????????????66 endmain

????????????????????????程序中第2行初始化MODBUS RTU为从模式,本机站号为0,使用串口2,波特率为

????????????????115200,当有数据接收时,S0会置位;

????????????????????????第3-16行,把寄存器D0-D13分别存入1到14的值;

????????????????????????第17-65行是无限循环体;

????????????????????????第18行,每次循环延时2S;

????????????????????????第19-31行,读取输出端口Y0-Y12到D20-D32寄存器中;

????????????????????????第32-42行,打印输出D0-D13,Y0-Y12的值;

????????????????????????第43-57行,判断M0,M1,M2的值,如果为1,则输出等于1的信息,否则输出等于0

????????????????的信息;

????????????????????????第58-64行,把寄存器D7-D13依次加1;

????????????????????????图26为触摸屏真实界面图,我们可以把X0到X8(X9因为已经接串口通讯,所以X9

????????????????不要使用了;X10系统保留,不要使用)对地接上导线,并且观察触摸屏输入栏的相应

????????????????的指示灯的状态;

????????????????????????在触摸屏读写栏,可以改变D0-D6寄存器的值,然后观察图25中,串口助手输出的

????????????????数据是否一致;

????????????????????????因为实验程序中每2S会把D7-D13寄存器的值加1,所以在触摸屏的只读栏会看到

????????????????D7-D13会不停的往上计数;

????????????????????????在触摸屏输出栏,可以改变Y0-Y12,M0-M2的状态,然后观察图25中串口助手输出

????????????????的数据是否一致;

????????图25 ????????串口输出数据

?

????????图26 ????????触摸屏真实界面

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:27:34  更:2022-02-24 15:28:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:55:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码