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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數碼管控制實驗程序問題(一直顯示,不會閃動)

[復制鏈接]
跳轉到指定樓層
樓主
ID:806593 發表于 2020-7-23 14:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
70黑幣
要求:
四個數碼管同時顯示,當按下第一個按鍵時,四個數碼管不變(同樣顯示原來的數字),當松開按鍵后,第一個數碼管數字加1,其他數碼管不變(一直顯示,不會閃動),以此類推。
代碼如下,歡迎各位大佬指教!
  1. #include  <reg51.h>
  2. #define  uchar  unsigned  char
  3. #define  uint unsigned int
  4. #define duan P0

  5. sbit k1=P3^4;
  6. sbit k2=P3^5;
  7. sbit k3=P3^6;
  8. sbit k4=P3^7;

  9. sbit wei1=P2^4;
  10. sbit wei2=P2^5;
  11. sbit wei3=P2^6;
  12. sbit wei4=P2^7;

  13. uint a,b,c,d;
  14. uint e=0;
  15. uchar code sz[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  16. void timer1_init()
  17. {
  18. TMOD=0x10;
  19. TH1=(65535-45827)/256;
  20. TL1=(65535-45827)%256;
  21. EA=1;
  22. ET1=1;
  23. TR1=1;
  24. }
  25. void  stop()
  26. {
  27. EA=0;
  28. ET1=0;
  29. TR1=0;
  30. }

  31. void start()
  32. {
  33. EA=1;
  34. ET1=1;
  35. TR1=1;
  36. }

  37. void delay(uint t)
  38. {        
  39. uint i,j;
  40. for(i=t;i>0;i--)
  41. for(j=112;j>0;j--);
  42. }

  43. void display(uint a,uint b,uint c,uint d)
  44. {

  45. wei1=1;
  46. wei2=0;
  47. wei3=0;
  48. wei4=0;
  49. duan=sz[a];
  50. delay(1);
  51. P0=0XFF;
  52.         
  53. wei1=0;
  54. wei2=1;
  55. wei3=0;
  56. wei4=0;
  57. duan=sz[b];
  58. delay(1);
  59. P0=0XFF;

  60. wei1=0;
  61. wei2=0;
  62. wei3=1;
  63. wei4=0;
  64. duan=sz[c];
  65. delay(1);
  66. P0=0XFF;

  67. wei1=0;
  68. wei2=0;
  69. wei3=0;
  70. wei4=1;
  71. duan=sz[d];
  72. delay(1);
  73. P0=0XFF;
  74. }

  75.         
  76. void  timer1() interrupt 3
  77. {
  78. TH1=(65535-45827)/256;
  79. TL1=(65535-45827)%256;         
  80.                 if(k1==0)
  81.                 {
  82.                         delay(10);
  83.                         if(k1==0)
  84.                         {
  85.                                 stop();
  86.                                 wei1=1;
  87.                                 wei2=0;
  88.                          wei3=0;
  89.                           wei4=0;                        
  90.                                 duan=sz[a];

  91.                         while(k1==0);        
  92.                                 while(!k1);
  93.         a++;                                
  94.                         if(a>9)
  95.                                 a=0;
  96.                         
  97.                
  98.                         }               
  99.                 }               
  100.                 if(k2==0)
  101.                 {
  102.                         delay(10);
  103.                         if(k2==0)
  104.                         {
  105.         stop();
  106.                                 wei1=0;
  107.                                 wei2=1;
  108.                         wei3=0;
  109.                         wei4=0;
  110.                                 duan=sz[b];
  111.                         while(k2==0);        
  112.                                         while(!k2);
  113.         b++;                                
  114.                         if(b>9)
  115.                                 b=0;
  116.                         
  117.                         }               
  118.                 }
  119.                 if(k3==0)
  120.                 {
  121.                         delay(10);
  122.                         if(k3==0)
  123.                         {
  124. stop();
  125.                                 wei1=0;
  126.                                 wei2=0;
  127.                         wei3=1;
  128.                         wei4=0;
  129.                                 duan=sz[c];
  130.                         while(k3==0);        
  131.                                         while(!k3);
  132.          c++;                                
  133.                         if(c>9)
  134.                                 c=0;
  135.                         
  136.                         }               
  137.                 }
  138.                 if(k4==0)
  139.                 {
  140.                         delay(10);
  141.                         if(k4==0)
  142.                         {
  143.                                 stop();
  144.                                 wei1=0;
  145.                                 wei2=0;
  146.                         wei3=0;
  147.                         wei4=1;
  148.                                 duan=sz[d];
  149.                         while(k4==0);        
  150.                                         while(!k4);
  151.         d++;                                
  152.                         if(d>9)
  153.                                 d=0;
  154.                
  155.                          }               
  156.                 }
  157.                 start();
  158. }

  159. void  main()
  160. {
  161. timer1_init();
  162. a,b,c,d=0;
  163.         while(1){
  164. display(a,b,c,d);
  165.         }
  166. }
復制代碼


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

使用道具 舉報

沙發
ID:89515 發表于 2020-7-24 07:24 來自觸屏版 | 只看該作者
最簡單的方法是將按鍵延時消抖用顯示函數代替。復雜一點就用定時器狀態機分部執行
回復

使用道具 舉報

板凳
ID:806593 發表于 2020-7-24 09:04 | 只看該作者
問題已解決,謝謝各位指教
回復

使用道具 舉報

地板
ID:687694 發表于 2020-7-25 19:52 | 只看該作者
時間切片法就行了,還有你這個問題一定要注意,不可在中斷程序中運行這么多代碼。
回復

使用道具 舉報

5#
ID:801878 發表于 2020-7-28 09:57 | 只看該作者
按鍵用延時消抖法即可
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国外激情av | 精品久久亚洲 | 午夜影院在线观看 | 伊人91在线 | 日韩在线免费视频 | 久久久久国产一区二区三区不卡 | a爱视频| 国产精品久久久久久亚洲调教 | 国产精品一区二区三区在线播放 | 亚洲天堂影院 | 欧美综合在线观看 | 精品久久久久久久人人人人传媒 | 中文在线一区 | 免费高清av | 一区二区三区四区不卡 | 嫩草最新网址 | 国产激情在线 | av电影一区 | 久久精品国产久精国产 | 久久久久久久久久久高潮一区二区 | av中文在线 | 中文一区二区视频 | 99视频免费播放 | 2018中文字幕第一页 | 日韩精品视频一区二区三区 | 国产精品久久久久久久久久 | 在线观看免费av网 | caoporn视频在线 | 99久久亚洲 | 亚洲一区二区视频在线观看 | 超碰av人人 | 久久久国产一区二区三区四区小说 | 久久精品色欧美aⅴ一区二区 | 成人免费毛片在线观看 | 懂色中文一区二区在线播放 | 精品久久一区 | 国产精品久久福利 | 欧美精品久久久 | 天天想天天干 | 黄色小视频大全 | 中文字幕一区二区三区乱码在线 |