找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机串行通信电路图 发送+接受程序

[复制链接]
跳转到指定楼层
楼主
ID:113276 发表于 2016-4-10 17:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
        
        
        
}




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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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