标题: 51单片机串行通信电路图 发送+接受程序 [打印本页]

作者: 51黑小牛    时间: 2016-4-10 17:54
标题: 51单片机串行通信电路图 发送+接受程序
51单片机串口通信程序带液晶显示 电路图在本帖最后,下面是发送端的程序
/*******************************************sent
***************************************/
#include<reg51.h>
#define uchar unsigned char
#define uint  unsigned int
uchar tt;
void delay(uint us)
{
  while(us--);
}
void send(uchar state)
{
  SBUF=state;
  while(TI==0);
   TI=0;
}
void SCON_init()
{
SCON=0X40;
TMOD=0x20;
PCON=0x00;
TH1=0xFD;
TL1=0xFD;
TI=0;
TR1=1;
}
void main()
{
char i;
SCON_init();
EA=1;
EX0=1;
IT0=1;
while(1)
{
         tt=97;
  for(i=0;i<8;i++)
         {
         P2=1<<i;
         delay(20000);
         }
}
}
void sentdata() interrupt 0
{
send(tt/10);
//send((tt%100)/10);
send(tt%10);
}



/*******************************************
             recv
***************************************/
#include<reg51.h>
#define uchar unsigned char
#define uint  unsigned int
sbit P17=P1^7;
sbit rs=P2^0;
sbit  e=P2^1;
uchar state,t1,t2,t3,t;
uchar tt[]="Today is-";
uchar yy[7][9]={"   Sunday","   Monday","  Tuesday","Wednesday"," Thursday",
                 "   Friday"," Saturday"};
void delay(uint us)
{
  while(us--);
}
void w1602(bit w,uchar dat)
{
          rs=w;                                       
                                        P0=dat;
                                        e=0;
                                        delay(2);
                                        e=1;
                                        delay(4);
                                        e=0;
}
void init1602()
{
  w1602(0,0x38);
        w1602(0,0x06);
        w1602(0,0x0c);
        w1602(0,0x01);
}
void receive()
{
   while(RI==0);
   state=SBUF;
   RI=0;
}
void SCON_init()//
{
SCON=0X50;//
TMOD=0x20;//
PCON=0x00;//
TH1=0xFD; //
TL1=0xFD; //
RI=0;
TR1=1;
}
void main()
{
// char m;
init1602();        
EA=1;
EX0=1;
IT0=1;
SCON_init();
while(1)
{
   P17=~P17;
         delay(1000);
         t=10*t1+t2;
         w1602(0,0x80);
                 
         w1602(1,0x30+t/10);
         w1602(1,0x30+t%10);
        
}
}
void recvdata() interrupt 0
{
        //char n;
  receive();
        t1=state;
        receive();
        t2=state;
        
        
        
}









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1