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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2657|回復: 2
收起左側

讓單片機串口接收數據然后用數碼管顯示 但程序十位數字出現就很快消失

[復制鏈接]
ID:331899 發表于 2018-5-21 16:34 | 顯示全部樓層 |閱讀模式
我寫的程序是讓單片機接收數據已數碼管的形式顯示,為什么我的我一個程序十位數字出現就很快消失,個位顯示;而第二個程序確實現的很好?大佬們,求解答
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit we = P2^7;
  5. sbit du = P2^6;
  6. uchar counter,time_counter;
  7. uchar code leddata[]={

  8.                 0x3F,  //"0"
  9.                 0x06,  //"1"
  10.                 0x5B,  //"2"
  11.                 0x4F,  //"3"
  12.                 0x66,  //"4"
  13.                 0x6D,  //"5"
  14.                 0x7D,  //"6"
  15.                 0x07,  //"7"
  16.                 0x7F,  //"8"
  17.                 0x6F,  //"9"
  18.                 0x77,  //"A"
  19.                 0x7C,  //"B"
  20.                 0x39,  //"C"
  21.                 0x5E,  //"D"
  22.                 0x79,  //"E"
  23.                 0x71,  //"F"
  24.                 0x76,  //"H"
  25.                 0x38,  //"L"
  26.                 0x37,  //"n"
  27.                 0x3E,  //"u"
  28.                 0x73,  //"P"
  29.                 0x5C,  //"o"
  30.                 0x40,  //"-"
  31.                 0x00,  //熄滅
  32.                 0x00  //自定義

  33.                          };
  34. void delay(uint z)
  35. {
  36.         uint x,y;
  37.         for(x = z; x > 0; x--)
  38.                 for(y = 114; y > 0 ; y--);
  39. }      
  40. void UART_init()
  41. {
  42.         TMOD = 0x20;          //T1工作模式2  8位自動重裝
  43.         TH1 = 0xfa;
  44.         TL1 = 0xfa;         //比特率9600
  45.         TR1 = 1;
  46.         SM0 = 0;
  47.         SM1 = 1;                 //串口工作方式1 10位異步
  48.         REN = 1;                //串口允許接收
  49. /*        EA  = 1;                //開總中斷
  50.         ES  = 1;                //串口中斷打開        */         
  51. }
  52. void display(uchar i)
  53. {
  54.         uchar shi,ge;
  55.         shi = i / 10; //求模
  56.         ge  = i % 10; //求余
  57.         P0 = 0xff;
  58.         we = 1;
  59.         P0 = 0xfe; //點亮第一位數碼管
  60.         we = 0;

  61.         du = 1;
  62.         P0 = leddata[shi];
  63.         du = 0;
  64.         delay(1);

  65.         P0 = 0xff;
  66.         we = 1;
  67.         P0 = 0xfd;//點亮第二位數碼管
  68.         we = 0;

  69.         du = 1;
  70.         P0 = leddata[ge];
  71.         du = 0;
  72.         delay(1);      
  73. }
  74. void main()
  75. {
  76.         UART_init(); //串口初始化
  77.         while(1)
  78.         {
  79.            while(!RI)
  80.             RI = 0;
  81.            display(SBUF);
  82.         }      
  83. }


  84. #include <reg52.h>
  85. #define uchar unsigned char
  86. #define uint  unsigned int
  87. sbit we = P2^7;
  88. sbit du = P2^6;
  89. uchar counter,time_counter;
  90. uchar code leddata[]={

  91.                 0x3F,  //"0"
  92.                 0x06,  //"1"
  93.                 0x5B,  //"2"
  94.                 0x4F,  //"3"
  95.                 0x66,  //"4"
  96.                 0x6D,  //"5"
  97.                 0x7D,  //"6"
  98.                 0x07,  //"7"
  99.                 0x7F,  //"8"
  100.                 0x6F,  //"9"
  101.                 0x77,  //"A"
  102.                 0x7C,  //"B"
  103.                 0x39,  //"C"
  104.                 0x5E,  //"D"
  105.                 0x79,  //"E"
  106.                 0x71,  //"F"
  107.                 0x76,  //"H"
  108.                 0x38,  //"L"
  109.                 0x37,  //"n"
  110.                 0x3E,  //"u"
  111.                 0x73,  //"P"
  112.                 0x5C,  //"o"
  113.                 0x40,  //"-"
  114.                 0x00,  //熄滅
  115.                 0x00  //自定義

  116.                          };
  117. void delay(uint z)
  118. {
  119.         uint x,y;
  120.         for(x = z; x > 0; x--)
  121.                 for(y = 114; y > 0 ; y--);
  122. }      
  123. void UART_init()
  124. {
  125.         TMOD = 0x20;          //T1工作模式2  8位自動重裝
  126.         TH1 = 0xfa;
  127.         TL1 = 0xfa;         //比特率9600
  128.         TR1 = 1;
  129.         SM0 = 0;
  130.         SM1 = 1;                 //串口工作方式1 10位異步
  131.         REN = 1;                //串口允許接收
  132. /*        EA  = 1;                //開總中斷
  133.         ES  = 1;                //串口中斷打開        */         
  134. }
  135. void display(uchar i)
  136. {
  137.         uchar shi,ge;
  138.         shi = i / 10; //求模
  139.         ge  = i % 10; //求余
  140.         P0 = 0xff;
  141.         we = 1;
  142.         P0 = 0xfe; //點亮第一位數碼管
  143.         we = 0;

  144.         du = 1;
  145.         P0 = leddata[shi];
  146.         du = 0;
  147.         delay(1);

  148.         P0 = 0xff;
  149.         we = 1;
  150.         P0 = 0xfd;//點亮第二位數碼管
  151.         we = 0;

  152.         du = 1;
  153.         P0 = leddata[ge];
  154.         du = 0;
  155.         delay(1);      
  156. }
  157. void main()
  158. {
  159.         UART_init(); //串口初始化
  160.         while(1)
  161.         {
  162.            if(RI)
  163.            {
  164.               RI = 0;
  165.            }
  166.            display(SBUF);
  167.         }      
  168. }
復制代碼



評分

參與人數 1黑幣 +10 收起 理由
cciejs12345 + 10 贊一個!

查看全部評分

回復

使用道具 舉報

ID:213173 發表于 2018-5-22 08:32 | 顯示全部樓層
while(!RI)是停留等待條件成立才繼續運行,if(RI)是判斷條件是否成立,不停留,可以繼續運行。
回復

使用道具 舉報

ID:330198 發表于 2018-5-22 08:53 | 顯示全部樓層
你第一個和第二個唯一的區別就是清除RI標志位的語句,用if判斷不滿足條件還會繼續執行,但是用while如果不滿足就會一直停在這,這就是你數碼管很快消失的原因。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九久久免费视频 | 国产精品免费一区二区三区四区 | 日本激情一区二区 | 精品一区二区在线视频 | 国产精品日韩一区二区 | 精品国产精品国产偷麻豆 | 成人久久久 | 一区二区三区四区国产 | 国产精品国产三级国产aⅴ原创 | 黄色av大片 | 中文字幕一区二区三区日韩精品 | 亚洲美女一区 | 91麻豆精品国产91久久久更新资源速度超快 | 日韩精品一区二区三区在线播放 | 亚洲精品456| 99re国产| 久久久高清 | 一级片aaa| 午夜精品久久久久久久久久久久久 | 国产精品久久久精品 | 精品国产免费一区二区三区五区 | www日本在线观看 | 国产一区二区久久 | 亚洲日本成人 | 综合激情网 | 欧美国产一区二区 | 在线视频成人 | 久久久久成人精品 | www.99热| 在线观看国产91 | 国产精品久久久乱弄 | 久久久久香蕉视频 | yeyeav | 国产免费一区二区 | 成人欧美一区二区三区在线观看 | 欧美国产日韩在线观看成人 | 精品一区二区三区在线视频 | 精品欧美一区二区三区久久久 | 日本成人二区 | 日韩精品一区二区三区在线播放 | 久久久高清 |