电子琴C程序代码,四乘四矩阵键盘输入
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子琴C程序代码,四乘四矩阵键盘输入#include
#define uchar unsigned char #define uint unsigned int
sbit duan=P2^6;
sbit wei=P2^7;
sbit bee=P2^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 5 6 7
64580, 64685, 64778, 64820, 64898, 64968, 65030 ,//中音区:1 2 3 4 5 6 7
65058, 65110, 65157, 65178, 65217, 65252, 65283 ,//高音区:1 2 3 4 5 6 7
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)
{
case 0x0e:
key=4;
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; }
}