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;
}
|