|
今天我們將使用單片機(jī)內(nèi)部自帶的PWM來進(jìn)行呼吸燈設(shè)計(jì),自己可以查看該單片機(jī)型號的中文資料。所看章節(jié)如下:
1.png (82.85 KB, 下載次數(shù): 36)
下載附件
2020-10-25 02:26 上傳
直接上代碼吧,大家可以查看代碼,如果不明白的可以給我留言,^_^。
- #include <stc12c5a60s2.h>
- unsigned char dy[15]={16,32,48,64,80,96,112,128,144,160,176,192,208,224,240}; // CCAP0H值的分配,為了實(shí)現(xiàn)不同的占空比
- void modify_duty();
- void Init_PWM();
- void delay();
- void main()
- {
- Init_PWM();
- while(1)
- {
- modify_duty();
- }
- }
- void Init_PWM() // PWM功能的初始化
- {
- CMOD = 0X02; // 設(shè)置脈沖源
- CCAPM0 = 0X42; // 開啟比較器,允許輸出脈寬調(diào)制信號
- PCA_PWM0 = 0X00; // 組成9位比較器,可以設(shè)置成1,也可以設(shè)置成0
- CCAP0L = 0x80; // 比較器中的初值
- CCAP0H = 0X80; // 比較器初值重裝
- CL=0; // 裝載值為0
- CR =1; // 啟動(dòng)計(jì)數(shù)模式
- }
- void modify_duty()
- {
- int i;
- for(i=0;i<15;i++)
- {
- CCAP0H = dy[i];
- delay();
- }
- for(i=13;i>=1;i--)
- {
- CCAP0H = dy[i];
- delay();
- }
- }
- void delay()
- {
- int i,j;
- for(i=0;i<200;i++)
- {
- for(j=0;j<200;j++);
- }
- }
復(fù)制代碼
可以看結(jié)果了:
2.gif (1.65 MB, 下載次數(shù): 41)
下載附件
2020-10-25 02:26 上傳
|
|