电子琴C程序代码,四乘四矩阵键盘输入
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子琴C程序代码,四乘四矩阵键盘输入#include
#define uchar unsigned char #define uint unsigned int
sbit duan=P 2八6;
sbit wei=P 2八7;
sbit bee=P 2八3;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code tablewe[]={
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe};
uchar disp[16]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; // 在里面输入按下键值为0~15 对应要显示的第一位码值uchar disp1[16]={0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x3f}; // 在里面输入按下键值为0~15 对应要显示的第二位码值unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={
//63625, 63833, 64019, 64104, 64260, 64400, 64524 ,// 低音区:1 2 3 4
64580, 64685, 64778, 64820, 64898, 64968, 65030 ,// 中音区:1 2 3 4 5 65058, 65110, 65157, 65178, 65217, 65252, 65283 ,// 高音区:1 2 3 4 5
65297 ,// 超高音:1 }; // 音调数据表可改
void delay(uchar x)
uchar y,z;
for(y=x;y>0;y--)
for(z=0;z<110;z++);
void init()
TMOD=0x01;
ET0=1;
EA=1;
void display() {
for(i=0;i<2;i++)
P0=tablewe[i];
wei=1;
wei=0;
if(i==0)
P0=disp[key];
else
P0=disp1[key]; duan=1;
duan=0;
delay(4);
void main(void) { init();
while(1)
P3=0xef;
temp=P3;
temp=temp & 0x0f; if (temp!=0x0f)
delay(5);
temp=P3;
temp=temp & 0x0f; if (temp!=0x0f)
temp=P3;
temp=temp & 0x0f; switch(temp)
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
temp=P3;
STH0=tab[key]/256; STL0=tab[key]%256; TR0=1;
temp=temp & 0x0f; while(temp!=0x0f)
display();
temp=P3;
temp=temp & 0x0f;
P3=0xdf;
temp=P3;
temp=temp & 0x0f; if (temp!=0x0f)
delay(5);
temp=P3;
temp=temp & 0x0f; if (temp!=0x0f)
temp=P3;
temp=temp & 0x0f; switch(temp)
key=4;
case 0x0e:
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=7;
break;
temp=P3;
STH0=tab[key]/256; STL0=tab[key]%256; TR0=1;
temp=temp & 0x0f; while(temp!=0x0f)
display();
temp=P3;
temp=temp & 0x0f;
}
P3=0xbf;
temp=P3;
temp=temp & 0x0f; if (temp!=0x0f)
delay(5);
temp=P3;
temp=temp & 0x0f; if (temp!=0x0f)
temp=P3;
temp=temp & 0x0f; switch(temp)
case 0x0e:
key=8;
break;
case 0x0d:
key=9;
break;
case 0x0b:
key=10;
break;