2016-01-14 23 views
1

下午所有的PIC和實施正確的端口,尋找嵌入式系統上的蜂鳴器

我目前鑽研全新的世界(我反正)和我在努力理解的東西。我已經四處尋找答案,但答案是如此驚人地明顯以至於它不是隱含地陳述,或者我問的是錯誤的問題。

問題是這樣的;我有一個QL200開發板,它有幾個與PIC16F877A(按鈕,LED,LCD屏幕和蜂鳴器)接口的組件。我真正苦苦掙扎的最後一個組成部分是蜂鳴器。

通過一些閱讀,我被引導相信,要使蜂鳴器發聲,我只需要設置它在高電平工作的引腳。但我不確定如何做到這一點。此外,我發現(通過運氣或指導)所有其他組件運行的端口,但我不知道如何分配端口。是通過分配一個端口還是將它們設置在某個端口上作爲標準?

例如,我的LCD面板被流失PORTD:

#define lcd PORTD 

    void writeCommand(unsigned char ch) 
{ 
    lcd = ch; 
    RS = 0; 
    RW =0; 
    E = 1; 
    lcdDelay(); 
    E=0; 
} 

void Init_lcd(void) 
{ 
    ADCON1 = 0x07; //required setting of analog to digital 
    TRISD = 0x00; 
    TRISA1 = 0; 
    TRISA2 = 0; 
    TRISA3 = 0; 

    writeCommand(0x0f); 
    writeCommand(0x38); //set to two line mode 
    clearDisplay(); 

    writeString("MAIN MENU"); 
} 

那是從數據表?我簡單地被告知它是在PORTD上運行的,它運行起來。

但是現在它出現了蜂鳴器的轉向,我甚至難以啓動。幾個例子在線使用PORTB,但我已經使用按鍵上輸入PORTB:

#define TempButton1 RB1 
#define TempButton2 RB2 
#define TempButton3 RB3 

最後一件事是,一旦我找到了蜂鳴器運行的端口,是提高它高一個簡單的事情讓蜂鳴器響起來?即:

//declarations 
#define buzzer PORT(x) 
//in a function somewhere 
buzzer = 1; //hopefully buzzer should sound 

很多我的研究表明,這種方式應該工作,但一些使用PMW和頻率來實現聲音。提前致謝!

+0

幾乎可以肯定的是,您將不得不以兩倍的頻率切換輸出端口引腳,因爲這也被稱爲音頻和語音功能,所以只需啓用輸出即可。如果它與其他輸出共享一個端口,則在切換時必須保留其他輸出的狀態。在[本數據表](http://www.pic16.com/soft/QL200_user_a4_en.pdf)中的「蜂鳴器模塊」部分有* *「此模塊的示例包含在CD-ROM中。」* –

+0

晚上好@WeatherVane,很高興再次見到你。從該數據表中可以看出,蜂鳴器通過RC2連接。向我表明它必須如此設置:#define buzzer RC2。我想看一下RC2的低頻和高頻,可以讓人聽到並報告回來。不幸的是,我無法訪問光盤,否則這可能爲我節省了很多困難。 – James

+0

我看到提示中的連接端口是可選的,甚至可以配置。去研究提供的例子! **編輯:**哎呀,你不能。 –

回答

1

您將不得不以兩倍的頻率切換輸出端口引腳,因爲這也被描述爲音頻和語音功能,只是啓用輸出無法實現。如果它與其他輸出共享一個端口,則在切換時必須保留其他輸出的狀態。

如果你沒有oscilloscpe,如果你正在做任何認真的工作,就拿一個。也可用於查看芯片的端口級別(進入或退出)。