单片机实现十六按键电子琴C51源程序
时间:10-17
来源:互联网
点击:
//-------------------------------------------------------------//矩阵键盘十六按键电子琴源程序.C//硬件说明:51Hei单片机开发板,12M晶振//编写人:胡琴 //网站:http://www.51hei.com//-------------------------------------------------------------#include AT89X51.H> //包含头文件#define uchar unsigned char //宏定义#define uint unsigned int //宏定义uint a,b; //定义全局变量sbit k1=P3^0; //按键sbit k2=P3^1; //按键sbit k3=P3^2; //按键sbit k4=P3^3; //按键sbit yy=P2^2; //音频输出引脚sbit leds=P1^4;//==============行列式键盘扫描子程序============================void kk(void){ P3=0xf0;if(P3!=0xf0){P3=0xef;loop1:if(!k1){a=0xfb,b=0x04;TR0=1;P0=0x3f;if(!k1){goto loop1;}}else TR0=0;yy=1; P0=0x00;loop2:if(!k2){a=0xfb;b=0x90;TR0=1;P0=0x06;if(!k2){goto loop2;}}else TR0=0;yy=1; P0=0x00;loop3:if(!k3){a=0xfc;b=0x0c;TR0=1;P0=0x5b;if(!k3){goto loop3;}}else TR0=0;yy=1; P0=0x00;loop4:if(!k4){a=0xfc;b=0x44;TR0=1;P0=0x4f;if(!k4){goto loop4;}}else TR0=0;yy=1; P0=0x00;P3=0xdf;yy=1; P0=0x00;loop5:if(!k1){a=0xfc;b=0xac;TR0=1;P0=0x66;if(!k1){goto loop5;}}else TR0=0;yy=1; P0=0x00;loop6:if(!k2){a=0xfd;b=0x09;TR0=1;P0=0x6d;if(!k2){goto loop6;}}else TR0=0;yy=1; P0=0x00;loop7:if(!k3){a=0xfd;b=0x34;TR0=1;P0=0x7d;if(!k3){goto loop7;}}else TR0=0;yy=1; P0=0x00;loop8:if(!k4){a=0xfd;b=0x82;TR0=1;P0=0x07;if(!k4){goto loop8;}}else TR0=0;yy=1; P0=0x00;P3=0xbf;loop9:if(!k1){a=0xfd;b=0xc8;TR0=1;P0=0x7f;if(!k1){goto loop9;}}else TR0=0;yy=1; P0=0x00;loop10:if(!k2){a=0xfe;b=0x06;TR0=1;P0=0x6f;if(!k2){goto loop10;}}else TR0=0;yy=1; P0=0x00;loop11:if(!k3){a=0xfe;b=0x22;TR0=1;P0=0x77;if(!k3){goto loop11;}}else TR0=0;yy=1; P0=0x00;loop12:if(!k4){a=0xfe;b=0x57;TR0=1;P0=0x7c;if(!k4){goto loop12;}}else TR0=0;yy=1; P0=0x00;P3=0x7f;loop13:if(!k1){a=0xfe;b=0x85;TR0=1;P0=0x39;if(!k1){goto loop13;}}else TR0=0;yy=1; P0=0x00;loop14:if(!k2){a=0xfe;b=0x9a;TR0=1;P0=0x5e;if(!k2){goto loop14;}}else TR0=0;yy=1; P0=0x00;loop15:if(!k3){a=0xfe;b=0xc1;TR0=1;P0=0x79;if(!k3){goto loop15;}}else TR0=0;yy=1; P0=0x00;loop16:if(!k4){a=0xfe;b=0xe4;TR0=1;P0=0x71;if(!k4){goto loop16;}}else TR0=0;yy=1; P0=0x00;}} //======初始化=========================================== void init(void){TMOD=0x01;TH0=0x3c;TL0=0xb0;ET0=1;TR0=0;EA=1;}//========定时器T0中断服务子程序=========================void time0(void) interrupt 1{TH0=a;TL0=b;yy=~yy;}//=======主函数========================================void main(){ P2=0x35; //锁存2个74hc573,防止数码管点阵点亮.leds=1; //打开led太耗电了 所以关闭了init();yy=1;while(1){ kk();TR0=0;}}
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)