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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3707|回復: 2
收起左側

單片機LED不同頻率閃爍 通過按鍵實現

[復制鏈接]
ID:152252 發表于 2016-12-27 15:08 | 顯示全部樓層 |閱讀模式
可以通過按鍵切換不同的閃爍頻率
0.png
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define        uint unsigned int
  4. sbit LED=P3^7;
  5. sbit LED2=P3^6;
  6. uchar num=0,t=0,mode_num=0,data_H,data_L,stop_num=0;
  7. uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,
  8. 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  9. void delay(uint k)                   //延時函數
  10. {
  11.         uint m,n;
  12.         for(m=0;m<k;m++)
  13.         {
  14.                 for(n=0;n<120;n++);
  15.         }
  16. }
  17. void Timer1() interrupt        3 //中斷函數  中斷方式3
  18. {
  19.         t++;
  20.         TH1=0x3C;  //計數器賦初值50ms
  21.         TL1=0xb0;
  22. }
  23. void T0_init()           //開中斷
  24. {
  25.         TMOD=0x11;
  26.         TH1=0x3C;
  27.         TL1=0xb0;
  28.            ET1=1;                                                                                                                                                                                       
  29.         TR1=1;
  30.         EA=1;
  31.         EX0=1;
  32.         IT0=1;
  33.         EX1=1;
  34.         IT1=1;
  35. }
  36. void display(void)        //顯示函數
  37. {
  38.         P1=0x01;
  39.         P2=tab[data_H];
  40.         delay(1);
  41.         P1=0x02;
  42.         P2=tab[data_L];
  43.         delay(1);

  44. }

  45. void dat_tim()
  46. {
  47.         switch(mode_num)
  48.         {
  49.                 case 1:
  50.                 {
  51.                         if(t==20)
  52.                         {
  53.                             LED2=0;
  54.                                 LED=~LED;
  55.                                 t=0;
  56.                                 if(LED==1)
  57.                                 {
  58.                                         num++;
  59.                                 }
  60.                         }
  61.                 }break;
  62.                 case 0:
  63.                 {
  64.                         if(t==2)
  65.                         {
  66.                                 LED=0;
  67.                                 LED2=~LED2;
  68.                                 if(LED2==1)
  69.                                 {
  70.                                         num++;
  71.                                 }
  72.                                 t=0;
  73.                         }
  74.                 }
  75.         }

  76. }
  77. void data_in(void)           //將a的值分割為個位和十位函數
  78. {
  79.         data_L=num%10;
  80.         data_H=num/10;
  81. }

  82. main()
  83. {
  84.         LED=0;
  85.         T0_init();
  86.         while(1)
  87.         {
  88.                 dat_tim();
  89.                 data_in();
  90.                 display();
  91.         }
  92. }
  93. void mode()interrupt 0
  94. {
  95.         mode_num++;
  96.         num=0;
  97.         if(mode_num>1)
  98.         {
  99.                 mode_num=0;
  100.         }
  101. }
  102. void stop()interrupt 2
  103. {
  104.         stop_num++;
  105.         if(stop_num>1)
  106.         {
  107.                 stop_num=0;
  108.         }
  109.         switch(stop_num)
  110.         {
  111.                 case 0:
  112.                 {
  113.                         TR1=1;
  114.                 }break;
  115.                 case 1:
  116.                 {
  117.                         TR1=0;
  118.                 }break;
  119.         }
  120. }
復制代碼
0.png

下載:
LED不同頻率閃爍.rar (49.64 KB, 下載次數: 16)

回復

使用道具 舉報

ID:1 發表于 2017-2-12 16:08 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

ID:255405 發表于 2017-12-7 19:40 | 顯示全部樓層
這是能自主控制LED燈加減速嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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