找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1275|回復(fù): 3
收起左側(cè)

有沒有大佬能用51單片機實現(xiàn)輸出頻率和占空比都可調(diào)的方波,頻率要達到108khz

[復(fù)制鏈接]
ID:1069127 發(fā)表于 2023-3-30 19:42 | 顯示全部樓層 |閱讀模式
有沒有大佬能用51單片機實現(xiàn)輸出頻率和占空比都可調(diào)的方波,頻率要達到108khz,頻率最好可調(diào)到500khz,因為單片機實際輸出到示波器里頻率會減小。
回復(fù)

使用道具 舉報

ID:857072 發(fā)表于 2023-3-30 22:50 來自觸屏版 | 顯示全部樓層
以下是一個實現(xiàn)輸出頻率和占空比可調(diào)的方波的C語言程序,并加入中文注釋,便于理解:  #include <reg51.h>  // 定義計時器初值和重載值,可根據(jù)需要調(diào)整 // 對于108kHz的PWM信號,初值為65536-108=65428 // 對于500kHz的PWM信號,初值為65536-500=65036 #define T_INIT 65428 #define T_RELOAD 65428  // 定義PWM輸出端口和計時器編號 sbit PWM_OUT = P1^0; sfr TCON_PWM = 0x88;  // 聲明計時器中斷處理函數(shù) void Timer0_ISR() interrupt 1 {     static unsigned int count = 0;     count++;     if (count >= T_RELOAD) {         count = 0;         PWM_OUT = !PWM_OUT;   // 切換PWM輸出狀態(tài)     }     // 重新賦初值和重載值     TH0 = T_INIT / 256;     TL0 = T_INIT % 256; }  int main() {     // 初始化定時器/計數(shù)器T0     TMOD |= 0x01;   // 設(shè)定T0為模式1(16位定時器)     ET0 = 1;        // 打開定時器中斷允許     EA = 1;         // 打開總中斷允許     TH0 = T_INIT / 256;     TL0 = T_INIT % 256;     TCON_PWM |= 0x10;   // 開啟定時器T0      // 主循環(huán)中控制PWM頻率和占空比     while(1) {         // 這里可以根據(jù)需要修改計數(shù)器初值和重載值,從而改變PWM輸出的頻率和占空比         TH0 = T_INIT / 256;         TL0 = T_INIT % 256;           } } 該程序使用了定時器/計數(shù)器T0來生成PWM波形,以及計時器中斷處理函數(shù)來周期性地切換PWM輸出狀態(tài),從而實現(xiàn)方波信號的輸出。通過修改計時器初值和重載值,即可調(diào)整PWM輸出的頻率和占空比。主循環(huán)中可以根據(jù)需要動態(tài)地改變計時器初值和重載值,從而實現(xiàn)頻率和占空比的可調(diào)節(jié)。
回復(fù)

使用道具 舉報

ID:996773 發(fā)表于 2023-3-31 16:22 | 顯示全部樓層
很簡單!給寄存器一個數(shù)字,io高電平時候讓這個數(shù)字做減法,減到0變?yōu)榈碗娖剑?br />
這個數(shù)字多少就可以決定占空比,數(shù)字越大,做減法時間就越長。
回復(fù)

使用道具 舉報

ID:401564 發(fā)表于 2023-4-1 01:46 | 顯示全部樓層
1: 頻率到哪都不會小
2: 500K的PWM這是要干嘛呢?占空比沒要求嗎?
3: 要學(xué)會看數(shù)據(jù)手冊
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表