找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3176|回复: 0
收起左侧

双单片机通信接收端显示(用1602)出错

[复制链接]
ID:46670 发表于 2012-12-5 20:45 | 显示全部楼层 |阅读模式

  #include<reg51.h>      //主机发送
  #include<intrins.h>
  #define lcddate P0
  #define unint unsigned int
  #define unchar unsigned char
  sbit EN=P2^0; /*使能*/
  sbit RW=P2^1; /*读/写*/
  sbit RS=P2^2; /*寄存器选择*/
  unchar code table[7]="FM 10.6"; /*显示内容*/
  unchar code table1[12]="voice*1*****";
  unchar rxbuf=0;
  void main()
  {unchar m,n;
   void lcd_init(void);
   void lcd_wcom(unchar com);
      void lcd_wdate(unchar date);
   void ms_delay(unint delaytime);
   TMOD=0X20;
   PCON&=0X7F;
   SCON=0xd0;
   TH1=0XF0;//9600@11.0592MHZ
   TL1=0xfd;
   TR1=1;
   ES=1;
   EA=1;
   lcd_init();
   lcd_wcom(0x80);
   for(m=0;m<7;m++)
       {lcd_wdate(table[m]);}//数组做函数参数
    ms_delay(1);
   lcd_wcom(0x80+0x40);
   for(n=0;n<12;n++)
       {lcd_wdate(table1[n]);}
         while(1);     
  }
  /*-----------------------------------------------*/
  void lcd_init() /*LCD intiation*/
  {lcd_wcom(0x38);
   lcd_wcom(0x0c);
   lcd_wcom(0x06);
   lcd_wcom(0x01);
   }
   /*--------------------------------------------*/ 
  void lcd_wcom(unchar com)/*com regester*/
  {RW=0;
   RS=0;
   lcddate=com;
   SBUF=com;
      ms_delay(1);
   EN=1;
   _nop_();
   _nop_();
   EN=0;
  }
  /*-----------------------------------------------*/
  void lcd_wdate(unchar date)/*date regester*/
  {RW=0;
  RS=1;
  lcddate=date;
  SBUF=date;
  ms_delay(1);
  EN=1;
   _nop_();
   _nop_();
   EN=0;
  }
  /*----------------------------------------------*/
  void UART()interrupt 4 using 0//TX
  {if(TI){
  ms_delay(1);
  TI=0;}//发送数据
  }

 

/*接收端*/


     #include<reg51.h>
  #include<intrins.h>
  #define unint unsigned int
  #define unchar unsigned char
   #define lcddate P2
  sbit EN=P3^7; /*使能*/
  sbit RW=P3^6; /*读/写*/
  sbit RS=P3^5; /*寄存器选择*/

  unchar rxbuf=0;
  void main()
  {
      void lcd_init(void);
   void lcd_wcom(unchar com);
      void lcd_wdate(unchar date);
   void ms_delay(unint delaytime);
   TMOD=0X20;
   PCON&=0X7F;
   SCON=0xd0;
   TH1=0Xfd;//9600@11.0592MHZ
   TL1=0xfd;
   TR1=1;
   ES=1;
   EA=1;
   RI=1;
   while(1);
   }
  /*----------------------------------------------*/
   void UART()interrupt 4
   { unchar m=0;
      while(RI){RI=0;       //先请中断标志 ??
            lcd_init();
                  m++;
      if (m<=7)
                  {rxbuf=SBUF;
      lcd_wcom(0x80);
      lcd_wdate(rxbuf);}
      else{
                  lcd_wcom(0xc0);
                  rxbuf=SBUF;
      lcd_wdate(rxbuf);}
      }
   }
  /*-----------------------------------------------*/
  void lcd_init() /*LCD intiation*/
  {lcd_wcom(0x38); //八位数据,双列
   lcd_wcom(0x0c);
   lcd_wcom(0x06);
   lcd_wcom(0x01);
   }
   /*--------------------------------------------*/ 
  void lcd_wcom(unchar com)/*com regester*/
  {RW=0;
   RS=0;
   lcddate=com;
      ms_delay(1);
   EN=1;
   _nop_();
   _nop_();
   EN=0;
  }
  /*-----------------------------------------------*/
  void lcd_wdate(unchar date)/*date regester*/
  {
  RW=0;
  RS=1;
  lcddate=date;//date 是否还需申明呢?
  ms_delay(1);
  EN=1;
   _nop_();
   _nop_();
   EN=0;
  }

 

uart.jpg
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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