完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位好!
我是新手,请大家多关照,最近想设计一台用STC单片机做的61键无线蓝牙电子琴,用现成的廉价电子琴来改装,打算直接扫描16X8行列的状态加以处理,这部分程序已经写好测试妥当了(附程序),由于这是一个有力度感的键盘,一个键有2个触点,通过测定触点的接触时间差计算出速度而换算为力度,原理是很简单,但实施起来很困难,怎样也想不通,所以特地来请教各位高手,原理是:运行单片机内的计时器(向上),当检测到第一个接触点时,读取定时器数值存入相应的记忆1,等检测到第二个接触点时, 再读取定时器数值存入相应的记忆2,两个数字的差就是力度了。硬件上的设计确定一个琴键按下时,第一触点一定比第二触点快,所以记忆2的数值一定比记忆1的数值大,问题在于计数器溢出时就会是记忆2的数值一定比记忆1的数值小了,更大的问题是如果时间再长些,记忆2的数值又会比记忆1的数值大,变成无法分析而确定的难题了。不知道各位是否看过这方面的文献介绍过解决这问题的方法,现实是有力度的电子琴满街都在卖,厂家肯定已经解决问题了,就是我这新手笨,想不通,特来请教大家。 SCANNER: ;CPL P1.2 SCANP2: ; SHIFT P2 AND READ P0 MOV 32H, #8 ;8 BITS TO SHIFT MOV 30H, #11111111B ;THIS BYTE FOR SHIFT AND OUTPUT TO P2 MOV 35H, #0 ;THIS WILL ADD TO ROW TO MAKE 0-7 CLR C SCANP2A: MOV A, 30H RRC A MOV 30H, A MOV P2, A ;P2 ONE ROW LOW LCALL DELAY4 ;MUST WAIT STABLE MOV A, P0 ;READ FROM P0 CPL A JZ SCANNEXT1 ;NO KEY PRESS FOUND, READP1 LCALL STOREDATA SCANNEXT1: ;LCALL DELAY2 DJNZ 32H, SCANP2A MOV P2, #11111111B ;END OF SCANP2 ;JMP SCANNER SCANP3: ; SHIFT P3 AND READ P0 MOV 32H, #8 ;8 BITS TO SHIFT MOV 30H, #11111111B ;THIS BYTE FOR SHIFT AND OUTPUT TO P2 MOV 35H, #8 ;THIS WILL ADD TO ROW TO MAKE 0-7 CLR C SCANP3A: MOV A, 30H RRC A MOV 30H, A MOV P3, A ;P2 ONE ROW LOW LCALL DELAY4 ;MUST WAIT STABLE MOV A, P0 ;READ FROM P0 CPL A JZ SCANNEXT2 ;NO KEY PRESS FOUND, READP1 LCALL STOREDATA SCANNEXT2: ;LCALL DELAY2 DJNZ 32H, SCANP3A MOV P3, #11111111B ;END OF SCANP ;LCALL DELAY5 JMP SCANNER STOREDATA: ;32H CONTAIN ROW NUMBER THAT CAUSE LOW PUSH PSW MOV 34H, #8 ;8 BIT TO SHIFT MOV 33H, A ;A CONTAIN 8BITS WITH FEW HIGH(CAUSE BY KEYPRESS) STOREDATA1: MOV A, 33H ;MOV P0, A CLR C RLC A MOV 33H, A JNC NEXTBIT ;NOT PRESSED LCALL COUNTPOSItiON LCALL KEYMAP ;LCALL SENTONEBYTE2 NEXTBIT: DJNZ 34H, STOREDATA1 POP PSW RET KEYMAP: MOV DPH, #10H MOV DPL, #00H MOVC A,@A+DPTR RET COUNTPOSITION: ;ROWxCOLxCOL PUSH PSW MOV A, 32H ;1-8 ADD A, 35H ;+0=old or +8=16LEFT8(0-7) SO 1=16 MOV 37H, A MOV A, #0 COUNT1: ADD A, #8 DJNZ 37H, COUNT1 ;A WILL BE 8,16,24,32,40.......128 CLR C SUBB A, #8 ;MAKE A 0-120 ADD A, 34H ;(1-8) A=1 TO 128 DEC A ;MAKE 0-127 SYSTEM POP PSW RET |
|
相关推荐
3个回答
|
|
提问记得下次选择“问答”类别哦
|
|
|
|
是学习还是问答?
|
|
|
|
不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
510 浏览 0 评论
792 浏览 0 评论
833 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
797 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1244 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11814 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 15:02 , Processed in 0.594976 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号