找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機小白有關(guān)串口通信的問題

查看數(shù): 1597 | 評論數(shù): 6 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2021-12-28 09:02

正文摘要:

有大佬知道為什么我這接收端接收到的數(shù)據(jù)在為什么在1602上不顯示嗎?這是部分程序,我自己寫的感覺問題很大,lcd驅(qū)動程序就不放上來了,下面有仿真圖 單片機源程序如下: #include <reg51.h> #include "lcd.h ...

回復(fù)

ID:213173 發(fā)表于 2021-12-28 21:40
最容易看懂的處理方法如下
自定義通信協(xié)議
0xAA'2' '1' '1' '2' '2' '8' '2' '1' '2' '2' '4' '0' '2'0x55
表示21年12月28日21點22分40秒星期二

unsigned char rec_buf[15];//接收緩存

void UARTInterrupt() interrupt 4
{
        static uchar i=0;                //靜態(tài)計數(shù)變量
        RI=0;                                        //接收中斷請求標志位清0
        rec_buf[num]=SBUF;                //接收到的數(shù)據(jù)串保存在緩存數(shù)組
        if(rec_buf[0]==0xAA)        //驗證數(shù)據(jù)頭(起始位)
        {
                i++;
                if(i>=15)
                {
                        flag=1;                        //一幀數(shù)據(jù)接收完成標志置1
                        i=0;                        //計數(shù)變量清0
                }
        }
}
在主函數(shù)中驗證數(shù)據(jù)尾無誤,再把收到的字符顯示在LCD相應(yīng)位置
ID:997070 發(fā)表于 2021-12-28 14:57
AUG 發(fā)表于 2021-12-28 14:19
確定是否收到數(shù)據(jù)了,收到了再去顯示肯定就沒問題

我加了個蜂鳴器在里面,只有把蜂鳴器響的條件改為數(shù)據(jù)為0的時候才會響,這是表示沒有收到數(shù)據(jù)嗎?
ID:313048 發(fā)表于 2021-12-28 14:19
確定是否收到數(shù)據(jù)了,收到了再去顯示肯定就沒問題
ID:997070 發(fā)表于 2021-12-28 13:56
lkc8210 發(fā)表于 2021-12-28 11:22
因為代碼不全
只能推測
第27行串口代碼有點問題

沒用啊,我是在做電子鐘,要求是要通過串口通信將單片機實物與仿真環(huán)境里的電子鐘時間同步顯示,數(shù)據(jù)不能只發(fā)一段,要實時不停發(fā)送,但是數(shù)據(jù)能發(fā)送出去,但是接收端這邊有問題,LCD能正常顯示,但沒法顯示我發(fā)送過去的數(shù)據(jù),我就是這里不知道問題出在哪。還有這上面就是我接收端的整個代碼了(除了LCD的驅(qū)動程序)。
ID:161164 發(fā)表于 2021-12-28 11:22
因為代碼不全
只能推測
第27行串口代碼有點問題
試改為
  1. void UART_T() interrupt 4
  2. {
  3.         if(RI)
  4.         {
  5.                 receiveData = SBUF;
  6.                 if((receiveData==0x59))
  7.                 {
  8.                         r = 0;
  9.                 }else{                       
  10.                         rec[r] = receiveData;
  11.                         r++;
  12.                 }
  13.                 while(!RI);
  14.                 RI = 0;
  15.                 }
  16.         RI = 0;
  17. }
復(fù)制代碼



然后輸入59 19 06 07 05 07 30 44
ID:997070 發(fā)表于 2021-12-28 09:38
我自己已經(jīng)搞了兩天了沒有什么頭緒

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表