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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1769|回復: 1
打印 上一主題 下一主題
收起左側

自己做的旋轉月球無線感應彩色燈單片機源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:413105 發表于 2018-10-21 15:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
旋轉月球燈的感應部分程序,可以無極調光

單片機源程序如下:
  1. #include "main.h"
  2. unsigned short TimeCounter_100ms;
  3. unsigned char  TimeFlag_100ms;
  4. unsigned short TimeCounter_500ms;
  5. unsigned char  TimeFlag_500ms;
  6. unsigned short TimeCounter_30ms;
  7. unsigned char  TimeFlag_30ms;


  8. volatile unsigned int  shuju[3]={0};   //存放數據
  9. unsigned int temp=0;     //臨時變量
  10. unsigned char i,j;     //數組及移位計數用
  11. unsigned char biaozhi=0;   //起始碼標志位
  12. unsigned char flag=1;    //有鍵按下,打開定時器
  13. unsigned int  count=0;

  14. unsigned char ledflag=0;
  15. unsigned char xunhuan=1;
  16. unsigned char suo=0;


  17. /****************************************************************
  18. *模塊名稱:初始化函數模塊
  19. *功能描述:
  20. *修改日期:2008-9-8
  21. *****************************************************************/
  22. void SystemInitial(void)
  23. {

  24.         OSCCON=0x71;//8M內部RC振蕩器
  25.         INTCON=0x00;
  26.         PIE1=0x00;
  27.         SETBIT(PIE1,0);//TMR1IE置1

  28.         ANSEL =0 ;
  29.         ANSELH = 0;
  30.         TRISA=0B10111111;
  31.           PORTA=0B00000000;

  32.         TimeCounter_100ms=0;
  33.         TimeFlag_100ms=0;
  34.         TimeCounter_500ms=0;
  35.         TimeFlag_500ms=0;
  36.         TimeCounter_30ms=0;
  37.         TimeFlag_30ms=0;
  38. }



  39. void main(void)
  40. {
  41.         SystemInitial();
  42.         LedInitial();
  43.         Timer0Initial();
  44.     Ir_Init();   //初始化函數
  45.         PEIE=1;                //PEIE: 外設中斷允許位
  46.         GIE=1;      //開全局中斷*/
  47.    

  48.         while(1)
  49.           {
  50.        
  51.       
  52.            if(shuju[1]==0XF906 ){shuju[1]=0;LedOff();suo=0;}
  53.        if(shuju[1]==0X3BC4 ){shuju[1]=0;LedOn();suo=0;}

  54.        if(shuju[1]==0Xd926 ){shuju[1]=0;Led1();suo=0;}
  55.        if(shuju[1]==0X59A6 ){shuju[1]=0;Led2();suo=0;}
  56.        if(shuju[1]==0X7986 ){shuju[1]=0;Led3();suo=0;}


  57.        if(shuju[1]==0x916E ){shuju[1]=0;Led4();suo=0;}
  58.        if(shuju[1]==0xa15e ){shuju[1]=0;Led5();suo=0;}
  59.        if(shuju[1]==0x817e ){shuju[1]=0;Led6();suo=0;}
  60.            if(shuju[1]==0x11ee ){shuju[1]=0;Led7();suo=0;}
  61.        if(shuju[1]==0X21DE ){shuju[1]=0;Led8();suo=0;}
  62.        if(shuju[1]==0X01FE ){shuju[1]=0;LedBlue();suo=0;}

  63.       
  64.        if(shuju[1]==0xb14e ){shuju[1]=0;LedGreen();suo=0;}
  65.        if(shuju[1]==0x31Ce ){shuju[1]=0;LedRed();suo=0;}

  66.        if(shuju[1]==0x49b6 )
  67.          {
  68.            shuju[1]=0;
  69.            if(ledflag>1)ledflag--;
  70.            suo=1;
  71.            xunhuan=0;
  72.          }//左

  73.       /* if(shuju[1]==0x8976)
  74.          {  
  75.             shuju[1]=0;
  76.             xunhuan=1;
  77.             suo=1;
  78.           }//循環
  79.      */
  80.            if(shuju[1]==0x09f6 )
  81.           {
  82.              shuju[1]=0;
  83.               if(ledflag<12)ledflag++;
  84.               suo=1;
  85.               xunhuan=0;
  86.            }//右
  87.       
  88.        if(suo==1)
  89.         {
  90.        if(ledflag==1){LedOn();}
  91.        if(ledflag==2){Led1();}
  92.        if(ledflag==3){Led2();}
  93.        if(ledflag==4){Led3();}


  94.        if(ledflag==5 ){Led4();}
  95.        if(ledflag==6){Led5();}
  96.        if(ledflag==7){Led6();}
  97.            if(ledflag==8){Led7();}
  98.        if(ledflag==9){Led8();}
  99.        if(ledflag==10){LedBlue();}

  100.        if(ledflag==11){LedGreen();}
  101.        if(ledflag==12){LedRed();}


  102.        }

  103.       if(xunhuan==1)
  104.        {
  105.      /*        CLRBIT(PORTD,0);delay(2000);
  106.              SETBIT(PORTD,0);delay(2000);
  107.      Led2();delay(2000);
  108.      Led3();delay(2000);
  109.      Led4();delay(2000);
  110.      Led5();delay(2000);
  111.      Led6();delay(2000);
  112.      Led7();delay(2000);
  113.      Led8();delay(2000);
  114.      LedBlue();delay(2000);
  115.      LedGreen();delay(2000);
  116.      LedRed();delay(2000);
  117.     */
  118.      }  
  119.       

  120.                 if(TimeFlag_100ms==1)
  121.                 {
  122.                         TimeFlag_100ms=0;
  123.        
  124.                 }
  125.                 if(TimeFlag_500ms==1)
  126.                 {
  127.                         TimeFlag_500ms=0;
  128.        
  129.                 }
  130.         if(TimeFlag_30ms==1)
  131.                 {
  132.                         TimeFlag_30ms=0;
  133.        
  134.                 }                       
  135.         }
  136. }


  137. void Timer0Initial(void)//TIMER0初始化
  138. {
  139.    T0CS=0;   // 選通Fosc/4
  140.    PSA=0;    //設定為用TIMER0,而不是WDT
  141.    PS2=0; //1:2 預除2倍,數完250次=(1us)*250=250us
  142.    PS1=0;//PS2,PS1,PS0為除頻設置
  143.    PS0=0;
  144.    T0IF=0;//設置溢位初始值為0
  145.    TMR0=6; //預設TMR0=6,運行250次會進位
  146.    T0IE=1;
  147. }

  148. void Ir_Init(void)//初始化函數
  149. {

  150.    SETBIT(TRISB,0);//RB0為輸入
  151.    CLRBIT(ANSEL,12);//作為數字io
  152.    INTE=1;     //允許外部中斷
  153.    RBIE=1;     //允許RB口中斷
  154.    
  155.    INTEDG=0;
  156.    WPUB=0X01;  //RB2上拉復位

  157.    T1CON=0x10;//配置定時器2倍預分頻,使用內部時鐘,禁止定時器
  158.    TMR1H=0;//計數值清0
  159.    TMR1L=0;

  160. }

  161. void interrupt Timer0_ISR(void)//TIMER0  1ms定時
  162. {
  163. ////////////////////////////
  164.         if(T0IF==1)
  165.         {
  166.            T0IF=0;
  167.            count++;
  168.        if(count==4)
  169.        {
  170.           TMR0=6;
  171.           count=0;
  172.           TimeCounter_30ms++;
  173.                   if(TimeCounter_30ms>=30)
  174.                   {               
  175.                         TimeFlag_30ms=TURE;
  176.                         TimeCounter_30ms=0;
  177.                            
  178.                   }
  179.                   TimeCounter_100ms++;
  180.                   if(TimeCounter_100ms>=100)
  181.                   {               
  182.                         TimeFlag_100ms=TURE;
  183.                         TimeCounter_100ms=0;               
  184.                    }
  185.                    TimeCounter_500ms++;
  186.                    if(TimeCounter_500ms>=500)
  187.                    {               
  188.                         TimeFlag_500ms=TURE;
  189.                         TimeCounter_500ms=0;               
  190.                    }
  191.         }  
  192.              }
  193. //////////////////////////////
  194.   if(INTF==1)     //判斷是否為CCP1模塊中斷,當在一個系統中時會用
  195.   {
  196.    
  197.     if(flag==1)         
  198.       {
  199.        TMR1H=0;
  200.        TMR1L=0;
  201.        TMR1ON=1;      //開定時器
  202.        flag=0;
  203.       }else{

  204.        TMR1ON=0;       //先停定時器
  205.        temp=TMR1L+TMR1H*256;   //取數據并判斷
  206.        TMR1H=0;      //清0計數值
  207.        TMR1L=0;
  208.        TMR1ON=1;      //開定時器等待下一個脈沖到來
  209.       if(temp>12600&&temp<14600&&biaozhi==0)     //起始碼13500
  210.        {
  211.         biaozhi=1;          //當檢測到起始碼時,下次直接進行入數據判斷
  212.         i=0;
  213.         j=0;
  214.         //LedBlue();
  215.         }
  216.        else         //數據判斷區
  217.        {
  218.          if((temp < 1300)&&(temp > 1000)) //時間在2.2ms左右的為數碼1120
  219.           {
  220.             shuju[i]=shuju[i]<<1;
  221.             j++;
  222.           }else if((temp < 2390)&&(temp > 2000)) //時間在4ms左右的為為數碼1  2240
  223.           {
  224.             shuju[i]=(shuju[i]<<1)+1;
  225.            j++;
  226.           }
  227.           else
  228.            biaozhi=0;      //否則為終止碼,清0起始碼標志位,準備下一次按鍵的接收
  229.         }
  230. ……………………

  231. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
Program.zip (403.94 KB, 下載次數: 7)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-10-21 18:42 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99成人 | 国产激情一区二区三区 | 日韩欧美一区二区三区 | 少妇一级淫片免费放播放 | 色噜噜色综合 | 久久综合久 | 亚洲国产成人精品女人久久久 | 日本在线观看网址 | 高清色 | 成人欧美一区二区三区视频xxx | 国产成在线观看免费视频 | 91免费看片神器 | 亚洲精品电影网在线观看 | 国产黄色精品 | 一区二区免费视频 | 亚洲天堂网站 | 亚洲女优在线播放 | 伊人网综合在线 | 看片91| 亚洲人在线 | 日本不卡免费新一二三区 | 成人一区二区视频 | 四虎在线视频 | 免费成人高清在线视频 | 九九免费观看视频 | 噜噜噜色网 | 在线男人天堂 | 色姑娘综合网 | 日韩在线精品 | 日韩欧美成人一区二区三区 | 久久国产精品一区二区三区 | 偷拍自拍网址 | 操操日| 成人在线播放网址 | 成人精品国产免费网站 | 99re在线| 婷婷丁香在线视频 | 欧美中文一区 | 久久久91精品国产一区二区三区 | 99精品99| 91成人精品 |