新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 讓沒有PWM功能的單片機實現PWM功能

        讓沒有PWM功能的單片機實現PWM功能

        作者: 時間:2016-11-30 來源:網絡 收藏
        AT89S51本身沒有PWM接口,程序采用軟件模擬PWM,P1口控制LED亮度,模擬PWM輸出控制燈的10個亮度級。

        #include
        #define uInt unsigned int
        #define uchar unsigned char
        uchar PWM_T = 0; //占空比控制變量
        //////////////////主程序入口//////////////////////
        void main(void)
        {
        bit flag = 1; //控制燈漸亮漸熄方式
        uInt n;
        TMOD=0x02; //定時器0,工作模式2,8位定時模式
        TH0=241; //寫入預置初值241到定時器0,使15微秒溢出一次(11.0592MHz)
        TL0=241; //寫入預置值
        TR0=1; //啟動定時器
        ET0=1; //允許定時器0中斷
        EA=1; //允許總中斷
        P1=0xff; //初始化P1
        while(1)
        {
        for(n=0;n<300;n++); //延時,將響應定時器中斷,燈會自動加/減一個檔次的亮度
        if(flag==1) //燈漸亮
        PWM_T++;
        else //燈漸熄
        PWM_T--;
        if(PWM_T>=10) //設置燈亮度級別為10
        flag=0;
        if(PWM_T==0) //限定最低亮度級別為0
        flag= 1;
        }
        }
        ///////////////////定時器0中斷模擬PWM////////////////////
        timer0() interrupt 1 using 2
        {
        static uchar t ; //t用來保存當前時間在一秒中的比例位置
        t++; //每15微秒增加1
        if(t==10) //1.5毫秒的時鐘周期
        {
        t=0; //使t=0,開始新的PWM周期
        P1=0x00; //使LED燈亮
        }
        if(PWM_T==t) //按照當前占空比切換輸出為高電平
        P1=0xff; //使LED燈滅
        }

        本文引用地址:http://www.104case.com/article/201611/324024.htm


        關鍵詞: PWM功能單片

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 迁安市| 额尔古纳市| 呼和浩特市| 乌什县| 新宁县| 葫芦岛市| 旬邑县| 丽水市| 衡南县| 精河县| 绥化市| 德清县| 霍山县| 珲春市| 南雄市| 梅州市| 清远市| 海安县| 长葛市| 锡林浩特市| 建昌县| 金塔县| 得荣县| 沙洋县| 林口县| 吴忠市| 松溪县| 庆阳市| 张家港市| 迁安市| 汪清县| 石棉县| 永济市| 无棣县| 深州市| 舞钢市| 江门市| 永仁县| 于田县| 阿瓦提县| 南郑县|