最近也比較忙,就不放圖片了,大家可以自己下載下來看一下,
這是關于PWM 輸出波形脈沖的仿真proteus仿真,有仿真示波器,有程序,用數碼管和流水燈表示輸出結果,大家有問題的可以再來找我,15538053902(我微信)
部分單片機源程序:
- #define PWM_GLOBAL 1
- #include "pwm.h"
- /*****************************************************
- *函數名稱:pwm_init(void)
- *函數功能:PWM初始化,設置定時器
- *函數入口:無
- *函數出口:無
- *****************************************************/
- void pwm_init(void) // 12M
- {
- TMOD=0x20; // 定時器1 模式2
- TL1 = 255-10; // 1ms
- TH1 = 255-10;
- ET1 = 1; //定時器1邊沿觸發
- TR1 = 1; //開定時器1中斷
- pwmPeriodCont =0x00;
- pwmH=0x01;
- }
- /*****************************************************
- *函數名稱:void pwm_set(const uchar NewPwmValue)
- *函數功能:PWM占空比設置
- *函數入口:無
- *函數出口:無
- *****************************************************/
- void pwm_set(uchar NewPwmValue)
- {
- if ((NewPwmValue >= 1)&&(NewPwmValue <= 99)) //一個周期里
- {
- pwmH = NewPwmValue;
- }
- else //若占空比不在1...99范圍內則輸出一個尖脈沖
- {
- pwmH =0x01;
- }
- }
- /*****************************************************
- *函數名稱:pwmProduce(void)
- *函數功能:定時器1溢出中斷設置
- *函數入口:無
- *函數出口:無
- *****************************************************/
- void pwmProduce(void) interrupt 3
- {
- pwmPeriodCont++; //PWM定時周期計數加1
- if(pwmPeriodCont<=pwmH)
- PWM_OUT =1; // 高電平從0 到...PWM_H
- else // 剩下的為低電平時間
- {
- PWM_OUT =0;
- if (pwmPeriodCont >= PWM_Period)// 一個頻率周期結束
- {
- pwmPeriodCont=0;
- }
- }
- }
復制代碼
所有資料下載:
PWM輸出控制系統.rar
(24.65 KB, 下載次數: 61)
2017-4-30 19:50 上傳
點擊文件名下載附件
仿真和程序
新建 Microsoft Word 文檔.docx
(328.67 KB, 下載次數: 21)
2017-4-30 19:50 上傳
點擊文件名下載附件
文檔
|