课程设计务目
课程设计题目:音乐播放器
课程设计实现目:课程设计通汇编语言软件编程方法实现简单音乐播放功通微机原理接口技术课程学汇编知识82538254芯片相关知识完成课程设计汇编程序完成键控音乐播放器82538254定时器产生声音该播放器干首歌曲选择开始时输出说明户选择播放歌曲然根户键进行播放退出出错提示通课程设计环节加强学知识理解应
二课程设计相关知识
21 定时计数器825358254
微机控制系统中常定时信号系统日历时钟动态存储器刷新外部执行机构控制时需定时中断定时检测定时查询等定时方法两种:
软件定时:利指令执行时间设计循环程序CPU 执行延迟子程序时间定时时间缺点:执行延迟时CPU 直占降低CPU 效率
硬件定时:计数器定时器作硬件软件简单指令控制产生精确时间延迟突出优点计数时占CPU 时间利定时器计数器产生中断信号建立作业环境提高CPU 效率
作定时器8253者8254二者功基相知识工作高频率样实验采8254功:
(1)片3 独立16 位减计数器通道
(2)计数器单独作定时器计数器二进制十进制计数
(3)通道6 种工作方式通程序设置改变
(4)计数器速率高达10MHz
部分:数总线缓器读写控制逻辑控制字寄存器计数通道0#1#2#:
部结构图:
8254部结构
22 8254外部引脚
8254芯片具24引脚双列直插式集成电路芯片引脚分布图示8254芯片24引脚分两组组面CPU组面外部设备引脚传送信号情况介绍:
8254引脚
(1)D7~D0:双三态数线引脚系统数线连接传送控制数状态信息
(2)RD:CPU读控制信号输入引脚低电效
(3)WR:CPU写控制信号输入引脚低电效
(4)CS:芯片选择信号输入引脚低电效
(5)A1A0:址信号输入引脚选择8254芯片通道控制字寄存器(6).VCCGND:+5V电源接引脚
(7)CLKi i012第i通道计数脉输入引脚8254规定加CLK引脚输入时钟信号频率高26MHZ时钟周期380ns
(8)GATEi i012第i通道门控信号输入引脚门控信号作通道工作方式关
(9)OUTi:i012第i通道定时计数信号输出引脚输出信号形式通道工作方式确定输出信号触发电路工作作CPU发出中断请求信号
23 8254端口址
8254控制字
说明
(1) 8254通道输入CLK二进制二十进制预置值开始减1计数减0时OUT输出信号
(2) 8254编程时先写控制字写时间常数
24 8254工作方式
(1) 方式0:计数结束产生中断方式
写入控制字OUT变低电写入初值立开始计数计数结束时变成高电
(2) 方式1:编程单次脉方式
初值装入GATE低变高时OUT变低电计数结束变高电
(3) 方式2:频率发生器方式
初值装入时OUT变高计数结束OUT变低该方式果计数未结束GATE低时立停止计数强制OUT变高GATE变高时便启动次新计数周期
(4) 方式3:方波发生器
装入初值GATE升启动计数OUT 输出高电 计数完成半时OUT输出低电方式3方式2工作方式类似初始化完成重复循环计数输出波形
(5)方式4:软件出发选通方式
进入工作方式4OUTi输出高电 装入计数值n 果GATE高电立开始减1计数直计数值减0止OUTi输出宽度CLKi周期负脉软件装入计数值次效果继续操作 必须重新置入计数初值n果操作程中GATE变效停止减1计数 GATE次效时重新初值开始减1计数
(6)方式5:硬件触发方式计数
进入工作方式5 OUTi输出高电 硬件触发信号GATE端引入 开始时GATE应输入0 装入计数初值n减1计数工作定等硬件触发信号GATE端引入正阶跃信号减1计数会开始计数值计0 OUTi输出负脉宽度固定CLKi周期表示定时时间计数次数
三程序设计思路
音乐频率音阶延续时间长短实现音乐音阶某种排列播放定时间形成音乐音阶延续时间存数段中然根键值选择音阶时间表计数器产生该音阶频率
CPU通定时器通道2(端口址42)进行编程IO寄存器接收控制声音频率16位计数值端口61H低控制通道2门控开断产生特殊音响定时器接收计数值533H时产生896Hz声音产生频率计数值算出:
533Hz×896÷频率1234DC÷频率
送出频率计数值前方式寄存器送方式值该数决定通道编程采什模式送入通道计数值字节两字节二进制码BCD码位组合格式:
通道2发声时采模式3模式3输出线10时间占计数时间半产生系列间隔均匀脉
产生指定频率声音程序段:
MOV AL0B6H
OUT 43HAL 43H8254控制字端口
MOV DX12H
MOV AX34DCH
DIV DI (DI)频率
OUT 42HAL 42H8254通道2端口
MOV ALAH
MOV 42HAL
定时器输出方波信号功率放滤波驱动扬声器送扬声器信号受行接口芯片8255(端口址61H)双重控制端口61H低位控制通道2门控开断产生特殊音频信号端口61HPA1位定时器输出信号时作门输入PA0PA1位程序决定01显然PA0PA11时扬声器发出声音控制音长时间简单通反复执行指令知道执行2801次LOOP指令约需10MS时间10MS倍数值控制扬声器开关时间间隔控制发声音长实现程序:
IN AL61H
MOV AHAL
OR AL3
OUT 61HAL 开扬声器
L: MOV CX2801
DY:LOOP DY
DEC BX
JNZ L
MOV ALAH
OUT 61HAL 关扬声器
四功流程图子程序说明
1总流程图
MAIN程序MAIN程序总程序输出说明等户键读取键值根键选择调播音子程序播放歌曲
2音乐播放子程序流程图
PLAY子程序PLAY子程序播音子程序SI指音节表中频率BP指音节表中时间SI指音节表中取频率1效读取时间然计算计数初值送入计数器产生种频率开启扬声器根取时间调干次延时子程序段时间扬声器发出该频率声音延时结束关闭扬声器调音节间延时程序修改SIBP指频率重复面工作
DELAY子程序DELAY_OFF子程序两子程序采空操作循环次方法第二延时时间较短概5ms
五试验结果截屏:
初始界面:
果错键会出现界面
果选择正确出现界面:
六参考文献
1李长青 微机原理接口技术 徐州:中国矿业学出版社2006
2沈美明 汇编语言程序设计实验教程 北京:清华学出版社2002年
3周明德 微机原理接口技术 北京:民邮电出版社2002年
七总结
次设计中说次成功验学完微型计算机原理接口技术门课基础做设计通设计门课理知识理解程度加强微机原理门课程身门实验性工程性强专业技术课仅重视理教学更应注意实践技培养训练课程设计门课程重环节通课程设计巩固加深拓宽学理解课程设计重点目标汇编语言涉硬件方面太知识
编程方面通次课程设计学开始面长程序畏难情绪感觉法手没办法硬着头皮啃音乐播放关汇编程序然慢慢懂理解作者设计思路然根思路图书馆汇编语言指导书慢慢编写符合思路程序次写出程序肯定会正确需进步调试检查程序程中充分思考基础次实验检查改正程序良方编写程序程中体会深子程序调程序条理问题程序算功实现程序子程序条理分明易读性高算较程序调试程序中学DEBUG DEBUG检查程序错误作时灵活种调试方法缩寻找错误范围
书时方恨少课程设计程中体会句话深意课堂学8254知识汇编语言太少足完成次课设常跑图书馆种样工具书书处较书仅块知识样步步知识海洋里寻觅着需东西确实克服少困难解决少问题许坎坷更成长次课程设计中收获做出符合求音乐播放器积累宝贵验时音乐方面频率知识认识想果次课程设计中方面知识辈子没机会接触方面知识许学出点收获吧
六附录
1源程序代码:
SSEG SEGMENT PARA STACK 'stack'
dw 100h dup(0) Resize the stack by changing the number '100'
SSEG ENDS
DSEG SEGMENT
INFO1 DB 0DH0AH''0DH0AH'THERE ARE 3 SONGS'0DH0AH0DH0AH''
INFO2 DB '1HAPPY BIRTHDAY'0DH0AH''
INFO3 DB '2SHEEP'0DH0AH''
INFO4 DB '3RIVER'0DH0AH''
INFO5 DB '0EXIT'0DH0AH''
INFO6 DB 'YOU HAVE CHOSEN '
INFO7 DB 'THANK YOU FOR YOUR USE'0DH0AH''
INFO8 DB ''0DH0AH'PRESS THE KEY TO SELECT SONG'0DH0AH''
INFO9 DB 0DH0AH''0DH0AH'|INVALID SELECTION|'0DH0AH''0DH0AH''
FREG1 DW 2 dup(262)294262349262262294262392249262262523440349 曲1频率
DW 3302944662664403493923491
TIME1 DW 1122241122241122224112224 曲1时间
FREG2 DW 3302942622943 DUP(330) 曲2频率
DW 3 DUP(294)330392392
DW 3302942622944 DUP(330)
DW 294294330294262 1
TIME2 DW 6 DUP(1)2 曲2时间
DW 2 DUP(112)
DW 12 DUP(1)4
FREG3 DW 330392330294330392330294330330392330294262294330392294 曲3频率
DW 262262220196220262294332262 1
TIME3 DW 3 DUP(2)112114 曲3时间
DW 2 DUP(2211)4
DW 3 DUP(2111)4
DSEG ENDS
CSEG SEGMENT
assume csCSEG dsDSEG esDSEG ssSSEG
INIT PROC 初始化程序
mov ax dseg
mov ds ax
mov es ax
INIT ENDP
MAIN PROC 程序入口
call INIT
RE MOV DX28BH 关闭扬声器
MOV AL89H
OUT DXAL
MOV DX28AH
IN ALDX
MOV DX288H
OUT DXAL
LEA DXINFO1 输出说明信息
MOV AH09H
INT 21H
LEA DXINFO2
INT 21H
LEA DXINFO3
INT 21H
LEA DXINFO4
INT 21H
LEA DXINFO5
INT 21H
LEA DXINFO8
INT 21H
MOV AH01H 读取键
INT 21H
CMP AL'1' 根键播放曲子
JE MUSIC1
CMP AL'2'
JE MUSIC2
CMP AL'3'
JE MUSIC3
CMP AL'0'
JE EXIT
LEA DXINFO9 效选择输出错误提示
MOV AH09H
INT 21H
JMP RE
MUSIC1
MOV SIOFFSET FREG1 指曲1表
MOV BPOFFSET TIME1
CALL PLAY
JMP RE
MUSIC2
MOV SIOFFSET FREG2 指曲2表
MOV BPOFFSET TIME2
CALL PLAY
JMP RE
MUSIC3
MOV SIOFFSET FREG3 指曲3表
MOV BPOFFSET TIME3
CALL PLAY
JMP RE
EXIT
MOV DX28BH 关闭扬声器
MOV AL89H
OUT DXAL
MOV DX28AH
IN ALDX
MOV DX288H
OUT DXAL
LEA DXINFO7 输出欢迎信息增加界面友度
MOV AH09H
INT 21H
mov ax 4c00h The end of the program return to the system
int 21h
MAIN ENDP
PLAY PROC PLAY子程序功面介绍
L1 MOV BXDS[SI] 取频率
CMP BX1 否效
JE L0 效退出
MOV CXDS[BP] 读取时间
MOV DLCL 保存时间
ADD DL30H
MOV AH02H
INT 21H
MOV DX0FH 计算计数初值1M十六进制0F4240H
MOV AX4240H
DIV BX
MOV BXAX
MOV DX283H 设置计数器工作方式
MOV AL36H
OUT DXAL
MOV DX280H 输入计数初值
MOV AXBX
OUT DXAL
MOV ALAH
OUT DXAL
MOV DX28BH 开扬声器
MOV AL89H
OUT DXAL
MOV DX28AH
IN ALDX
NOT AL
MOV DX288H
OUT DXAL
RODCALL DELAY 延时
LOOP ROD
MOV DX28BH 关扬声器
MOV AL89H
OUT DXAL
MOV DX28AH
IN ALDX
MOV DX288H
OUT DXAL
CALL DELAY_OFF 音节间延时
ADD SI2
ADD BP2
JMP L1
L0 RET
PLAY ENDP
DELAY PROC 延时子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX09FH
LL1 MOV CX0FFFFH 循环次
LOP LOOP LOP
DEC BX
JNZ LL1
POP DX
POP CX
POP BX
POP AX
RET
DELAY ENDP
DELAY_OFF PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX0FH
LL2 MOV CX0CFFFH
LOP2 LOOP LOP2
DEC BX
JNZ LL2
POP DX
POP CX
POP BX
POP AX
RET
DELAY_OFF ENDP
CSEG ENDS
END MAIN
2音符应频率表:
音符 频率HZ 半周期us 音符 频率HZ 半周期us
低1DO 262 1908 #4FA# 740 0676
#1DO# 277 1805 中5SO 784 0638
低2RE 294 1700 #5SO# 831 0602
#2RE# 311 1608 中6LA 880 0568
低3M 330 1516 #6LA# 932 0536
低4FA 349 1433 中7SI 988 0506
#4FA# 370 1350 高1DO 1046 0478
低5SO 392 1276 #DO# 1109 0451
#5SO# 415 1205 高2RE 1175 0426
低6LA 440 1136 #2RE# 1245 0402
#6LA# 466 1072 高3M 1318 0372
低7SI 494 1012 高4FA 1397 0358
中1DO 523 0956 #4FA# 1480 0338
#1DO# 554 0903 高5SO 1568 0319
中2RE 578 0842 #5S0# 1661 0292
#2RE# 622 0804 高6LA 1760 0284
中3M 659 0759 #6LA# 1865 0268
中4FA 698 0716 高7SI 1976 0253
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档