冰楓論壇
標題:
PIC16F690
[打印本頁]
作者:
洪嵐峰
時間:
2023-4-26 06:49
標題:
PIC16F690
製作變頻機需要以下零件:
PIC16F690 微控制器
晶體振盪器
電容
電感
可變電阻
電池或電源模組
電晶體
電阻
電容
按鈕開關
LED 燈
以下是 PIC16F690 的連結腳位圖:
____________
VDD --|1 20|-- VSS
RA0 --|2 19|-- AN3/RA3
RA1 --|3 18|-- AN2/RA4
RA2 --|4 17|-- AN1/RA5
RC5 --|5 16|-- AN0/RA6
RC4 --|6 15|-- OSC2/CLKOUT
RC3 --|7 14|-- OSC1/CLKIN
RC6 --|8 13|-- TX/CK
RC7 --|9 12|-- RX/DT
GND --|10 11|-- MCLR
------------
以下是PIC16F690 變頻機的程式碼示例
使用 CCS C Compiler:
#include <16F690.h>
#use delay(clock=4000000)
void main()
{
int freq = 10000; // 起始頻率
int duty = 50; // 起始占空比
int step = 10; // 頻率和占空比步進值
int min_freq = 1000; // 最小頻率
int max_freq = 50000; // 最大頻率
setup_adc_ports(NO_ANALOGS); // 禁用類比輸入
setup_adc(ADC_OFF); // 禁用 ADC 轉換
setup_timer_2(T2_DIV_BY_1,255,1); // 設置定時器 2
while(TRUE)
{
set_pwm2_duty(duty); // 設置 PWM2 占空比
if(input(PIN_A0) == 0) // 按下按鈕開關
{
freq += step; // 頻率增加
if(freq > max_freq) // 檢查頻率是否超出最大值
{
freq = max_freq;
}
}
else if(input(PIN_A1) == 0) // 按下按鈕開關
{
freq -= step; // 頻率減少
if(freq < min_freq) // 檢查頻率是否低於最小值
{
freq = min_freq;
}
}
setup_timer_2(T2_DIV_BY_1,255,freq); // 設置定時器 2 產生指定頻率的 PWM 輸出
delay_ms(100); // 稍作延遲
}
}
上述程式碼中使用了定時器 2 和 PWM 功能來產生可變頻率的輸出信號。
在主循環中,程式會不斷檢查按鈕開關的狀態,如果按下了頻率增加按鈕,則頻率會增加一個步進值,如果按下了頻率減少按鈕,則頻率會減少一個步進值。
然後,程式會重新設置定時器 2 的參數,產生指定頻率的 PWM 輸出信號,並使用 set_pwm2_duty() 函數來設置 PWM2 的占空比。
歡迎光臨 冰楓論壇 (https://bingfong.com/)
Powered by 冰楓