zrb5688 发表于 2022-3-16 17:02:33

【提问】求助帖

各位大神,我用迪文触摸屏做上位机,发送指令控制单片机继电器开合始终无法成功,请大神们帮我看看程序哪里出错了,非常感谢。
#include<reg52.h>

typedef unsigned char u8;
#define      RX_Length      64
u8         xdata RX1_Buffer;      //接收缓冲

sbit Y0 = P2^0;
sbit Y1 = P2^1;
sbit Y2 = P2^2;
sbit Y3 = P2^3;


                                                                                                                                                                                                                                                               
void init()
{
      PCON=PCON|0x80;                                        //波特率倍增。配置串口波特率115200    11.52M晶振
      SCON=0x50;                                                      //十位异步收发器,波特率可变,REN位为1,允许串口接收
      TMOD=0x21;                                                //定时器0为8位自动重装定时器,定时器1为16位定时器
      TH1=0xff;
      TL1=0xe8;
      TR1=1;                                                //开定时器1.
      TH0=0xb8;                                        //10MS定时器中断
      TL0=0x00;
      TR0=1;                                                //开定时器0
      ES=1;                                                      //开串口中断
      ET0=1;                                                //定时器0中断允许位
      EA=1;
}
                                                                                                
void main(void)
{

      init();
      while(1)
      {                              
}
}


void Uart_interrupt(void) interrupt 4                              //串口中断方式处理和触摸屏的数据交换
{
      RX1_Buffer=SBUF;
      while(!RI)                                                                //接收中断
                {
                        RI=0;
                }
                if((RX1_Buffer==0x5A)&&(RX1_Buffer==0xA5)&&(RX1_Buffer==0x06)&&(RX1_Buffer==0X83)&&
                        (RX1_Buffer==0x00)&&(RX1_Buffer==0x20)&&(RX1_Buffer==0x01)&&(RX1_Buffer==0x00))                              //按键返回
                                        {
                                                if(RX1_Buffer==0x01)//Y0
                                                {
                                                      Y0 = 1;
                                                }
                                                if(RX1_Buffer==0x02)//Y1
                                                {
                                                      Y0 = 0;
                                                }
                                                if(RX1_Buffer==0x03)//Y2
                                                {
                                                      Y1= 1;
                                                }
                                                if(RX1_Buffer==0x04)//Y3
                                                {
                                                      Y1= 0;
                                                }
                                                if(RX1_Buffer==0x05)//Y4
                                                {
                                                      Y2 = ~Y2;
                                                }
                                                if(RX1_Buffer==0x06)//Y5
                                                {
                                                      Y3 = ~Y3;
                                                }
                                        }
      }

integer_32 发表于 2022-3-16 17:20:13

楼主的代码看起来 数据写不进这个数组, 越界了。 另外单片机的问题最好咨询专业的单片机卖家。

luoyangdwin1 发表于 2022-3-16 17:28:19

本帖最后由 luoyangdwin1 于 2022-3-16 17:59 编辑

http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=300&extra=page%3D1
参考链接中的资料。
头文件要用官方的t5los8051.h。
http://inforum.dwin.com.cn:20080/forum.php?mod=forumdisplay&fid=143视频教学

前提是上面的代码是迪文屏的。



zrb5688 发表于 2022-3-16 19:57:06

奥!谢谢大神回复:handshake

yx0100 发表于 2022-3-17 09:04:30

去看看熊家鱼老师的视频教学,里面的IO控制比较好用(我是拿来调试步进电机了~)

zrb5688 发表于 2022-3-17 10:59:18

好的,谢谢楼主提醒。
页: [1]
查看完整版本: 【提问】求助帖