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

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

}

相关文档
最新文档