当前位置:文档之家› 单片机课程设计

单片机课程设计


三、系统整体方案框图如下:
利用AT89C51产生乐曲音符,再把乐普翻译计算音乐语言,由单 片机进行信息处理,再经过信号放大,由喇叭放出乐曲声。由于音 符和节拍是由计算机产生的,所以发音音符和节拍要准确。整体框
图如图所示。
乐曲选择控制电路
单 片 机
驱动电路 放音电路
复位电路
时钟电路
四、输出控制:此部分的放大电路简单容易实现。
开始 定时器初始化 定时器高8位存入R 1中 装入表首地址 低8位存R0中
R1=?R0= 00H
R1=?R0= 00H
子程序返回 调用延时子程序
延时常数存R2中 开中断装定时值
R1=?R0= 00H
关定时器
结束
4、设计程序
ORG 001BH 定时器中断入口
MOV TH1,R1 重装定时初值
MOV TL1,R0
DB 00H,00H,04H,0FFH,0FFH
END
5、机器代码
LOC OBJ
LINE
SOURCE
001B 1 ORG 001BH 001B898D 2 MOV TH1,R1 001D888B 3 MOV TL1,R0 001F B2D0 4 CPL P 0021 32 5 RETI 1000 6 ORG 1000H 1000 758910 7 START:MOV TMOD,#10H 1003 75A 8 888MOV IE,#88H 1006 90103C 9 MOV DPTR,#TAB 1009 E4 10 LOOP:CLR A 100A 93 11 MOVC A,@A+DPTR 100B F9 12 MOV R1,A 100C A3 13 INC DPTR 100D E4 14 CLR A 100E 93 15 MOVC A,@A+DPTR 100F F8 16 MOV R0,A
CPL P1.0 输出方波
RETI 返回
ORG 1000H
START: MOV TMOD,#10H T1方式为1
MOV IE,#88H: 允许T1
MOV DPTR,#TAB; 装入表首址
LOOP: CLR A A清零
MOVC A,@A+DPTR 查表取音调和节拍
MOV R1,A 将节拍存入R1
INC DPTR 中断服务,中断计数器加1
DB 0FDH,80H,04H,0FEH,84H,02H,0FEH,84H,02H
DB 0FEH,84H,04H,0FEH,25H,04H,0FEH,25H,02H
DB 0FEH,84H,02H,0FEH,0C0H,04H,0FEH,0C0H,04H
DB 0FEH,98H,02H,0FEH,84H,02H,0FEH,57H,04H
MOV TL1,R0
SETB TR1 开中断
SJMP NEXT1
NEXT0:CLR TR1 关定时器,停止发音
NEXT1:CLR A
INC DPTR
MOVC A,@A+DPTR ;取节拍代码
MOV R2,A
LOOP1: LCALL D200 调用延时200ms子程序
DJNZ R2,LOOP1 控制延时次数
序号
元件名称
规格
数量
1
89C51单片机 AT89C51
1个
2
晶振
6MHZ立式
1个
3
起振电容
30PF瓷片电容
1个
4
复位电容
22UF16V电解电容 1个
5
电阻
0.1、1、4.7千欧姆 各1个
6
三极管
9012
1个
7
蜂鸣器
8欧姆
1个
8
DIP封装插座 40脚集成插座
1个
9
万能板
150MMX90MM 1块
六、设计内容:
不同声音的发声时间长短依乐曲而定,该值通常为0.1~1S。 通过控制定显示器的定时时间产生不同频率的方波,驱动喇叭发出 不同音阶的声音,现利用延时不控制发音时间的长短,即可控制节拍,把 乐谱中的音符和相应的节拍变换成定常和延时常数,作为数据表格存在 存贮器中。自程序查表得到定时常数和延迟常数,分别用以控制定时器 产生方波的频率和发出该频率方波的持续时间。当延时时间到,再查下 一个音符的定时常数和延时常数。依次进行下去。 音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生 不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。 其它节拍与时间的对应关系下表。 但时,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变 T0的时间初值来实现不同节拍。我们可以用T0来产生10毫秒的时间基 准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时 间的长短。表2中也给出了各种节拍所对应的时间常数。例如对1/4拍音 符,定时时间为0.16秒,相应的时间常数为16(即10H);对3拍音符, 定时时间为1.92秒,相应时间长数为192(即C0H)。我们将每一音符的 时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排 列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以 实现演奏效果。

5

C调 音
67
12 3 4
5
6

••
频 率 392 440 494 524 588 660 698 784 (Hz)
880 988

周 期
1.28
1.14
1.01
0.95
0.85
0.76
0.72
0.72
(ms)
0.64 0.51
定 时 FD80 FD66 FE07 FE25 FE57 FE34 FE98 FECO FEE3 FF01 值
1、新年好简谱 1=C 1 1 1 5|3 3 3 1|1 3 5 5|4 3 2-|
2、硬件电路 发声驱动电路如下图所示。利用两级NPN晶体管放8031的输出信号,可 驱动1W的扬声器。为保证连接可靠,应将该电路加以适当封装,将电源 插座和信号电缆分别做成插拔式,便于故障调试。
发生驱动电路
3、设计流程图
可编程乐曲演奏器程序设计
1、 设计目的:
1. 通过课程设计全面系统的了解单片机的设计思路及设计步骤。 2. 了解微机系统的基本结构组成及开发设计过程中需要注意的问
题。 3. 熟悉微机系统调试的全过程,学会处理调试过程中出现问题。
2、 设计思路:
音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某 个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形 波,接上喇叭就能发出一定频率的声音,若再利用延时程序控 制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。
INC DPTR
AJMP LOOP
D200: MOV R4,#81H 延时200ms子程序
D200B: MOV A,#0FFH 歌曲结束,延时1秒后继续
D200A: DEC A
JNZ D200A
DEC R4
CJNE R4,#00H,D200B 中断计数器(81H)=R4否?不等,则继续循

RET
TAB: DB 0FEH,25H,02H,0FEH,25H,02H,0FEH,25H,04H
1010 49 17 ORL A,R1 1011 600F 18 JZ NEXT0 1013 E8 19 MOV A,R0 1014 59 20 ANL A,R1 1015 B4FF02 21 CJNE A,#0FFH,NEXT 1018 80E6 22 SJMP START 101A 898D 23 NEXT:MOV TH1,R1 101C 888B 24 MOV TL1,R0 101E D28E 25 SETB TR1 1020 8002 26 SJMP NEXT1 1022 C28E 27 NEXT0:CLR TR1 1024 E4 28 NEXT1:CLR A 1025 A3 29 INC DPTR 1026 93 30 MOVC A,@A+DPTR 1027 FA 31 MOV R2,A 1028 121030 32 LOOP1:LCALL D200 102B DAFB 33 DJNZ R2,LOOP1 102D A3 34 INC DPTR 102E 0109 35 AJMP LOOP 1030 7C81 36 D200:MOV R4,#81H 1032 74FF 37 D200B:MOV A,#0FFH 1034 14 38 D200A:DEC A 1035 70FD 39 JNZ D200A 1037 1C 40 DEC R4 1038 BC00F7 41 CJNE R4,#00H,D200B 103B 22 42 RET D200 . . . CADDR 1030H A D200A. . . CADDR 1034H A D200B. . . CADDR 1032H A IE . . . . DADDR 00A8H A LOOP . . . CADDR 1009H A LOOP1. . . CADDR 1028H A NEXT . . . CADDR 101AH A NEXT0. . . CADDR 1022H A NEXT1. . . C ADDR 1024H A P. . . . . BADDR 0D0H A START. . . CADDR 1000H A
主要采用了一个小功率PNP型硅 管9012,利用“分压偏置式 工作点稳定直流通路”,达到了对静态工作点的稳定。分压电阻分 别选择1K和5.5K。嗡宁器一端接+5V电压,一端接晶体管的发射 极。由P3.0 输出预定的方波,加到晶体管进行放大, 再输出到蜂 鸣器,很好的实现了频率、声音的转换。
五、音乐演奏器元器件清单
TAB. . . . CADDR 103CH A TH1. . . . DADDR 008DH A TL1. . . . DADDR 008BH A TMOD . . . DADDR 0089H A TR1. . . . BADDR 0088H A
相关主题