在 PIC 上找到正确的端口并实现蜂鸣器

Finding the correct PORT on a PIC and implementation of a buzzer

下午好,

我目前正在钻研嵌入式系统的 b运行d 新世界(无论如何对我来说),并且正在努力理解一些东西。我四处寻找答案,但要么答案非常明显以至于没有隐含说明,要么我问错了问题。

问题是这样的;我有一个 QL200 开发板,它有几个组件与 PIC16F877A 接口(按钮、LED、LCD 屏幕和蜂鸣器)。我真正苦苦挣扎的最后一个组件是蜂鸣器。

通过一些阅读,我相信要使蜂鸣器发出声音,我只需将其工作的引脚设置为高电平即可。但是我不确定该怎么做。此外,我已经找到(靠运气或指导)所有其他组件 运行 所在的端口,但我不知道它们实际上是如何分配端口的。是给它们分配一个端口还是它们作为标准设置在某个端口上?

例如,我的 LCD 面板 运行ning off 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");
}

是否来自数据sheet?我只是被告知它在 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 和频率来实现声音。提前致谢!

您必须以所需频率的两倍切换输出端口引脚,因为这也被描述为音频和语音功能,仅启用输出无法做到这一点。如果它与其他输出共享一个端口,您必须在切换它时保留其他输出的状态。

如果你没有示波器,如果你正在做任何严肃的工作,那就买一个吧。对于查看芯片上的端口级别(输入或输出)也很有用。