久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

我想用單片機通過串口實現輸入一組數據,然后在12864上的一行顯示出來

查看數: 3582 | 評論數: 14 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-5-19 22:24

正文摘要:

顯示函數我寫好了,請問就是怎么把串口收到的數據儲存起來,然后怎么調用啊? #include<reg51.h> #include<intrins.h> #define  uchar  unsigned char #define  uint&nbs ...

回復

ID:592807 發表于 2020-5-21 08:56
chengyuyu 發表于 2020-5-20 15:03
您好,謝謝您的解答,我還是有一點不明白,希望您能賜教,就是那個我該怎么知道temp【】數組里面的數是多 ...

1 如果你的串口通訊正常的并且temp數組足夠大的話,那么你接受道所有的數劇都會在temp數組里面。2 讀取數據問題著個全是可以不用解釋,數據就在數組里面,你復制出來也行,直接調用也行
3 著個應該才是你要問的問題,比如串口發送:“1 2 3  a b c 你好嗎”怎么在顯示屏顯示,做法如下
定義結構體:
typedef struct
{
u8 sign_name;//數字和字符的ASCII碼
u8 sign_data[16];//顯示數據局,字庫
}sign_number;

typedef struct
{
u8 font[2];//漢字的ASCII碼,
u8 chinese1[16];//漢字上半部分字庫
u8 chinese2[16];//下半部分字庫
}chinese;

1 的ASCII碼是0X31,用for循環檢索到temp里面有0x31就往顯示屏輸送1的顯示數據


你要自己建造一個字庫,:
ID:755110 發表于 2020-5-21 08:40
763900682 發表于 2020-5-20 23:46
無論用那種單片機,道理差不多的。都要先申請一個全局變量的數組,將串口接收的數據放到該數組中。接受完數 ...

void UsartConfiguration()
{
         SCON=0X50;//&sup1;¤×÷·&frac12;&Ecirc;&frac12;1
         TMOD=0X20;
         TL1=0XFA;
         TH1=0XFA;
         TR1=1;
         EA=1;
         ES=1;
}
void main(void)
{
while(1)       
  {               
        UsartConfiguration();
         if(rcv_date_ok_flag==1)
              {
                      rcv_date_ok_flag=0;
                      for(i=0;i<rcv_len;i++)
                      shu_disp_1(2,i,rcv_buf);
              }
  }
}                               
void UART_one_Interrupt_Receive(void) interrupt 4
{         
        unsigned char i;   
uchar temp =SBUF;

if(temp==0x02)
{
        rcv_date_ok_flag=0;
        rcv_len=0;
}
else if(temp==0x03)
{
        rcv_date_ok_flag=1;
}
else
{
        rcv_buf[rcv_len++]=temp;
}
}
您能給看看哪不對嗎
ID:352449 發表于 2020-5-20 23:46
無論用那種單片機,道理差不多的。都要先申請一個全局變量的數組,將串口接收的數據放到該數組中。接受完數組后,串口會有特定的寄存器標志接收完成,檢測到接收完成就將數組的數據顯示,然后清空數組和寄存器的標志位。等待下一次接收。
ID:648281 發表于 2020-5-20 23:26
你好!
如果串口傳什么漢字就顯示什么的話,需要帶有字庫的液晶;
如果不含有字庫的液晶,只能先制作字庫,顯示漢字數受限。
ID:755110 發表于 2020-5-20 15:04
xxpp2011 發表于 2020-5-20 08:53
一位一位接收,放進數組里面,顯示就從數組里面讀

您好,我發了一下我的代碼,您看看還要怎么做才能取出temp【】里面的數?
ID:755110 發表于 2020-5-20 15:03
黃youhui 發表于 2020-5-20 11:45
串口接收的數據是ASCII碼,你接收到的也只能是ASCII碼。ASCII是uint8_t(char)類型的所以最大只有0xff  ...

您好,謝謝您的解答,我還是有一點不明白,希望您能賜教,就是那個我該怎么知道temp【】數組里面的數是多少,師傅跟我說用for循環就能取出來,您能給我解釋一下嗎?
ID:592807 發表于 2020-5-20 11:45
chengyuyu 發表于 2020-5-20 09:10
您好,能稍微講一下傳參嗎,我現在應該是可以把接收到的數據緩存到一個數組,但是我用的12864是不帶字庫 ...

串口接收的數據是ASCII碼,你接收到的也只能是ASCII碼。ASCII是uint8_t(char)類型的所以最大只有0xff 也就是說你從串口接收到的數字是255,不存在大于256的數字。
而且你發送1000.串口傳輸給單片機或者單片機傳給串口的就是  0x31  0X30  0X30這三個數字,
0X31在ASCII里面就是1   0X30就是0.
如圖所示如果發送或者接收的數字大于126,那么串口會默認將這個大于126的數字和下一個數字組合,湊成一個漢字,也就是為什么漢字占兩個字節,而數字符號占一個字節的原因。

51hei截圖20200520113747.png (44.57 KB, 下載次數: 70)

51hei截圖20200520113747.png
ID:440553 發表于 2020-5-20 10:40
用個數組,把接收到的數據存起來。然后把這個數組的內容顯示在12864上
ID:755110 發表于 2020-5-20 09:12
xxpp2011 發表于 2020-5-20 08:53
一位一位接收,放進數組里面,顯示就從數組里面讀

您好,我的12864是不帶字庫的,所以我定義了一個字符字庫【】,里面是從1-9的字模,這樣從數組里面讀是不是得取位然后再顯示?
ID:755110 發表于 2020-5-20 09:10
muzhi 發表于 2020-5-19 22:52
if(串口收到數據了)
{
    調用"屏幕顯示字符串函數"(傳參"串口收到的數據");

您好,能稍微講一下傳參嗎,我現在應該是可以把接收到的數據緩存到一個數組,但是我用的12864是不帶字庫的,所以得知道數組里面的數的大小,然后在yi==temp%1000000000/100000000
                               
                                        qianwan=temp%100000000/10000000
                                       
                                        baiwan=temp%10000000/1000000
                                       
                                        shiwan=temp%1000000/100000                               
           wan=temp%100000/10000;                                           

                 qian=temp%10000/1000;

                 bai=temp%1000/100;               

                 shi=temp%100/10;

                 ge=temp%10;這樣取出值的大小最后根據每個值得大小來顯示自定義字符字庫里的字符,這個思路對嗎?
ID:592807 發表于 2020-5-20 09:03
無論用那種單片機,道理差不多的。都要先申請一個全局變量的數組,將串口接收的數據放到該數組中。接受完數組后,串口會有特定的寄存器標志接收完成,檢測到接收完成就將數組的數據顯示,然后清空數組和寄存器的標志位。等待下一次接收。
ID:452950 發表于 2020-5-20 08:53
一位一位接收,放進數組里面,顯示就從數組里面讀
ID:342911 發表于 2020-5-19 22:52
if(串口收到數據了)
{
    調用"屏幕顯示字符串函數"(傳參"串口收到的數據");
}

類似這樣?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频免费在线 | 日韩一区二| 亚洲综合中文字幕在线观看 | 久久久久久亚洲 | 96久久久久久 | 一区二区精品 | 久久综合九九 | 欧美国产精品一区二区三区 | 欧美无乱码久久久免费午夜一区 | 国产日韩一区二区 | 国产精品久久毛片av大全日韩 | 国产精品99久久久久久久久久久久 | 97人人澡人人爽91综合色 | 国产人成精品一区二区三 | 国产一级视频在线观看 | 成人免费看片 | av电影一区 | 久久久久久中文字幕 | 中文字幕精品一区二区三区在线 | 九九热在线视频免费观看 | 亚洲综合大片69999 | 欧美二区三区 | 精品美女久久久久久免费 | 青青草亚洲 | 日韩午夜网站 | 中文字幕在线观看第一页 | 中文字幕精 | 久久久91精品国产一区二区三区 | 国产精品伦理一区二区三区 | 91婷婷韩国欧美一区二区 | 亚洲视频在线看 | 久久久久国产 | 男女网站免费 | www.日本精品 | 福利影院在线看 | 久久久久国产一区二区三区 | 91观看 | a级片网站 | 久草在线青青草 | 久久99精品视频 | a黄视频|