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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2959|回復(fù): 0
收起左側(cè)

單片機(jī)舞臺燈程序 含有源碼 我一直收藏的

[復(fù)制鏈接]
ID:191780 發(fā)表于 2017-4-20 20:01 | 顯示全部樓層 |閱讀模式
我收藏的舞臺燈程序 含有源碼

完整源碼下載(包含頭文件內(nèi)容):
舞臺燈程序.docx (18.5 KB, 下載次數(shù): 28)


單片機(jī)源碼:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include"led_disp.h"
  4. /********引腳定義*******/        
  5. sbit  led1=P1^2;                    //藍(lán)燈
  6. sbit  led2=P1^3;                                        //綠燈
  7. sbit  led3=P1^4;                                        //紅燈
  8. /*********89板測試引腳***************
  9. sbit  key4=P3^3;                 //存儲(chǔ)
  10. sbit  key3=P3^2;                //減
  11. sbit  key2=P3^1;           //T0          加
  12. sbit  key1=P3^0;           //T1  模式選擇
  13. */

  14. // 彩燈引腳
  15. sbit  key4=P1^6;                 //存儲(chǔ)
  16. sbit  key3=P1^7;                //減
  17. sbit  key2=P3^4;           //T0          加
  18. sbit  key1=P3^5;           //T1  模式選擇
  19. //-----------------------------------------//
  20. sbit voice=P1^0;         //聲控引腳

  21. /***********延時(shí)函數(shù)*******************/                                       
  22. void delay(unsigned int time);
  23. void delayus(uint t);
  24. void delayms(uint k);

  25. void delay_nms(uint n);        
  26. void delay_1ms(void);         
  27. /****模式設(shè)置函數(shù)***************************/
  28. void led_1(uint t);
  29. void led_2(uint t);
  30. void led_3(uint t);

  31. void led_mod0(void);
  32. void led_mod1(void);           // 模式1
  33. void led_mod2(void);           //模式2
  34. void led_mod3(void);           //模式3
  35. void led_mod4(void);           //模式4,聲控模式

  36. /********按鍵功能函數(shù)*********************/
  37. void key1_fun(void);
  38. void key2_fun(void);
  39. void key3_fun(void);
  40. void key4_fun(void);
  41. void key_fun(void);
  42. /*********中斷、顯示、其他函數(shù)***********/
  43. void  InitTimer0(void);                //定時(shí)100us,用于數(shù)碼管顯示;中斷用于執(zhí)行數(shù)碼管顯示
  44. void  InitTimer1(void);                //定時(shí)10ms,用于按鍵;中斷執(zhí)行按鍵掃描
  45. void disp(void);
  46. void dis(void);
  47. void dis1(void);

  48. /******************************/
  49. void led_work(void);    //led 花樣閃爍
  50. void led_rem(void);                   //記憶模式功能,開機(jī)時(shí)執(zhí)行
  51. void voice_ctr(void);        //聲控功能

  52.                                           
  53. uint MOD_T;                        //模式閃爍快慢變量
  54. uchar MOD_NUM,MOD_T_ADD;                //模式號,模式閃爍時(shí)間快慢變量
  55. /**********模式閃爍快慢變量及對應(yīng)的向量**************************************/
  56. uint MOD_T0,MOD_T1,MOD_T2,MOD_T3,MOD_T4,MOD_T5;
  57. uchar MOD_T_ADD0,MOD_T_ADD1,MOD_T_ADD2,MOD_T_ADD3,MOD_T_ADD4,MOD_T_ADD5;
  58. uint MOD_TR[6];                   //         元素7為存儲(chǔ)變量
  59. uchar MOD_T_ADDR[6];        //
  60. /********存儲(chǔ)記憶變量*****************/
  61. uchar MOD_NUM_REM;
  62. uchar MOD_T_ADD_REM;
  63. uint num;        //聲控變量
  64. /****************************************************************************/
  65. uint delay_time;             //MOD_T=3000-55*(MOD_T_ADD+1);           200--60000
  66. uchar t,TN; //定時(shí)器0變量
  67. bit key_flag;

  68. //code uchar led_mod[]={0x39,0x39,0x39,0x73,0x39,0x6d,0x5e,0x79,0x7c,0x79,0x5e,0x3f};          //89板模式數(shù)顯段

  69. //code uchar  led_tab[]={0x0A,0xFA,0x8C,0x98,0x78,0x19,0x09,0xBA,0x08,0x18,   0x49,0x0F,0xC8,0x0D,0x2C};          //0-9,b,c,d,e,p
  70. code uchar led_mod[]={0x0f,0x0f,0x0f,0x2c,0x0f,0x19,0xc8,0x0d,0x49,0x0d,0xc8,0x0a};    //彩燈模式數(shù)顯段
  71. //主函數(shù)                                
  72. void main(void)
  73. {
  74.     InitTimer0();
  75.         InitTimer1();

  76.         led1=0;
  77.         led2=0;
  78.         led3=0;
  79.         P2=0x00;        //數(shù)碼管初始化控制

  80.         MOD_T=6000;                //led閃爍時(shí)間變量
  81.         MOD_TR[0]=6000;
  82.         MOD_TR[1]=6000;        
  83.         MOD_TR[2]=6000;        
  84.         MOD_TR[3]=6000;        
  85.         MOD_TR[4]=6000;        
  86.         MOD_TR[5]=6000;        


  87.         MOD_T_ADDR[0]=0;
  88.         MOD_T_ADDR[1]=0;
  89.         MOD_T_ADDR[2]=0;
  90.         MOD_T_ADDR[3]=0;
  91.         MOD_T_ADDR[4]=0;
  92.         MOD_T_ADDR[5]=0;


  93.         //MOD_NUM=MOD_NUM_REM;
  94.         //MOD_T_ADD=0;
  95.     //led_rem();
  96.         //key_flag=0;
  97.         while(1)                        //主程序循環(huán)         
  98.         {
  99.            //led_mod3();
  100.          
  101.           // key1_fun();
  102.            //key2_fun();
  103.            //key3_fun();
  104.            //key4_fun();
  105.            //key_fun();
  106.            led_work();
  107.          
  108.         }
  109. }


  110. //延時(shí)子函數(shù)
  111. //參數(shù)范圍 0-65536
  112. void delayus(uint t)
  113. {
  114. while(t--);
  115. }
  116.                                         //延時(shí)子函時(shí),
  117.                                         //參數(shù) d_time 控制延時(shí)的時(shí)間                                                         
  118.                                         //作用,燈亮和熄滅必須持續(xù)一定時(shí)間,人眼才能看到
  119. void delayms(uint k)
  120. {
  121.          uint i,j;
  122.         for(i=0;i<k;i++)
  123.          for(j=0;j<120;j++);
  124. }

  125. void delay_1ms(void)
  126. {
  127.    unsigned char a,b;
  128.     for(b=4;b>0;b--)
  129.         for(a=248;a>0;a--);
  130. }
  131. void delay_nms(uint n)                                   
  132.   {
  133.    uint i;
  134.     for(i=0;i<n;i++)
  135.          {delay_1ms();}
  136.   }
  137.   
  138. /************************************/

  139. void led_1(uint t)
  140. {
  141.           led1=1;
  142.           delayms(t);  
  143.           led1=0;
  144.           delayms(t);  
  145.          

  146.           led2=1;
  147.           delayms(t);  
  148.           led2=0;
  149.           delayms(t);  

  150.           led3=1;
  151.           delayms(t);
  152.           led3=0;
  153.           delayms(t);
  154. }

  155. void led_2(uint t)
  156. {
  157.           led1=1;
  158.           led2=1;
  159.           delayms(t);
  160.           led1=0;
  161.           led2=0;
  162.           delayms(t);  
  163.          

  164.           led2=1;
  165.           led3=1;
  166.           delayms(t);  
  167.           led2=0;
  168.           led3=0;
  169.           delayms(t);

  170.           led3=1;
  171.           led1=1;
  172.           delayms(t);
  173.           led3=0;
  174.           led1=0;
  175.           delayms(t);  

  176. }

  177. void led_3(uint t)
  178. {
  179.           led1=1;
  180.           led2=1;
  181.           led3=1;
  182.           delayms(t);  
  183.           led1=0;
  184.           led2=0;
  185.           led3=0;
  186.           delayms(t);
  187. }
  188. void led_mod0(void)
  189. {
  190. led_1(MOD_TR[0]);
  191. }

  192. void led_mod1(void)
  193. {
  194. led_2(MOD_TR[1]);
  195. }

  196. void led_mod2(void)
  197. {
  198. led_3(MOD_TR[2]);
  199. }

  200. void led_mod3(void)
  201. {
  202.           led_1(MOD_TR[3]);
  203.         led_2(MOD_TR[3]);
  204.         led_3(MOD_TR[3]);
  205. }                           
  206. void led_mod4(void)
  207.   {
  208.    switch(num)
  209.     {
  210.           case 0:
  211.             { led1=1;
  212.                  led2=1;
  213.                  led3=1;
  214.                  break;
  215.                  }
  216.           case 1:
  217.              {
  218.                  led1=0;
  219.                  led2=1;
  220.                  led3=1;
  221.                  break;
  222.                  }
  223.           case 2:
  224.              {
  225.                  led1=1;
  226.                  led2=0;
  227.                  led3=1;
  228.                  break;
  229.                  }
  230.           case 3:
  231.              {
  232.                  led1=1;
  233.                  led2=1;
  234.                  led3=0;
  235.                  break;
  236.                  }
  237.           case 4:
  238.              {
  239.                  led1=1;
  240.                  led2=0;
  241.                  led3=0;
  242.                  break;
  243.                  }
  244.           case 5:
  245.              {
  246.                  led1=0;
  247.                  led2=0;
  248.                  led3=1;
  249.                  break;
  250.                  }
  251.           case 6:
  252.              {
  253.                  led1=0;
  254.                  led2=1;
  255.                  led3=0;
  256.                  break;
  257.                  }
  258.         }
  259.   }

  260. void led_rem(void)
  261. {

  262. }
  263. /*************************************/

  264. /**************中斷設(shè)置及執(zhí)行*****************/

  265. void InitTimer0(void)                                         //100us
  266. {
  267.     TMOD |= 0x02;
  268.     TH0 = 0x00;
  269.     TL0 = 0x38;
  270.     EA = 1;
  271.     ET0 = 1;
  272.     TR0 = 1;
  273. }
  274.    
  275. void Timer0Interrupt(void) interrupt 1
  276. {
  277.          //add your code here!
  278.         //disp();
  279.         t++;
  280.   if(t==30)
  281.          {
  282.           t=0;
  283.           TN++;
  284.           if(TN==5) TN=1;
  285.           dis();
  286.          }
  287.   if(t<15)
  288.     {
  289.           voice_ctr();
  290.         }
  291.    //dis();
  292. }
  293. /************************************************/
  294. void InitTimer1(void)
  295. {
  296.     TMOD |= 0x10;
  297.     TH1 = 0x0B1;
  298.     TL1 = 0x0E0;
  299.     EA = 1;
  300.     ET1 = 1;
  301.     TR1 = 1;
  302. }

  303. void Timer1Interrupt(void) interrupt 3
  304. {
  305.     TH1 = 0x0B1;
  306.     TL1 = 0x0E0;
  307. /*********add your code here!*****************/
  308.    //dis();
  309.   key_fun();
  310. }

  311. /*****************按鍵功能函數(shù)************************************/
  312. void key1_fun(void)                            //按鍵1功能--模式選擇
  313. {
  314.    if(!key1)
  315.           {
  316.             delayus(1000);
  317.                  if(!key1)
  318.                   {
  319.                    while(!key1);
  320.                     MOD_NUM++;
  321.                 if(MOD_NUM==6) MOD_NUM=0;
  322.                   }
  323.                   num=0;
  324.           }
  325. }

  326. void key2_fun(void)                           //按鍵2功能--加
  327. {
  328.          if(!key2)
  329.           {
  330.             delayus(1000);
  331.                  if(!key2)
  332.                   {
  333.                    while(!key2);
  334.                   //if(MOD_NUM==0)
  335.                          {
  336.                           if(MOD_T_ADDR[MOD_NUM]==99)  MOD_T_ADDR[MOD_NUM]=0;
  337.                           else MOD_T_ADDR[MOD_NUM]+=1;
  338.                          }
  339.                   }
  340.           }
  341.     MOD_TR[MOD_NUM]=2*(6000-55*(MOD_T_ADDR[MOD_NUM]+1));        
  342. }

  343. void key3_fun(void)                                       //按鍵3功能--減
  344. {
  345.          if(!key3)
  346.           {
  347.             delayus(1000);
  348.                  if(!key3)
  349.                   {
  350.                    while(!key3);
  351.                    if(MOD_T_ADDR[MOD_NUM]==0)  MOD_T_ADDR[MOD_NUM]=99;
  352.                    else MOD_T_ADDR[MOD_NUM]-=1;
  353.                   }
  354.           }
  355.      MOD_TR[MOD_NUM]=2*(6000-55*(MOD_T_ADDR[MOD_NUM]+1));           
  356. }
  357. void key4_fun(void)                                 //存儲(chǔ)鍵:模式,閃爍快慢存儲(chǔ)
  358. {
  359.          if(!key4)
  360.           {
  361.             delayus(1000);
  362.                  if(!key4)
  363.                   {
  364.                    while(!key4);
  365.                     MOD_NUM_REM=MOD_NUM;
  366.                         MOD_T_ADD_REM=MOD_T_ADDR[MOD_NUM];
  367.                   }
  368.           }
  369. }

  370. void key_fun(void)
  371. {                                                                                                
  372.   // if(!key1||!key2||!key3||!key4)         key_flag=1;
  373.    //if(key_flag)
  374.           key1_fun();
  375.           key2_fun();
  376.           key3_fun();        
  377.           key4_fun();
  378.          
  379. }
  380. //-------------------------------------------------//
  381. void voice_ctr(void)
  382. {
  383.          if(!voice)
  384.          {
  385.            //delayus(10);
  386.            while(!voice);
  387.            num++;
  388.            if(num==7) num=0;
  389.          }
  390. }
  391. /**************led花樣閃爍*****************/
  392. void led_work(void)
  393.    {
  394.                                                      
  395.     if(MOD_NUM==0)            { led_mod0(); }
  396.         else if(MOD_NUM==1)        { led_mod1(); }
  397.         else if(MOD_NUM==2) { led_mod2(); }
  398.         else if(MOD_NUM==3) { led_mod3(); }
  399.         else if(MOD_NUM==4) { led_mod4(); }
  400.         else
  401.              {
  402.                  led1=1;
  403.              led2=1;
  404.                  led3=1;
  405.                  }
  406.    }
  407. /*****************************顯示函數(shù):模式和閃爍快慢顯示***************************/
  408. void dis(void)
  409. {
  410.   /*P0=led_tab[MOD_NUM/10]; seg1           delayus(50);
  411.   P0=led_tab[MOD_NUM%10]; seg2           delayus(50);
  412.   P0=led_tab[MOD_T_ADD/10]; seg3               delayus(50);
  413.   P0=led_tab[MOD_T_ADD%10]; seg4               delayus(50);
  414.   */                                                                                          
  415.               if(TN==1)
  416.                     {
  417.                          led_disp(1,led_mod[MOD_NUM*2]);
  418.                          //delayus(5);
  419.                          }
  420.                   else if(TN==2)
  421.                         {
  422.                         led_disp(2,led_mod[MOD_NUM*2+1]);
  423.                         //delay_nms(5);
  424.                 //        delayus(5);
  425.                         }
  426.                   else if(TN==3)
  427.                     {
  428.                         led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]);
  429.                         //delay_nms(5);
  430.                 //        delayus(5);
  431.                         }
  432.                   else
  433.                     {
  434.                         led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]);
  435.                         //delay_nms(5);
  436.                 //        delayus(5);
  437.                         }

  438.        /*   if(TN==0)
  439.                     { led_disp(0,led_mod[MOD_NUM*2]);        }
  440.                   else if(TN==1)
  441.                         { led_disp(1,led_mod[MOD_NUM*2+1]);        }
  442.                   else if(TN==2)
  443.                     {led_disp(2,led_tab[MOD_T_ADD/10]);}
  444.                   else
  445.                     {led_disp(3,led_tab[MOD_T_ADD%10]);}
  446.                         */
  447.                         
  448.     /*if(MOD_NUM==0)
  449.              {
  450.                   if(TN==0)
  451.                     { led_disp(0,led_mod[0]);        }
  452.                   else if(TN==1)
  453.                         { led_disp(1,led_mod[1]);        }
  454.                   else if(TN==2)
  455.                     {led_disp(2,led_tab[MOD_T_ADD0/10]);}
  456.                   else
  457.                     {led_disp(3,led_tab[MOD_T_ADD0%10]);}
  458.                  }
  459.           else if(MOD_NUM==1)
  460.              {
  461.                   if(TN==0)
  462.                     { led_disp(0,led_mod[2]);        }
  463.                   else if(TN==1)
  464.                         { led_disp(1,led_mod[3]);        }
  465.                   else if(TN==2)
  466.                     {led_disp(2,led_tab[MOD_T_ADD1/10]);}
  467.                   else
  468.                     {led_disp(3,led_tab[MOD_T_ADD1%10]);}
  469.                  }
  470.         else if(MOD_NUM==2)
  471.              {
  472.                   if(TN==0)
  473.                     { led_disp(0,led_mod[4]);        }
  474.                   else if(TN==1)
  475.                         { led_disp(1,led_mod[5]);        }
  476.                   else if(TN==2)
  477.                     {led_disp(2,led_tab[MOD_T_ADD2/10]);}
  478.                   else
  479.                     {led_disp(3,led_tab[MOD_T_ADD2%10]);}
  480.                  }
  481.         else if(MOD_NUM==3)
  482.              {
  483.                   if(TN==0)
  484.                     { led_disp(0,led_mod[6]);        }
  485.                   else if(TN==1)
  486.                         { led_disp(1,led_mod[7]);        }
  487.                   else if(TN==2)
  488.                     {led_disp(2,led_tab[MOD_T_ADD3/10]);}
  489.                   else
  490.                     {led_disp(3,led_tab[MOD_T_ADD3%10]);}
  491.                  }
  492.         else if(MOD_NUM==4)
  493.              {
  494.                   if(TN==0)
  495.                     { led_disp(0,led_mod[8]);        }
  496.                   else if(TN==1)
  497.                         { led_disp(1,led_mod[9]);        }
  498.                   else if(TN==2)
  499.                     {led_disp(2,led_tab[MOD_T_ADD4/10]);}
  500.                   else
  501.                     {led_disp(3,led_tab[MOD_T_ADD4%10]);}
  502.                  }
  503.         else
  504.              {
  505.                   if(TN==0)
  506.                     { led_disp(0,led_mod[10]);        }
  507.                   else if(TN==1)
  508.                         { led_disp(1,led_mod[11]);        }
  509.                   else if(TN==2)
  510.                     {led_disp(2,led_tab[MOD_T_ADD5/10]);}
  511.                   else
  512.                     {led_disp(3,led_tab[MOD_T_ADD5%10]);}
  513.                  }
  514.         */        
  515. }
  516. void dis1(void)
  517. {
  518.     /*
  519.         led_disp(1,led_tab[11]);
  520.         led_disp(2,led_tab[11]);
  521.         led_disp(3,led_tab[0]);
  522.         led_disp(4,led_tab[0]);         delay_led(500);
  523.         */
  524.   if(TN==1)
  525.    {
  526.     led_disp(1,led_mod[MOD_NUM*2]);                delay_led(35);
  527.         led_disp(2,led_mod[MOD_NUM*2+1]);        delay_led(35);
  528.         led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]); delay_led(35);
  529.         led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]); delay_led(35);
  530.    }
  531.   else if(TN==2)
  532.    {
  533.     led_disp(2,led_mod[MOD_NUM*2+1]);         delay_led(35);
  534.         led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]);  delay_led(35);
  535.         led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]);  delay_led(35);
  536.         led_disp(1,led_mod[MOD_NUM*2]);                                  delay_led(35);
  537.    }
  538.   else if(TN==3)
  539.    {
  540.     led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]);  delay_led(35);
  541.         led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]);  delay_led(35);
  542.         led_disp(1,led_mod[MOD_NUM*2]);                                   delay_led(35);
  543.         led_disp(2,led_mod[MOD_NUM*2+1]);                         delay_led(35);
  544.         }
  545.   else if(TN==4)
  546.    {
  547.     led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]);        delay_led(35);
  548.         led_disp(1,led_mod[MOD_NUM*2]);                                        delay_led(35);
  549.         led_disp(2,led_mod[MOD_NUM*2+1]);                                delay_led(35);
  550.         led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]);        delay_led(35);
  551.    }
  552. }
  553. void disp(void)
  554. {
  555.                    P0=led_tab[11]; P2=0x20;                // P0=0x0f;  //led_tab[11];
  556.                    delayus(14);
  557.                    //P2=0xff;
  558.                    //delayms(10);
  559.                   
  560.                    P0=led_tab[11]; P2=0x10;                 //P0=0x0f;  //led_tab[11];
  561.                    delayus(14);
  562.                    //P2=0x00;                  
  563.                    //P2=0xff;
  564.                    //delayms(10);
  565.                  
  566.                    P0=led_tab[0]; P2=0x08;         // P0=0x0a;  //led_tab[0];
  567.                    delayus(14);
  568.                    //P2=0x00;               
  569.                    //P2=0xff;
  570.                    //delayms(10);
  571.                   
  572.                     P0=led_tab[0]; P2=0x40;          //P0=0x0a;  //led_tab[0];
  573.                     delayus(14);        
  574.                         //P2=0x00;        
  575.                    //P2=0xff;
  576.                    //delayms(10);
  577. }        
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本福利视频 | 精品国产乱码久久久久久88av | 日韩精品人成在线播放 | 国产成人福利视频在线观看 | 亚洲人成人一区二区在线观看 | 欧美色综合天天久久综合精品 | 久久精品91久久久久久再现 | 欧美久久一区二区 | 亚洲国产高清在线观看 | 日日日干干干 | 久久久网| 日本欧美在线视频 | 国产区久久 | 久久久99国产精品免费 | 四虎精品在线 | 国产精品日日做人人爱 | 中文二区 | 国产高清免费视频 | 麻豆视频在线免费观看 | 美女毛片 | 一区二区三区不卡视频 | 91文字幕巨乱亚洲香蕉 | 性做久久久久久免费观看欧美 | 在线视频一区二区三区 | 欧美成人精品一区二区三区 | 丁香综合 | 亚洲福利在线观看 | 国产91丝袜在线播放 | 一区二区三区视频在线观看 | 欧美亚洲另类丝袜综合网动图 | 免费成人高清在线视频 | 亚洲免费在线 | 国产91在线 | 亚洲 | www.中文字幕av | 日韩欧美国产一区二区 | 在线免费观看日本 | 亚洲一区二区久久久 | 草比网站 | 久久av网站 | 日韩精品1区2区3区 成人黄页在线观看 | 国产xxxx岁13xxxxhd |