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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3391|回復: 9
收起左側

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

[復制鏈接]
ID:820813 發表于 2021-9-21 23:49 | 顯示全部樓層 |閱讀模式
本帖最后由 eternity4869 于 2021-9-22 00:07 編輯

  我目前的困難就是執行完IO循環后,數碼管對循環次數累加以后只會刷新一次不是持續刷新,所以根本看不見數碼管顯示。很想解決這個問題不知道在怎么操作。
回復

使用道具 舉報

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. }
復制代碼



回復

使用道具 舉報

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

說的沒錯!!!
回復

使用道具 舉報

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

就你小伙照!
回復

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色一级大片在线免费看产 | 成人毛片一区二区三区 | 精品99久久久久久 | 欧美日韩高清 | 国内毛片毛片毛片毛片 | 毛片av免费看| 久久精品成人热国产成 | 日韩欧美在线免费观看视频 | 一区二区在线 | 成人国产精品 | 国产成人一区 | 亚洲精品91 | 日本黄色大片免费 | 97国产精品视频人人做人人爱 | 男女视频网站 | 永久免费av | 九九一级片| 国产成人网| 伊人免费在线观看 | 国产午夜精品理论片a大结局 | 婷婷开心激情综合五月天 | 国产 日韩 欧美 在线 | 伊人性伊人情综合网 | 在线观看国产 | 免费观看毛片 | 国产精品日本一区二区在线播放 | 中文精品视频 | 日本在线一区二区 | 久久99蜜桃综合影院免费观看 | 国产精品久久久久一区二区三区 | 一区视频在线播放 | 天堂一区 | 国产91久久久久蜜臀青青天草二 | 亚洲日本视频 | 一区二区三区精品视频 | 欧美日韩高清 | 国产欧美日韩精品在线观看 | 日韩av啪啪网站大全免费观看 | 国产三区四区 | 粉嫩国产精品一区二区在线观看 | 婷婷久久综合 |