久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    PIC單片機(jī)用軟件產(chǎn)生PWM與按鍵實(shí)時(shí)處理_pic

     林池雨露 2011-05-24
    PIC單片機(jī)用軟件產(chǎn)生PWM與按鍵實(shí)時(shí)處理
    文章來(lái)源:www. 作者:未知
    --------------------------------------------------------------------------------
    該文章講述了PIC單片機(jī)用軟件產(chǎn)生PWM與按鍵實(shí)時(shí)處理.
     
    假設(shè)現(xiàn)在有個(gè)產(chǎn)品,要實(shí)現(xiàn)一個(gè)按鍵調(diào)節(jié)LED的亮度(PWM六檔調(diào)光)。要以最低成平,體積要小,抗干擾最好。用PIC12C508A,最適合不過(guò)了。
    方案實(shí)現(xiàn)如下:
    按鍵功能:
        一個(gè)普通的IO口接上拉電阻輸入,通過(guò)按鍵拉地。按鍵低電平有效,高電平無(wú)效。
    每按一下占空比增加一檔。長(zhǎng)按無(wú)效,第次增加一檔。要防止干擾。
    調(diào)光功能:
        一個(gè)普通的IO口外接三極管驅(qū)動(dòng)LED,由于單片機(jī)沒(méi)有PWM模塊,沒(méi)有中斷功能。只能用軟件產(chǎn)生PWM信號(hào)。 

       我們都知道用軟件產(chǎn)生PMW 是占用單片機(jī)太多的時(shí)間,系統(tǒng)很難做其它工作。要如何實(shí)時(shí)處理按鍵功能,要多下
    功夫才行。
    編譯軟件為HI-PICC。
    為了方面調(diào)試,先使用可擦寫的PIC16F84A調(diào)試源程序,成功后再移值到PIC12C508A單片機(jī)系統(tǒng)。
    《按鍵實(shí)時(shí)處理流程》
    聲明申請(qǐng)兩個(gè)標(biāo)志  1,有效標(biāo)志   2,完成標(biāo)志  為靜態(tài)私有,初始化只清零一次。
    一,判斷有效標(biāo)志是否等于 1。是,向下執(zhí)行。否,跳到二處。
        判斷按鍵是否等于     0。是,向下執(zhí)行。否,跳到三處。
        判斷完成標(biāo)志是否等于 0。是,向下執(zhí)行。否,按鍵長(zhǎng)按,無(wú)效退出。
        按鍵有效,增加占空比。完成標(biāo)志置為 1。退出。
    二,判斷按鍵是否等于 0。是,置有效標(biāo)志為 1。否,沒(méi)有按鍵退出。
    三,按鍵受干擾,或按鍵彈開(kāi)。清所有標(biāo)志,退出。
    《軟件產(chǎn)生PWM流程》
    一,根據(jù)占空比計(jì)算高電平延時(shí),低電平延時(shí)。
        輸出高電平,軟件產(chǎn)生高電平延時(shí)。
        輸出低電平,軟件產(chǎn)生低電平延時(shí)。
    二,循環(huán)執(zhí)行約20毫秒,后退出。
    《主程序主作流程》
    一,調(diào)用初始化子程序.
    二,調(diào)用按鍵處理子程序。
    三,調(diào)用軟件產(chǎn)生PWM子程序。
    四,循環(huán)執(zhí)行 二,三。

    C源程序
    /引入頭文件*********************************************************
    #include      <pic1684.h>
    //腳位定義***********************************************************
    #define       key       RA3                                //按鍵輸入
    #define       led       RB0                                //輸出指示
    //*******************************************************************
    //函數(shù)名稱:port_init();
    //輸入?yún)?shù):無(wú)
    //輸出參數(shù):無(wú)
    //功能描述:端口設(shè)置
    //建造日期:2008.06.03
    //*****************************************************************
    void PortInit(void)
     {
         PORTA = 0xfd;                                         //  
         TRISA = 0xfd;                                         //A 口設(shè)置   
         
         PORTB = 0x00;                                         //
         TRISB = 0x00;                                         //B 口設(shè)置
     }
     
    //*******************************************************************
    //函數(shù)名稱:KeyInt(*p);
    //輸入?yún)?shù):占空比地址
    //輸出參數(shù):無(wú)
    //功能描述:按鍵處理函數(shù)
    //建造日期:2008.06.03
    //*******************************************************************
    void KeyInt(unsigned char *p)
     {    
         static bit valid = 0;                                 //有效標(biāo)志
         static bit finish = 0;                                //完成標(biāo)志
         
         if (valid == 1)
          {
           if (key == 0)
            {
             if (finish == 0)
              {
               finish = 1;                                     //完成置位
               
               if (*p == 251)
                {
                 *p = 0x01;                                    //按鍵有效 
                }
      
               else
                {
                 *p += 50;                                     //按鍵有效
                }
              }
            }
         
           else
            {
             valid = 0;                                        //有效清零
             finish = 0;                                       //完成清零 
            }  
          }
           
         else
          {
           if (key == 0) valid = 1;                            //有效置位
          } 
     }
    //*******************************************************************
    //函數(shù)名稱:LedPwm(Pwm);
    //輸入?yún)?shù):占空比
    //輸出參數(shù):無(wú)
    //功能描述:led 脈沖調(diào)寬輸出
    //建造日期:2008.06.03
    //*******************************************************************
    void LedPwm(unsigned char Pwm)
     {
         unsigned char PwmH;
         unsigned char PwmL;
         unsigned char i;
       
         
         for (i = 0; i < 20; i++)
          {
           PwmH = Pwm;                                         //脈沖高位
           PwmL = 255 - PwmH;                                  //脈沖低位
           led = 1;                                            // 
           while (PwmH--);                                     //高位輸出
         
           led = 0;                                            // 
           while (PwmL--);                                     //低位輸出
          }        
     }
    //*******************************************************************
    //函數(shù)名稱:main();
    //輸入?yún)?shù):無(wú)
    //輸出參數(shù):無(wú)
    //功能描述:主要程序
    //建造日期:2008.06.03
    //*******************************************************************
    void main(void)                                            //
     {   
         unsigned char Pwm = 0x01;                             //占空初值      
         PortInit();                                           //腳位設(shè)置
        
         while (1)
          {
           KeyInt(&Pwm);                                       //按鍵處理
           LedPwm(Pwm);                                        //脈沖輸出
          }  
     }
     
     (原文件名:KeyInt2.jpg)
    引用圖片

    經(jīng)過(guò)產(chǎn)品實(shí)測(cè)PWM頻率約為1KHZ.在按鍵按下,彈起,長(zhǎng)按.燈光不出現(xiàn)閃爍.

    本文來(lái)自: 高校自動(dòng)化網(wǎng)(Www.) 詳細(xì)出處參考(轉(zhuǎn)載請(qǐng)保留本鏈接):http://www./html/pic/10866.html

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲国产在一区二区三区| av一区二区中文字幕| 中文字幕人妻无码一夲道| 亚洲人成电影在线天堂色| 精品无码久久久久国产| 少妇久久久久久久久久| 国产超高清麻豆精品传媒麻豆精品 | 欧美黑人又粗又大高潮喷水| 免费看欧美全黄成人片| 97精品久久久久中文字幕| 国产精品剧情亚洲二区| 国产综合久久亚洲综合| 久久人人爽人人爽人人av| 自偷自拍亚洲综合精品| 美女无遮挡免费视频网站| 又色又爽又黄的视频网站 | 国产美女被遭强高潮免费一视频| 国产香蕉尹人在线视频你懂的| 不卡一区二区国产在线| 精品久久久久久无码专区| 婷婷丁香五月六月综合激情啪| 精品无码一区二区三区亚洲桃色 | 欧美国产日韩在线三区| 国产精品三级中文字幕| 亚洲精品成人片在线播放| 色狠狠色噜噜AV一区| 国产精品久久国产精麻豆99网站| 色AV专区无码影音先锋| 久久毛片少妇高潮| 久久精品国产99精品国产2021| 亚洲男女羞羞无遮挡久久丫| 人妻少妇精品视中文字幕国语 | 欧美亚洲国产日韩一区二区| 久久午夜无码鲁丝片直播午夜精品| 不卡AV中文字幕手机看| 日本一道一区二区视频| 婷婷综合久久狠狠色成人网| 狠狠婷婷色五月中文字幕| 午夜福利看片在线观看| 日本理伦片午夜理伦片| 亚洲乳大丰满中文字幕|