1、 目 录摘要41.概述51.1任务目标51.2 基本工作原理及组成简介51.3 基本步骤52 设计方案简述62.1 设计设备的选择62.2 设计原理63 详细设计73.1 单片机的最小单位73.2 单片机记时器的基本原理73.3 8550的工作原理83.4 74LS154工作原理83.5按键电路93.6 总的硬件电路93.7声音的控制93.7.1 延时程序控制93.7.2 定时器中断服务控制93.7.3 矩阵键盘的行扫描控制93.8软件的实现103.8.1主程序的实现103.8.2定时器1 中断服务程序的实现103.8.3键盘扫描的实现方法104 设计结果及分析124.1设计结果124.1.1
2、调试过程124.1.2调试结果124.2分析125 总结13参考文献13附录A设计的总电路图14附录B 电子琴的程序实现14摘要随着科技的快速发展,单片机的应用日益普遍。目前,MCS-52系列的8052单片机也在工业检测领域中得到了广泛的应用,本单片机系统设计应用单片机控制技术,以52单片机为核心根据上学期所学的单片机知识结合设计了一套单片机控制的电子琴系统。该系统大部分软硬件可以被软件程序柔化取代,电路简洁、操作方便、性能良好乐音实际上是有固定周期的信号。首先扩展一组小键盘(本设计以44 键盘为例,可按需要扩展),本按键为触发式常开按键。按键的输入信号通过STC89C52的P1口输入送给ST
3、C89C52一个定时器(如T1)控制,在P2.7脚上输出方波周期信号,再通过一片8550做音频小功放放大输出的信号最后送到扬声器(本设计用蜂鸣器)发出音乐。关键词:STC 89C52;8550;矩阵键盘行扫描;电子琴AbstractAlong with the rapid development of microcomputer applications become increasingly common. Currently, MCS-52 MCU 8052 series is also the area of industrial test has been widely used de
4、sign applications of the SCM system control technology, with 52 microcontroller core based on the semester, learned knowledge and the design a single chip MCU The keyboard system. Most of the system software and hardware can be replaced by software soften the circuit simple, convenient operation, go
5、od performance Musical is actually a fixed period of the signal. First, a small keyboard extension (the design of the 4 4 keyboard, for example, may need to be extended), this button is normally open trigger button. Key input signal through the P1 port input STC89C52 give STC89C52 a timer (such as T
6、1) control, the P2.7 pin output square wave periodic signal, then through a small amplifier 8550 so the audio signal amplified last sent to the speaker output (the design using a buzzer) the issue of music. Key words: STC 89C52; 8550; matrix keyboard scanning lines; keyboard1.概述1.1任务目标本课程设计的任务就是设计一个
7、电子琴使,电子琴发出1,2,3,4,5,6,7,等音。按键的输入信号通过STC89C52的P1口输入送给STC89C52一个定时器(如T1)控制,在P2.7脚上输出方波周期信号,再通过一片8550做音频小功放放大输出的信号最后送到扬声器(本设计用蜂鸣器)发出音乐。1.2 基本工作原理及组成简介声音的频谱范围约在几十hz到几千hz,利用程序来控制单片机某个口线不段的输出“高”、“低”电平,则在该口线上就能产生一定的频率的方波,将该方波接上喇叭,就能发出一定的声音,若在利用程序来控制“高”、“低”电平的持续时间,就能改变输出波形的频率,从而改变音调。乐曲中,每一个音符对应着确定的频率,表1给出了C
8、调时各音符频率。如果单片机某个口线输出“高”、“低”电平的频率和某个音符的频率一样,那么将口线接上喇叭就可以发出次音符。表1 C调时各音符频率音名1234567频率(hz)523.3587.3659.3698.3784880967.81.3 基本步骤(1)分析题意,确定设计方案(2)选择单片机型号(3)设计单元电路,选择电气元件,计算参数,并进行实验验证(4)编写程序(5)软、硬件调试件调试2 设计方案简述2.1 设计设备的选择单片机因其体积小、功能强、价格低廉而得到广泛应用。本文介绍用STC89C52 单片机设计微型电子琴的方法,仅需STC89C52最小系统。扩展一组小键盘(本设计以44 键
9、盘为例,可按需要扩展),本按键为触发式常开按键。再加一片8550做音频小功放,输出到扬声器(本设计用蜂鸣器)。2.2 设计原理乐音实际上是有固定周期的信号。我们可以用STC89C52的一个定时器(如T1)控制,在P2.7脚上输出方波周期信号,产生乐音。根据不同的按键,调节T1的溢出时间,可输出不同频率的乐音,这样就做出了一台微型电子琴。每个乐音的音高(频率) 是固定的,表2列出了一个8度以及其上下共16个音的音名、频率及定时器T1初值对照(设晶体频率为6MHz)。表2音名、频率及定时器T 1 初值对照序号音名频率TH1TL11低74939FEH06H2中15233FEH22H3中#15544F
10、EH3DH4中25873FEH56H5中#26223FEH6EH6中36593FEH85H7中46983FEH9AH8中#47400FEHAEH9中57840FEHC1H10中#58306FEHD3H11中68800FEHE4H12中#69323FEHF4H13中79878FEH03H14高110465FEH11H15高#111087FEH1FH16高211747FEH2BH 3 详细设计3.1 单片机的最小单位在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。晶振频率的采用12MH,电容=30p振荡周期=1/fosc=1/12MHZ=0.0833us
11、当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。时钟电路如图a。本设计采用上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C2的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。根据实际操作的经验,下面给出这两种复位电路的电容、电阻参考值C:22uF,Rl.5kO。复位电路如图b。 图a 单片机的时钟电路 图b 单
12、片机的复位电路3.2 单片机记时器的基本原理定时器其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。803l单片机有2个16位的定时器:定时器0(T0)和定时器1(T1)。其原理图如图1所示。 图1 定时器原理图T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。作定时器时,每一个机器周期定时寄存器自动加l,所以定时器也可看作是计量机器周期的计数器。由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的112。3.3
13、8550的工作原理8550- PNP外延型晶体管(三极管) ,是一种最常用的普通三极管。它是一种低电压,大电流,小信号的NPN型硅三极管。主要用途:开关应用,射频放大,低噪声放大管,通用功率放大管。3.4 74LS154工作原理当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制 编码在一个对应的输出端,以低电平译出。 若将 G1 和 G2 中的一个作为数据输入端,由 ABCD 对输出寻址。引出端符号: A、B、C、D 译码地址输入端(低电平有效) G1、G2 选通端(低电平有效) 015 输出端(低电平有效) 说明:H高电平 L低电平 X任意 *其他输出端为高电平3.5按键电路
14、电子琴的按键在本设计中按44排列,做出其电路图如图10所示。 图中s1s16为按键,18分别接在52单片机的P1.0P1.7上。为了方便操作,对按键的排列方式进行适当的改进成:低音5个键一排,中音7个键一排和高音4个键一排。图10 电子琴按键的电路图3.6 总的硬件电路通过以上设备,设计出了一套微型电子琴硬件电路其总体设计图如附图1所示,其中键盘可使用小按键, 排成钢琴键盘状(键多时可分为几排) , 图中还通过74LS154接按键指示灯(D1D16)。控制器采用单片机STC89C52,功放采用8550,发声用蜂鸣器,晶体频率为12MHz3.7声音的控制在该设计中声音是通过方波产生频率,再通过音
15、频放大器,最后由蜂鸣器发出来,为了使声音不同即有音乐感我就要控制单片机使之产生不同的频率,并两个频率交接了有一定的反映时间。这就要用到延时程序控制和定时器中断的方式控制通过这两中控制可以得到我们想要的音符。3.7.1 延时程序控制在主程序中采用延时是为了,在没产生完一个音符后再产生另一音符间有一定的时间间隔,有了这时间间隔人才能分辨出不同的音符了。这样才使得音乐具有节奏感。在其他的程序中用延时也是为了产生一点的时间间隔,从而使之达到想要的效果。3.7.2 定时器中断服务控制本设计通过定时器中断产生是单片机在一定的时间产生方波,整个设计的关键也正是通过该定时器中断服务产生输出不同频率的方波从而来
16、实现个种音符。这种方法占用CPU时间很少,在显示的同时还可以处理其他事务,效率较高,是通常采用的方法。3.7.3 矩阵键盘的行扫描控制所谓的行扫描,就是通过行线逐行发出低电平信号。如果该行线所连接的键没有按下,则列线的电平信号是全“1”;如果有键按下的话,则列线得到的是非全“1”信号,即根据列线的电平信号是否有“0”信号来判断有无键按下。在使用行扫描法时,为了提高效率,首先快速检查整个键盘中是否有键按下。若无键按下,则结束键盘扫描;若有键按下,则用逐行扫描的方法来确定闭和键的具体位置。3.8软件的实现3.8.1主程序的实现在主程序中首先调用键盘扫描子程序,进行有无键按下的判断,如无键按下则执行
17、熄灭指示灯、跳回开始位置的命令;如有键按下则扫描出按下的键的位置再将其值赋给T IM ER1L和T IM ER1H,通过其执行点亮指示灯。反复执行该命令得到不同的值,输出不同的音符。该程序见附录2:(2) 主程序,其流程图如图11所示。START有按键吗?根据A键值将T1初值送TIMER1L和TIMER1H同时通过键值查表将对应数据送入P3开启T1,点亮指示灯无有图11 主程序的流程图3.8.2定时器1 中断服务程序的实现中断服务程序是通过单片机的T1定时器,在方式1下实现的。该程序首先将主程序送来的T IM ER1L和T IM ER1H的值给定时器T1,通过T1从P2.7口输出方波。输出的方
18、波送8550放大后再发声。该定时器1 中断服务程序见附录2:(3) 定时器1 中断服务程序,其流程图如下图12所示。3.8.3键盘扫描的实现方法键盘扫描的方法是:先扫描第0行,行输出值为1110B,第0行为”0”,其余3行为“1”(通常把输出为0的行称为当前行),然后读入列信号,判断是否为全“1”。若列输入值为全“1”,则当前行无键按下,行输出1101(第1行为“0”其余3行为“1”),再扫描下一行依次规律逐行扫描,直到扫描某行时,其列输入不为全“1”,则根据行输出和列输入值中0的位置确定闭合键的具体位置,从而用计算法或查表法得到闭合键的键值。该方法通过程序实现无附录2:(4) 键盘扫描程序,
19、其流程图如下图13所示。TIMER1将TIMER1L和TIMER1H送TL1和TH1CPL P2.7 RETI图12定时器1 中断服务程序流程图 KEYSCA有键按下吗?调延时仍有键按下吗?获取键值存入A RET无有无有图13 键盘扫描程序的流程图4 设计结果及分析4.1设计结果4.1.1调试过程第一步:启动计算机,打开实验箱,运行WAVE软件,按照要求设置好参数,并且测试串口通过。第二步:按照附图的电路接线,并测试电源、芯片,接口,LED等元件工作正常。第三步:在KEIL软件输入控制程序并编译。第四步:编译通过后,烧录程序之单片机,按自己设好的按键,听听音节看是否正确,初步调试成功。 第五步
20、:调试完成,保存好程序。4.1.2调试结果通过软硬件的调试,基本要求全部得以实现,可以发出包括基本要求在内的16个音,并且相应的点亮对应的发光二极管。4.2分析 所发出的声音并不完美,这由于硬件所限,蜂鸣器只是简单的发出声响,如果换成更专业的音乐输出器件,效果会更好!5 总结本文介绍了用单片机设计微型电子琴的方法,只要依次将本文中各段程序连写, 就是完整的16 键微型电子琴程序, 有兴趣的读者可以设计键数更多的微型电子琴, 甚至可以给微型电子琴添加演奏示范曲的功能。如果有必要可以通过编程检测并记录按键的时间, 做出具有录音功能的微型电子琴。课程设计是我们理论联系实际的最好的途径之一,让我们有机
21、会把课本上学到的知识运用到实际生活中。目前单片机在工业检测领域中得到了广泛的应用,在我们平常的生活中也是随处可见,包括我们日常生活中随处可见的交通灯、闹钟等都含有单片机作为一个主要的部件,懂得并熟悉掌握单片机的运用技术是非常有用的。通过这次课程设计,让我发现了自己的不足,也让我在课堂上学习的单片机的知识得以实践,加深了对书本知识的理解,锻炼了自己的思考、实践的能力,也锻炼我们搜索、运用知识的能力。经过这次课程设计,使我进一步了解学习单片机原理及应用这门课程,并且通过自己的创新思维设计出电路,加深了我对单片机芯片元件的基本概念、基本电路、基本结构的工作原理和基本分析方法的理解,提高了自身的能力水
22、平,使我更深的认识了电子技术在生产生活中的重要意义,这次课程设计让我对延时程序的设计有了很大的提高,通过实验程序的设计,我学会了编程的一般步骤及一些方法,通过实验的调试,我也初步学会了如何排解错误,解决问题。回顾起此次单片机课程设计,至今我仍感慨颇多,在这次课程设计期间,学到很多很多有用的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的。最后对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢参考文献1. 张友德 赵志英 涂时亮 单片微型机原理、应用与试验(第五版) 复旦大学出版社2007;2.阎石 数字
23、电子技术基础(第四版) 高等教育出版社2008;3.晁阳 单片机MCS-52原理及应用开发教程 清华大学出版社2007。附录A设计的总电路图 附录B 电子琴的程序实现KEYBUF EQU 30HSTH0 EQU 31HSTL0 EQU 32HTEMP EQU 33HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: SETB P2.7MOV TMOD,#01HSETB ET0SETB EAWAIT:SETB P2.7MOV P1,#0FFHCLR P1.4MOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY1LCALL DELY10MSMOV
24、 A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY1MOV A,P1ANL A,#0FHCJNE A,#0EH,NK1MOV KEYBUF,#0LJMP DK1NK1: CJNE A,#0DH,NK2MOV KEYBUF,#1LJMP DK1NK2: CJNE A,#0BH,NK3MOV KEYBUF,#2LJMP DK1NK3: CJNE A,#07H,NK4MOV KEYBUF,#3LJMP DK1NK4: NOPDK1:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV
25、 TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK1A: MOV A,P1ANL A,#0FHXRL A,#0FHJNZ DK1ACLR TR0NOKEY1:MOV P1,#0FFHCLR P1.5MOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY2LCALL DELY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY2MOV A,P1ANL A,#0FHCJNE
26、A,#0EH,NK5MOV KEYBUF,#4LJMP DK2NK5: CJNE A,#0DH,NK6MOV KEYBUF,#5LJMP DK2NK6: CJNE A,#0BH,NK7MOV KEYBUF,#6LJMP DK2NK7: CJNE A,#07H,NK8MOV KEYBUF,#7LJMP DK2NK8: NOPDK2:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AIN
27、C TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK2A: MOV A,P1ANL A,#0FHXRL A,#0FHJNZ DK2ACLR TR0NOKEY2:MOV P1,#0FFHCLR P1.6MOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY3LCALL DELY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY3MOV A,P1ANL A,#0FHCJNE A,#0EH,NK9MOV KEYBUF,#8LJMP DK3NK9: CJNE A,#0DH,NK10MOV K
28、EYBUF,#9LJMP DK3NK10: CJNE A,#0BH,NK11MOV KEYBUF,#10LJMP DK3NK11: CJNE A,#07H,NK12MOV KEYBUF,#11LJMP DK3NK12: NOPDK3:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,AS
29、ETB TR0DK3A: MOV A,P1ANL A,#0FHXRL A,#0FHJNZ DK3ACLR TR0NOKEY3:MOV P1,#0FFHCLR P1.7MOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY4LCALL DELY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY4MOV A,P1ANL A,#0FHCJNE A,#0EH,NK13MOV KEYBUF,#12LJMP DK4NK13: CJNE A,#0DH,NK14MOV KEYBUF,#13LJMP DK4NK14: CJNE A,#0BH,NK15MOV KEY
30、BUF,#14LJMP DK4NK15: CJNE A,#07H,NK16MOV KEYBUF,#15LJMP DK4NK16: NOPDK4:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK4A: MOV A,P1ANL A,#0FHXRL A,#0FHJNZ
31、DK4ACLR TR0NOKEY4:LJMP WAITDELY10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETINT_T0:MOV TH0,STH0MOV TL0,STL0CPL P2.7RETITABLE: DB 00H,04H,08H,0CH,01H,05H,09H,0DHDB 02H,06H,0AH,0EH,03H,07H,0BH,0FHTABLE1: DW 64021,64529,64820,65058DW 64103,64580,64898,65210DW 64260,64684,64968,65257DW 64400,64777,65030,65278END本文是通过网络收集,如有侵权请告知,我会第一时间处理。20