微机原理与接口实验_电子琴设计
![微机原理与接口实验_电子琴设计_第1页](https://file6.zhuangpeitu.com/fileroot6/2022-11/22/6f291096-74db-4642-bf88-6bb025949de6/6f291096-74db-4642-bf88-6bb025949de61.gif)
![微机原理与接口实验_电子琴设计_第2页](/images/s.gif)
![微机原理与接口实验_电子琴设计_第3页](/images/s.gif)
《微机原理与接口实验_电子琴设计》由会员分享,可在线阅读,更多相关《微机原理与接口实验_电子琴设计(14页珍藏版)》请在装配图网上搜索。
1、 微机原理与接口实验_电子琴 一、设计目的 通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础。 二、设计的原始资料及依据 查阅定时器8254,可编程8255及音节的频率范围等资料。 通过改变键盘输入来改变8254输出频率,实现扬声器发音。 三、设计的主要内容及要求 利用微机原理试验箱,设计简易电子琴,要求至少可以弹出7个音阶。 四、 设计完成后应提交成果的种类、数量、质量等方面
2、的要求; 提交课程设计说明书一份。在说明书中要有设计原理、硬件电路接线图、设计的程序及必要注释等。 七、主要参考资料(文献) 1、《微机原理与应用》大连理工大学出版社 2、《微机原理与接口技术》北京航空航天大学出版社 3、《微型计算机原理与汇编语言》电子工业出版社 4、《8088/8086汇编语言程序设计》中央广播电视大学出版社 中文摘要和关键词 本实验是利用微机原理试验箱、8255芯片、8254芯片、键盘、扬声器等硬件设备,设计简易电子琴。 首先利用了编程程序,编辑了8255芯片控制字, 对其进行初始化,使其工作在方式0,即基本输入输出状态,将82
3、55的A端口设置为输出,C端口进行,经CPU运算后, 输出到8254芯片的A端口中,由此实现对其的初始化。 将8254芯片设置为工作在方式3,即输出对称方波状态。A端口为输入,“OUT”指令可将输出对应一定频率的方波送到扬声器中,由此实现发声。本实验通过频率大小控制发出声音的高低,通过对延时程序的调用控制发出声音的长短。并通过所编程序实现对键盘的重复扫描,重而可以弹奏多个音符的试验目的。 关键字: 编程、工作方式、运算 一、设计题目: 简易电子琴设计 二、设计内容: 利用微机原理试验箱,设计简易电子琴。 三、设计目的: 通过课程设计使学生更进一步
4、掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础。 四、设计要求: 1.可以弹出7个音阶。 2.弹奏简短音乐。 3.通过改变键盘输入来改变8254输出频率,实现扬声器发音 五、设计原理: 音符与频率的关系如表所示,而持续时间则取决于乐曲的速度和每个音符持续的长短。在拍号为4/4的乐曲中,每小节包含4拍,全音符持续4拍,二分音符持续2拍,四分音符持续1拍,八分音符持续半拍等等。根据乐曲进行速度,假设一个全音符分配1S时
5、间,则每拍持续时间为250MS。如果持续时间的最小单位是10MS,则相应的拍长时间数据为25,该数据存放在BX寄存器中,从而可以确定每个音符的持续时间。 音符 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 频率 131 147 165 175 196 220 247 262 294 330 349 392 440 494 523 六、元器件功能简介: 1.8255引脚功能 RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:片
6、选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255。 D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0~PB7:端口B输入输出线,
7、一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 A1、A0:端口地址总线,8255中有端口A、B、C和一个内部控制字寄存器,共4个端口,由A0、A1输入地址信号来寻址。 本实验用到的引脚有PA0-PA3、PC0-PC3、D0-D7、A0、A1、WR、RD、CS 、和GND 。
8、 图 1. 8255的控制字格式 2.8254 可编程计数/定时器 芯片完成对外部脉冲信号的各种处理。8254芯片内部具有三个独立的16位计数器,它可用程序设置成多种工作方式,按十进制计数或二进制计数,最高计数速率可达10MHz。 8254的全部功能是由CPU编程设定的。CPU通过输出指令给8254装入控制字,从而设定其功能。8254控制字格式如下: D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RL1 RL0 M2 M1 M0 BCD
9、 各位的功能见表1~表4: 表1 SC1、SC0 - 计数器选择 SC1 SC0 选择计数器 0 0 选择0# 0 1 选择1# 1 0 选择2# 1 1 使用方法参见8254使用说明 表2 RL1、RL0-CPU读/写操作 RL1 RL0 操作类型 0 0 计数器封锁操作 0 1 读/写计数器低8位 1 0 读/写计数器高8位 1 1 先读/写低8位,后读/写高8位
10、 表3 M2、M1、M0 -工作方式选择 M3 M2 M1 计 数 工 作 方 式 0 0 0 方 式 0 0 0 1 方 式 1 0 1 0 方 式 2 0 1 1 方 式 3 1 0 0 方 式 4 1 0 1 方 式 5 表4 BCD-计数方式选择 BCD 数 码 形 式 0 十六位二进制计数 1 四位十进制 ( BCD ) 码计数 七、
11、设计原程序及注解 程序代码: MY8255_A EQU 0600H MY8255_B EQU 0602H MY8255_C EQU 0604H MY8255_MODE EQU 0606H MY8254_MODE EQU 06C6H MY8254_A EQU 06C0H ;进行宏定义 DATA SEGMENT FREQ_LIST DW 441D,495D,556D,589D,661D,742D,833D,882D, 26
12、2D,294D,330D,373D,402D,450D,494D,-1D DATA ENDS ;建立数据段 CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;实现段寄存器DS的初始化 MOV DX,MY8255_MODE MOV AL,81H OUT DX,AL ;写8255芯片的控制字,实
13、 现工作在方式0,A端口和B端口输出,C端口输入 MOV DX,MY8254_MODE MOV AL,36H OUT DX,AL ;使8254工作在方式3,A 口输入,运用计数器0,二进制方式 BEGIN: CALL CCSCAN ;扫描 JNZ INK1 ;有键按下时跳到INK1 JMP BEGIN
14、 ;没见按下时循环执行 BEGIN ;确定按下键的位置 INK1: MOV CH,0FEH ;确定按下键在第一列 MOV CL,00H ;将CL清零 COLUM: MOV AL,CH MOV DX,MY8255_A ;将8255的A口地址赋给DX OUT DX,AL
15、 ;将CPU中的AL值送到8255 的A口中,即送到x1、x2、 x3、x4中 MOV DX,MY8255_C ; 将8255的C口地址赋给DX IN AL,DX ;将C口的值送到AL中 L1: TEST AL,01H
16、 ;检验按下键是否在L1 JNZ L2 ;不是L1则跳到L2 MOV AL,00H ;为了后面用来与FREQ_LIST 数据段中数对应 JMP KCODE ;强制跳转到KCODE L
17、2: TEST AL,02H ;检验按下键是否在L2 JNZ L3 ;不是L2则跳到L3 MOV AL,04H ;为了后面用来与FREQ_LIST 数据段中数对应。 JMP KCODE ;强制跳转到KCODE L3: TEST AL,04H ;检验按下键是否在
18、L23 JNZ L4 ;不是L3则跳到L4 MOV AL,08H ;为了后面用来与FREQ_LIST 数据段中数对应。 JMP KCODE ;强制跳转到KCODE L4: TEST AL,08H ;检验按下键是否在L4 JNZ NEXT ;不
19、是L4则跳到NEXT MOV AL,0CH ;为了后面用来与FREQ_LIST 数据段中数对应。 KCODE: ADD AL,CL ;实现AL与CL的无进位加法 MOV DL,2D MUL DL ;将AL乘以2结果保存到AX中 PLAY: MOV SI,OF
20、FSET FREQ_LIST ;使SI指向 FREQ_LIST的首地址 ADD SI,AX ;通过SI加AX 实现指针SI的移动 MOV DX,0FH MOV AX,4240H ;被除数为0F4240H DIV WORD PTR[SI] ;除数为SI所指的数据 MOV DX,MY8254_A ;将8255的A口地址赋
21、给DX OUT DX,AL ;输出商的低4位 MOV AL,AH OUT DX,AL ;输出商的高4位 MOV CX,8D ;输入计数值CX NEXT3: CALL DALLY ;调用延时子程序DALLY LOOP NEXT3 ;CX不为0重复执行NEXT3 MOV DX,0FH
22、 MOV AX,4240H ;被除数为0F4240H MOV SI ,30D DIV WORD PTR[SI] ;除数为SI=30所指的数据 MOV DX,MY8254_A ;将8255的A口地址赋给DX OUT DX,AL MOV AL,AH
23、 OUT DX,AL ;实现静音,结束一个音符的发音 JMP BEGIN ;跳转到BEGIN,重复扫描 NEXT: INC CL ;使CL加1,为了后面用来与 FREQ_LIST数据段中数对应 MOV AL,CH TEST AL,08H JZ KERR ;无键按下
24、时跳转到KERR ROL AL,1D ;向左移位 MOV CH,AL JMP COLUM ;强制跳转到COLUM KERR: JMP BEGIN ;跳到BEGIN重新开始扫描 ;键盘扫描子程序 CCSCAN: MOV AL,00H MOV DX,MY8255_A OUT DX,AL ;使8255芯片A端口输出
25、 为0,既使x1、x2、x3、 X4为0 MOV DX,MY8255_C IN AL,DX ;将从C端口输入的y1、y2、y3、y4送到AL中 NOT AL ;将AL取反 AND AL,0FH
26、 ;将AL前4位清零 RET ;延时子程序 DALLY: PUSH CX ;将CX压栈 MOV CX,000FH T1: MOV AX,0009FH T2: DEC AX ;使AX减1 JNZ T2 ;AX不为0重复T2 LOOP T1
27、 ;CX不为0重复T1 POP CX ;将CX出栈 RET CODE ENDS ;代码段定义结束 END START ;程序结束 八、程序流程图: 开始 程序初始化 调用按键扫描程序 是否有按键 测试按键位置 N 播放 Y 九、程序接线图: 键 X1盘
28、 数 X4码 管 Y1 显 示 Y2 单 元 PA0 D0 PA3 D7 PC0 A0 PC3 A2 WR RD CS 8255单元 XD0 XD0 XD7 XD7 XA1 XA1 XA2 XA2 IOW IOW IOR IOR IOY0 IOY3 CLK 系统总线 D0 D7 GATE0 A0 A1 OUT0
29、 WR RD CS CLK0 8254单元 电子发声单 元 +5V 右图Y组对应8255芯片的C口(Y值为1)与+5V连 L1 L2 L3 L4 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 Y4 Y3 X组对应8255芯片的A口(X值为0) Y2当有键按下时如5键,其对应的Y值 Y2为0,则8255芯片由C口输入的数 Y1 值为1101给AL。
30、 X1 X2 X3 X4 总 结 本学期我们有一周的微机原理课设,虽然时间不是很长,但对我而言收获却很多,也体会到了电子设计行业工作的辛苦,经过老师细心的讲解和我们的不懈努力,最终我组能够把学到的知识运用到实际中去,这让我对本学科的学习产生了更加浓厚的兴趣,但一切都是值得的。 这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单
31、,可是这次要实现的功能相对来说比较复杂,要求掌握的知识比较综合。 经过一周的实训,汇编语言的一些编程设计等操作可以较为熟练,微机原理课程所涉及到的领域和应用的范围也得到了更多的了解,总的来说,实训的一周是丰富而有成功的。刚开始学习汇编语言是相当吃力的,许多内容在以前没有接触过,许多源代码不能理解,实训的头两天就是很简单的试着操作这些内容一点点的积累掌握,回去后不理解的地方赶紧询问其他同学以便在第二天上机时应用好,经过不懈的努力,终于将一个简单的电子琴程序设计完成。 汇编语言是一门较难的计算机内容,开始学习的时候较为困难,但是平时的课堂的学习和这一次的集中的上机实训,使我不但能够较好的了解并
32、掌握了一些汇编语言的知识和技能,相信在以后的社会生活中也可以得到应用。 在最后的答辩前,我对几天来在对几个程序的编排和改进上所遇到的问题又进行了认真的总结,使我对整个程序都有了很深的了解,而且也可以熟练的操作和应用到程序中去,也顺利的通过了答辩。 这是一次成功的实训,也是应值得远记住的一次实训,在这次实训中我充分感受到了集体的力量,在我组组员的共同努力下,我们的电子琴程序从无到有、功能从弱到强,一步步的走向成功,这段经历将成为我生活中一段宝贵的精神财富。 参考文献: 1、《微机原理与应用》大连理工大学出版社 2、《微机原理与接口技术》北京航空航天大学出版社 3、《微型计算机原理与汇编语言》电子工业出版社 4、《8088/8086汇编语言程序设计》中央广播电视大学出版社
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水电工程运行维护管理合同示范文本.docx
- 2025年工程勘测设计合同模板.docx
- 2025年区域产品销售代理合同.docx
- 2025年经销商授权合同样本.docx
- 2025年员工住房资金借贷合同.docx
- 2025年轻钢建筑施工合同示例.docx
- 2025年网络推广托管合同.docx
- 2025年简明个人借款正式合同范例.docx
- 2025年房产按揭贷款合同范例.docx
- 2025年技术合同争议调解.docx
- 2025年电子版城市住宅租赁合同范本.docx
- 2025年简易转让合同协议书样本.docx
- 2025年投资顾问服务合同实例.docx
- 2025年经销合同模板.docx
- 2025年工业项目设计合同样本.docx