微机原理与接口技术课程设计Word文档格式.docx
- 文档编号:19870852
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:16
- 大小:73.90KB
微机原理与接口技术课程设计Word文档格式.docx
《微机原理与接口技术课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
由于是用键盘的数字键1-8,要先读取键盘的输入,判断输入是否在1-8之间,不在就退到主菜单,若是就根据键值查表找出相应的频率,计算初值,调用发音子程序即可,此时的音长固定。
初值的计算方法是用输入的clk频率除以音符的频率。
程序流程图如图1所示。
图1音响程序流程图
2.单音调子程序SOUND
单音调子程序的调用前需要进行以下几个方面工作:
(1)确定相应的音调所对应的频率,查表可以得到,再由频率得到对应的8253计数初值。
(2)确定音长,即一个音符所持续的时间。
在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程图如图2所示:
图2单音调子程序流程图
三、详细设计
1.扬声器
在PC/XT机中,扬声器接口电路由8255A-5、8253-5、驱动器和低通滤波器等构成,其中8253-5是音频信号源,8255A-5作控制器,驱动器用来增大8253-5输出的TTL电平信号的驱动能力,低通滤波器将脉冲信号转换成接近滤波的音频信号,去驱动扬声器发声。
8253-5的计数器2的CLK2端所加的时钟脉冲频率为1.19318MHZ。
可根据这个频率和所要产生的声音频率,计算出定时常数,经编程让计数器2输出指定频率的波形。
8255A-5的PB0接8253-5的GATE2,作为计数器的门控信号,允许或禁止8253-5计数。
8255A-5的PB1接与门U87的一个输入端,用来对计数器2的OUT2端输出的波形作进一步的控制,当PB1=1时,8253-5从OUT2输出的波形才能通过与门U87送到驱动器75477的A端,送到扬声器插座使之发声。
当PB1=0时,OUT2输出的波形不能通过与门,扬声器不会发声。
当PB1PB0=11时扬声器能连续发声。
2.界面设计
主界面为一架钢琴,并采用漂亮的字体作为提示语。
利用int10h实现,利用宏定义画线和矩形。
DRAWSQREMACROSTART_X,START_Y,END_X,END_Y,COLOR
LOCALROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHT
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHSI
MOVAH,0CH
MOVAL,COLOR
MOVBH,0
MOVCX,START_X
MOVDX,START_Y
ROW_UP:
;
画上边
INT10H
INCCX
CMPCX,END_X
JNEROW_UP
RANK_RIGHT:
画右边
INCDX
CMPDX,END_Y
JNERANK_RIGHT
MOVCX,START_X;
下边起始点
MOVSI,END_X
INCSI
ROW_DOWN:
;
画下边
CMPCX,SI
JNEROW_DOWN
MOVDX,START_Y;
右边起始点
RANK_LEFT:
INCDX
CMPDX,END_Y
JNERANK_LEFT
POPSI
POPDX
POPCX
POPBX
POPAX
ENDM
四、调试与运行结果说明
1.主界面
图7主界面
2.退出界面
图8退出界面
五、设计心得体会
通过这几周的课程设计,我们在实践中得到了很多的收获,过程是痛苦的,结果是喜悦的,这就是我这几周来最大的感受。
同时,我对微机原理及接口应用这门课有了更深的认识,系统的掌握了微机原理及接口的应用知识。
这次课程设计我做的是用PC机扬声器发声。
在老师确定题目后,我便去图书馆查阅了大量的关于定时器8253的书籍,并找相应的发声程序参阅。
然后确定好自己的方案,对自己的设计有了一个大概的思路。
通过编程,我学会了如何独立的写出程序,提高了自己的分析解决问题的能力,并且使自己所学的知识与实践相结合,应用到实践当中。
课程设计中涉及到在设计当中遇到了很多的问题,但通过查找资料,克服了这些问题,提高了自己在实际当中解决问题的能力。
虽然此次课程设计的过程是艰辛的,但结果还是令我比较欣慰的。
对于本次课程设计,自己从中取得了许多知识,提高了自己解决问题的能力,应该耐心的去解决程序中的问题和不足。
遇到问题时,应该对自己有信心,但也要知道自己的不足,认真去查阅资料和学习不懂的知识,时刻提醒自己不能自暴自弃,我也切实体会到了作为科技人员的标准。
另外培养了同学之间团结精神和共同解决问题以及攻克难题耐力和意志。
六、附录
;
宏定义
DRAWMACROSTART_X,START_Y,END_X,END_Y,COLOR
LOCALDRAW_NEXT
local:
避免宏重复调用时,标号的重复
功能:
画填充的矩形
使用条件:
START_X<
END_X,START_Y<
END_Y
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,0CH;
写像素点
MOVAL,COLOR;
设置颜色
MOVBH,0;
选用页号0
MOVCX,START_X;
列起始点
MOVDX,START_Y;
行起始点
DRAW_NEXT:
INT10H;
画点
INCCX;
画横线
CMPCX,END_X;
比较行是否画完
JNEDRAW_NEXT;
画另一行
MOVCX,START_X;
另一行的起始点
INCDX
CMPDX,END_Y;
比较列是否画完
未完继续画
POPDX
POPCX
POPBX
POPAX
LOCALROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHT
功能:
画不填充的矩形
PUSHSI
MOVAH,0CH
MOVAL,COLOR
MOVBH,0
MOVCX,START_X
MOVDX,START_Y
ROW_UP:
RANK_RIGHT:
CMPDX,END_Y
JNERANK_RIGHT
MOVCX,START_X;
MOVSI,END_X
INCSI
ROW_DOWN:
MOVDX,START_Y;
MOVCX,START_X
RANK_LEFT:
POPSI
POPCX
POPBX
POPAX
DATASSEGMENT
此处输入数据段代码
DATA1DB49h,56h,62h,66h,74h,83h,94h,99h;
音频表
NUMDB?
NUM为8253计数器初值的序号
白色琴键坐标
ST_LXDW50,61,72,83,94,105,116
ST_MXDW127,138,149,160,171,182,193
ST_HXDW204,215,226,237,248,259,270
ST_YDW50
ED_LXDW60,71,82,93,104,115,126
ED_MXDW137,148,159,170,181,192,203
ED_HXDW214,225,236,247,258,269,280
ED_YDW90
黑色琴键坐标
BT_XDW57,68,90,101,112
DW134,145,167,178,189
DW211,222,244,254,265
BT_YDW50
BD_XDW64,75,97,108,119
DW141,152,174,185,196
DW218,229,251,262,273
BD_YDW70
定义在屏幕绘制字
START_COLDB?
存储起始行
TEXTDB16;
起始行
DB2;
起始列
DB31H;
字体颜色
DB'
ThisIsMyCurriculumDesign'
0FFH
ThankYouForYourSupport'
1.PRESS1~8TOPLAY'
0FFH
2.PRESSCTRL+CTOEXIT'
0FFH,0FFH;
显示字
DATASENDS
STACKSSEGMENT
此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
MAINPROCNEAR
START:
此处输入代码段代码
CALLINIT;
调用初始化程序
MOVBX,OFFSETDATA1;
获取音频表
SKY:
MOVAH,07H;
无回显过滤的字符输入AL=8位数据
INT21H
CMPAL,3;
如果按CTRL+C,退出
JEEXIT1
CMPAL,31H;
若AL小于1,循环,否则继续执行程序,31H是ASKII码'
1'
JLSKY
CMPAL,38H;
若AL大于8,循环,否则继续执行程序,38H是ASKII码'
8'
JGSKY
SUBAL,31H
MOVAH,00H
MOVDI,[BX+SI]
MOVSI,AX
MOVNUM,AL;
将所获取的键值赋给8253计数器
MOVAL,[BX][SI];
寄存器基址加变址寻址方式
PUSHBX
CALLINIT1
CALLWAITF
INAL,61H
ANDAL,0FCH
OUT61H,AL;
关闭扬声器
JMPSKY
MAINENDP
8253初始化子程序
INIT1PROCNEAR;
选择方式三通道二
MOVDL,0AH;
控制扬声器声音
MULDL
MOVDI,AX
MOVAL,0B6H
OUT43H,AL
MOVDX,0012H
MOVAX,34DEH
DIVDI
OUT42H,AL
MOVAL,AH
INAL,61H;
声音开始
MOVAH,AL
ORAL,03H
OUT61H,AL
RET
INIT1ENDP
延时子程序
WAITFPROCNEAR
PUSHAX;
保护寄存器
WAITF1:
INAL,61H;
读取PB端口值
ANDAL,10H;
低四位清零
CMPAL,AH
JEWAITF1
MOVAH,AL
LOOPWAITF1
POPAX
RET
WAITFENDP
INITPROCNEAR
初始化屏幕:
画琴键
MOVAX,DATAS
MOVDS,AX
MOVAH,0;
设置屏幕
MOVAL,0DH
INT10H;
BIOS对屏幕及显示器所提供的服务程序
MOVAH,0BH
MOVBH,0
MOVBL,09H;
背景色
CALLSHOW_TEXT
DRAW45,30,285,94,05H
DRAWSQRE45,30,285,94,0DH
DRAWSQRE49,48,280,49,00H
LEASI,ST_LX;
画21个白色键
LEADI,ED_LX
MOVCX,21
INIT_DRAW:
DRAW[SI],ST_Y,[DI],ED_Y,0FH
DRAW[SI],90,[DI],93,07H;
阴影
ADDSI,2
ADDDI,2
LOOPINIT_DRAW
LEASI,BT_X;
画15个黑色键
LEADI,BD_X
MOVCX,15
INIT_BLOCK:
DRAW[SI],BT_Y,[DI],BD_Y,00H
LOOPINIT_BLOCK
INITENDP
SHOW_TEXTPROCNEAR
在屏幕上显示字符
LEADI,TEXT;
载入字符串首地址
MOVDH,[DI];
赋行值
INCDI;
取得列
MOVDL,[DI];
赋列值
MOVSTART_COL,DL;
保存开始列
MOVAH,2;
设置光标位置
MOVBH,0;
0页
取得颜色值
MOVBL,[DI];
赋颜色值
CHAR_WRITE:
取得要显示的字符
MOVAL,[DI]
CMPAL,0FFH;
行结束否
JEBUMP_ROW;
下一行
CMPAL,0;
结束否
JZEND_TEXT
CALLSHOW_CHAR;
显示字符
JMPCHAR_WRITE;
下一个字符
END_TEXT:
RET
BUMP_ROW:
INCDH;
MOVDL,START_COL;
赋开始列值
设光标位置
JMPCHAR_WRITE
SHOW_TEXTENDP
SHOW_CHARPROCNEAR
MOVAH,9;
MOVCX,1
INCDL
SHOW_CHARENDP
退出
EXIT1:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
七、参考文献
[1]郑坤.微型计算机技术实验指导书.2007.
[2]戴梅萼,史嘉权.微型计算机技术与运用.清华大学出版社2003.
[3]裘雪红,李伯成.微机计算机原理及接口技术.西安电子科技大学出版社.
[5]宋锦河.汇编语言程序设计.中国水利水电出版社.2001.
[6]唐延铃,工小刚.汇编语言程序设计.电子科技大学.1998
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 课程设计