新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STC12C5A60S2單片機產生SPWM主程序C代碼

        STC12C5A60S2單片機產生SPWM主程序C代碼

        作者: 時間:2012-08-06 來源:網絡 收藏

        本程序通過模擬仿真,實際示波器測試,均表現良好,愿拿出來分享,若有更好的實現方法,希望高手多多指教。。。。

        /*************spwm產生程序******//*單片機,晶振11.0592M,正弦波50Hz,spwm波形21.6KHz*/#include STC12x5A60S2.H>#define uchar unsigned char#define uint unsigned intuchar code pwm[54]={255,240,226,211,196,182,168,154,141,128,115,103,91
        ,80,69,59,50,42,34,27,20,15,10,6,3,1,0,0,1,3,6,10,15,20,27,34,42,50,59,69,80,91,103,115,128,141,154,168,
        182,196,211,226,240,255}; // 反正弦變化int index=0;sbit P13=P1^3;        //PCA模塊0輸出sbit P14=P1^4;        //PCA模塊1輸出bit zf=0;           //前后半周期標志void init_pca(void)//pca計數器初始化函數{CMOD=0x02;//計數器0的溢出為PCA計數器的時鐘源,允許pca中斷使能CCON=0x00;CCAPM0=0x42;//8位PWM輸出,無中斷CCAPM1=0x42;//8位PWM輸出,無中斷CL=0x00;//清零pca計數器CH=0x00;CCAP0L=pwm[0];    //初始化spwm輸出的占空比CCAP0H=pwm[0];CCAP1L=pwm[0];    //初始化spwm輸出的占空比CCAP1H=pwm[0];CR=1;//運行pca計數器}void init_timer(void)//計數器初始化函數{TMOD= 0x01; //計數器0工作在方式模式1TH0 = 0XF7;//T1的計數值為2048,若是11.0592M晶振,則中斷頻率為11.0592M/2048=5.4KTL0 = 0xFF;    //T1的計數值低位AUXR=0xC0;//計數器均工作在1T模式。計數頻率11.0592MET0 = 1; //開中計數器0斷TR0 = 1; //開啟計數器0}void int_timer0(void) interrupt 1//計數器1中斷函數{TH0=0xF7; //重裝計數值TL0=0xFF;index++; //查表索引if(index==54) //半周期轉換,每半周期分為60份{CR=0;    //關PCA計數index=0;zf=~zf;  //半周期標志,zf=0,前半周期,zf=1,后半周期  if(zf)   //設置后半周期{P13=0;                    CCAPM0=0X00;   //關閉模塊0CCAPM1=0X42;   //設置模塊1工作方式}else               //設置前半周期{P14=0; CCAPM1=0X00;   //關閉模塊1CCAPM0=0X42;   //設置模塊0工作方式}CR=1;           //開PCA計數                } if(zf==0)          //將下一小格的占空比賦給相應值{CCAP0H=pwm[index];}else {CCAP1H=pwm[index];}}void main(void){P14=0;P13=0;EA=1;//開總中斷init_pca();init_timer();while(1)//主循環{//彩燈程序  和1602顯示程序}}

        pwm相關文章:pwm是什么


        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        關鍵詞: STC12C5A60S2 SPWM C代碼

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 格尔木市| 沾益县| 云阳县| 文登市| 萍乡市| 巴里| 龙州县| 屏边| 淮南市| 嘉祥县| 祁阳县| 龙岩市| 从化市| 潜山县| 铁力市| 玛纳斯县| 和田市| 南宁市| 齐齐哈尔市| 福安市| 囊谦县| 和田市| 久治县| 稻城县| 石台县| 定州市| 梨树县| 吐鲁番市| 鄢陵县| 香河县| 武冈市| 贺兰县| 伊金霍洛旗| 平武县| 当雄县| 岚皋县| 志丹县| 台中市| 江西省| 宁海县| 威海市|