android与单片机通信原理,单片机双机串口通信原理图,proteus仿真以及程序

#include

#define LCD_DATA P0

sbit LCD_BUSY=LCD_DATA^7;

sbit LCD_RW=P3^3;

sbit LCD_RS=P3^2;

sbit LCD_EN=P3^4;

sbit P20=P2^0;

sbit P21=P2^1;

sbit P22=P2^2;

sbit P23=P2^3;

sbit P24=P2^4;

sbit P25=P2^5;

sbit P26=P2^6;

sbit P27=P2^7;

sbit P30=P3^0;

sbit P31=P3^1;

sbit P32=P3^2;

sbit P33=P3^3;

sbit P34=P3^4;

sbit P35=P3^5;

sbit P36=P3^6;

sbit P37=P3^7;

unsigned char i=0;

void LCD_check_busy(void)        //检测LCD状态

{

while(1)

{

LCD_RS=0;

LCD_RW=1;

LCD_EN=0;

LCD_DATA=0xff;

LCD_EN=1;

if(!LCD_BUSY)break;

LCD_EN=0;

}

}

void LCD_cls(void)  //LCD清屏

{

LCD_check_busy();

LCD_EN=0;

LCD_RS=0;

LCD_RW=0;

LCD_DATA=0x01;

LCD_EN=1;

LCD_EN=0;

}

void LCD_write_instruction(unsigned char LCD_instruction)//写指令到LCD

{

LCD_check_busy();

LCD_EN=0;

LCD_RS=0;

LCD_RW=0;

LCD_DATA=LCD_instruction;

LCD_EN=1;

LCD_EN=0;

}

void LCD_write_data(unsigned char LCD_data)//输出一个字节数据到LCD

{

LCD_check_busy();

LCD_EN=0;

LCD_RS=1;

LCD_RW=0;

LCD_DATA=LCD_data;

LCD_EN=1;

LCD_EN=0;

}

void LCD_initial()

{

LCD_write_instruction(0x38);          //两行显示

LCD_write_instruction(0x0C);                 //显示开

LCD_write_instruction(0x06);             //光标加1

LCD_write_instruction(0x01);                  //清屏

}

re() interrupt 4                                   //串行口通信中断

{

if(RI==1)

{

RI=0;

i=SBUF;                                                   // 接收数据

if(i==0||i==0x22||i==0x44||i==0x66||i==0x88||i==0xaa||i==0xcc||i==0xdd||i==0xee)

{

SBUF=1;                                           //接收发过来 要修改的初值

}

else                                                   //接收正常通信的数据

{

LCD_write_instruction(0x80+i);

LCD_write_data('0'+i);

if(i==11)LCD_initial();

}

}

else if(TI==1)

{

TI=0;

TH1=i;TL1=i;                                 //发送确认信号后 修改初值

}

}

void main()

{

TMOD=0x20;

TH1=0x00;TL1=0x00;   //置初值

TR1=1;EA=1;ES=1;    //使T1开始工作;开总中断、串行中断

SCON=0x50;          //使T1工作在工作方式1

…………限于本文篇幅 余下代码请从51黑下载附件…………

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值