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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機排隊叫號系統 程序有錯誤 求分析

[復制鏈接]
跳轉到指定樓層
樓主
新人求大佬解答!!
銀行叫號系統。八個按鍵代表八個窗口,窗口號與按鍵號對應。排隊號依次加1,加到99后,重新從1開始,按鍵每按一下,發三聲提示音。
現在不管按哪個鍵都是這樣顯示,有沒有大佬幫忙分析一下程序啊。

單片機源程序如下:
  1. //***********************************************************************************
  2. #include <STC15F2K60S2.H>
  3. //*********************************用戶數據類型定義**********************************
  4. typedef unsigned char uchar;
  5. typedef unsigned int uint;
  6. static uint w;
  7. //*************************************用戶引腳定義**********************************
  8. sbit beep_dr = P3^7;
  9. sbit key1 = P1^0;
  10. sbit key2 = P1^1;
  11. sbit key3 = P1^2;
  12. sbit key4 = P1^3;
  13. sbit key5 = P1^4;
  14. sbit key6 = P1^5;
  15. sbit key7 = P1^6;
  16. sbit key8 = P1^7;
  17. //*************************************共陽極數碼管斷碼數組**************************
  18. uchar code DigSegBuff[] =         //排隊號
  19. {
  20.     0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  21. };
  22. uchar code WindowBuff[] =        //窗口號
  23. {
  24.     0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
  25. };

  26. //*************************************函數聲明區***********************************
  27. void DelayMs(uint uiXms);    //有阻塞的延時函數聲明
  28. void IniSystem();                 //系統初始化函數聲明
  29. void IniPeripherals();             //外圍器件初始化函數聲明
  30. void BeepVoice();                 //蜂鳴器發出“嘀”的聲音函數聲明
  31. void MatrixKeyScan();             //按鍵識別函數聲明
  32. void DigDisplay();           //數碼管顯示函數聲明                                                         
  33. //*************************************主函數區************************************
  34. void main()
  35. {
  36.           IniSystem();
  37.           DelayMs(200);
  38.           IniPeripherals();
  39.           DelayMs(200);
  40.           while(1)
  41.           {
  42.                        DigDisplay();
  43.           }
  44. }
  45. //*************************************函數定義區************************************
  46. void DelayMs(uint uiXms)    //有阻塞的延時函數定義
  47. {
  48.     uint i,j;
  49.         for(i=uiXms;i>0;i--)
  50.         {
  51.             for(j=110;j>0;j--);
  52.         }
  53. }

  54. void IniSystem()           //系統初始化函數定義
  55. {
  56.         P0 = 0xff;
  57.                 P1 = 0xff;
  58.                 P2 = 0xff;        
  59.             beep_dr = 1;
  60. }

  61. void IniPeripherals()       //外圍器件初始化函數定義
  62. {
  63.    
  64.           BeepVoice();                    //系統發出三種提示音
  65.           BeepVoice();
  66.           BeepVoice();
  67.           EA=1;         //總中斷允許控制位
  68.           IT0=1;          //中斷觸發位
  69.           EX0=1;         //外部中斷允許位
  70. }

  71. void BeepVoice()            //蜂鳴器發出“嘀”聲函數定義
  72. {
  73.     beep_dr = 0;                //蜂鳴器開
  74.         DelayMs(70);
  75.         beep_dr = 1;                // 蜂鳴器關
  76.         DelayMs(70);
  77. }


  78. void MatrixKeyScan()            //按鍵識別函數定義
  79. interrupt 0                         //中斷0   外部中斷0
  80. {
  81.     EX0 = 0;
  82. //    uchar ucTemp;
  83. //        uint w;
  84.     while(P1 == 0xff);
  85.         DelayMs(10);                  
  86.         if(P1 != 0xff)
  87.         {
  88.             BeepVoice();
  89.                 BeepVoice();
  90.                 BeepVoice();
  91. //            ucTemp = P1;
  92.                 while(P1 != 0xff)
  93.                 {
  94.                     
  95.                         if(key1==0)
  96.                         {w=1;}
  97.                         if(key2==0)
  98.                         {w=2;}
  99.                         if(key3==0)
  100.                         {w=3;}
  101.                         if(key4==0)
  102.                         {w=4;}
  103.                         if(key5==0)
  104.                         {w=5;}
  105.                         if(key6==0)
  106.                         {w=6;}
  107.                         if(key7==0)
  108.                         {w=7;}
  109.                         if(key8==0)
  110.                         {w=8;}
  111.                 }
  112.         }
  113. EX0 = 1;
  114. }         

  115. void DigDisplay()           //數碼管顯示函數定義
  116. {
  117.     static uint h=1;
  118. //        static uint w=0;
  119.         uchar ucBitCode;                //定義位碼  
  120.     for(P1 != 0xff)
  121.         {
  122. //            uint h,w;
  123. //                MatrixKeyScan();
  124.             ucBitCode = 0x01;  //位碼高電平亮
  125.         P2 =0xc0;         //顯示0
  126.                 P0 =~ucBitCode;
  127.                 DelayMs(3);              
  128.             P0 = 0xff;                    //關閉所有數碼管
  129.                 DelayMs(1);
  130.                 ucBitCode = ucBitCode<<1;


  131.                 P2 = WindowBuff[w];   //顯示窗口號
  132.                 P0 =~ucBitCode;
  133.                 DelayMs(3);
  134.             P0 = 0xff;
  135.                 DelayMs(1);
  136.                 ucBitCode = ucBitCode<<1;

  137.                 P2 = 0xbf;                                 //不顯示
  138.                 P0 = ~ucBitCode;
  139.                 DelayMs(3);
  140.                 P0 = 0xff;
  141.                 DelayMs(1);                                 
  142.             ucBitCode = ucBitCode<<1;     

  143.                 P2 = 0xbf;                          //顯示“-”
  144.                 P0 = ~ucBitCode;
  145.                 DelayMs(3);
  146.                 P0 = 0xff;
  147.                 DelayMs(1);
  148.                 ucBitCode = ucBitCode<<1;

  149.                 P2 = 0xbf;                          //顯示“-”
  150.                 P0 = ~ucBitCode;
  151.                 DelayMs(3);
  152.                 P0 = 0xff;
  153.                 DelayMs(1);
  154.                 ucBitCode = ucBitCode<<1;

  155.                 P2 = 0xbf;                                 //不顯示
  156.                 P0 = ~ucBitCode;
  157.                 DelayMs(3);
  158.                 P0 = 0xff;
  159.                 DelayMs(1);                                 
  160.             ucBitCode = ucBitCode<<1;


  161.                 P2 =DigSegBuff[h/10];   //顯示排隊號十位
  162.                 P0 =~ucBitCode;
  163.                 DelayMs(3);
  164.             P0 = 0xff;
  165.                 DelayMs(1);
  166.                 ucBitCode = ucBitCode<<1;

  167.                 P2 =DigSegBuff[h%10];   //顯示排隊號的個位
  168.                 P0 =~ucBitCode;
  169.                 DelayMs(3);
  170.             P0 = 0xff;
  171.                 DelayMs(1);
  172.                 ucBitCode = ucBitCode<<1;            
  173.                 h++;
  174.             if(h>99)
  175.                 {
  176.                     h = 1;
  177.                 }
  178.         }
  179. }
復制代碼

1.png (67.82 KB, 下載次數: 25)

現在不管按哪個鍵都是這樣顯示

現在不管按哪個鍵都是這樣顯示

2.png (192.95 KB, 下載次數: 32)

正常要顯示這個

正常要顯示這個
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:593646 發表于 2020-5-4 19:51 | 只看該作者
我的解決思路:一個個問題差過去,先選一個按鍵按下一直不變的話,不用按鍵,直接改代碼,讓數碼管全部顯示1,如果還是沒效果,連接看一看,程序顯示函數查一查
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女免费视频网站 | 日韩国产欧美一区 | 国产精品久久久久久一区二区三区 | 久久免费精品视频 | 久久久久国产一区二区三区 | 日韩久久久久久久久久久 | 人干人人 | 久久成人一区 | 欧美白人做受xxxx视频 | 久久大| 一级做a毛片 | 欧美日韩精品中文字幕 | 日韩精品一区二区三区久久 | 久久久久亚洲 | a级免费视频| 精品久久影院 | 亚洲福利网 | 丁香婷婷综合激情五月色 | 欧美日韩在线综合 | 欧美日韩精品在线免费观看 | 求毛片 | 黄色一级毛片 | 黄色国产大片 | 日韩欧美中文在线 | 视频在线观看一区 | 99久久精品国产一区二区三区 | 成人激情视频在线观看 | 美女131mm久久爽爽免费 | 成人做爰www免费看视频网站 | 亚洲欧美一区二区三区国产精品 | 日日摸夜夜添夜夜添精品视频 | 一区二区三区日本 | 中文字幕高清 | 91成人| 欧美精品tv| 亚洲不卡在线观看 | 国产成人久久久 | 久久99久久99精品免视看婷婷 | 亚洲精品成人av久久 | 性网站免费 | 中文字幕日韩欧美一区二区三区 |