O的T=65536-500000262=63628中音DO的T=65536-500000523=64580高音DO的T=65536-5000001046=65058单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表2所示:
表2音符休止低1低2DORE
音符频率表音符中4FA中5SO中6LA中7SI高1DO高2RE高3M高4FA高5SO高6LA高7SI频率(HZ)简谱码(T值)69878488098810461175131813971568176019676482064898649686503065058651106515765178652176525265283
频率(HZ)简谱码(T值)0262294330349392440494523587659063628638356402164103642606440064524645806468464777
低3M低4FA低5SO低6LA低7SI中1DO中2RE中3M
f我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据ui
tcodetab0,636286383564021641036426064400645246458064684647776482064898649686503065058651106515765178652176525265283;音乐的音拍,一个节拍为单位(C调)(如表3所示)
表3曲调值调44调34调24DELAY125ms187ms250ms
曲调值表曲调值调44调34调24DELAY62ms94ms125ms
对于不同的曲调我们也可以用单片机的另外一个定时计数器来完成。在这个程序中用到了两个定时计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。
第四章制作过程
首先制作了简易版本,用NE555谐振电路和LM386功放电路组成建议的可弹奏电子琴,如下图:
然后学习单片机知识后用STC89C52单片机制作第二版。其中遇到了矩阵键盘一字排开的问题,焊接比较麻烦。将电路重新设计后解决了问题。
f最终成果图如下:
参考文献
1234567张毅刚单片机原理及应用北京:高等教育出版社,2009何立民MCS51单片机应用系统设计北京航空航天大学出版社,1998高锋编单片微机应用系统设计及使用技术北京:机械工业出版社,2004胡汉才.单片机原理及系统设计.北京:清华大学出版社,2002郭天祥十天学习单片机视频,2007马忠梅单片机C语言应用程序设计北京航空航天大学出版社2007徐爱军单片机高级语言C51应用程序设计北京:电子工业出版社,1997
f【附代码】i
cludereg52hdefi
eu
itu
sig
edi
tdefi
eucharu
sig
edchardefi
eall10函数声明voidI
it初始化函数voidDelayu
sig
edi
tc毫秒延时函数voidDelaybeatu
sig
edi
tc节拍延时函数ucharSca
x键盘x坐标扫描函数ucharSca
y键盘y坐标扫描函数voidCheck检查坐标、模式函数voidDisplay数码管显示函数voidSpeak播放音符函数ucharChooseu
sig
edchari选歌函数ucharChoose2u
sig
edchari暂停下选歌函数voidPlay播放音乐函数变量r