|
stc12c5a60s2單片機(jī)程序包SPWM波形輸出程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (12.99 KB, 下載次數(shù): 53)
下載附件
2018-3-22 03:35 上傳
0.png (51.91 KB, 下載次數(shù): 46)
下載附件
2018-3-22 03:35 上傳
單片機(jī)源程序如下:
- #include <stc.h>
- #include <sin.h>
- #define uint unsigned int
- uchar index;
- uchar a;
- void init_pca(void)//pca計(jì)數(shù)器初始化函數(shù)
- {
- CMOD=0x04;//計(jì)數(shù)器0的溢出為PCA計(jì)數(shù)器的時(shí)鐘源
- CCON=0x00;
- CCAPM0=0x42;//8位PWM輸出,無中斷
- CL=0x00;//清零pca計(jì)數(shù)器
- CH=0x00;
- CCAP0L=pwm[0]; //初始化spwm輸出的占空比
- CCAP0H=pwm[0];
- CR=1;//運(yùn)行pca計(jì)數(shù)器
- }
- void init_timer(void)//計(jì)數(shù)器初始化函數(shù)
- {
- TMOD= 0x12; //計(jì)數(shù)器0工作在方式模式2,計(jì)數(shù)器1工作在方式1
- TH0 = 0xFF;//T0的計(jì)數(shù)值為5,把時(shí)鐘源5分頻
- TL0 = 0xFF;
- TH1 = 0xF6;//T1的計(jì)數(shù)值為625,若是12M晶振,則中斷頻率為12M/625=1920HZ,正弦頻率為1920/32=600HZ,即600/12=50HZ
- TL1 = 0xA0; //T1的計(jì)數(shù)值低位
- AUXR=0x80;//計(jì)數(shù)器均工作在8051速度
- //ET0 = 1; //開中計(jì)數(shù)器0斷
- ET1 = 1; //開計(jì)數(shù)器1中斷
- TR0 = 1; //開啟計(jì)數(shù)器0
- TR1 = 1; //開計(jì)數(shù)器1
- }
- void int_timer1(void) interrupt 3//計(jì)數(shù)器1中斷函數(shù)
- {
- CR=0;
- a=a+1;
- index++; //查表索引
-
- TH1=0xFD; //重裝計(jì)數(shù)值
- TL1=0x8F;
- CCAP0H=pwm[index%32]*2;//改變pwm的占空比
- CR=1;
- }
- void main()
- {a=0;
- EA=1;//開總中斷
- init_pca();
- init_timer();
- while(1);
- //-.-//
- }
-
復(fù)制代碼
所有資料51hei提供下載:
stc12c5a60s2_spwm.zip
(70.75 KB, 下載次數(shù): 266)
2018-3-22 01:17 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|