找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7968|回复: 8
打印 上一主题 下一主题
收起左侧

串口触摸屏TJC4024K032_011怎么与STM32通信,有点不明白。

[复制链接]
跳转到指定楼层
楼主
ID:401004 发表于 2018-10-12 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学者,之前没有接触过stm32,感觉有点困难,求大佬帮助。

IMG20181012150022.jpg (3.88 MB, 下载次数: 95)

IMG20181012150022.jpg

IMG20181012150140.jpg (3.84 MB, 下载次数: 93)

IMG20181012150140.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:160834 发表于 2018-10-12 22:10 | 只看该作者
串口屏和单片机通讯  用的是串口发送和接收  但是要完成通讯 还需根据串口屏的传输协议。每个厂家串口屏的指令都不同,而串口屏也是由单片机驱动液晶做成的。 所以实际也就是单片机和单片机之间的通讯。每款串口屏的串口指令都会在相应的产品指令说明中。
例如:这款串口屏这个指令
1.page 刷新页面
page pageid
pageid:页面ID或页面名称
实例1:page 0 (刷新ID为0的页面)
实例2:page main (刷新名称为main的页面)
备注:
1.设备上电自动刷新第0页。
2.也可以对系统变量dp赋值来实现跳转页面(如dp=0),系统变量dp可以设置可以读取,具体请参看系统变量列表。
在串口屏编程软件里把主页定义好后。连接其它单片机,单片机只要发送 "page main"  串口屏显示的内容就会跳转到你需要的主页。
这是串口屏里编写的内容和串口协议。我这里用的是按了串口屏上这个按钮图标 就发送 ED 02 00 01 4个字符。 单片机接收到4个字符后,驱动相应的IO口是低电平或高电平。
这是单片机接收字符后的判断子程序。
这是单片机发送指令给串口屏。串口屏的指令详见指令说明。
只要按照串口屏指令格式发送,就会正确执行。

串口屏和任何单片机通讯都是这个原理。 C51也好,AVR也好,STM32也好。 先要把单片机的串口通讯程序写正确。确保发送和接收都没问题。再去跟串口屏通讯。你只要把两片单片机之间的串口通讯搞正确了,这个也就是一样的。


评分

参与人数 2黑币 +98 收起 理由
叶非夜 + 8 赞一个!
admin + 90 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:401004 发表于 2018-10-16 17:26 | 只看该作者
QIANLILI 发表于 2018-10-12 22:10
串口屏和单片机通讯  用的是串口发送和接收  但是要完成通讯 还需根据串口屏的传输协议。每个厂家串口屏的 ...

大神,可以把完整的程序发给我参考一下吗?
回复

使用道具 举报

地板
ID:160834 发表于 2018-10-17 21:46 | 只看该作者
好的  给你我写的C51的单片机和USART HMI串口屏通讯的程序。
单片机建议用STC89C52  P0口可以不用加上拉电阻。
程序是串口屏上建按钮,按一下,发送指令给单片机。单片机接收后提取指令后再判断。
判断后再驱动相应的IO为高电平或低电平。可以直接接LED发光管观察输出结果。
至于串口屏的程序,建议参照串口屏的编程要求输出定义的指令。
例如:

if(照明1.val==1)  //开启
{
  printh ED 02 00 01
}
if(照明1.val==0)  //关灯
{
  printh ED 02 00 00

}

其中:ED 02 00 01 和 ED 02 00 00 就是我自己定义的通讯指令。 这个可以和单片机配套使用。

#include <Reg52.h>

sbit LED0=P0^0;//指示灯
sbit LED1=P0^1;//指示灯
sbit LED2=P0^2;//指示灯
sbit LED3=P0^3;//指示灯
sbit LED4=P0^4;//指示灯
sbit LED5=P0^5;//指示灯
sbit LED6=P0^6;//指示灯
sbit LED7=P0^7;//指示灯


sbit LED8=P1^0;//指示灯
sbit LED9=P1^1;//指示灯
sbit LED10=P1^2;//指示灯
sbit LED11=P1^3;//指示灯
sbit LED12=P1^4;//指示灯
sbit LED13=P1^5;//指示灯
sbit LED14=P1^6;//指示灯
sbit LED15=P1^7;//指示灯


sbit LED16=P2^0;//指示灯
sbit LED17=P2^1;//指示灯
sbit LED18=P2^2;//指示灯
sbit LED19=P2^3;//指示灯
sbit LED20=P2^4;//指示灯
sbit LED21=P2^5;//指示灯
sbit LED22=P2^6;//指示灯
sbit LED23=P2^7;//指示灯


sbit K1=P3^2;

unsigned char CT;
unsigned char UT;
unsigned char CN[4];


void delayms(unsigned int i)
{
  unsigned int j;
  while(i--)
  {
   for(j = 0; j < 125; j++);
   }
}


//向串口输出一个字符(非中断方式)
void ComOutChar(unsigned char OutData)
{
ES = 0;
TI = 0;
SBUF = OutData;   //输出字符
while(!TI);       //空语句判断字符是否发完
TI = 0;           //清TI
ES = 1;
}


void UART_Send_Str(char *s)
{
int i=0;
while(s!=0)
{
  ComOutChar(s);
  i++;
}
}


void UART_Send_END(void)
{
  ComOutChar(0xFF);
  ComOutChar(0xFF);
  ComOutChar(0xFF);
}


void UART_Send_APP(void)
{
  ComOutChar(CN[0]);
  ComOutChar(CN[1]);
  ComOutChar(CN[2]);
  ComOutChar(CN[3]);
}


void UART_Send_start(void)
{
  delayms(10);
  UART_Send_END();
  delayms(10);
}


void CSToOut(void)
{
    if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x00 && CN[3]==0x01) {LED0=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x00 && CN[3]==0x00) {LED0=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x01 && CN[3]==0x01) {LED1=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x01 && CN[3]==0x00) {LED1=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x02 && CN[3]==0x01) {LED2=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x02 && CN[3]==0x00) {LED2=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x03 && CN[3]==0x01) {LED3=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x03 && CN[3]==0x00) {LED3=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x04 && CN[3]==0x01) {LED4=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x04 && CN[3]==0x00) {LED4=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x05 && CN[3]==0x01) {LED5=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x05 && CN[3]==0x00) {LED5=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x06 && CN[3]==0x01) {LED6=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x06 && CN[3]==0x00) {LED6=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x07 && CN[3]==0x01) {LED7=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x01 && CN[2]==0x07 && CN[3]==0x00) {LED7=0;UART_Send_APP();}

  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x00 && CN[3]==0x01) {LED8=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x00 && CN[3]==0x00) {LED8=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x01 && CN[3]==0x01) {LED9=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x01 && CN[3]==0x00) {LED9=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x02 && CN[3]==0x01) {LED10=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x02 && CN[3]==0x00) {LED10=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x03 && CN[3]==0x01) {LED11=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x03 && CN[3]==0x00) {LED11=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x04 && CN[3]==0x01) {LED12=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x04 && CN[3]==0x00) {LED12=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x05 && CN[3]==0x01) {LED13=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x05 && CN[3]==0x00) {LED13=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x06 && CN[3]==0x01) {LED14=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x06 && CN[3]==0x00) {LED14=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x07 && CN[3]==0x01) {LED15=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x02 && CN[2]==0x07 && CN[3]==0x00) {LED15=0;UART_Send_APP();}

  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x00 && CN[3]==0x01) {LED16=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x00 && CN[3]==0x00) {LED16=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x01 && CN[3]==0x01) {LED17=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x01 && CN[3]==0x00) {LED17=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x02 && CN[3]==0x01) {LED18=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x02 && CN[3]==0x00) {LED18=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x03 && CN[3]==0x01) {LED19=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x03 && CN[3]==0x00) {LED19=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x04 && CN[3]==0x01) {LED20=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x04 && CN[3]==0x00) {LED20=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x05 && CN[3]==0x01) {LED21=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x05 && CN[3]==0x00) {LED21=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x06 && CN[3]==0x01) {LED22=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x06 && CN[3]==0x00) {LED22=0;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x07 && CN[3]==0x01) {LED23=1;UART_Send_APP();}
  if (CN[0]==0xED && CN[1]==0x03 && CN[2]==0x07 && CN[3]==0x00) {LED23=0;UART_Send_APP();}
}


//串口初始化 晶振为11.0592M 方式1 波特率9600
void InitCom(void)
{
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1定时方式2
TCON = 0x40; //设定时器1开始计数
TH1 = 0xFD;
TL1 = 0xFD;
RI = 0;      //清收发标志
TI = 1;
TR1 = 1;     //启动定时器
}


//串口接收中断
void ComInINT(void) interrupt 4 using 1
{
if (RI == 1)      
{
  RI = 0;
  UT = SBUF;
  if(UT==0xED)
  {
    CN[0] = SBUF;
  }
  else if(CN[0]==0xED)
  {
   CT++;
    CN[CT] = SBUF;
   if (CT == 3)
   {
    CSToOut();
    CT = 0;      

    CN[0] = 0;
    CN[1] = 0;
    CN[2] = 0;
         CN[3] = 0;     
   }  
  }
}
}


void main(void)
{
P0 = 0;
P1 = 0;
P2 = 0;
InitCom();  //设置波特率为9600
EA = 1;
ES = 1;     //开串口中断
while(1)
{
  if (K1==0)              //按下按钮 用于测试发给串口屏
{
    //UART_Send_start();
    //UART_Send_Str("page 卧室");
    //UART_Send_END();
   }
}
}

评分

参与人数 1黑币 +8 收起 理由
叶非夜 + 8 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:401004 发表于 2018-10-18 09:28 | 只看该作者
QIANLILI 发表于 2018-10-17 21:46
好的  给你我写的C51的单片机和USART HMI串口屏通讯的程序。
单片机建议用STC89C52  P0口可以不用加上拉电 ...

非常感谢
回复

使用道具 举报

6#
ID:401004 发表于 2018-10-19 16:09 | 只看该作者
QIANLILI 发表于 2018-10-17 21:46
好的  给你我写的C51的单片机和USART HMI串口屏通讯的程序。
单片机建议用STC89C52  P0口可以不用加上拉电 ...

我怎么用这个编译出错了
回复

使用道具 举报

7#
ID:478875 发表于 2019-3-4 20:06 | 只看该作者
可以简单的说一下如何往串口屏上发送数据吗?
我想把我用单片机得到的数值发送到串口屏上显示
回复

使用道具 举报

8#
ID:553045 发表于 2019-8-4 14:49 来自手机 | 只看该作者
QIANLILI 发表于 2018-10-17 21:46
好的  给你我写的C51的单片机和USART HMI串口屏通讯的程序。
单片机建议用STC89C52  P0口可以不用加上拉电 ...

真的非常非常感谢你()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表