51单片机控制的16介音乐盒程序及图.docx
《51单片机控制的16介音乐盒程序及图.docx》由会员分享,可在线阅读,更多相关《51单片机控制的16介音乐盒程序及图.docx(26页珍藏版)》请在冰豆网上搜索。
51单片机控制的16介音乐盒程序及图
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitP1_7=P1^7。
sbitP1_1=P1^1。
sbitP1_2=P1^2。
uintkey_number。
uintSTH0,STL0。
ucharcodetab1[]={0xef,0xdf,0xbf,0x7f}。
ucharcodetab2[]={0xfe,0xfd,0xfb,0xf7}。
ucharcodetab3[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。
uintcodetab4[]={64021,64103,64260,64400,64524,64580,64684,64777,
64820,64898,64968,65030,65058,65110,65157,65178}。
voiddelayms(ucharno>。
voidkeydetect(>。
voiddisplay(>。
voidtimer0_interrupt(>。
main(>
{
TMOD=0x01。
EA=1。
ET0=1。
while(1>
{
display(>。
keydetect(>。
}
}
voidkeydetect(>
{
uinti,j。
for(i=0。
i<=3。
i++>
{
P2=tab1[i]。
for(j=0。
j<=3。
j++>
{
if(P3==tab2[j]>
{
delayms(10>。
if(P3==tab2[j]>
{
if(i==0>
key_number=i+j。
elseif(i==1>
key_number=i+j+3。
elseif(i==2>
key_number=i+j+6。
else
key_number=i+j+9。
switch(key_number>
{
case0:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case1:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case2:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case3:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case4:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case5:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case6:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case7:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case8:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case9:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case10:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case11:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case12:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case13:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case14:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case15:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
default:
break。
}
while(P3==tab2[j]>
{
display(>。
switch(key_number>
{
case0:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case1:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case2:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case3:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case4:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case5:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case6:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case7:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case8:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case9:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case10:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case11:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case12:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case13:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case14:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case15:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
default:
break。
}
}
TR0=0。
}
}
}
}
}
voidtimer0_interrupt(>interrupt1using2
{
TH0=STH0。
TL0=STL0。
P1_7=~P1^7。
}
voiddisplay(>
{
P0=tab3[key_number/10]。
P1_1=0。
delayms(1>。
P1_1=1。
P0=tab3[key_number%10]。
P1_2=0。
delayms(1>。
P1_2=1。
}
voiddelayms(ucharno>
{
uinti,j。
for(i=0。
ii++>
{
for(j=0。
j<164。
j++>。
for(j=0。
j<164。
j++>。
}
}#include
#defineuintunsignedint
#defineucharunsignedchar
sbitP1_7=P1^7。
sbitP1_1=P1^1。
sbitP1_2=P1^2。
uintkey_number。
uintSTH0,STL0。
ucharcodetab1[]={0xef,0xdf,0xbf,0x7f}。
ucharcodetab2[]={0xfe,0xfd,0xfb,0xf7}。
ucharcodetab3[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。
uintcodetab4[]={64021,64103,64260,64400,64524,64580,64684,64777,
64820,64898,64968,65030,65058,65110,65157,65178}。
voiddelayms(ucharno>。
voidkeydetect(>。
voiddisplay(>。
voidtimer0_interrupt(>。
main(>
{
TMOD=0x01。
EA=1。
ET0=1。
while(1>
{
display(>。
keydetect(>。
}
}
voidkeydetect(>
{
uinti,j。
for(i=0。
i<=3。
i++>
{
P2=tab1[i]。
for(j=0。
j<=3。
j++>
{
if(P3==tab2[j]>
{
delayms(10>。
if(P3==tab2[j]>
{
if(i==0>
key_number=i+j。
elseif(i==1>
key_number=i+j+3。
elseif(i==2>
key_number=i+j+6。
else
key_number=i+j+9。
switch(key_number>
{
case0:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case1:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case2:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case3:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case4:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case5:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case6:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case7:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case8:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case9:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case10:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case11:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case12:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case13:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case14:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case15:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
default:
break。
}
while(P3==tab2[j]>
{
display(>。
switch(key_number>
{
case0:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case1:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case2:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case3:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case4:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case5:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case6:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case7:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case8:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case9:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case10:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case11:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。
break。
case12:
{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。