新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機TC0快速PWM

        AVR單片機TC0快速PWM

        作者: 時間:2013-01-10 來源:網絡 收藏

        1.jpg

        PWM:脈沖寬度調制,圖中T為脈沖周期,t為高電平時間,t與T的比值t/T稱為占空比,脈寬調制指的是調整t的大小,即改變脈沖的占空比,占空比值越大,輸出的電壓越高。改變占空比就改變輸出的電壓,常用于實現D/A,調節電壓或電流,改變電動機的轉速等。

        模式:它的計數方式是TCNT0由0開始計數到255式,計數加1返回到0,然后繼續加1計數,相對于相位PWM修正模式(由0計數到255,再從255計數到0),只有一個斜坡,因此PWM輸出頻率高。在模式下,計數器的最大值決定了PWM的頻率,而比較寄存器OCR0決定了占空比的大小。T/C0是8位計數器, 輸出PWM的頻率=系統時鐘頻率/(分頻系數*255) 。

        PWM產生過程:定時器啟動后,當TNCT0和OCR0的值相等時,輸出引腳OC0(PB3)清0,當TNCT0到255時OC0置位,在程序運行過程中改變OCR0中的數值,就改變了OC0輸出的占空比。

        //函數功能:控制PB3引腳上的發光二極管由亮到滅,再由滅到亮 (代碼來自輕松玩轉c語言cd)

        #include

        #define uchar unsigned char

        #define uint unsigned int

        unsigned int count;

        /*********以下是延時函數*********/

        void Delay_ms(uint xms)

        {

        int i,j;

        for(i=0;i

        { for(j=0;j1140;j++) ; }

        }

        /********以下是端口初始化函數********/

        void port_init()

        {

        DDRB|=(1

        PORTB=(0

        }

        /********定時器0初始化********/

        void timer0_init()

        {

        TCCR0=(1

        // T/C0工作于模式,不分頻

        //比較匹配時,OC0置位,記數到0XFF時,清零OC0

        OCR0=0; //比較匹配寄存器初值,

        SREG=0x80; //使能全局中斷

        }

        /*********以下是主函數*********/

        void main(void)

        {

        port_init();

        timer0_init();

        while(1)

        {

        for(count=0;count256;count++) //OCR=0時,LED最亮,然后逐漸變暗

        {

        OCR0=count; //比較匹配寄存器賦值

        Delay_ms(20); //延時一段時間,以觀察效果

        }

        Delay_ms(3000); // LED最暗時,延時一段時間

        for(count=255;count>0;count--) //OCR=255時,LED最暗,然后逐漸變亮

        {

        OCR0= count;

        Delay_ms(20);

        }

        Delay_ms(3000); //LED最亮時,延時一段時間

        }

        }



        關鍵詞: AVR單片機 TC0 快速PWM

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 芜湖县| 兴海县| 秦皇岛市| 井陉县| 平陆县| 吴忠市| 泗水县| 盐源县| 冀州市| 沙洋县| 霍城县| 阿鲁科尔沁旗| 米脂县| 沿河| 灵丘县| 凉山| 沙雅县| 雷山县| 茶陵县| 合肥市| 南皮县| 汉中市| 龙岩市| 长治市| 黔江区| 建昌县| 巧家县| 随州市| 酒泉市| 临泉县| 石嘴山市| 谷城县| 城固县| 宜兴市| 汝州市| 盐边县| 雷山县| 宾川县| 乌拉特后旗| 安远县| 万年县|