硬件電路也是很簡單,
通過連續(xù)改變CCAP0H改變PWM0輸出的PWM信號的占空比,PWM信號在P1.3腳輸出,在PWM輸出端口接入一顆LED用來顯示呼吸燈的效果。
MCU:STC12C5A60S2 晶振:11.0592MHz
單片機源程序如下:
- /*********************************************************************************************************
- ** 工程功能 :PWM輸出
- ** MCU:STC12C5A60S2
- ** 晶振:11.0592MHz
- * 配置PCA模塊為8位PWM輸出模式,PCA計數(shù)脈沖設置為Timer0的溢出頻率,配置步驟如下:
- * 1、PCA模塊0在空閑模式下扔然計數(shù),選擇T0計數(shù)溢出頻率為PCA模塊0的計數(shù)脈沖,禁止PCA0的溢出中斷,即CMOD=0X84;
- * 2、不使用PCA中斷,將PCA各模塊中斷請示標志清除,即CCON=0X00;
- * 3、PCA計數(shù)器清0,即使CH=CL=0;
- * 4、T0設置為工作方式2,8位自動重裝模式,即TMOD=0X02;
- * 5、將計數(shù)初值裝入T0;
- * 6、開啟T0計數(shù)器,開啟PCA0計數(shù)器,即TR0=1; CR=1;
- * 7、PWM輸出端口為P1.3,另一端接LED可以查看呼吸燈效果。
- *********************************************************************************************************/
- #include<STC12C5A60S2.h>
- #include<LCD1602.h>
- #include<PWM.h>
- #define uint unsigned int
- /*********************************************************************************************************
- ** 函數(shù)功能 :延時函數(shù)
- ** 函數(shù)說明 :利用軟件延時,占用CPU,經(jīng)調(diào)試最小單位大約為1ms
- ** 入口參數(shù) :time:需要延時的時間,單位ms
- ** 出口參數(shù) :無
- *********************************************************************************************************/
- void Delay_ms(uint time)
- {
- uint i,j;
- for(i = 0;i < time;i ++)
- for(j = 0;j < 930;j ++);
- }
- void main()
- {
- unsigned char i=0;
- LCD_1602_Init(); //液晶顯示前進行初始化
- PCA_init();
- Timer0_init();
- Write_1602_String("I LIKE MCU 2021",0X80);
- Write_1602_Data(0x05);//自定義字符'年'
- while(1) //在while(1)循環(huán)中通過連續(xù)改變CCAP0H改變PWM0輸出的PWM信號的占空比,PWM信號在P1.3腳輸出
- {
- for(i=255;i>1;i--)
- {
- CCAP0H=i;
- Delay_ms(8);
- }
- for(i=0;i<255;i++)
- {
- //PCA計數(shù)器工作在PWM模式時,CCAP0H和CCAPL用來控制輸出PWM的占空比,對PWM0起主要影響作用的是CCAP0H,詳細的介紹可參照文檔中PCA/PWM的應用的章節(jié)
- CCAP0H=i;
- Delay_ms(8);
- }
- }
- }
復制代碼
所有程序51hei提供下載:
STC12C5A60S2_PWM輸出做呼吸燈效果.rar
(38.13 KB, 下載次數(shù): 70)
2021-1-18 21:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|