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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

怎么實現讓51單片機按鍵開始一邊執行兩個IO循環,一邊數碼管動態顯計數。

[復制鏈接]
跳轉到指定樓層
樓主
ID:820813 發表于 2021-9-21 23:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 eternity4869 于 2021-9-22 00:07 編輯

  我目前的困難就是執行完IO循環后,數碼管對循環次數累加以后只會刷新一次不是持續刷新,所以根本看不見數碼管顯示。很想解決這個問題不知道在怎么操作。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2021-9-22 08:04 | 只看該作者
1、永遠記住任何時刻單片機只能做一件事!!!
2、多件事需要執行時,一定是分時進行的!
現在說你的問題。(問題出在:你的掃描顯示方案不當!)
1、顯示一定要用定時中斷去做,只有這樣才能每間隔一個固定的時間,掃顯一次,而不需要你額外照料它。(即不影響你【執行兩個IO循環】)
例如,每4ms掃顯一次,就做個4ms的定時中斷。
2、在中斷服務程序中完成掃顯:假設掃描8次完成一次完整的數據顯示刷新,你就建立8個緩沖區存放8次需要顯示的LED碼,再建立一個指針指向它們(=0-7),每次中斷將指針+1,再取批針指向的數據送入LED顯示,這樣就完成掃描顯示了。也不影響主程序的執行。
3、緩沖區的數據,在主程序中改,不要在中斷服務在改,這樣才機動。即顯示什么、譯成LED顯示碼的工作,在主程序中進行,當然LED值沒有變化時,是不需要變更處理的,即僅在LED需要改變時進行一次處理。
4、顯示完成后你想如何就如何吧。
回復

使用道具 舉報

板凳
ID:276663 發表于 2021-9-22 09:12 | 只看該作者
要想解決問題,首先要把問題給描述清除,你這樣的描述,只能是你覺的你說明白了,其實我根本不知道你在說啥。
回復

使用道具 舉報

地板
ID:161164 發表于 2021-9-22 13:10 | 只看該作者
給一段例子,讓你參考

  1. #include <reg52.h>

  2. typedef         unsigned char        u8;  //0 to 255
  3. typedef         unsigned int        u16;  //0 — 65535
  4. typedef         unsigned long        u32;  //0 — 4294967295

  5. u8 code smgduan[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰數碼管
  6. //u8 code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽數碼管
  7. u8 DigiTubeShow[3];
  8. u16 count_XX=0;                        //消抖計數
  9. u16 TMR_XX_OT;
  10. u8 num;
  11. sbit P20 = P2^0;
  12. sbit P21 = P2^1;
  13. sbit P37 = P3^7;        
  14. void main()
  15. {
  16.     while (1)
  17.     {
  18.                         //按鍵掃描V
  19.                         if(!P20 || !P21)
  20.                         {
  21.                                 if(count_XX<0xFFFF)count_XX++;
  22.                                 if(count_XX==5000)                        //消抖
  23.                                 {u8 i, Temp;
  24.                                         if(!P20)num++;
  25.                                         if(!P21)num--;
  26.                                         Temp = num;
  27.                                         for(i = 0;i<3;i++)
  28.                                         {
  29.                                                 DigiTubeShow[i] = Temp%10;
  30.                                                 Temp /=10;
  31.                                         }
  32.                                 }
  33.                         }
  34.                         else                                                        //按鍵抬起
  35.                                 count_XX=0;                                        //count_XX清0
  36.                         //按鍵掃描A
  37.                         
  38.                         //數碼管掃描V
  39.       if(TMR_XX_OT)TMR_XX_OT--;      
  40.       if(!TMR_XX_OT)
  41.       {static u8 x;
  42.                                 TMR_XX_OT=100;
  43.                                 P0 = 0x00;
  44.                                 P1 = 0xFF;
  45.                                 P0 = smgduan[DigiTubeShow[x]];
  46.                                 P1 = ~(1<<x);
  47.                                 x = (++x) % 3;        
  48.       }
  49.                         //數碼管掃描A
  50.     }
  51. }
復制代碼



回復

使用道具 舉報

5#
ID:933803 發表于 2021-9-22 13:50 | 只看該作者
IdeaMing 發表于 2021-9-22 09:12
要想解決問題,首先要把問題給描述清除,你這樣的描述,只能是你覺的你說明白了,其實我根本不知道你在說啥 ...

說的沒錯!!!
回復

使用道具 舉報

6#
ID:933803 發表于 2021-9-22 13:50 | 只看該作者
IdeaMing 發表于 2021-9-22 09:12
要想解決問題,首先要把問題給描述清除,你這樣的描述,只能是你覺的你說明白了,其實我根本不知道你在說啥 ...

就你小伙照!
回復

使用道具 舉報

7#
ID:820813 發表于 2021-9-23 09:54 | 只看該作者
yzwzfyz 發表于 2021-9-22 08:04
1、永遠記住任何時刻單片機只能做一件事!!!
2、多件事需要執行時,一定是分時進行的!
現在說你的問題 ...

非常感謝,解決了我的疑惑。我嘗試解決一下。
回復

使用道具 舉報

8#
ID:820813 發表于 2021-9-25 22:00 | 只看該作者
yzwzfyz 發表于 2021-9-22 08:04
1、永遠記住任何時刻單片機只能做一件事!!!
2、多件事需要執行時,一定是分時進行的!
現在說你的問題 ...

你好,我想問一下如果不用指針還有什么別的辦法來解決這個問題。目前指針還不了解嘗試了一下發現指針并不容易上手。
回復

使用道具 舉報

9#
ID:161164 發表于 2021-9-25 22:50 | 只看該作者
eternity4869 發表于 2021-9-25 22:00
你好,我想問一下如果不用指針還有什么別的辦法來解決這個問題。目前指針還不了解嘗試了一下發現指針并不 ...

請參考我"地板"的回覆
回復

使用道具 舉報

10#
ID:57657 發表于 2021-9-25 23:01 | 只看該作者
eternity4869 發表于 2021-9-25 22:00
你好,我想問一下如果不用指針還有什么別的辦法來解決這個問題。目前指針還不了解嘗試了一下發現指針并不 ...

他說的8個緩沖區其實就是個8字節數組,
指針指的是數組下標,并非真正的指針。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中国黄色毛片视频 | 成人中文字幕av | 欧美日韩一区不卡 | 精品国产18久久久久久二百 | 国产电影一区二区在线观看 | 国产成人免费视频 | 国产精品3区 | 理伦毛片| 国产成人精品免高潮在线观看 | 日韩欧美亚洲 | 国产日韩欧美精品一区二区 | 91精品久久久久久久99 | 久久精品二区 | 久婷婷 | 在线免费观看视频黄 | 国产精品1区2区 | 色就干 | 亚洲影音 | 精品免费视频 | 欧美日韩一区二区在线播放 | 成人在线视频免费播放 | 日韩精品在线看 | 欧美激情久久久 | 一区二区视频在线 | 久久亚洲高清 | 黑人中文字幕一区二区三区 | 欧美一级免费看 | 国产高清免费 | 韩日一区二区 | 久久一区 | 中文字幕精品一区 | 日韩中文av在线 | 亚洲国产精品一区在线观看 | 久久久久国产一区二区三区四区 | 中文字幕精品视频在线观看 | 亚洲国产二区 | 久久r久久 | 亚洲欧洲日本国产 | 国产精品日韩一区 | 精品国产99 | 精品九九 |