1、 4、可通过功能键选择乐曲,暂停,播放; 5、选做内容:显示乐曲播放时间或剩余时间; 6、本设计中用89C51单片机,4*4键盘,蜂鸣器,16*2LCD,七段显示数码管LED;3、总体设计 原理图如下图所示: 图1 原理图 应用AT89S51单片机来设计音乐盒的硬件电路,并利用汇编语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的音乐,再利用延迟来控制发音时间的长短。程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的音乐。对于不同的音乐只需要改变相应的定时常数即可。声音是音频振动的结果,振动的频率高则为高音,频率低则为低音。音频范围为20H
2、Z-200KHZ之间,而人类耳朵比较容易辨识的声音大概是200HZ-20KHZ。一般音响电路是以正弦波信号驱动喇叭,产生悦耳的音乐的;在数字电路里,则是以脉冲信号驱动喇叭以产生声音。同样的频率,脉冲信号或正弦信号产生的音效,对于人类的耳朵来说很难有所区别。 AT89S51单片机有3个独立的16位定时/计数器,即定时/计数器0(T0),定时/计数器1(T1)和定时/计数器2(T2)。它们都有定时或事件计数功能,可用于定时控制、延时、对外事件计数和检测等场合。 3个16位定时/计数器,其中T0,T1可作16位加1计数器,T2既可作16位加1计数器,也可作减1计数器,每个定时/计数器都可由软件设置为
3、定时工作方式或计数工作方式。当设置为计数工作方式时,通过引脚T0(P3.4),T1(P3.5),T2(P1.0)对外部脉冲信号计数,当输入脉冲信号从1到0负跳变时,计数器就自动就1。为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。 音乐的音拍 曲调值DELAY调4/4125ms62ms调3/4187ms94ms调2/4250ms 键盘 1234567 89ABCDEF按键功能说明:1A:十首歌曲C:上一首歌曲D:下一首歌曲E:歌曲暂停F:开机画面 当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐
4、曲播放的时间,并驱动LCD,显示歌曲号及播放时间。也可在LED显示歌曲号。(1) 硬件电路中用P1.0P1.7控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列。(2) 用P0.0P0.7,P2.0P2.7控制LED,其中P0.0P0.7控制七段码a,b,c,d,e,f,g,用P2.0P2.7为数码管位选信号。(3) 用,P2.0P2.2作为LCD的RS,R/W,E的控制信号。用P0.0P0.7作为LCD的D0D7的控制信号。(4) 用P3.7口控制蜂鸣器(J2,J4断开,J3短接)。(5) 电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。4、 各部分电路设计1、键盘
5、系统 图2 键盘当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。2、 显示系统 对于显示时间程序的设计,主要依靠单片机内部定时器的计数功能实现。单片机P0口接LCD数码管,并外接1K欧的排阻,利用单片机内部的定时器中断控制时间程序,然后在数码管上显示出时间。 图3 LED显示系统3、 发音系统 图4 扬声器4、 软件设计程序流程图: 图5 程序流程图5、整体电路图 图6 整体电路图六、设计总结1、设计过程中遇到的问题及解决方法 有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令
6、一定要按正确格式书写或在两行指令间最好不要留空行。 程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。编程时要注意,在程序开始时,要写入各定时器中断的入口地址。编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。2、设计体会 学习单片机,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次阅读编
7、写单片机的大程序,很有成就感。单片机AT89S51是一种非常小巧但功能非常多,应用非常广的一种芯片,功率也非常的小,采用AT89S51作为系统核心制作音乐演奏控制设计电路简单了很多,由于可以反复烧写,为学习降低成本。本设计外部采用单片机的复位电路设计、单片机的震荡电路设计、LCD数码管显示正在播放的音乐序号,按键控制等,但由于AT89S51分辨率不是太高,音乐有点单调,另外,由于时间关系具体电路还有的地方不尽完善之处。3、对设计的建议 希望下一次课程设计中,每个人都能有一块实验开发板,这样能使每个人都能得到充分的锻炼!参考文献1 高锋,单片微型计算机原理与接口技术,科学出版社,2008年。2
8、李传军,单片机原理及应用(第一版),河南科学技术出版社,2006年。3 杨志忠,数字电子技术,高等教育出版社(第四版),2007年。4 张静武,单片机原理、应用与PROTEUS仿真,电子工业出版社,2009年。本程序可以实现课程设计的基本要求和附加功能,并可以通过按键播放七首歌曲。实验程序如下:RS BIT P2.0 ;定义液晶显示端口标号RW BIT P2.1E BIT P2.2;*L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H* org 0000h ljmp main ORG 000BH LJ
9、MP TT0 ORG 001BH LJMP T1INT org 1000hmain:-;液晶初始化 MOV SP,#70H MOV P0,#01H ;清屏 CALL ENABLE MOV P0,#38H ;8位,2行显示 lCALL ENABLE MOV P0,#0FH ;屏显on,光标on,闪烁on MOV P0,#06H ;计数地址加1,显示幕on-内存初始化 lcall initil -key1: lcall key lcall modd ljmp key1-键盘扫描key: nop lcall ks jnz k1 ;有按键转到K1 lcall kaiji lcall SOPxn: lj
10、mp keyk1: lcall modd jnz k2k2: mov R2,#0feh ;读键盘 mov R4,#00hk3: mov A,R2 mov P1,A mov A,P1 JB ACC.4,L1 ;为1跳转,第一行无按键 mov a,#00h ljmp lkL1: jb acc.5,L2 mov a,#04hL2: jb acc.6,L3 mov a,#08hL3: jb acc.7,next1 mov a,#0ch-lk: add a,R4 push acck4: lcall delay1 ;若同时有其他按键,则等待 jnz k4- mov r3,#07h clr a mov r0
11、,#30h mov r1,#31hmm1: mov a,r1 mov r0,a inc r0 inc r1 djnz r3,mm1 pop acc mov r0,a RET-next1: inc R4 ;-列扫描 mov a,R2 JNB acc.3,n2 ljmp n1n2:n1: rl a mov R2,a ljmp k3-ks: mov a,#0f0h ;判断P1口 mov P1,a mov a,P1 cpl a anl a,#0f0h-DELAY1: SETB RS0dl: mov R5,#0ahdl2: mov R6,#63dl3: nop djnz R6,dl3 djnz R5,d
12、l2 CLR RS0 - 30H-37H初值为零-initil: mov r3,#08hm1: mov r0,#00h djnz r3,m1 显示 -modd: MOV P0,#8EH CALL ENABLE mov A,37H mov DPTR,#TABLE3 MOVC A,A+DPTR CALL WRITE2 开机提示字-kaiji: mov a,37h cjne a,#0fh,DFF MOV P0,#80H ;设光标地址 MOV DPTR,#TABLE1;写数据 CALL WRITE1 DFF:按键值播放歌曲SOP: cjne a,#01h,A11 LCALL MODD MOV 52H,
13、#HIGH TABLE10 MOV 53H,#LOW TABLE10 LCALL INITILE2 lcall MAIN0A11: CJNE A,#02H,A22 MOV 52H,#HIGH TABLE20 MOV 53H,#LOW TABLE20 LCALL INITILE2 A22: CJNE A,#03H,A33 MOV 52H,#HIGH TABLE30 MOV 53H,#LOW TABLE30 lcall MAIN0 A33: CJNE A,#04H,A44 MOV 52H,#HIGH TABLE40 MOV 53H,#LOW TABLE40 A44: CJNE A,#05H,A55
14、 MOV 52H,#HIGH TABLE50 MOV 53H,#LOW TABLE50 A55: CJNE A,#06H,A66 MOV 52H,#HIGH TABLE60 MOV 53H,#LOW TABLE60 A66: CJNE A,#07H,A77 MOV 52H,#HIGH TABLE70 MOV 53H,#LOW TABLE70 A77: CJNE A,#08H,A88 MOV 52H,#HIGH TABLE80 MOV 53H,#LOW TABLE80 A88: CJNE A,#09H,A99 MOV 52H,#HIGH TABLE90 MOV 53H,#LOW TABLE90
15、A99: CJNE A,#0AH,AAA MOV 52H,#HIGH TABLE100 MOV 53H,#LOW TABLE100 AAA: RET *INITILE2: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00H MOV A,HOU MOV B,#10 DIV AB ADD A,#30H ;将BCD吗转化为ASIIC码 MOV P0,#0C8H ;显示小时十位 CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0C9H ;显示小时个位 MOV
16、A,#3AH MOV P0,#0DH ;显示冒号 MOV A,MIN MOV P0,#0CBH ;显示分十位 MOV P0,#0CCH ;显示分个位 MOV P0,#0CDH ; MOV A,SEC ADD A,#30H MOV P0,#0CEH ;显示秒十位 MOV P0,#0CFH ;显示秒个位 MOV P0,#0C0H ; MOV DPTR,#TABLE2;*写指令ENABLE: CLR RS CLR RW CLR E LCALL DELAY SETB E*写数据WRITE1: MOV R1,#00HA1: MOV A,R1 INC R1 CJNE A,#0FEH,A1 ;未到字符串末尾
17、继续WRITE2: MOV P0,A SETB RS CALL DELAY*DELAY: MOV R4,#05D1: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D1TAB: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8ehTAB1: db 89h,86h,0c7h,0c7h,0c0hTAB2: db 0c6h,88h,0c0hTABLE1: DB WELCOM HERE,0FEHTABLE2:DFF WB TABLE4:CAUTABLE3: DB 30H,31H,32H,
18、33h DB 34H,35H,36H,37H DB 38h,39H,41H,42H DB 43H,44H,45H,46H -播放歌曲程序MAIN0: MOV TMOD,#11H MOV IE,#8aH ;MOV TH1, #3cHMOV TL1, #0b0H jnz TTM12 MOV 40H,#00H-NEXT20: MOV A,40H MOV DPH,52H MOV DPL,53H MOVC A,A+DPTR MOV R2,A JZ STOP ANL A,#0FH MOV R1,A MOV A,R2 SWAP A JNZ SING CLR TR0 JMP W1-SING: DEC A MOV 22H,A RL A MOV DPTR,#TABLE00 MOVC A,A+DPTR MOV TH0,A MOV 21H
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1