国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

ELEOK

標(biāo)題: 51單片機(jī)按鍵,led小燈泡,數(shù)碼管綜合程序與Proteus仿真 [打印本頁]

作者: eng    時間: 2021-6-9 19:31
標(biāo)題: 51單片機(jī)按鍵,led小燈泡,數(shù)碼管綜合程序與Proteus仿真
其中開關(guān)SW1為系統(tǒng)總控制開關(guān)//系統(tǒng)初始為關(guān)閉狀態(tài)/此時按下SW1,系統(tǒng)開啟,指示燈D1亮,
第一塊數(shù)顯板會顯示按下次數(shù)1////此時按SW2/第一次D2亮起//第二次按下D3亮起//第三次按下D2和D3會同時熄滅,每按一次,
第四塊數(shù)顯板會顯示開關(guān)SW2按下次數(shù)。當(dāng)任意一個開關(guān)按下次數(shù)達(dá)到10次時,對應(yīng)的數(shù)顯板會從零開始重新計數(shù)。
開關(guān)SW3按下時,不管系統(tǒng)處于什么狀態(tài),都將關(guān)閉系統(tǒng),而SW4按下時,第二個小燈泡會點(diǎn)亮

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

51單片機(jī)源程序如下:
  1. /*此系統(tǒng)為開關(guān)聯(lián)合控制LED工作臺////其中開關(guān)SW1為系統(tǒng)總控制開關(guān)//系統(tǒng)初始為關(guān)閉狀態(tài)/此時按下SW1,系統(tǒng)開啟,指示燈D1亮,
  2. 第一塊數(shù)顯板會顯示按下次數(shù)1////此時按SW2/第一次D2亮起//第二次按下D3亮起//第三次按下D2和D3會同時熄滅,每按一次,
  3. 第四塊數(shù)顯板會顯示開關(guān)SW2按下次數(shù)。當(dāng)任意一個開關(guān)按下次數(shù)達(dá)到10次時,對應(yīng)的數(shù)顯板會從零開始重新計數(shù)。*/
  4. #include"reg52.h"
  5. sbit C1=P3^0; //定義數(shù)碼管四個引腳
  6. sbit C2=P3^1;
  7. sbit C3=P3^2;
  8. sbit C4=P3^3;

  9. unsigned char F=0;          //定義系統(tǒng)是否開啟
  10. unsigned char A=0;          //定義D3燈開關(guān)次數(shù)

  11. sbit D1=P1^0;                  //LED引腳
  12. sbit D2=P1^1;
  13. sbit D3=P1^2;

  14. sbit SW1=P2^0;                   //開關(guān)引腳
  15. sbit SW2=P2^1;
  16. unsigned char s1=0,s2=0;  //數(shù)顯管開關(guān)次數(shù)
  17. unsigned char SMG[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  18. void SMGDelay(unsigned char t)           //此處為延時函數(shù)定義
  19.    {
  20.    while(t--);
  21.    }
  22. void SMGPLAY(unsigned char P,unsigned char D)         //四個數(shù)顯管的顯示位置
  23.    {
  24.     P0=0xff; //消隱
  25.             switch(P)
  26.           {
  27.           case 1:C1=1;C2=0;C3=0;C4=0;break;
  28.           case 2:C1=0;C2=1;C3=0;C4=0;break;
  29.           case 3:C1=0;C2=0;C3=1;C4=0;break;
  30.           case 4:C1=0;C2=0;C3=0;C4=1;break;
  31.           }
  32.           P0=D;
  33.    }
  34.   
  35.   void PUT4SMG()  //定義四個數(shù)顯管顯示內(nèi)容
  36.   {
  37.    SMGPLAY(1,SMG[s1]);
  38.    SMGDelay(100);
  39.    SMGPLAY(2,0xbf);
  40.    SMGDelay(100);
  41.    SMGPLAY(3,0xbf);
  42.    SMGDelay(100);
  43.    SMGPLAY(4,SMG[s2]);
  44.    SMGDelay(100);
  45.   }
  46.   void KEYS()           //定義開關(guān)按下次數(shù)和系統(tǒng)開關(guān)和小燈泡亮滅
  47.   {
  48.   if(SW1==0)
  49.    {
  50.   SMGDelay(100);
  51.   if(SW1==0)
  52.     {
  53.   while(SW1==0)
  54.      {
  55.    PUT4SMG();
  56.      }
  57.          s1++;
  58.          if(s1==10)
  59.          {
  60.           s1=0;
  61.          }
  62.         if(F==0)
  63.           {
  64.           F=1;
  65.           D1=0;
  66.           }
  67.           else
  68.           {
  69.           F=0;
  70.           D1=1;
  71.           D2=1;
  72.           D3=1;
  73.           A=0;
  74.           }
  75.          
  76.     }
  77.    }
  78. if(SW2==0)
  79.    {
  80.   SMGDelay(100);
  81.   if(SW2==0)
  82.     {
  83.   while(SW2==0)
  84.      {
  85.    PUT4SMG();
  86.      }
  87.          s2++;
  88.          if(s2==10)
  89.           {
  90.           s2=0;
  91.           }
  92.           if(F==1)
  93.           {
  94.           A++;
  95.           switch(A)
  96.           {
  97.           case 1:D2=0;break;
  98.           case 2:D3=0;break;
  99.           case 3:D2=1;D3=1;A=0;break;
  100.           }
  101.           }

  102.     }
  103.    }
  104.   }
  105. void main()
  106. {
  107.   while(1)
  108.   {
  109.            PUT4SMG();
  110.         KEYS();
  111.    }
  112. }
復(fù)制代碼
聯(lián)合控制開關(guān) LED.rar (20.23 KB, 售價: 1 E幣)





歡迎光臨 ELEOK (http://m.afoofa.cn/) Powered by Discuz! X5.0