电子琴C程序代码,四乘四矩阵键盘输入

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档