欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機按鍵,led小燈泡,數碼管綜合程序與Proteus仿真 [打印本頁]

作者: 2420726393    時間: 2021-5-27 00:22
標題: 51單片機按鍵,led小燈泡,數碼管綜合程序與Proteus仿真
其中開關SW1為系統總控制開關//系統初始為關閉狀態/此時按下SW1,系統開啟,指示燈D1亮,
第一塊數顯板會顯示按下次數1////此時按SW2/第一次D2亮起//第二次按下D3亮起//第三次按下D2和D3會同時熄滅,每按一次,
第四塊數顯板會顯示開關SW2按下次數。當任意一個開關按下次數達到10次時,對應的數顯板會從零開始重新計數。
開關SW3按下時,不管系統處于什么狀態,都將關閉系統,而SW4按下時,第二個小燈泡會點亮

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


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

  9. unsigned char F=0;          //定義系統是否開啟
  10. unsigned char A=0;          //定義D3燈開關次數

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

  14. sbit SW1=P2^0;                   //開關引腳
  15. sbit SW2=P2^1;
  16. unsigned char s1=0,s2=0;  //數顯管開關次數
  17. unsigned char SMG[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  18. void SMGDelay(unsigned char t)           //此處為延時函數定義
  19.    {
  20.    while(t--);
  21.    }
  22. void SMGPLAY(unsigned char P,unsigned char D)         //四個數顯管的顯示位置
  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()  //定義四個數顯管顯示內容
  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()           //定義開關按下次數和系統開關和小燈泡亮滅
  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. }
復制代碼

所有資料51hei提供下載:
聯合控制開關 LED.rar (20.23 KB, 下載次數: 19)






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1