单片机课程设计---简易电子琴设计

内容发布更新时间 : 2025/5/21 10:35:50星期一 下面是文章的全部内容请认真阅读。

相关代码:

P0 = 0xff;

Line = 1; Mask = 0x01; for(i=0;i<4;i++) { Col = 0; P0 = ~Mask;

ScanCode = P0 & 0xf0;

if(ScanCode!=0xf0) delay(); ScanCode = P0 & 0xf0; switch(ScanCode) {

case 0xe0:Col = 1;break; case 0xd0:Col = 2;break; case 0xb0:Col = 3;break; case 0x70:Col = 4;break; default:Col = 0;break; } if(Col>0) { num = (Line-1)*4+Col; if(SAVE==0) //保存 ,灯亮 {

save[a]=num; a++; } if(num==0) {

TR0=0;

SPK=1; //在未按键时,防止长期高电平损坏喇叭 } else {

P1 = CharCode[num-1]; High=tab[num-1][0]; Low =tab[num-1][1]; TR0=1; while(1) {

ScanCode = P0 & 0xf0; if(ScanCode == 0xf0) {

}

} } }

Mask <<=1; Line ++;

TR0 = 0; SPK=1; break; }

5.2键盘接口必须具有的4个基本功能

(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5—20mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。

(2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。

(3)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。

如下为键盘编码表:

unsigned char code tab[][2]= {

0x00,0x00, 0xf8,0x8c, 0xf9,0x5b, 0xfa,0x15, 0xfa,0x67, 0xfb,0x04, 0xfb,0x90, 0xfc,0x0c, 0xfc,0x44, 0xfc,0xac, 0xfd,0x09, 0xfd,0x34, 0xfd,0x82, 0xfd,0xc8, 0xfe,0x06, 0xfe,0x22, 0xfe,0x56, 0xfe,0x85,

0xfe,0x9a, 0xfe,0xc1, 0xfe,0xe4, 0xff,0

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi