8按键单片机中高低音电子琴c源代码
1.设计51单片机最小系统;2.设置至少8个按键,能发出doremifasolaSIDO;3.能够调节低音、高音和中音...
1.设计51单片机最小系统;
2.设置至少8个按键,能发出do re mi fa so la SI DO;
3.能够调节低音、高音和中音 展开
2.设置至少8个按键,能发出do re mi fa so la SI DO;
3.能够调节低音、高音和中音 展开
1个回答
展开全部
这是使用实验仪器键盘上的数字键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;
}
}
}
#包括
#定义模式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;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询