简单电子琴,从程序怎么看出我的引脚?

2019-07-15 22:43发布

这是我在这论坛找的电子琴资料,有原理图和程序,但是我不知道我的按键键盘8个脚,应该分别连着单片机哪8个脚。希望有人看出来能告诉我,新手在此万分感谢...... 电子琴电路图.jpg

#include<at89x51.h>#include<INTRINS.H>typedef unsigned char uchar;typedef unsigned int uint;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar temp;uchar key;uchar i,j;uchar STH0;uchar STL0;uint code tab[]={64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178}; void main(void){TMOD=0x01;ET0=1;EA=1; while(1){P3=0xff;P3_4=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);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;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}} P3=0xff;P3_5=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);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;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}} P3=0xff;P3_6=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);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;case 0x07:key=11;break;}temp=P3;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}} P3=0xff;P3_7=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f){temp=P3;temp=temp & 0x0f;switch(temp){case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}temp=P3;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}}}} void t0(void) interrupt 1 using 0{TH0=STH0;TL0=STL0;P1_0=~P1_0;}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
Jupiterix
1楼-- · 2019-07-16 03:43
应该是p3的8个脚
121361061
2楼-- · 2019-07-16 03:56
 精彩回答 2  元偷偷看……
Flaiguo
3楼-- · 2019-07-16 05:12
121361061 发表于 2013-8-30 17:49
p3口,虽然原理图没有标出,但程序可以看出

你好,首先谢谢你的回答。我还想请教一下,可不可以看出来1~8分别对应着什么P3.0~P3.7,是倒序对应还是顺序对应,还是怎样?我刚刚试了一下,结果不稳定,很乱,貌似不是1~8顺序对应P3.0~P3.7,谢谢。
121361061
4楼-- · 2019-07-16 09:54
Flaiguo 发表于 2013-8-30 18:52
你好,首先谢谢你的回答。我还想请教一下,可不可以看出来1~8分别对应着什么P3.0~P3.7,是倒序对应还是顺 ...

这个是矩形键盘,原理图标明了1234等脚,你就用p3^0对应1脚,p3^1对应2脚,以此类推,试试
paddylee2011
5楼-- · 2019-07-16 12:33
图上已经标明了啊
ziboht
6楼-- · 2019-07-16 15:42
按顺序接P3.0-P3.7

一周热门 更多>