电子琴微机原理基于8086课程设计
微机原理与接口课程设计基于8086微处理器和8255A芯片的汽车信号灯微机控制系统的设计与实现

课程设计题目汽车信号灯目录一、设计目的 (2)二、系统硬件设计 (3)三、系统软件设计 (9)四、系统调试及结果 (15)五、总结和体会 (16)六、参考文献 (16)一、设计目的通过所学知识和现代计算机技术来模拟模拟汽车信号灯控制系统,把所学的理论的知识用到现实实践中去,加强了对理论知识的理解和记忆。
展示了计算机技术在汽车行业的应用。
设计出汽车信号灯微机控制系统。
汽车信号灯的作用是大家所熟知的,汽车通过显示不同的信号灯来告诉前后左右的行车者本汽车正在进行的操作,本控制系统采用8086微处理器作为处理器和可编程的8255A芯片来模拟汽车信号灯控制系统。
通过在实验箱上分别按K1,K2,K3和K4键来显示汽车左转、右转,前进和后退等状态。
左/右转弯开关K1,K2闭合时,对应的仪表板左/右转弯指示灯、左/右转弯头灯和左/右转弯尾灯闪烁;紧急开关闭合时,所有仪表板左右转弯灯、左右转弯头灯和左右转弯尾灯闪烁;当用户按K3时,也即踩刹车时,刹车开关闭合,刹车灯(左右红色尾灯)亮;停靠时(合上停靠开关),即按K4键时,所有的灯闪烁。
所需执行的操作由相应的开关状态反映,所需控制的信号灯有仪表板左/右转弯灯、暂停灯、照明远灯和照明近灯共五类类灯.二、系统硬件设计1.硬件连接图:利用8088驱动8255 8253来连接外部电路。
2.器件选择:CPU(8088) 1个发光二极管 5个74ALS373 2个电阻 5个74ALS245 1个 74LS00 5个8255 1个控制开关 5个8253 1个3、8088,8255,8253功能及说明8088的引脚包括20根地址线,16根数据线及控制线,状态线,时钟,电源和地线等,大致可分五大类.第一类只传送一种信息,第二类每个引脚电平的高低代表不同信息,第三类代表不同的工作方式,第四类每个引脚可以传送两种信息,第五类引脚在输入和输出时分别传送不同的信息.同时还要地址锁存器及数据总线收发器来构成最小系统.因本电路用到各种比较重要的芯片,因此有必要对芯片进行简要介绍。
8086的课程设计

8086的课程设计一、课程目标知识目标:1. 让学生掌握8086微处理器的结构、工作原理及主要性能特点。
2. 使学生了解8086指令系统,能正确运用汇编语言编写简单的程序。
3. 帮助学生理解内存管理、中断处理和I/O操作等基础知识。
技能目标:1. 培养学生运用汇编语言进行程序设计和调试的能力。
2. 使学生能够分析并解决8086微处理器在实际应用中遇到的问题。
3. 提高学生的动手实践能力,能独立完成基于8086的硬件系统搭建和编程。
情感态度价值观目标:1. 培养学生对计算机硬件和汇编语言的兴趣,激发学习热情。
2. 培养学生具备良好的团队合作精神和沟通能力,增强解决问题的信心。
3. 引导学生认识到计算机技术对社会发展的作用,树立正确的科技观。
课程性质:本课程为计算机硬件基础课程,以理论教学和实践操作相结合的方式展开。
学生特点:学生已具备一定的计算机基础知识和编程能力,但对硬件和汇编语言了解较少。
教学要求:结合学生实际情况,注重理论与实践相结合,强调实践操作,提高学生的实际动手能力。
通过本课程的学习,使学生能够掌握8086微处理器的基本知识,为后续相关课程打下坚实基础。
同时,注重培养学生的团队合作精神和沟通能力,提高学生的综合素质。
二、教学内容1. 8086微处理器概述:介绍8086微处理器的结构、工作原理及性能特点,对应教材第一章。
- 8086内部结构- 工作原理与性能参数- 8086的发展历程及其在计算机硬件中的应用2. 8086指令系统:学习8086指令的分类、格式及功能,对应教材第二章。
- 指令分类及格式- 常用指令介绍与示例- 汇编语言编程基础3. 内存管理:讲解内存的组织结构、地址空间分配及管理方法,对应教材第三章。
- 内存组织结构- 地址空间分配- 内存管理方法4. 中断处理:分析中断的类型、处理过程及中断向量表,对应教材第四章。
- 中断类型及处理过程- 中断向量表- 中断编程实例5. I/O操作:介绍I/O端口地址分配、编程方法及其应用,对应教材第五章。
8086微机课程设计

8086微机课程设计一、教学目标本课程的教学目标是让学生掌握8086微机的原理、接口技术及其应用,培养学生具备微机系统设计和调试的能力。
具体分为以下三个层面:1.知识目标:使学生了解8086微机的硬件结构、指令系统、寄存器、中断处理等基本知识;掌握微机接口技术,包括并行接口、串行接口、AD/DA转换等;了解微机在现代工业控制系统中的应用。
2.技能目标:培养学生具备8086微机程序设计能力,能熟练使用汇编语言和C语言进行程序设计;培养学生具备微机系统硬件调试能力,能使用常用的调试工具进行硬件调试。
3.情感态度价值观目标:培养学生对微机技术的兴趣,认识微机技术在现代社会中的重要性,培养学生创新意识和团队合作精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.8086微机的基本原理:介绍8086微机的硬件结构、指令系统、寄存器等基本知识。
2.微机接口技术:包括并行接口、串行接口、AD/DA转换等,以及这些接口在实际应用中的设计方法。
3.微机程序设计:介绍汇编语言和C语言在8086微机程序设计中的应用,包括程序设计方法、调试技巧等。
4.微机系统设计:介绍微机系统的设计方法,包括硬件选型、电路设计、系统集成等。
5.实践环节:安排一定的实验课时,使学生在实际操作中掌握微机原理和接口技术。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:用于讲解基本原理、概念和知识点。
2.案例分析法:通过分析实际案例,使学生更好地理解微机原理和接口技术。
3.实验法:安排实验课时,让学生亲自动手进行实验,提高实际操作能力。
4.讨论法:学生进行课堂讨论,促进学生之间的交流与合作。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料。
2.参考书:提供相关的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的多媒体课件,提高课堂教学效果。
微机原理与接口技术(电子琴设计报告)

微机原理与接口技术课程设计基于 8086系统的电子琴设计报告05级电子信息工程 2班杨锡乐学号:0504030223参与成员:田友详、李丽华一、设计任务及要求1. 以 8255接八个开关 K1~K8,做电子琴按键输入。
2. 以 8253控制扬声器,拨动不同的开关,发出相应的音阶。
要求:K1—静音K2—发 si 的音 493HzK3—发 la 的音 440HzK4—发 sol 的音 392HzK5—发 fa 的音 349HzK6—发 mi 的音 329HzK7—发 re 的音 293HzK8—发 do 的音 261Hz二、方案比较和认证通过 8255和 8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
输入部分主要是由 8255和 8个常开型开关来完成。
常开型开关如右图。
8个常开型开关 K1~K8与 8255的 A 口 PA0~PA7相接,不触动开关时,为高电平输入,当按下开关时,就接地,为低电平输入。
例如当 K1键按下时,从 8255中 A 口输入的数为 11111110B ,十六进制为 0FEH 。
每一个开关按下时,都对应一个 ASCII 码,如下表所示:开关 K1 K2 K3 K4 K5 K6 K7 K8对应数据 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 7FH对应频率静音 493 Hz 440 Hz 392 Hz 349 Hz 329 Hz 293 Hz 261 Hz输入部分的硬件实现比较简单, 所以说主要还是在发音部分。
在设计中驱动扬声器地声的主要有两种方式, 分别是以位触发和定时器控制。
下面就这两种不同的方式确定两个不同的设计方案。
方案 1:发声采用位触发方式。
电路原理图如下所示。
程序直接控制 PPI (8255可编程序外围接口芯片的输出控制寄存器(I/O端口为 61H 的第一位,使该位按所需的频率进行 1和 0的交替变化,从而产生一串脉冲控制波形,这些脉冲经过放大后驱动扬声器发出声音。
微机原理课程设计电子琴

一、教学内容ቤተ መጻሕፍቲ ባይዱ
本节课为微机原理课程的实践环节,选取《微机原理与应用》教材第七章“微机接口技术”及第十章“微机在仪器仪表中的应用”为理论依据,设计了一堂以“电子琴”制作为主体的课程。教学内容主要包括:1.微机与电子琴硬件接口原理,特别是I/O接口地址译码及编程;2.利用基本微机接口实现电子琴音调的控制,包括键盘扫描、音调发生器的使用;3.电子琴软件编程,通过编写简单的BIOS调用或DOS中断实现音色的播放与控制;4.熟悉并掌握电子琴的制作流程,包括电路设计、程序编写、调试与优化等。通过本节课的学习,学生将能理论与实践相结合,深入理解微机接口技术,增强动手能力与创新能力。
5、教学内容
本节课将是对电子琴项目的一个总结和应用拓展,教学内容如下:1.电子琴功能的创新设计,鼓励学生思考如何添加新的功能,如录音、播放、节奏伴奏等;2.介绍微机与其他外设的通信接口,如USB、蓝牙等,为电子琴的远程控制或数据传输打下基础;3.电子琴的电源管理设计,讲解如何为电子琴设计稳定的电源供应系统;4.实践电子琴的组装和外壳设计,提升学生的工业设计和实际动手能力;5.组织学生进行课堂展示和答辩,培养他们的表达能力和公众演讲技巧。通过本节内容的实践,学生将能够综合运用所学知识,发挥创造力,完成一个具有实用性和创新性的电子琴项目,并在此过程中提升自身的工程实践能力和团队合作精神。
2、教学内容
本节课进一步深化微机原理的应用,以“电子琴”项目为载体,教学内容具体包括:1.电子琴键盘布局设计与实现,让学生了解如何通过微机接口读取键盘输入;2.音阶生成算法介绍,探讨如何通过编程产生不同音调;3.利用微机定时器/计数器产生稳定的时钟信号,保证音色的准确性与连贯性;4.简单的乐曲编程与演奏,指导学生如何将音符组合成乐曲并进行演奏;5.电子琴功能的扩展,如增加音量控制、音色选择等,提高电子琴的交互性和趣味性。
微机原理emu8086课程设计

目录一、软件启动 (1)二、程序代码 (2)1、数值计算 (2)(1)十进制系统 (2)2、逻辑运算 (5)(1)与运算(AND) (5)(2)或运算(OR) (5)(3)异或运算(XOR) (5)4、宏 (8)三、鸣谢 (10)Emu8086的应用分析摘要:Emu8086是一个可在Windows 环境下运行的8086CPU汇编仿真软件。
它集成了文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器为一体,并具有在线使用指南,这对刚开始学习汇编语言的人是一个很有用的工具。
您可以在真器中单步或连续执行程序,其可视化的工作环境让使用者操作更容易。
您可以在程序执行中动态观察各寄存器、标记位以及存储器中的变化情况。
仿真器会在模拟的PC中执行程序,以避免程序运行时到实际的硬盘或内存中存取数据。
此外,该软件完全兼容Intel新一代处理器,包括了PentiumⅢ、Pentium4的指令。
关键词:Emu8086 微机原理程序文件一、软件启动双击进入启动界面如图1所示,用户可以选择新建文本、程序示例、快速启动指南、最近使用文档。
图1 启动界面Emu8086软件提供的实例中包含了几十种典型的程序代码,其中包括:数值计算、逻辑运算、屏幕显示、键盘输入、文件打印、马达控制、温度控制、交通灯控制等。
在软件提供的快速指南中提供了多种在线帮助工具,包括:文件索引、8086CUP指令使用指南、系统中断调用列表以及用法等。
用户可以通过该工具快速地掌握8086CPU指令体系和emu8086汇编真软件的使用。
程序编辑结束后,点击模拟,即可进入模拟状态:点击运行之后即可用屏幕模拟器进行模拟,如:二、程序代码1、数值计算(1)十进制系统目前使用最多的是十进制。
十进制系统有10个数字0,1,2,3,4,5,6,7,8,9。
利用这些数字能表示任何数值,例如754这些数字是由每一位数字乘以“基数”的幂累加而成的(上一个例子中基数是10 因为十进制中有十个数字)。
8086微机课程设计

8086微机课程设计一、课程目标知识目标:1. 理解8086微处理器的内部结构、工作原理及其指令系统;2. 掌握汇编语言编程的基本方法,能够编写简单的汇编程序;3. 了解存储器组织、I/O端口编程以及中断处理的相关知识;4. 掌握8086微机系统设计的基本流程和关键步骤。
技能目标:1. 能够运用汇编语言进行基本程序设计,实现数据的处理和逻辑控制;2. 能够分析和解决8086微机系统设计中遇到的问题;3. 能够运用所学知识,完成一个简单的微机系统设计项目。
情感态度价值观目标:1. 培养学生对计算机硬件和底层编程的兴趣,激发他们的学习热情;2. 培养学生的团队合作意识,使他们能够在项目实践中相互协作、共同进步;3. 培养学生勇于尝试、不断探索的精神,提高他们面对问题的解决能力;4. 引导学生认识计算机技术对社会发展的作用,培养他们的社会责任感和使命感。
本课程针对高年级学生,结合学科特点,注重理论与实践相结合。
课程目标旨在使学生掌握8086微处理器的基本知识和技能,培养他们在微机系统设计方面的实际操作能力,同时提高学生的情感态度价值观。
通过本课程的学习,为学生未来在计算机领域的发展奠定基础。
二、教学内容1. 8086微处理器内部结构及工作原理:包括CPU的架构、寄存器组、总线结构等;相关教材章节:第一章 8086微处理器概述。
2. 汇编语言编程:介绍汇编语言的基本语法、指令系统、伪指令等;相关教材章节:第二章 汇编语言编程基础。
3. 存储器组织与I/O端口编程:讲解存储器层次结构、I/O端口寻址方式及编程方法;相关教材章节:第三章 存储器组织与I/O端口。
4. 中断处理:阐述中断的概念、中断处理过程以及中断向量表的使用;相关教材章节:第四章 中断处理。
5. 微机系统设计:包括系统设计流程、硬件连接、软件编程等;相关教材章节:第五章 微机系统设计。
教学内容安排与进度:第一周:8086微处理器内部结构及工作原理;第二周:汇编语言编程基础;第三周:存储器组织与I/O端口编程;第四周:中断处理;第五周:微机系统设计实践。
基于8086电子琴的设计与实现

基于8086电子琴的设计与实现介绍电子琴是一种使用数字技术而非声学原理来产生声音的乐器。
与传统音乐乐器不同,电子琴可以通过自带音效、合成器、音色等多种设置,同时,它还可以与计算机互联,实现更多其他乐器无法实现的功能。
8086是英特尔公司推出的一种16位微处理器。
该处理器广泛用于计算机、工业控制和嵌入式系统等领域,具有处理速度快、性能稳定、兼容性高等特点。
本篇文档将介绍基于8086的电子琴的设计与实现过程。
设计硬件设计在硬件设计中,我们需要一个键盘矩阵、8086单片机、扬声器等元器件。
键盘矩阵是由若干个按键组合而成的矩阵,在电子琴中,每一个按键对应一个频率,从而实现不同的音调。
8086单片机将键盘矩阵读取,声音的产生则使用扬声器。
具体的硬件设计如下:1.键盘矩阵:16个按键组成的4x4矩阵,其中每个按键对应不同的频率。
2.8086单片机:应使用具有16位数据总线和20位地址总线的微处理器,可采用8086、8088或80186等型号。
3.扬声器:直径为3英寸,阻抗为8欧姆。
软件设计在软件设计中,我们需要实现键盘扫描、音频输出等功能。
具体的软件设计如下:1.键盘扫描:通过键盘矩阵的读取,得到按键的位置、行和列信息。
2.音频输出:使用扬声器输出不同频率的音调。
3.逻辑控制:根据键盘扫描的结果,控制音频输出的频率和音量等参数。
实现硬件实现硬件的实现并不复杂,只需要按照设计优先连接好元器件即可。
在本电子琴中,硬件的连接图如下:TODO: 添加硬件连接图软件实现在软件实现中,我们采用了汇编语言实现。
汇编程序主要包括键盘扫描模块、音频输出模块、中断服务程序和主程序等模块。
具体的软件实现如下:1.键盘扫描模块:先选定一行,然后针对这一行,将其中的列依次读取,如果有按键按下,就将此时的位置和按键信息存储在指定的寄存器中。
2.音频输出模块:选择相应的频率需要选择合适的参数来确定频率的大小,经过计算可确定参数的值,然后使用Pulse Width Modulation(PWM)模块来输出音频信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.湖南科技大学潇湘学院信息与电气工程系《课程设计报告》题目:基于8086的电子琴设计专业:通信工程班级:通信一班姓名:罗婷学号: 18指导老师:欧青立陈君宋芳管志利李目 2015年 12 月 28 日信息与电气工程系课程设计任务书2015—2016 学年第 1 学期专业:通信工程学号: 18 姓名:罗婷课程设计名称:微机原理与接口技术设计题目:基于8056的电子琴设计完成期限:自 2015 年 12 月 14 日至 2015 年 12 月 26 日共 2 周设计内容:通过 8255 和 8253 来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
输入部分:主要是由 8255 和 8 个常开型开关来完成。
发音部分:CUP 通过对定时器 8253 的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端口 61H 的最低位控制通道 2 门控的开断,以产生特殊的音响。
本文用到的是 8253 的方式 3——方波发生器。
基本要求:1.以8255接八个开关K1~K8,做电子琴按键输入。
2.以8253控制扬声器,拨动不同的开关,发出相应的音阶。
要求:指导教师(签字):批准日期:年月日摘要定时器/ 计数器8253 可以产生不同频率的信号, 经过三极管放大驱动扬声器发出不同的音阶。
硬件上以8086 作为核心处理单元, 将8253 的输出端连接音频模块。
软件上检测按键是否有键按下, 判断按键并驱动对应发音子程序。
通用MIDI音源模块制作制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。
这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。
手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的QS6400 等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置。
此外还有音乐盒、附有生日歌的生日卡片等等。
所以利用微机制作的简易电子琴在我们的日常生活中随处可见。
关键词:Altium Designer;masm.5.0 ;8086;8255;8253定时器;目录1. 设计目的 (4)2. 元件与仪器 (4)3. 设计内容 (4)4. 电路工作原理 (4)5.1 控制模块工作原理 (5)5.2.0 8255A芯片: (5)5.2.1 8255A的内部结构 (6)5.2.2 8255的外部引脚 (6)5.2.3 8255的方式控制字 (7)6. 发声模块工作原理 (7)6.1.1 8253芯片 (7)6.1.2 8253的6种工作方式: (7)7.整体电路图 (8)8.主要程序与编译软件 (8)9. 软件程序: (9)10. 心得体会 (11)1.设计目的检验和提高我在原理与接口综合应用方面分析问题与解决问题的能力,同时也给我提供更多、更好的训练机会。
根据设计要求,尽可能完成设计要求的功能,选择最合适的器件,构成最有效的硬件电路来完成。
2. 元件与仪器1.计时器82532.并行控制器8255A3.实验台4. PC机3.设计内容⑴根据扬声器发声原理可知:不同频率的方波通过扬声器可发出不同的声音。
⑵由此构想运用8253通道二工作在方式3的状态下控制其2#计数器对应寄存器中的数值,然后将输出端口OUT2产生的方波通过扬声器转换成为声音。
⑶为了实现弹奏按键来控制扬声器,可以通过用开关改变8253(工作在方式3的状态下)2#计数器对应寄存器中的数值,8253输出端口OUT2 通过74LS08后与扬声器相连接。
⑷最后要实现的就是将开关对应的数字信号存入寄存器中采用8255A并行接口特点,使端口A工作在方式PB1并作为输出口,端口B工作在方式0,并作为输入口。
将开关与8255A的输入端口A相连接。
4. 电路工作原理整个电路采用模块化来进行设计,分为控制模块和发声模块。
主要的器件有一个并行接口8255,和一个8253定时器。
输入部分的硬件原理图比较简单,控制模块其主要是由8个常开型开关和一个并行接口8255组成。
8个开关一端接地,另一端接到8255的A口输入,并且通过一个电阻接到+5V。
因此,在开关不按下时,从8255A口输入的是高电平,当开关按下时,输入的则是低电平,这样通过低电平触发,既方便也对芯片起保护作用。
通过软件检测输入的数据,然后给8253送相应频率的计数值。
发音模块连接到扬声器上的是8253定时器2,GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。
定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连。
当PB1=1时,允许OUT2的输出信号到达扬声器电路。
因此,只有PB0和PB1同时为“1”时,才能驱动扬声器鸣叫。
5.1 控制模块工作原理控制部分主要是由8255和8个常开型开关来完成。
常开型开关如右图。
8个常开型开关K1~K8与8255的A口PA0~PA7相接,不触动开关时,为高电平输入,当按下开关时,就接地,为低电平输入。
例如当K1键按下时,从8255中A口输入的数为B,十六进制为0FEH。
每一个开关按下时,都对应一个ASCII 码,由于PC计算机的时钟晶振为1.1931816MHz,根据频率的公式:f=1/T则频率周期为T=1/f定时器的计数器为16位计数器,则最大的计数值为65536,那么其定时时间为:t=65536*T=65536/f=0.0549254(秒)5.2 8255A芯片:8255A是为Intel公司的微处理器配套的通用可编程并行接口芯片,其基本功能如下:8255A接口芯片有3个8位并行输入/输出端口,可利用编程方法设置3个端口是作为输入端口还是作为输出端口;8255A能适应CPU与I/O接口之间的多种数据传送方式的要求。
如无条件传送,查询方式传送,中断方式传送。
与此相应,8255A设置了方式0、方式1以及方式2。
5.2.1 8255A的内部结构8255A的C口比较特殊,除作数据口外,在工作方式1和2下,它的部分信号线被分配作专用的联络应答信号。
8255A的内部结构机外部引脚,它包括四个部分:数据总线缓冲器,读写控制逻辑,A组和B组控制电路。
1. 数据总线缓冲器2. 读写控制逻辑3. A组和B组控制A和端口C的高4位(PC7~PC4)构成A组,由A组控制部件来对它进行控制;端口B和端口C的低4位(PC3~PC0)构成B组,由B组控制部件对它进行控制。
5.2.2 8255的外部引脚8255的外部引脚1. 与CPU相连的引脚D7~D0:数据线,双向、三态。
:读信号,输入、低电平有效。
:写信号,输入、低电平有效信号。
:片选信号,输入、低电平有效。
2. 8255A的数据线、片选信号线、地址线、读写控制线等分别与系统总线相连,其中A、B、C三个端口一排针形式引出。
表信号线寄存口编址IY03 A口60HB口61HC口62H控制寄存器63H5.2.3 8255的方式控制字8255A的工作方式控制字格式和各位的含义。
A组有三种工作方式,而B只有两种工作方式。
方式0—基本的输入/输出方式方式1—选通式输入/输出方式2—双向选通输入/输出方式6. 发声模块工作原理要使扬声器发出不同的音阶, 就得输入不同频率的信号。
通过给定时/ 计数器 8253 送入不同的初值, 可以从输出端得到不同频率的波形,在74LS08的作用下经过放大器三极管8550的放大作用, 便可驱动扬声器发出不同的音阶。
音阶声音的持续时间可以通过软件延时程序实现。
1~7 某一按键被系统检测到, 系统驱动PC对应子程序使扬声器输出对应的音阶。
6.1.1 8253芯片8253内设三个计数器都独立工作,用-65536之间的一个数去输入频率,可以实现每个计数器的独立编程。
每个计数器占有一个独立的端口地址。
可以通过A0、A1、和CS来寻址这些端口如下图所示:6.1.2 8253的6种工作方式:方式0--计数结束产生中断方式1--单稳负脉冲信号发生器方式2--分频器方式3--方波信号发生器方式4--软件触发的选通信号发生器方式5--硬件触发的选通信号发生器本课题采用通道二方式3,当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。
从定时器输出的方波信号,三极管驱动扬声器。
送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。
显然只有PB0和PB1都是1时,才能使扬声器发出声音。
控制音长的时间可以简单地通过反复执行指令来得到。
我们知道执行2801次LOOP指令约需要10MS的时间。
因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。
打开X86 PC扬声器,GATE2必须设置为高电平,以便计数器2提供CLK信号。
该端口61H的PB0来完成,由下图还可以看到计数器2的OUT2和端口61H的PB1进行与操作,然后输入到PNP三极管8550进行放大作用再到扬声器中进行播放。
为此,为了将OUT2传送到扬声器,端口61H的PB1也必须为高电平。
IN AL, 61H ;获得端口B的当前设置MOV AH, AL ;保存OR AL, 00000011B ;使PB0=1,PB1=1MON AL, AH ;获得端口B的初始设置OUT 61H, AL ;关闭扬声器7. 整体电路图8.主要程序与编译软件Masmforwindows集成实验环境是从事一线教学的大学教师针对汇编语言初学者的特点开发的一个简单易用的汇编语言学习与实验软件,现在已全面支持最新操作系统VISTA,支持DOS的16/32位汇编程序和Windows下的32汇编程序(并提供调试通过的30个WINDOWS 汇编程序实例源代码),它具有错误信息自动定位、关键字实时帮助并且在帮助中动画演示汇编指令的执行过程、语法着色、无限次撤消与恢复、WORD式的查找、替换、定位、支持中文、长文件名等功能。
本课程设计采用Masmforwindows集成实验环境极大方便了程序的编辑与调试。
9. 软件程序:DATA SEGMENTTABLE DW 493 ;K2—发si的音493HzDW 440 ;K3—发la的音440HzDW 392 ;K4—发sol的音392HzDW 349 ;K5—发fa的音349HzDW 329 ;K6—发mi的音329HzDW 293 ;K7—发re的音293HzDW 261 ;K8—发do的音261Hz DATA ENDS;定义堆栈段STACK SEGMENT PARA STACK 'STACK'STA DB 48 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AX ;初始化DSMOV AX,STACKMOV SS,AX ;初始化SSMOV AX,TOPMOV SP,AXMOV AL,90H ;初始化8255OUT 63H,AL;从8255A口输入一个数据K0: IN AL,60H;以下为检测哪个键按下CMP AL,0FEHJZ K1CMP AL,0FDHJZ K2CMP AL,0FBHJZ K3CMP AL,0F7HJZ K4CMP AL,0EFHJZ K5CMP AL,0DFHJZ K6CMP AL,0BFHJZ K7CMP AL,7FHJZ K8JMP EXIT ;如没有键按下,或不止一个键按下,则跳到EXIT K1: JMP K0 ;如果为K1按下,则返回继续循环,为静音K2: MOV BX,TABLE ;如为其它键则把相应的频率送给BXJMP SOUNDFK3: MOV BX,TABLE+1JMP SOUNDFK4: MOV BX,TABLE+2JMP SOUNDFK5: MOV BX,TABLE+3JMP SOUNDFK6: MOV BX,TABLE+4JMP SOUNDFK7: MOV BX,TABLE+5JMP SOUNDFK8: MOV BX,TABLE+6SOUNDF: MOV DX,12HMOV AX,348CHDIV BXCALL SOUND ;调用发音子程序CALL DELAY ;调用延时程序EXIT: MOV AH,06H ;有无键盘动作MOV DL,0FFHINT 21HJZ K0 ;如果没有,则跳到KO循环MOV AH,4CH ;如果有,则结束返回INT 21H;以下是发音子程序SOUND PROC NEARPUSH AXMOV AL,B ;初始化8253OUT 43H,ALPOP AXOUT 42H,AL ;送计数值MOV AL,AHOUT 42H,ALIN AL,Y2 ;发音设置,打开扬声器OR AL,03HOUT Y2,ALRETSOUND ENDP;以下是延时子程序DELAY PROC NEARPUSH CXPUSH AXMOV AX,0FFFHX11: MOV CX,2801X12: LOOP X12DEC AXJNZ X11POP AXPOP CXRETDELAY ENDPCODE ENDSEND START10. 心得体会在为期两周的课程设计中我学到了很多。