基于单片机AT89S51的电子琴设计报告
单片机小制作报告电子琴-5页精选文档

单片机电子琴制作报告这是一款采用89S52单片机控制的8键简易电子琴,用到了单片机定时器和键盘的知识。
一、功能说明:由单片机的P1.0口输出音频信号,在P1.0口接三极管以驱动扬声器喇叭。
P2口连接8个一端接地的按键做为输入,可以连接8只10K的电阻至电源做为上拉电阻(也可以不加)。
P2.0至P2.7依次为Do、Re、Mi、Fa、So、La、Si、Do(高音)。
二、软件仿真:1、先用proteus软件做出仿真电路原理图。
(带上拉电阻时原理图)(无上拉电阻,总线结构原理图)(运行中的原理图)2、再用keil软件编辑汇编代码,联机进行仿真功能的检验。
(keil与proteus联机仿真中)三、汇编代码:BUZZ EQU P1.0ORG 0000HLJMP MAINORG 000BHLJMP INT_T0ORG 0100HMOV 30H,#00MOV 31H,#00MOV P1,#0FFHMOV TMOD,#01HSETB ET0SETB EACLR TR0START: MOV R0,P2CJNE R0,#0FFH,KEY1CLR TR0SJMP STARTKEY1: CJNE R0,#0FEH,KEY2MOV 30H,#0FBHMOV 31H,#0E9HLJMP SET_TIMERKEY2: CJNE R0,#0FDH,KEY3MOV 30H,#0FCHMOV 31H,#5CHLJMP SET_TIMERKEY3: CJNE R0,#0FBH,KEY4MOV 30H,#0FCHLJMP SET_TIMERKEY4: CJNE R0,#0F7H,KEY5MOV 30H,#0FCHMOV 31H,#0EFHLJMP SET_TIMERKEY5: CJNE R0,#0EFH,KEY6MOV 30H,#0FDHMOV 31H,#045HLJMP SET_TIMERKEY6: CJNE R0,#0DFH,KEY7MOV 30H,#0FDHMOV 31H,#92HLJMP SET_TIMERKEY7: CJNE R0,#0BFH,KEY8MOV 30H,#0FDHMOV 31H,#0D6HLJMP SET_TIMERKEY8: CJNE R0,#7FH,NOKEY MOV 30H,#0FDHMOV 31H,#0FBHSET_TIMER:SETB TR0SJMP STARTNOKEY: CLR TR0SJMP STARTINT_T0: MOV TH0,30HMOV TL0,31HCPL BUZZRETIEND四、实物图希望以上资料对你有所帮助,附励志名言3条:1、生气,就是拿别人的过错来惩罚自己。
实训项目五_基于AT89S51单片机多音阶电子琴的设计

实训项目五课题:基于AT89S51单片机多音阶电子琴的设计课型:理论课+实训课课时:6课时实训目的:1、掌握项目设计的完整实现流程。
2、掌握单片机模块化设计方法。
3、掌握矩阵键盘扫描程序设计。
4、掌握音频信号的程序设计方法。
重点难点:1、项目设计的完整实现流程。
2、矩阵键盘扫描程序设计。
3、音频频率的产生。
教具:1、网络教学软件;教学方法:讲授法、演示法教学过程:一、项目要求基于AT89S51单片机多音阶电子琴的设计如下:(1)、由4*4组成16个按键矩阵,设计成16个音阶。
(2)、可随意弹奏想要表达的音乐。
二、系统设计多音阶电子琴的设计以AT89S51单片机为主控芯片,使用4*4按键矩阵电路、功率放大电路、扬声器等各功能电路协调工作。
多音阶电子琴的主电路主要由4*4按键矩阵电路、功率放大电路、扬声器、复位电路、晶振电路、电源电路等几部分组成。
1、框图设计基于AT89S51单片机多音阶电子琴系统框图如图3-1所示。
2、知识点本项目需要通过学习和查阅资料,了解和掌握以下方面的知识:✧+5V电源原理及设计。
✧单片机复位电路工作原理及设计。
✧单片机晶振电路工作原理及设计。
✧4*4按键矩阵电路工作原理及设计。
✧音频集成功放LM386的特性及使用。
✧AT89S51单片机引脚。
✧单片机汇编语言及程序设计。
三、硬件设计1、电路原理图系统硬件连线如图3-2所示,单片机的P1.0端口的输出作为音频方法电路中的输入;把单片机的P3.0~P3.7端口分别作为4*4按键矩阵电路的行扫描和列扫描。
2、元件清单基于AT89S51单片机多音阶电子琴的设计的元件清单此处省略。
四、软件设计1、程序流程图主程序流程图和T0中断服务程序流程图如图3-4所示。
图1-3 多音阶电子琴的设计程序流程图2、程序清单KEYBUF EQU 30H ; KEYBUF定义为30HSTH0 EQU 31H ;STH0 定义为,31HSTL0 EQU 32H ;STL0 定义为,32HTEMP EQU 33H ;TEMP 定义为,33HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV TMOD,#01H ;设置定时器0的工作方式SETB ET0 ;设置定时器中断SETB EA ; 开总中断WAIT: MOV P3,#0FFH ;设置P3口为输入模式CLR P3.4 ;清0 P3.4,按键的第一行扫描MOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY1 ;LCALL DELY10MS ;延时10msMOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY1 ;MOV A,P3 ;ANL A,#0FH ;MOV KEYBUF,#0 ;LJMP DK1 ;NK1: CJNE A,#0DH,NK2 ; K1键按下MOV KEYBUF,#1 ;LJMP DK1 ;NK2: CJNE A,#0BH,NK3 ;K2键按下MOV KEYBUF,#2 ;LJMP DK1 ;NK3: CJNE A,#07H,NK4 ;K3键按下MOV KEYBUF,#3 ;LJMP DK1 ;NK4: NOP ;K4键按下DK1: MOV A,KEYBUFMOV B,#2MUL AB ;因为查表里都是字,所以乘2的查表数据MOV TEMP,A ;MOV DPTR,#TABLE ; 指向表头MOVC A,@A+DPTR ; 查表MOV STH0,A ;MOV TH0,A ; 将数据高位送TH0INC TEMP ;MOV A,TEMP ;MOVC A,@A+DPTR ;MOV STL0,A ;MOV TL0,A ;将数据低位送TH0SETB TR0 ; 启动定时器T0DK1A: MOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JNZ DK1A ;CLR TR0 ;关闭定时器T0NOKEY1: MOV P3,#0FFH ;设置P3口为输入模式CLR P3.5 ;清0 P3.5,按键的第二行扫描MOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY2 ;LCALL DELY10MS ; 延时10msMOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY2 ;MOV A,P3 ;ANL A,#0FH ;CJNE A,#0EH,NK5 ;MOV KEYBUF,#4 ;LJMP DK2 ;NK5: CJNE A,#0DH,NK6 ;K5键按下MOV KEYBUF,#5 ;LJMP DK2 ;NK6: CJNE A,#0BH,NK7 ;K6键按下MOV KEYBUF,#6 ;LJMP DK2 ;NK7: CJNE A,#07H,NK8 ;K7键按下MOV KEYBUF,#7 ;LJMP DK2 ;NK8: NOP ; K8键按下MUL AB ;因为查表里都是字,所以乘2的查表数据MOV TEMP,A ;MOV DPTR,#TABLE ; 指向表头MOVC A,@A+DPTR ; 查表MOV STH0,A ;MOV TH0,A ;将数据高位送TH0INC TEMP ;MOV A,TEMP ;MOVC A,@A+DPTR ;MOV STL0,A ;MOV TL0,A ;将数据低位送TH0SETB TR0 ;启动定时器T0DK2A: MOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JNZ DK2A ;CLR TR0 ; 关闭定时器T0NOKEY2: MOV P3,#0FFH ;设置P3口为输入模式CLR P3.6 ; 清0 P3.6,按键的第三行扫描MOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY3 ;LCALL DELY10MS ; 延时10msMOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY3 ;MOV A,P3 ;ANL A,#0FH ;CJNE A,#0EH,NK9 ;MOV KEYBUF,#8 ;LJMP DK3 ;NK9: CJNE A,#0DH,NK10 ;K9键按下MOV KEYBUF,#9 ;LJMP DK3 ;NK10: CJNE A,#0BH,NK11 ;K10键按下MOV KEYBUF,#10 ;LJMP DK3 ;NK11: CJNE A,#07H,NK12 ;K11键按下MOV KEYBUF,#11 ;LJMP DK3 ;NK12: NOP ; K12键按下DK3: MOV A,KEYBUF ;MOV B,#2 ;MUL AB ;因为查表里都是字,所以乘2的查表数据MOV TEMP,A ;MOV DPTR,#TABLE ;指向表头MOVC A,@A+DPTR ;查表MOV STH0,A ;MOV TH0,A ;将数据高位送TH0INC TEMP ;MOV A,TEMP ;MOVC A,@A+DPTR ;MOV STL0,A ;MOV TL0,A ;将数据低位送TH0ANL A,#0FH ;XRL A,#0FH ;JNZ DK3A ;CLR TR0 ;关闭定时器T0NOKEY3: MOV P3,#0FFH ;设置P3口为输入模式CLR P3.7 ;清0 P3.7,按键的第四行扫描MOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY4 ;LCALL DELY10MS ;延时10msMOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JZ NOKEY4 ;MOV A,P3 ;ANL A,#0FH ;CJNE A,#0EH,NK13 ;MOV KEYBUF,#12 ;LJMP DK4 ;NK13: CJNE A,#0DH,NK14 ; K13键按下MOV KEYBUF,#13 ;LJMP DK4 ;NK14: CJNE A,#0BH,NK15 ;K14键按下MOV KEYBUF,#14 ;LJMP DK4 ;NK15: CJNE A,#07H,NK16 ;K15键按下MOV KEYBUF,#15 ;LJMP DK4 ;NK16: NOP ; K16键按下DK4: MOV A,KEYBUF ;MOV B,#2 ;MUL AB ; 因为查表里都是字,所以乘2的查表数据MOV TEMP,A ;MOV DPTR,#TABLE ; 指向表头MOVC A,@A+DPTR ; 查表MOV STH0,A ;MOV TH0,A ;将数据高位送TH0INC TEMP ;MOV A,TEMP ;MOVC A,@A+DPTR ;MOV STL0,A ;MOV TL0,A ;将数据低位送TH0SETB TR0 ;启动定时器T0DK4A: MOV A,P3 ;ANL A,#0FH ;XRL A,#0FH ;JNZ DK4A ;CLR TR0 ; 关闭定时器T0NOKEY4: LJMP WAIT ;DELY10MS: MOV R6,#10 ; 10ms延时子程序D1: MOV R7,#248 ;DJNZ R7,$ ;DJNZ R6,D1 ;RET ;INT_T0: MOV TH0,STH0 ; T0中断服务程序CPL P1.0 ; 输出方波RETI ;TABLE: DW 64021,64103,64260,64400 ;低3,低4,低5,低6DW 64524,64580,64684,64777 ;低7,中1,中2,中3DW 64820,64898,64968,65030 ;中4,中5,中6,中7DW 65058,65110,65157,65178 ; 高1,高2,高3,高4END;五、系统仿真及调时应用系统设计完成之后,就要进行硬件调试和软件调试了。
用单片机设计的电子琴,AT89S51

1.实验任务(1).由4X4组成16个按钮矩阵,设计成16个音。
(2).可随意弹奏想要表达的音乐。
2.电路原理图3.系统板硬件连线(1).把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;(2).把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4R1-R4端口上;4.相关程序内容(1).4X4行列式键盘识别;(2).音乐产生的方法;一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机12MHz晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1 DO 262 63628 # 4 FA# 740 64860#1 DO# 277 63731 中 5 SO 784 64898低2 RE 294 63835 # 5 SO# 831 64934#2 RE# 311 63928 中 6 LA 880 64968低 3 M 330 64021 # 6 932 64994低 4 FA 349 64103 中 7 SI 988 65030# 4 FA# 370 64185 高 1 DO 1046 65058低 5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高 2 RE 1175 65110低 6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高 3 M 1318 65157低 7 SI 494 64524 高 4 FA 1397 65178中 1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高 5 SO 1568 65217中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高 6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高 7 SI 1967 65283下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据低音0-19之间,中音在20-39之间,高音在40-59之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 02、音乐的音拍,一个节拍为单位(C调)曲调值DELAY 曲调值DELAY调4/4 125ms 调4/4 62ms调3/4 187ms 调3/4 94ms调2/4 250ms 调2/4 125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
基于89C51单片机的电子琴设计

学生毕业设计(论文)报告系别:电子与电气工程学院专业:应用电子技术班号:应电1毕业设计(论文)任务书专业应用电子技术班级应电1 姓名一、课题名称:基于89C51单片机的电子琴设计二、主要技术指标:1、演奏音乐,不同频率音符的播放2、可通过按键发出“5 6 7...1 2 3 4 5 6 7 1”等11个音阶3、11个音阶的频率分别为:“190HZ 220HZ 247HZ 262HZ 294HZ 330HZ 349HZ 392HZ 440HZ 494HZ 552HZ”三、工作内容和要求:内容:本课题是基于A T89C51单片机为核心控制部分,是通过制作硬件电路和软件的设计编写,最终达到乐器演奏功能。
特点是设计简单、清晰。
本次设计让我们了解令扬声器发生的方法、熟悉按键输入的处理方法,然后我们才能够设计出电子琴的设计方案,大致列出电子琴的内容和所要设计的内容,收索更多的资料来完善设计。
从而来达到我要设计的电子琴的功能,达到我所预期的效果。
要求:1、认真有耐性,要对每一个设计方案的步骤要熟悉,条理要分明清晰。
2、做好硬件电路部分和软件电路部分。
3、把做好后的电路在最后进行调试,使能正常运行。
四、主要参考文献:[1] 主编:张桂红.副主编:姚建永.单片机原理与应用.福建科学技术出版社[2] 韩志军等.单片机应用系统设计[M].机械工业出版社,2004年[3] 李广弟朱月秀冷祖祁编著.单片机基础(第3版).北京航空航天大学出版社学生(签名)年月日指导教师(签名)年月日教研室主任(签名)年月日系主任(签名)年月日毕业设计(论文)开题报告设计(论文)题目AT89C51单片机的电子琴设计一、选题的背景和意义:背景:1、电子琴是键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。
属于电子乐器,发音音量可以自由调节。
音域较宽,和声丰富,甚至可以演奏出一个管弦乐队的效果,表现力极其丰富。
2、电子琴是电声乐队的中坚力量,常用于独奏主旋律并伴以丰富的和声。
简易电子琴设计报告

简易电子琴设计报告一、硬件设计方案及相关解释:设计一个基于AT89C51单片机的简易电子琴。
要求:1.4X4的16个按键矩阵,并且每个键对应一个音。
2.用AT89C51将键盘连接设计成为电子琴。
3.编写电子琴的程序,要达到可以随意弹奏想要表达的音乐的目的。
基本原理:一定频率产生声音,频率高低决定音调。
利用单片机输出脉冲信号经放大后送给喇叭,便可发出声音。
利用单片机的定时器,让定时器中断一次就对改变喇叭的状态一次,即形成矩形方波,这也是数字电路产生声音的方法。
由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,可以利用不同的频率的组合,即可构成我们所想要的音乐了,对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,只要把一首歌曲的音阶对应频率关系弄正确即可。
二、设计思路:1.定时/计数器的设计和状态字定义:若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。
利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。
就可在P1.0引脚上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系式是:N=fi÷2÷fr,式中,N 是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。
其计数初值T的求法如下:T=65536-N=65536-fi÷2÷fr例如:设K=65536,fi=1MHz,求中音DO(261Hz)。
T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。
单片机课程设计报告电子琴

单片机课程设计报告系别:学科专业:班级:姓名:指导老师:单片机课程设计题目——电子音乐盒设计摘要:该课程设计利用单片机AT89S52与LM386设计扬声器,外接一个喇叭可以发出声音。
关键字:单片机AT89S52 LM386一、设计目的、要求1.设计目的1)深入了解MCS—51系列单片机的功能以及应用,学会制作简单的扬声器。
2)了解扬声器工作原理。
3)了解“新年好”音乐的设计原理。
2.设计要求1)查阅资料,选择合适的设计方案。
2)设计完整的硬件电路图,给出设计说明及相关电路参数计算公式,并进行适当的误差分析。
3)设计软件流程图,并写出完整的程序,并加以适当的注解。
4)根据以上容写出完整课程设计报告。
二、硬件设计1.器件介绍(1)在“单片机系统”中,把P1.0端口连接到“音频放大模块”区域中的SPK IN 端口。
(2)在“音频放大模块”区域中的SPK OUT端口连接一个8欧或者是16欧的喇叭。
2、设计原理用AT89S51单片机产生优美的音乐声从P1.0端口输出。
通过定时器的定时来产生不同频率的方波,驱动喇叭发出不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。
图1.1 电子音乐盒电路原理图3.PCB板图布局图1.2 电子音乐盒PCB效果图4.元器件的焊接1)拿到本套件后清查元器件的数量、质量,并及时更换不合格的元件。
2)确定元件的安装方式,电阻采用卧式安装,其它元件采用立式安装。
3)电烙铁焊接时间应控制在2-3S,烙铁温度高时焊接时间短,低时焊接时间长。
4)电阻焊完后剪掉腿脚用于插接跳线。
5)插接集成块要注意方向,U型口对着U型口。
6)加热时间及用锡量要适当,防止虚焊、错焊及短路,焊后剪去多余引脚,检查所有焊点,确认无误后可通电。
三、程序设计1.程序设计思想(1)音乐产生的方法:一首音乐是由许多不同的音阶组成的,而每个音阶对应着不同的频率。
这样就可以利用不同的频率的组合,构成所想要的音乐了。
基于AT89C51单片机电子琴的设计

- -62010年第36期(总第171期)NO.36.2010(CumulativetyNO.171)摘要:文章的主要内容是用AT89C51单片机为核心控制元件,通过脉冲触发产生出电子音调,设计一个简易的电子琴。
以单片机作为主控核心,与键盘、蜂鸣器等模块组成控制模块。
该系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用与参考价值。
关键词:AT89C51;单片机;脉冲触发;电子琴设计中图分类号:TN709 文献标识码:A 文章编号:1009-2374 (2010)36-0006-02电子音调,是现代电子科技与音乐结合的产物,它在现代音乐中扮演着重要的角色。
目前,由于电子音乐的普及,电子音调合成器(合成器实际上是一台声音的频率合成仪,可以制作各种声音,改变各种音色)可以解决相当一部分的歌唱及舞厅的伴奏问题。
由于音调合成器制作和修改方便,成本低,音乐丰满,所以市场需求量很大,因此,世界许多国家的厂商都不断地在发展并推出新的型号,每年都要更新换代。
当前的发展趋势是不断的采用先进技术,以取得更多、更好的音色。
如扩展容量,这包括扩展槽口,增加软盘驱动器或硬盘,增加最大发音数目,增大存贮量,扩展琴键等;使功能多样化,如一台合成器可以同时发二种、四种甚至几种音色,即一台当作几台使用,或者把鼓机的节奏发生器功能、音序器的编辑功能放入合成器,让合成器代替计算机的主机等;另外,合成器还向轻便、使用操作方便等方向发展。
1 设计介绍本文的主要内容是用AT89C51单片机为核心控制元件,设计一个能发出电子音调的简易电子琴。
在控制模块上设有七个独立键盘按键,通过按下独立键盘K1-K7,可发出DO、RE、MI……7个音符的声音。
设有一个功能选择键,一个音调选择键、一个音乐选择键和一个蜂鸣器。
通过按下功能选择键,可以实现按键发音功能和音乐播放功能之间的切换。
在按键发音的功能下,可以通过音调选择键来选择三个不同的音阶进行发音;在音乐播放功能下,可以通过音乐选择按键来选择5首不同的音乐进行欣赏。
[毕业设计]基于单片机控制的电子琴设计
![[毕业设计]基于单片机控制的电子琴设计](https://img.taocdn.com/s3/m/7901eb6b7e21af45b307a84f.png)
单片机控制电子琴摘要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
关键词:单片机键盘扬声器电子琴AbstractElectronic organ is a modern electronic music technology and the product is a new type of keyboard instruments. It played an important role in modern musi c. SCM has powerful control functions and flexible programming characteristics. It has converged with modern people's lives, become an irreplaceable part. The main content is AT89S51 control of the core components, design of a electronic organ. SCM as a host to the core, with the keyboard, speaker and other core mo dules. In the main control module has 16 keys and a speaker. The system is stea dy, its simple hardware circuits, software functions, reliability of control sy stem and high cost performance is its advantages. It also has certain practical and reference value.Key words : SCM keyboard speaker electronic organ目录1 引言. 12 原理图. 22.1 系统板硬件连线. 33 主要芯片简介. 43.1 AT89S51简介. 43.1.1 主要功能特性. 53.1.2 引脚功能. 53.2 LM386. 63.2.1 LM386内部电路及特性. 73.2.2 LM386的引脚图. 84 模块原理. 114.1 4X4行列式键盘识别. 114.1.1 系统板上硬件连线设计. 124.1.2 程序设计要求. 134.1.3 键盘识别程序框图. 134.2 触摸式模块的实现原理. 154.3.1 单片机产生音乐原理. 174.3.2 音乐产生原理程序图. 185.PCB电路板图. 206 汇编程序. 227 结束语. 34致谢. 32参考文献. 331引言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于89S51单片机电子琴设计报告学生姓名邓昌能钟坡杭志杰学院计算机与电子信息工程专业电信、计科指导教师陈勇职称教授湖南商学院北津学院2010年12月摘要本文介绍了基于AT89S51单片机的电子琴的设计与实现。
电子琴的主要功能是利用以AT89S51 单片机为系统控制处理器;关键字:AT89S51单片机7段数码管蜂鸣器目录摘要 (2)绪论 (4)1设计 (4)1.1设计目的 (4)1.2设计方法和内容 (4)2设计方案 (4)2.1系统总体设计方案 (4)2.2 系统的结构框架 (5)3 硬件电路的设计 (5)3.1单片机最小系统 (5)3.2独立键盘控制电路设计 .......................................... 错误!未定义书签。
3.37段数码管显示电路设计 ....................................... 错误!未定义书签。
3.4蜂鸣器电路设计 ...................................................... 错误!未定义书签。
4软件系统的实现 . (8)4.1主程序设计 (8)4.2程序思路 (8)结论 (9)附录:源程序代码 (9)绪论1 设计1.1设计目的(1)了解单片机及其工作原理;(2)了解如何用C语言编程;(3)如何将单片机应用于生活中。
1.2 设计方法和内容(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。
(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。
(3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。
(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
2设计方案2.1系统总体设计方案由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
2.2 系统的结构框架图系统结构框架3 硬件电路的设计3.1 单片机最小系统本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计值。
图3-1 单片机最小系统原理图3.2独立键盘控制电路设计3.3发光二极管显示电路设计3.4蜂鸣器电路设计4软件系统的实现4.1主程序设计本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值。
图4.1主程序流程图4.2 程序思路这个简易电子琴应用了4*4矩阵键盘,每一个按键赋予了不同的音调,共计有两个八度。
对应7段数码管现实1到F 16个数码显示。
结论本设计主要用到了单片机的通用IO口的读写基本功能,通过实际操作进一步掌握了51单片机的使用。
同时,通过单片机外围电路的设计,更深入学习了51单片机在生活中中的应用。
通过实际焊接电路,编写程序,也进一步提高了我的动手能力以及分析解决错误的能力,是我能够更好的将所学知识应用到实际中来。
本系统能够基本满足设计要求,能够实现自行车转换灯指示,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。
附录:源程序代码#include<reg51.h>#define uchar unsigned char#define uint unsigned intuint key,i,j,time,m,k;uchar temp;uchar STH0,STL0,STH1,STL1;sbit sw=P2^7;sbit speaker=P2^4;sbit P37=P3^7;sbit P36=P3^6;sbit P35=P3^5;sbit P34=P3^4;// 音阶频率表高八位code unsigned char FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;// 音阶频率表低八位code unsigned char FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};unsigned int code tab[]={64021,64103,64260,64400, 64524,64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178}; void key_music(){P3=0xff;P34=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;}speaker=~speaker;STH1=tab[key]/256;STL1=tab[key]%256;TR0=1;temp=P3;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}}P3=0xff;P35=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;}speaker=~speaker;STH1=tab[key]/256;STL1=tab[key]%256;TR0=1;temp=P3;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}}}P3=0xff;P36=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;}speaker=~speaker;STH1=tab[key]/256;STL1=tab[key]%256;TR0=1;temp=P3;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}}}P3=0xff;P37=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;}speaker=~speaker;STH1=tab[key]/256;STL1=tab[key]%256;TR0=1;temp=P3;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}}}void timer0(void) interrupt 1 using 0 {if(sw==1){TH0=STH1;TL0=STL1;}else{TH0=STH0;TL0=STL0;}speaker=!speaker;}void delay(unsigned char t){unsigned char t1;unsigned long t2;for(t1=0;t1<t;t1++){for(t2=0;t2<8000;t2++){;}}TR0=0;}void song(){TH0=STH0;TL0=STL0;TR0=1;delay(time);}void music(void){m=0;time=1;sw=1;while(time&&sw==0){if(sw){i=0;continue;}else{k=sszymmh[m]+7*sszymmh[m+1]-1;STH0=FREQH[k];STL0=FREQL[k];time=sszymmh[m+2];m=m+3;song();}}}void main(){TMOD=0x01;ET0=1;EA=1;while(1){if(sw==1)key_music();else music();}}。