8按键单片机中高低音电子琴c源代码

1.设计51单片机最小系统;
2.设置至少8个按键,能发出do re mi fa so la SI DO;
3.能够调节低音、高音和中音

这是使用实验仪器键盘上的数字键1,2,3,4,5,6,7作为键盘键,按适当的音的问题。 8255 PA.0口音频脉冲以驱动扬声器的问题。可以参考一下。
#包括

#定义模式0X82;

外部数据无符号字符型控制_at_ 0x8003;

外部数据无符号字符型音箱_at_ 0X8000;

外部数据无符号字符型OUTBIT _at_ 0x9002;

外部数据无符号字符型OUTSEG _at_ 0x9004;

外部数据无符号字符型IN _at_ 0x9001;

代码无符号字符型KEYTABLE [] = {

0X16,0X15,0X14 ,是0xFF,

0X13,0X12,0X11,0X10,

0X0D,0X0C,0X0B,0X0A,

0X0E,0X03,0X06,0X09,

0x0F的,0X02,0X05,0X08 ,

0X00,0X01,0x04的0X07

}

无符号字符型testkey的()

{

OUTBIT = 0;

回报( &0X0F);

}

无符号字符型的getKey()

{

无符号字符位置;

无符号字符型;

无符号字符K;

= 6;

POS = 0x20的;

{

OUTBIT =位置;

POS >> = 1; K = IN&0X0F;

}(( - = 0)&&(K == 0));

(k! = 0){ * = 4;

(K&2)

+ = 1;

其他(K&4)

+ = 2;

否则,如果(K&8)

+ = 3;

OUTBIT = 0;

返回(KEYTABLE []);

}否则返回(0XFF)

}

/ * ================================== ============================================== * / />代码unsigned int类型ToneTable [7] = {

64578,64686,64778,64821,64898,64968,65029

无符号字符型PulseCNT;

无符号字符型脉冲;

无符号ToneHigh ToneLow

无效计时器()中断1

{

TR0 = 0;

TH0 = ToneHigh; / a> TL0 = ToneLow;

TR0 = 1;,

扬声器=脉冲;

脉冲+ +;

PulseCNT - ;

无效的主要()

{

无符号的字符键;

控制模式;

OUTSEG = 0;

脉冲= 0;

BR /> TMOD = 0X01; / / 1,头脑

IE = 0X82; / / EA = 1,IT0 = 1

(1){

同时(testkey的); / /按钮

关键的getKey();

((> = 1)&&(<= 7)){

ToneHigh = ToneTable [键1] >> 8;

ToneLow = ToneTable [1]&0xff的;

TH0 = ToneHigh

TL0 = ToneLow;

TR0 = 1;

PulseCNT = 100

(PulseCNT! = 0)/ / 100脉冲

音箱= 0;

TR0 = 0;

}

}
}
温馨提示:答案为网友推荐,仅供参考