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

上传人:cn****1 文档编号:431096548 上传时间:2022-08-05 格式:DOC 页数:17 大小:600.03KB
返回 下载 相关 举报
单片机课程设计简易电子琴设计_第1页
第1页 / 共17页
单片机课程设计简易电子琴设计_第2页
第2页 / 共17页
单片机课程设计简易电子琴设计_第3页
第3页 / 共17页
单片机课程设计简易电子琴设计_第4页
第4页 / 共17页
单片机课程设计简易电子琴设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《单片机课程设计简易电子琴设计》由会员分享,可在线阅读,更多相关《单片机课程设计简易电子琴设计(17页珍藏版)》请在金锄头文库上搜索。

1、1 任务及要求设计一个51单片机系统,实现简易电子琴操作的电路。要求:1.设计51单片机最小系统; 2.设置至少10个按键,能发出do re mi fa sol la si do; 能播放示范曲; 3.能够调节低音、高音和中音。2设计方案1.定时/计数器的设计和状态字定义:若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音

2、阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式是:Nfi2fr,式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下:T65536N65536fi2fr例如:设K65536,fi1MHz,求中音DO(261Hz)。T65536N65536fi2fr6553610000002fr65536500000/fr,中音DO的T65536500000/52364580。单片机12MHZ晶振,中音

3、符与计数T0相关的计数值如表所示:音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低

4、6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765283采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应

5、的数据:低音019之间,中音在2039之间,高音在4059之间用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。为了输出合适的方波,首先应该知道音符与频率的关系。2.音名从常见的电子琴的键盘谈起。主要分成低音、中音和高音三个区域,每个区域都有12个琴键。其中的白键,简谱音符标为1、2、3、4、5、6、7,大家一般都读成哆、来、咪、发、嗦、拉、西。按键1345678音符134567I频率值52466069878488098810483.音调数据表单片机发出不同频率的方波,人听起来,就是不同的音调。上表中的频率数值,有些过多,去掉不常用的黑键频率,只是把白键对应的数据存放

6、在单片机中,即可满足绝大部分的应用需求。定义音调数据表的程序如下: DW 63628,63835,64021,64103,64260,64400,64524 ;64580,低音区:1 2 3 4 5 6 7 DW 64580,64671,64777,64820,64898,64968,65030 65058中音区:1 2 3 4 5 6 7 DW 65058,65110,65157,65178,65217,65252,65283 65312高音区:1 2 3 4 5 6 7把这个数据表,放在程序中,需要播音的时候,就从表中取出一个数据送到定时器,当定时器溢出中断的时候,再对输出引脚取反,那么,

7、在扬声器中,即可听到上表中频率的声音。音乐的音拍,一个节拍为单位(C调)曲调值DELAY 曲调值DELAY调4/4125ms 调4/462ms调3/4187ms 调3/494ms调2/4250ms 调2/4125ms三设计电路图1.晶振部分本次采用12MHZ晶振,机器周期为1us,连接两个30pF的电容,连接到的XATL1,上面,连接电路图如下:音频输出本次只是简单的使用一个蜂鸣器连接到AT89C51的p1.0口上3.高。中。低及音乐播放键:检测高中低是否按下,来跳转到音阶键上输出不同频率的音阶音,检测播放是否按下,跳转到示范曲目播放4. AT89C51 AT89C51是一种带4K字节闪烁可编

8、程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 1主要特性:与MCS-51 兼容

9、 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 5.音阶键部分6.设计电路总体图样 4、 设计流程图1.音阶键识别5、程序清单KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H DELY EQU 33H NUM EQU 34H ORG 0000H AJMP MAIN ;跳转到主函数 ORG 000BH LJMP INT_T0 ;音乐输出口 ORG 0040HMAI

10、N: MOV TMOD,#01H ;写出计时器控制字,T0方式计时 SETB EA ;开中断总开关 SETB ET0 ;允许T0中断 MOV NUM,#01H;;num置1 MOV R1,#00HTEST: ;低音检测 ANL TH0,#00H ;高位清零 ANL TL0,#00H ;低位清零 MOV A,P2 ;P2进入 CJNE A,#0FEH,TEST1 ;检测P2.0口低音键是否按下 MOV DPTR,#TABLE1 ;低音键按下,进入低音表地址 AJMP WAIT ;跳转到音阶检测TEST1: ;中音检测 CJNE A,#0FDH,TEST2 ;检测P2.0中音键是否按下 MOV D

11、PTR,#TABLE2 ;中音键按下,进入中音表地址 AJMP WAIT TEST2: ;高音检测 CJNE A,#0FBH,TEST3 ;检测P2.0口高音键是否按下 MOV DPTR,#TABLE3 ;高音键按下,进入高音表地址 AJMP WAIT TEST3: ;音乐播放检测 CJNE A,#0F7H,TEST4 ;检测音乐播放键是否按下 若有按下则转至EXIT LCALL DELAY10MS ;软件延时消抖 MOV A,P2 CJNE A,#0F7H,TEST4 ;检测播放键是否再次按下 MOV A,NUM CJNE A,#01H,EXIT ;检测高低中是否再次按下 MOV NUM,#

12、00H MOV DPTR,#TABLE4 ;进入音乐播放表 AJMP WAIT1 ;跳转至音乐播放入口 EXIT:CLR TR0 ;计数器停止,音乐播放结束 MOV R1,#00H ;清零 MOV NUM,#01HTEST4: MOV A,NUMCJNE A,#01H,WAIT2 LJMP TEST ;跳转至TEST重新检测WAIT2:LJMP WAIT1 ;跳转至音乐播放入口WAIT: CLR TR0 MOV NUM,#01HSCAN1:MOV P3,#0F0H;音阶按键检测程序入口CLR TR0MOV A,P3;ANL A,#0F0HCJNE A,#0F0H,TEE1AJMP TEST ;

13、跳转至TEST重新检测TEE1:LCALL DELAY10MS ;软件延时消抖CJNE A,#0F0H,TEE2AJMP TESTTEE2:MOV A,#0FEHSCAN2:MOV P3,AMOV A,P3MOV B,AANL A,#0F0HCJNE A,#0F0H,CARRYMOV A,BRL ACJNE A,#0BFH,SCAN2LJMP SCAN1CARRY: ANL B,#0FH ;键值处理ORL A,BCJNE A,#0EEH,KEY1 ;检测音符键1是否按下MOV KEYBUF,#00H ;赋予键值LJMP WAI ;调至按键处理程序KEY1:CJNE A,#0EDH,KEY2 ;检测音符键2是否按下MOV KEYBUF,#02H ;赋予键值 LJMP WAI ;调至按键处理程序 KEY2: CJNE A,#0EBH,KE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号