不知道是什么问题,本人对蜂鸣器引脚不太确定,是引脚规定错误?蜂鸣器跳线帽没插?还是什么问题,请解决
#include <REGX52.H>
#include "Nixie.h"
#include "Key.h"
#include "Buzzer.h"
unsigned char KeyNum;
void main()
{
Nixie(1,0);
while(1)
{
KeyNum=Key();
if(KeyNum)
{
Buzzer_Timer(100);
Nixie(1,KeyNum);
}
}
}
Delay1ms
void Delay1ms(unsigned char xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
Key
#include <REGX52.H>
#include "Delay1ms.h"
unsigned char Key() //独立按键控制函数
{
unsigned char KeyNum;
if(P1_4==0) {Delay1ms(20);while(P1_4==0);Delay1ms(20);KeyNum=1;}
if(P1_5==0) {Delay1ms(20);while(P1_5==0);Delay1ms(20);KeyNum=2;}
if(P1_6==0) {Delay1ms(20);while(P1_6==0);Delay1ms(20);KeyNum=3;}
if(P1_7==0) {Delay1ms(20);while(P1_7==0);Delay1ms(20);KeyNum=4;}
if(P3_5==0) {Delay1ms(20);while(P3_5==0);Delay1ms(20);KeyNum=5;}
return KeyNum;
}
Nixie
#include <REGX52.H>
#include "Delay1ms.h"
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0~9对应段选端,A~F为0x77,0x7C,0x39,0x5E,0x79,0x71;0x00为空
void Nixie(unsigned char Location,Number) //晶体管显示函数
{
switch(Location)
{
case 1:P1_0=0;P1_1=0;P1_2=0;P1_3=1;break;
case 2:P1_0=0;P1_1=0;P1_2=1;P1_3=0;break;
case 3:P1_0=0;P1_1=1;P1_2=0;P1_3=0;break;
case 4:P1_0=1;P1_1=0;P1_2=0;P1_3=0;break;
}
P0=NixieTable[Number]; //只显示一个数,静态化显示无需清零
}
Buzzer
#include <REGX52.H>
#include <INTRINS.H> //_nop_需要
sbit Buzzer=P2^1;
void Buzzer_Delay500us() //@12.000MHz,蜂鸣器私有延时函数,延时500us
{
unsigned char data i;
_nop_();
i = 247;
while (--i);
}
void Buzzer_Timer(unsigned int ms) //蜂鸣器发声时长函数
{
unsigned int i;
for(i=0;i<=ms*2;i++)
{
Buzzer=!Buzzer; //无源蜂鸣器
Buzzer_Delay500us(); //每500us引脚电平取反,一周期为1ms,故频率为1000Hz(蜂鸣器频率为1000Hz)
}
}
【以下回答由 GPT 生成】
问题分析:
根据提供的代码和问题描述,可能导致蜂鸣器不发声的原因有以下几点: 1. 引脚规定错误: 可能使用的引脚与蜂鸣器连接的引脚不同。 2. 蜂鸣器跳线帽未插好: 可能未正确连接蜂鸣器的跳线帽。
解决方案: 1. 检查引脚规定是否正确,确保蜂鸣器与开发板连接的引脚是正确的。如果不确定引脚规定,可以查阅开发板的硬件手册或者资料。 2. 检查蜂鸣器跳线帽是否正确插好,确认跳线帽连接的引脚与蜂鸣器引脚一致。 3. 确保蜂鸣器的其他硬件连接正常,如电源、电阻等。
如果以上解决方案都不能解决问题,可能原因是硬件故障,建议联系开发板的厂商或者技术支持团队进行进一步的故障排除和修复。
Note: 给出的代码中,蜂鸣器相关的代码未包含在问题描述的部分中,无法判断其具体实现和潜在问题。