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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2134|回復: 10
打印 上一主題 下一主題
收起左側

51單片機串口接收PC發(fā)送的數字顯示到數碼管程序求助

[復制鏈接]
跳轉到指定樓層
樓主
ID:1051996 發(fā)表于 2022-11-14 23:03 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
用的是普中開發(fā)板,需求是用串口調試助 發(fā)送12345678 顯示到數碼管上
現在就是只有一位數碼管顯示,其他的都是空值
在此求大佬教一下

單片機源程序如下:
  1. #include<reg51.h>

  2. typedef unsigned int u16;          //對數據類型進行聲明定義
  3. typedef unsigned char u8;


  4. unsigned char buffer[8];
  5. u8 DisplayData[8];

  6. sbit LSA=P2^2;
  7. sbit LSB=P2^3;
  8. sbit LSC=P2^4;


  9. void delay(u16 i)
  10. {
  11.         while(i--);       
  12. }

  13. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  14.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值


  15. void DigDisplay()
  16. {
  17.         u8 i;
  18.         for(i=0;i<8;i++)
  19.         {
  20.                 switch(i)         //位選,選擇點亮的數碼管,
  21.                 {
  22.                         case(0):
  23.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位
  24.                         case(1):
  25.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  26.                         case(2):
  27.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  28.                         case(3):
  29.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  30.                         case(4):
  31.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  32.                         case(5):
  33.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  34.                         case(6):
  35.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  36.                         case(7):
  37.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位       
  38.                 }
  39.                 P0=smgduan[i];//發(fā)送段碼
  40.                 delay(100); //間隔一段時間掃描       
  41.                 P0=0x00;//消隱
  42.         }
  43. }


  44. void rs_init()         //串口初始化,波特率設置2400
  45. {

  46.         SCON=0x40;
  47.         PCON=0x00;
  48.         TMOD=0x20;
  49.         TL1=0xf4;//bs
  50.         TH1=0xf4;

  51.         TR1=1;


  52. }





  53. void main()
  54. {
  55.          rs_init();

  56.          REN=1;
  57.          EA=1;
  58.          ES=1;

  59.          while(1){
  60.          
  61.          DigDisplay();
  62.          
  63.          }

  64. }


  65. void serial() interrupt 4
  66. {
  67.         unsigned char i=0;
  68.         EA=0;
  69.         RI=0;
  70.         buffer[i]=smgduan[SBUF];
  71.         i++;
  72.         if(i==8);
  73.         i=0;
  74.         EA=1;

  75. }
復制代碼






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

無效樓層,該帖已經被刪除
板凳
ID:161164 發(fā)表于 2022-11-14 23:24 | 只看該作者
main()呢?while(1)呢?
回復

使用道具 舉報

地板
ID:123289 發(fā)表于 2022-11-15 09:11 | 只看該作者
做8個變量:LED1,LED2......LED8。
先學會如何將這8個變量中的數,依序送到LED上顯示。
而后再考慮串口接收數據。
這時,只要將收到的數字放到LED1,LED2......LED8中就可以了。
回復

使用道具 舉報

5#
ID:77589 發(fā)表于 2022-11-15 09:17 | 只看該作者
通過貼出的代碼看不出具體問題!!!!
回復

使用道具 舉報

6#
ID:1051996 發(fā)表于 2022-11-15 15:17 | 只看該作者
代碼被吃掉了
回復

使用道具 舉報

7#
ID:1051996 發(fā)表于 2022-11-15 18:34 | 只看該作者
lkc8210 發(fā)表于 2022-11-14 23:24
main()呢?while(1)呢?

重新發(fā)了大佬
回復

使用道具 舉報

8#
ID:101869 發(fā)表于 2022-11-15 19:03 | 只看該作者
EA不可以關閉這是總中斷
回復

使用道具 舉報

9#
ID:101869 發(fā)表于 2022-11-15 19:05 | 只看該作者
我說錯了請斑竹刪了
回復

使用道具 舉報

10#
ID:101869 發(fā)表于 2022-11-15 19:07 | 只看該作者
你關閉了總中斷,所以接收不到
回復

使用道具 舉報

11#
ID:101869 發(fā)表于 2022-11-15 19:11 | 只看該作者
這是我經常用的  你改改就行
{
    static u8 rx_step = 0;         //接收中斷函數里的步驟變量
    static u8 array_cnt = 0; //接收緩存數組的下標

    if (RI)
    {
        RI=0;
        if (0 == rx_ok_flag) // 1代表已經完成接收了一串新數據,并且禁止接收其它新的數據
        {

            switch (rx_step)
            {
            case 0:                                                  //接頭暗號的步驟。判斷數據頭的步驟。
                rx_buffer[0] =SBUF;          //直接讀取剛接收完的一個字節(jié)的數據。
                if (0x5a == rx_buffer[0]) //等于數據頭0x5a,接頭暗號吻合。
                {
                    array_cnt = 1; //接收緩存的下標
                    rx_step = 1;   //切換到下一個步驟,接收其它有效的數據
                }
                break;

            case 1:                                                          //數據類型和長度
                rx_buffer[array_cnt] = SBUF; //直接讀取剛接收完的一個字節(jié)的數據。
                array_cnt++;                                  //每接收一個字節(jié),數組下標都自加1,為接收下一個數據做準備
                if (array_cnt >= 4)
                {

                    rx_ok_flag = 1; //接收完成標志“置1”,通知主函數處理。
                    rx_step = 0;        //及時切換回接頭暗號的步驟
                }
                break;
            }
        }
    }
}
回復

使用道具 舉報

12#
ID:883242 發(fā)表于 2022-11-15 20:05 | 只看該作者
串口中斷里面的那個i必須是static的!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 涩涩视频在线看 | 免费国产一区二区视频 | 日韩国产在线观看 | 99色播| 九九视频在线观看 | 欧美成人一区二区三区 | www.亚洲视频 | 久久最新 | 涩爱av一区二区三区 | 中文字幕在线观看一区二区 | 国产一级在线观看 | 精品不卡 | 黄色免费观看网站 | 国内精品久久久久久 | 亚洲欧美精品 | 国产资源一区二区三区 | 免费小视频在线观看 | 99精品欧美一区二区三区 | 国产视频中文字幕 | 99热精品在线观看 | 国产一级成人 | 日韩高清中文字幕 | av黄色在线 | 日韩一区三区 | 日本在线你懂的 | 欧美a级成人淫片免费看 | 天堂综合网 | 亚洲国产精品区 | 亚洲视频区 | 日本韩国欧美在线观看 | 免费久草 | 久久国产成人精品国产成人亚洲 | 国产成人亚洲精品 | 成人高清网站 | 96久久久久久 | 国产成人综合网 | 久久高清 | 一区二区三区亚洲 | 日本精品在线一区 | 日韩一级精品视频在线观看 | 日韩欧美国产精品一区二区三区 |