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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4958|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

帶感應(yīng)的小夜燈的PIC單片機(jī)源碼(可手動(dòng)控制or自動(dòng)控制)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:66086 發(fā)表于 2018-8-25 12:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于pic16f616單片機(jī)  可以手動(dòng)控制  也可自動(dòng)控制(開啟感應(yīng)開關(guān))  

單片機(jī)源程序如下:
  1. #include<pic.h>
  2. #define u16 unsigned int
  3. #define u8 unsigned char
  4. u8 second,fen=0,miao=0,key=0,mode;
  5. u16 adval;  //3v/5v*1024=614
  6. u16 x1=512;
  7. bit loop1,yy1;
  8. int pwm;
  9. __CONFIG(0xfd94);   //fdd5 RA4可以輸出主頻率的4分頻
  10. //const u8 table[]={160,130,101,90,80};
  11. const u8 tab[]={150,100,60,30};

  12. void init()
  13. {//OSCTUNE=0x0f;      //修改主頻率
  14.   ADCON0=0x9d;
  15.   ADCON1=0x20;

  16.   INTCON=0xd0;   //開啟總中斷 外部中斷 外設(shè)中斷
  17.   INTEDG=1;  // 設(shè)置觸發(fā)中斷的條件為電平從低到高觸發(fā)
  18.    PIE1=0x41;             //允許Time1中斷
  19.         TMR1L=(65536-1000)%256;
  20.         TMR1H=(65536-1000)/256;
  21.         T1CON=0x01;            //使能Time1
  22.   
  23.   PR2=160;               //周期計(jì)數(shù)
  24.   CCP1CON=0x3c;     //0011 1100單輸出 P1A被調(diào)制    1011 1100半橋輸出 P1A P1B被調(diào)制
  25.   CCPR1L=40;       //脈沖寬度計(jì)數(shù)
  26.   
  27. }

  28. void delay500us(u16 x)
  29. {
  30.   u16 a,b;
  31.   for(a=x;a>0;a--)
  32.    for(b=20;b>0;b--);
  33. }

  34. void delayms(u16 x)
  35. {
  36.   u16 a,b;
  37.   for(a=x;a>0;a--)
  38.    for(b=220;b>0;b--);
  39. }

  40. void beep()
  41. {  
  42.    u8 i;

  43.    for(i=255;i>0;i--)
  44.    {
  45.      delay500us(8);
  46.      
  47.      RA1=!RA1;
  48.    }
  49.     RA1=0;
  50. }

  51. void ledstate()
  52. { u8 i;
  53.   RC0=0;
  54.   loop1=1;
  55.    
  56.   while(loop1)
  57.   {
  58.           for(i=3;i>0;i--)
  59.       {  beep();
  60.         RC0=!RC0;
  61.         delayms(1000);
  62.         }  
  63.           loop1=0;
  64. }

  65.   }

  66. void KEY_Scan(void)              //鍵值掃描
  67. {       
  68.           if((RC2==1) || (RC1=1) || (RA4==1) || (RA5==1))
  69.           {
  70.             delayms(50);//去抖動(dòng)
  71.             if(RC2==1)        //A  led模式與開關(guān)
  72.             {
  73.               delayms(200);
  74.           delayms(200);
  75.           delayms(200);
  76.           delayms(200);
  77.           if(RC2==1) key=!key;   //0 on 1 off
  78.           else mode=!mode;      //0 手動(dòng)模式  1 自動(dòng)模式
  79.           while(RC2);               
  80.             }
  81.                   else if(RC1==1)   //B 音頻開關(guān)
  82.             {
  83.               RC4=!RC4;
  84.           while(RC1!=0);             
  85.             }
  86.                 else if(RA4==1)   //C  亮度加
  87.             {
  88.                  if(mode==0)
  89.                          {  
  90.                    pwm++;
  91.                   if(pwm>=3){pwm=3;beep();}
  92.                   while(RA4);
  93.                          }               
  94.             }
  95.             else if(RA5==1)   //D 亮度減
  96.             {
  97.                   if(mode==0)
  98.                          {
  99.                     pwm--;
  100.                   if(pwm<1){pwm=0;beep();}
  101.                   while(RA5);       
  102.                          }      
  103.             }
  104.      }       
  105. }

  106. void pwm_out()
  107. {
  108.   T2CON=0x04;
  109.   CCP1CON=0x3c;
  110.   RC0=1;
  111.   RA0=0;
  112.   delayms(5);
  113.              
  114.          CCPR1L=tab[pwm];
  115.          delayms(4);       
  116. }

  117. void pwm_out1()
  118. {
  119.   T2CON=0x04;
  120.   CCP1CON=0x3c;
  121.   RC0=1;
  122.   RA0=1;
  123.   delayms(5);
  124.         if(yy1)
  125.     {
  126.       CCPR1L=tab[3];
  127.              delayms(4);
  128.     }
  129.     else
  130.     {
  131.       CCPR1L=tab[0];
  132.              delayms(4);
  133.     }   
  134.                     
  135. }

  136. void stopstate()  //  pwm 停止輸出
  137. {
  138.     T2CON=0x00;
  139.           CCP1CON=0x00;
  140.     RC0=0;
  141.     RA0=0;
  142.     RC5=1;
  143. }

  144. void interrupt time1(void)
  145. {
  146.           if(TMR1IE&&TMR1IF)          //定時(shí)器1用于產(chǎn)生秒信號(hào)  定時(shí)時(shí)間為25ms
  147.                  {
  148.                     TMR1IF=0;
  149.                         TMR1L=(65536-50000)%256;
  150.                         TMR1H=(65536-50000)/256;
  151.                            second++;
  152.                         if(second>=40)                  //40*25ms =1000ms
  153.                         { second=0;
  154.                  
  155.                        if(miao++>=60)
  156.                        {  miao=0;
  157.                            fen++;
  158.                           if(fen>=60)
  159.                            fen=0;
  160.                         }
  161.                          }
  162.                   }

  163.       if(INTE&&INTF)         ////外部中斷
  164.            {
  165.              while(RA2==1)
  166.              {
  167.                   
  168.                KEY_Scan();
  169.            
  170.              }
  171.              INTF=0;
  172.            }

  173.      if(ADIE && ADIF)
  174.   {
  175.     ADIF=0; // A/D標(biāo)志位清零
  176.     adval=ADRESH;//00000000 00000011
  177.         adval=adval<<8|ADRESL;//00000011 11111111
  178.     if(adval>x1) yy1=1;
  179.        else yy1=0;
  180.     GODONE=1;
  181.   }

  182. }

  183. void main()
  184. {  
  185.   TRISC=0x00;
  186.   TRISC|=0x0e;
  187.   TRISA=0x00;
  188.   TRISA|=0x34;
  189.   ANSEL=0x80;
  190.    RC0=0;  //電源指示
  191.    RC4=0;  //繼電器
  192.    RC5=0;  //PWM
  193.    RA0=0;  //手動(dòng)自動(dòng)指示
  194.    RA1=0;  //警告音
  195.          ledstate();
  196.           init();
  197.         GODONE=1;
  198.          delayms(100);  
  199.           while(1)
  200.           {  
  201.              if(key==0)
  202.           {
  203.           switch(mode)
  204.             {
  205.               case 0:pwm_out();
  206.                     break;
  207.               case 1:pwm_out1();
  208.                     break;
  209.             }
  210.           }  
  211.          else stopstate();         
  212.           }

  213. }
復(fù)制代碼

所有資料51hei提供下載:
xyd.rar (52.5 KB, 下載次數(shù): 70)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:221675 發(fā)表于 2018-8-31 14:47 | 只看該作者
謝謝分享,很給力。
回復(fù)

使用道具 舉報(bào)

板凳
ID:556500 發(fā)表于 2019-6-6 14:30 | 只看該作者
正是需要的
回復(fù)

使用道具 舉報(bào)

地板
ID:71535 發(fā)表于 2019-6-22 23:02 | 只看該作者
謝謝老司機(jī)分享!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品区二区三区日本 | 色姑娘av | 久久精品视频在线播放 | 国产精品极品美女在线观看免费 | 亚洲欧洲视频 | 亚洲激情一级片 | 国产情侣久久 | 黄网站在线播放 | 天天干天天想 | 一区二区亚洲 | 在线一区 | 不卡一区二区三区四区 | 国产成人精品一区 | 日本天天操 | 看片91| 亚洲天堂一区 | 中文字幕精品一区久久久久 | 久久久精品视频免费 | 国产精品免费高清 | 欧美黄色网 | 中文无吗 | 国产不卡一| www.久久.com| 91在线播| 噜噜噜噜狠狠狠7777视频 | 欧美一级做性受免费大片免费 | 中文字幕日韩欧美一区二区三区 | 91久久久久 | 天天操夜夜操 | 1级毛片 | 91最新在线视频 | 国产又爽又黄的视频 | 色必久久 | 狠狠骚| 亚洲免费一区 | 黄色a级一级片 | 欧美色综合一区二区三区 | 高清不卡毛片 | 天天干视频 | 一区二区久久 | 九色视频网站 |