51单片机串口通信和LCD1602液晶

HL-1型号的单片机咋能做到电脑输入什么,lcd1602液晶就显示什么。就是咋做到把SBUF里面的数调出来的,之后在程序里用

用sprintf把数据转成你希望的字符串格式,然后显示

根据你的提问可能是不知道如何处理串口接收到的函数可以参考如下方法 判断发送的内容是否是 \r\n(0x0d,0x0a)结尾

#define USART_REC_LEN              100      //定义最大接收字节数 200
u8 USART_RX_BUF[USART_REC_LEN];     //接收缓冲,最大USART_REC_LEN个字节.
u16 USART_RX_STA=0;       //接收状态标记    

void uatr() interrupt 4///中断服务、、
{
     if(RI==1)
     {
         RI=0;
       if((USART_RX_STA&0x8000)==0)//接收未完成
        {
            if(USART_RX_STA&0x4000)//接收到了0x0d
            {
                if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
                else USART_RX_STA|=0x8000;    //接收完成了 
            }
            else //还没收到0X0D
            {    
                if(Res==0x0d)USART_RX_STA|=0x4000;
                else
                {
                    USART_RX_BUF[USART_RX_STA&0X3FFF]=SBUF ;                    
                    USART_RX_STA++;
                    if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收      
                }         
            }
         }    
     }
}

然后再main()函数中查询是否收到数据放到指定的数组里面,就可以调用了!

u16 len1,t1;
u8 mode[30];

//主函数调用
 
        if(USART_RX_STA&0x8000)
         {
            len1=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
            for(t1=0;t1<len1;)
            {
                mode[t1]=USART_RX_BUF[t1];///  把接受的命令赋值给数组 做显示用//
                t1++;
            }
            USART_RX_STA=0;
         }

1602的显示根据发送的数据是 HEX 还是字符串
1 hex 在显示的时候加0x30就能显示成字符串
2字符串直接显示就行