1、电子琴C程序代码四乘四矩阵键盘输入电子琴C程序代码,四乘四矩阵键盘输入#include #define uchar unsigned char #define uint unsigned int sbit duan=P26; sbit wei=P27; sbit bee=P23; 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,0
2、xfe; uchar disp16=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; / 在里面输入按下键值为015对应要显示的第一位码值 uchar disp116=0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x3f; / 在里面输入按下键值为015对应要显示的第二位码值 unsigned char temp; unsigned char key; unsigne
3、d 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 ; /音调数
4、据表可改 void delay(uchar x) uchar y,z; for(y=x;y0;y-) for(z=0;z110;z+); void init() TMOD=0x01; ET0=1; EA=1; void display() for(i=0;i2;i+) P0=tablewei; wei=1; wei=0; if(i=0) P0=dispkey; else P0=disp1key; duan=1; duan=0; delay(4); void main(void) init(); while(1) P3=0xef; temp=P3; temp=temp & 0x0f; if (t
5、emp!=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=tabkey/256; STL0=tabkey%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) display();
6、 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=tabkey/256; S
7、TL0=tabkey%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 0x0
8、b: key=10; break; case 0x07: key=11; break; temp=P3; STH0=tabkey/256; STL0=tabkey%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) display(); temp=P3; temp=temp & 0x0f; P3=0x7f; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) delay(5); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f;
9、switch(temp) case 0x0e: key=12; break; case 0x0d: key=13; break; case 0x0b: key=14; break; case 0x07: key=15; break; temp=P3; STH0=tabkey/256; STL0=tabkey%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) display(); temp=P3; temp=temp & 0x0f; bee=1; TR0=0; display(); void t0(void) interrupt 1 using 0 TH0=STH0; TL0=STL0; bee=bee;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1