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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2421|回復: 0
收起左側

51單片機LED燈多樣控制程序

[復制鏈接]
ID:918467 發表于 2021-6-21 20:32 | 顯示全部樓層 |閱讀模式
51hei圖片20210618101031.png
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. uchar code table[]={0xfe,0xfc,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0xff};  

  6. sbit k1 = P2^0;  
  7. sbit k2 = P2^1;  
  8. sbit k3 = P2^2;  
  9. sbit k4 = P3^2;  
  10. sbit k5 = P3^3;  

  11. int i;
  12. int a,b,l,led;
  13. uint led1,led2;

  14. void KEY4();  
  15. void KEY5();  

  16. void delay(uint xms)  //延時
  17. {
  18.         int i,j;
  19.         for(i=xms;i>0;i--)
  20.                 for(j=110;j>0;j--) ;
  21. }

  22. void KEY1()  //流水燈向右
  23. {
  24.         if(k1==0)
  25.         {
  26.                 delay(5);  //消抖
  27.                 if(k1==0)
  28.                 {
  29.                         ET0 = 0;  //關定時器0中斷
  30.                         TR0 = 0;  //關閉定時器0
  31.                         a = 0;
  32.                         P1 = 0xff;
  33.                         delay(500);
  34.                         while(1)  //while(1)循環流水燈向右
  35.                         {
  36.                                 P1 = table[a];
  37.                                 delay(500);
  38.                                 a++;
  39.                                 if(a==11)  //流水燈到尾重新開始
  40.                                         a = 0;
  41.                                 if(k1==0||k2==0||k3==0)  //按鍵檢測,退出while(1)循環
  42.                                 {
  43.                                         delay(5);
  44.                                         if(k1==0||k2==0||k3==0)
  45.                                                 break;
  46.                                 }
  47.                         }
  48.                 }
  49.         }
  50. }

  51. void KEY2()  //流水燈向左
  52. {
  53.         if(k2==0)
  54.         {
  55.                 delay(5);
  56.                 if(k2==0)
  57.                 {
  58.                         ET0 = 0;  
  59.                         TR0 = 0;
  60.                         b = 10;
  61.                         P1 = 0xff;
  62.                         delay(500);
  63.                         while(1)
  64.                         {
  65.                                 P1 = table[b];
  66.                                 delay(500);
  67.                                 b--;
  68.                                 if(b<0)
  69.                                         b = 10;
  70.                                 if(k1==0||k2==0||k3==0)
  71.                                 {
  72.                                         delay(5);
  73.                                         if(k1==0||k2==0||k3==0)
  74.                                                 break;
  75.                                 }
  76.                         }
  77.                 }
  78.         }
  79. }

  80. void KEY3()  //閃爍燈
  81. {
  82.         if(k3==0)
  83.         {
  84.                 delay(5);
  85.                 if(k3==0)
  86.                 {
  87.                         ET0 = 0;  
  88.                         TR0 = 0;
  89.                         P1 = 0xff;
  90.                         delay(500);
  91.                         while(1)
  92.                         {
  93.                                 P1 =~ P1;  //P1口反轉
  94.                                 delay(500);
  95.                                 if(k1==0||k2==0||k3==0)
  96.                                 {
  97.                                         delay(5);
  98.                                         if(k1==0||k2==0||k3==0)
  99.                                                 break;
  100.                                 }
  101.                         }
  102.                 }
  103.         }
  104. }

  105. void init()  //初始化函數
  106. {
  107.         P1 = 0xff;
  108.         TMOD = 0x01;  //定時器0工作在方式1
  109.         IP = 0x01;  //PX0 = 1;  //中斷優先級  外部中斷0為高優先級中斷
  110.         //IP = 0x40 ;(PX1 = 1;)
  111.         TH0 = (65536 - 50000)/256;
  112.         TL0 = (65536 - 50000)%256;
  113.         /*TH0 = (計數最大值-定時時間)/256
  114.                 TL0 = (計數最大值-定時時間)%256
  115.         */
  116.         EA = 1;  //開總中斷
  117.         EX0 = 1;  //開外部中斷0
  118.         EX1 = 1;  //開外部中斷1
  119.         IT0 = 1;  //外部中斷0負跳變中斷
  120.         IT1 = 1;  //外部中斷1負跳變中斷
  121.         ET0 = 1;  //開定時器0中斷
  122.         TR0 = 1;  //允許定時器0定時
  123. }

  124. void main()
  125. {
  126.         init();  //初始化函數
  127.         while(1)
  128.         {
  129.                 KEY1();
  130.                 KEY2();
  131.                 KEY3();
  132.         }
  133. }

  134. void int0() interrupt 0  //外部中斷0  單個流水燈向右
  135. {
  136.         uint i;
  137.         led1 = 0xfe;
  138.         for(i=0;i<8;i++)
  139.         {
  140.                 P1 = led1;
  141.                 delay(500);
  142.                 led1 = _crol_(led1,1);
  143.         }
  144. }

  145. void time0_int()  interrupt 1  //定時器0
  146. {
  147.         TH0 = (65536 - 50000)/256;  //50ms
  148.         TL0 = (65536 - 50000)%256;
  149.         i++;
  150.         if(i==10)  //定時器0控制開始燈閃爍
  151.         {
  152.                 i = 0;
  153.                 P1 =~ P1;
  154.                 delay(400);
  155.         }
  156. }

  157. void int1() interrupt 2  //外部中斷1  單個流水燈向左
  158. {
  159.         uint i;
  160.         led2 = 0x7f;
  161.         for(i=0;i<8;i++)
  162.         {
  163.                 P1 = led2;
  164.                 delay(500);
  165.                 led2 = _crol_(led2,-1);
  166.         }
  167. }
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 青青草av | 免费黄色片在线观看 | 欧美日本亚洲 | 国产不卡一区在线观看 | 69视频在线播放 | 日韩午夜场 | 91麻豆精品一区二区三区 | 国产精品免费在线 | 蜜桃精品视频在线 | 国产精品视频一区二区三 | 午夜免费观看体验区 | 日韩精品在线网站 | 日韩一区中文字幕 | 欧美国产视频一区二区 | 99视频在线免费观看 | 欧美伦理一区 | 天天操天天插 | 亚洲精品乱码久久久久久按摩观 | avmans最新导航地址 | 91视频88av| 精品欧美一区二区中文字幕视频 | 日韩精品av一区二区三区 | 欧美一卡二卡在线 | 成人免费共享视频 | 精品欧美激情精品一区 | 一区二区三区精品视频 | 久久久国产一区二区三区 | 国产精品久久久 | 亚洲精品一区二区网址 | 奇米超碰在线 | 亚洲图片一区二区三区 | 最近中文字幕在线视频1 | 午夜a√ | 欧美在线观看一区二区 | 久久久精品一区二区三区四季av | 国产精品久久久久久婷婷天堂 | 日韩欧美在线一区 | 一区二区在线看 | 亚洲 欧美 日韩 精品 | 成人特级毛片 | 在线午夜电影 |