大家下午好,
我目前正在钻研嵌入式系统的全新世界(无论如何对我来说),并且正在努力理解一些东西。我四处寻找答案,但要么答案非常明显以至于没有隐含说明,要么我问错了问题。
问题是这样的;我有一个 QL200 开发板,它有几个组件与 PIC16F877A 接口(interface)(按钮、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 和频率来获得声音。提前致谢!
最佳答案
您必须以所需频率的两倍切换输出端口引脚,因为这也被描述为音频和语音功能,仅启用输出无法做到这一点。如果它与其他输出共享一个端口,您必须在切换它时保留其他输出的状态。
如果你没有示波器,如果你正在做任何严肃的工作,那就买一个。对于查看芯片上的端口级别(输入或输出)也很有用。
关于c - 在 PIC 上找到正确的端口并实现蜂鸣器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34795803/