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

 找回密碼
 注冊
搜索

基于51單片機按鍵按下改變流水燈方向源程序

[復制鏈接]
樓主
2口接8個LED流水燈,P3.0接一個按鍵
按鍵按下一次流水燈方向改變一次
基于51單片機按鍵按下改變流水燈方向源程序 1.png
單片機源程序如下:
  1. #include<reg52.h>             //51系列單片機頭文件
  2. #include<intrins.h>           //51系列單片機頭文件
  3. #define uint unsigned int     //宏定義
  4. #define uchar unsigned char   //宏定義
  5. sbit k1=P3^0;
  6. uchar a,b,c,d,y=0;            //定義一個變量,用來給P2口賦值
  7. void delayms(uint xms)        //延時子函數
  8. {
  9.   uint i,j;
  10.   for(i=xms;i>0;i--)          //i=xms即延時約xms毫秒
  11.   for(j=110;j>0;j--);      
  12. }
  13. void key()
  14. {
  15.   uchar x;
  16.   if(k1==0)
  17.   {
  18.     delayms(10);              //延時10ms 去抖
  19.     if(k1==0)                                  //再判斷k1按鍵是否按下
  20.     {
  21.       while(!k1);
  22.       x++;
  23.       if(x==4)
  24.       x=1;
  25.       if(y==4)
  26.       x=0;
  27.       switch(x)                                  //條件選擇
  28.       {
  29.         case 1: y=1; break;
  30.         case 2: y=2; break;
  31.         case 3: y=3; break;
  32.         default: break;  
  33.       }
  34.     }
  35.   }
  36. }
  37. void display()
  38. {   
  39.     if(y==0)
  40.         {
  41.           P2=a;
  42.           delayms(500);
  43.           a=~a;                                 //狀態0時 LED閃爍
  44.         }  
  45.     if(y==1)
  46.     {      
  47.       P2=b;            
  48.       delayms(500);                     
  49.       b=_crol_(b,1);           //狀態1時 LED選擇左移
  50.     }
  51.     if(y==2)
  52.     {
  53.       P2=c;            
  54.       delayms(500);                     
  55.       c=_cror_(c,1);         //狀態2時 LED選擇右移
  56.     }      
  57.     if(y==3)
  58.     {
  59.       P2=d;           
  60.       delayms(500);                     
  61.       d=d;                     //狀態3時  LED全亮
  62.     }
  63.   }
  64. void main()            
  65. {
  66.   a=0xff;                         //高4位和低4位都置為1
  67.   b=0x01;                                //只有低4位的最低位為1
  68.   c=0xfe;                                //低4位的最低位為0
  69.   d=0xff;  
  70.   while(1)            
  71.   {  
  72.     key();
  73.     display();                   //按鍵顯示
  74.   }
  75. }
復制代碼

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

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 05:12

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表