冰楓論壇

標題: PIC16F1827 [打印本頁]

作者: 洪嵐峰    時間: 2023-4-26 06:46
標題: PIC16F1827
製作變頻器需要的零件:

PIC16F1827 微控制器
晶振 (建議使用 20MHz 的晶振)
電解電容 (建議使用 10uF 的電解電容)
陶瓷電容 (建議使用 22pF 的陶瓷電容)
積體電路 (IC) 座
變壓器 (建議使用 220V 轉 12V 的變壓器)
整流二極體 (建議使用 IN4007)
電容 (建議使用 1000uF 的電容)
二極體 (建議使用 1N4148)
電位器 (建議使用 50k 的電位器)
電阻 (建議使用 10k 的電阻)
LED 燈
按鈕開關
杜邦線

PIC16F1827 的連結腳位:

RA0 - 輸入按鈕開關的訊號
RA1 - 用於 PWM (pulse-width modulation) 輸出
RA2 - 用於 PWM 輸出
RA3 - 未使用
RA4 - 未使用
RA5 - 未使用
RE0 - 未使用
RE1 - 未使用
RE2 - 未使用
VSS - 接地
VDD - 供電
RB0 - 未使用
RB1 - 未使用
RB2 - 未使用
RB3 - 未使用
RB4 - 未使用
RB5 - 未使用
RB6 - 未使用
RB7 - 未使用

程式碼:

以下是 PIC16F1827 變頻器程式碼,可供參考。
這個程式會讓 LED 燈閃爍,並使用按鈕開關來控制 PWM 的頻率。


#include <xc.h>

#define _XTAL_FREQ 20000000

void main(void) {
    // 設置輸出和輸入
    TRISA = 0b00000001; // RA0 為輸入
    TRISB = 0b00000000; // 全部為輸出

    // 設置 PWM 訊號
    PR2 = 0xFF;
    T2CON = 0b00000100;
    CCP1CON = 0b00001100;
    CCP2CON = 0b00001100;
   
    // 設置計時器
    T0CON = 0b10000111;
    INTCON = 0b10100000;
   
    while(1) {
        // 讀取按鈕開
    // 如果按鈕被按下,則增加 PWM 頻率
    if (PORTAbits.RA0 == 0) {
        CCPR1L = CCPR1L + 10;
        CCPR2L = CCPR2L + 10;
        __delay_ms(50);
    }
   
    // 讓 LED 燈閃爍
    PORTBbits.RB0 = 1;
    __delay_ms(500);
    PORTBbits.RB0 = 0;
    __delay_ms(500);
}
}

void interrupt ISR() {
if (TMR0IF) {
TMR0IF = 0;
TMR0 = 6;
}
}




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓