汇编接口综合实验——简易电子琴实验

合集下载

简易电子琴实验报告

简易电子琴实验报告

简易电子琴实验报告引言:本实验旨在设计和制作一台基于微控制器的简易电子琴,通过按下不同键盘上的按键产生不同音调,从而实现音乐的演奏。

电子琴采用的主要器件为微控制器、音频发声模块以及按键电路。

一、实验目的1.学习和理解数字音乐技术的基本原理;2.掌握微控制器的编程方法和音频发声的实现技术;3.熟悉电子琴的工作原理和设计过程。

二、实验器材1. 单片机:Arduino Uno;2.音频发声模块;3.面包板;4.按键;5.电阻、电容等元件;6.连线和连接器。

三、实验步骤1. 将Arduino Uno连接至音频发声模块,确保连接正确并稳定。

2.在面包板上连接按键电路,将按键与单片机的引脚相连。

3. 编写Arduino Uno的程序,实现按键按下时的音调发声。

4.上电,并测试按键是否能够产生正确的音调。

四、实验结果经过实验得到的结果如下:1.按下不同按键,电子琴会产生不同的音调。

2.通过改变程序中相应按键的频率值,可以调整音调的高低。

五、实验分析1.通过对单片机的编程,实现了按键按下时的音调发声,成功地实现了电子琴的基本功能。

2.实验中使用了音频发声模块,利用其内置的DAC(数字模拟转换器)实现了数字音频信号的模拟输出。

六、实验总结和心得体会通过本次实验,我对电子琴的工作原理和设计过程有了更深入的了解。

学习和掌握了单片机的编程方法和音频发声的实现技术,提高了我的实验能力和动手能力。

同时,也对数字音乐技术有了初步的认识。

在今后的学习和工作中,我将继续深入研究和应用这些知识,为电子音乐的发展做出自己的贡献。

基于单片机和汇编语言的简易电子琴

基于单片机和汇编语言的简易电子琴

电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真。

【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机,若干个按键,扬声器构成一个电子琴系统,按下1~7按键,分别发出相应声音。

3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。

【按照要求撰写总结报告】成绩评定表附录I:电路原理图附录II:源程序ORG 0000HLJMP MAINORG 000BH;中断源为定时器\计数器0LJMP INTORG 0100HMAIN: MOV SP,#60HMOV TMOD,#01H;定时器\计数器0工作在方式1MOV TL0,#9CH;定时器\计数器0赋初值MOV TH0,#0FFHSETB ET0SETB EASETB P2.0JNB P1.0,IR1;对按键进行查询,低电平跳转LCALL DELAYJNB P1.1,IR2JNB P1.2,IR3JNB P1.3,IR4JNB P1.4,IR5JNB P1.6,IR7CLR TR0;定时器\计数器0停止工作INT: CLR EA;中断子程序MOV TL0,#9CHMOV TH0,#0FFHDJNZ R2,INTERCPL P2.0MOV A,R1MOV R2,AINTER: SETB EARETI;中断程序返回IR1: MOV R1,#38;子程序IR1SETB TR0;定时器\计数器0工作RET;子程序返回IR2: MOV R1,#34SETB TR0RETIR3: MOV R1,#30SETB TR0RETIR4: MOV R1,#27SETB TR0RETIR5: MOV R1,#24SETB TR0RETIR6: MOV R1,#23SETB TR0RETIR7: MOV R1,#20SETB TR0RETK: CLR TR0RETDELAY : MOV R5,#2;延时子程序DEL1: MOV R6,#200DEL2: MOV R7,#200DEL3: DJNZ R7,DEL3DJNZ R6,DEL2DJNZ R5,DEL1RETEND。

实现简易电子琴实践报告

实现简易电子琴实践报告

实现简易电子琴
1.需求分析
这个程序主要是解决利用数字键,演奏简单乐曲的问题。

具体要求是:需要输入一个未知量,一个循环函数,数字1—7每个数字发出声音的函数,其它数字代表错误的函数。

要得到的结果是:数字1—7代表的音符,可以连续输入数字。

应输出的是:连续输入数字出来一系列音符,且其它数字表示为错误。

2.程序总体设计
3.详细代码设计
4.程序运行结果
运行程序,随便键入一个数字,如果是数字1—7,电脑会发出相对应的音符,如果是其它数字,结果会显示错误。

连续输入数字,电脑会发出连续的音符,从而得到简易的电子琴。

5.运行中出现的问题、解决方法、体会
刚开始做的时候,每次只能键入一个数字,每次只能发出一个音符。

在老师的指导下,我们加入了一个循环函数,因此,每次可以连续键入数字,从而电脑可以连续发出音符。

汇编接口综合实验——简易电子琴实验

汇编接口综合实验——简易电子琴实验

简易电子琴——键盘控制电子音响发声、8x8点阵灯显示实验报告12281166 崔雪莹 12281161 安容巧 12281183 张佳悦一、实验目的1.了解小键盘的工作原理,学会如何使用小键盘进行控制,熟悉流程和代码编程;2.了解电子音响的发声原理,会利用8253A级联方式控制其发出不同频率的声音;3.了解8X8点阵灯的工作原理,学会显示想要显示的文字和图形;4.实验结合8253,8259,8255和小键盘,8*8点阵的应用共同实现。

5.实验目的效果:小键盘触发按键,控制电子音响发出相应频率的声音,8X8点阵灯显示相应的内容。

二、实验内容实验主要概述:键盘控制实现两个音部(高音部、低音部)的发声,即:当在键盘上按下‘0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’时,电子音响发出不同频率的低音调,当在键盘上按下‘8’、‘9’、‘A’、‘B’、‘C’、‘D’、‘E’、‘F’时,电子音响发出不同频率的高音调。

同时,在8x8灯上显示相应音调对应的‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘A’、‘B’、‘C’、‘D’、‘E’、‘F’。

1.小键盘按键的获取:图1 小键盘原理图小键盘按键获取原理:(1)判断是否有按键按下:若某行为低电平,此时该行某按键对应某列也为低电平,则说明该按键此时被按下。

将8255A的A口03接行0到行3,B口的03接列0到列3。

A口做输出,B口做输入。

将A口输出设置为0000读取B口的此时的值,若不是全为1则说明有按键按下。

无按键按下则等待。

(2)去抖动:延时,等待按键通断引起的抖动消失。

延时后再读B端口,若还有按键闭合,则认为按键已确定。

(3)找到被按下的按键:用逐行扫描的方法读出此时按键相应的值。

从第0行开始,输出0,顺序逐行扫描。

每扫描一行,读入列线值,从0列开始,逐列检查是否为0。

若为0,则表示该列有键按下;若为1,则表示无键按下。

微机原理课程设计——简易电子琴实验

微机原理课程设计——简易电子琴实验

微机原理与接口技术课程设计——简易电子琴的设计作者:王雨轩指导老师:张金花摘要:本设计主要是利用可编程并行I/O接口芯片8255,通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。

利用定时器可发出不同频率的方波的原理,使不同频率的方波进入蜂鸣器发出不同音调。

Abstract: This design mainly is to use programmable parallel I/O interface chip 8255 to design the main body part of the electronic keyboard’s circuit,to achieve the basic function of the inherent.So called simple electronic keyboard.The principle of using the timer can make different frequency square wave,let the different frequency square wave into the buzzer to make different tones.关键字:微机原理接口技术 8255 电子琴目录说明书总页数:14页简易电子琴的设计 (3)一、课题要求与内容 (3)(一)课题要求 (3)(二)课题内容 (3)(三)使用设备 (3)二、系统总体方案设计 (4)(一)系统流程图 (4)三、系统硬件设计 (5)(一)设计原理图 (5)(二)主机连线说明 (5)(三)硬件调试 (5)四、系统软件设计 (6)(一)程序清单 (6)(二)软件调试 (12)五、结束语 (13)六、参考文献 (14)简易电子琴的设计随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作。

计算机是一种严格按照时序进行工作的数字化、智能化机器,实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。

简易电子琴实验报告

简易电子琴实验报告

简易电子琴实验报告
《简易电子琴实验报告》
实验目的:通过搭建简易电子琴,了解电子琴的工作原理和基本原理。

实验材料:
1. Arduino开发板
2. 电阻
3. 电容
4. 蜂鸣器
5. 连接线
6. 电池
实验步骤:
1. 将Arduino开发板连接到电脑上,并打开Arduino IDE软件。

2. 在Arduino IDE软件中,编写一个简单的程序,使用蜂鸣器发出不同频率的声音。

3. 将电阻和电容连接到Arduino开发板上,用来调节蜂鸣器发出的声音的频率和音调。

4. 将蜂鸣器连接到Arduino开发板上。

5. 用连接线将所有部件连接起来,确保电路连接正确。

6. 将电池连接到Arduino开发板上,为电子琴供电。

实验结果:
经过以上步骤的操作,我们成功搭建了一个简易的电子琴。

通过调节电阻和电容的数值,我们可以改变蜂鸣器发出的声音的频率和音调。

通过编写程序,我
们可以让蜂鸣器发出不同的音符,从而演奏出简单的乐曲。

实验结论:
通过这次实验,我们了解了电子琴的基本原理和工作原理。

电子琴通过控制电流的频率和波形,产生不同的音符。

通过这种方式,我们可以使用电子琴演奏出各种乐曲。

同时,我们也学会了如何使用Arduino开发板和简单的电子元件搭建一个简易的电子琴。

这次实验为我们打开了电子琴的神秘面纱,让我们对电子琴有了更深入的了解。

简易电子琴实验

简易电子琴实验

哈尔滨理工大学单片机原理及接口技术课程设计报告设计题目:简易电子琴实验专业:电机与电器班级:电机10-1姓名:刘国生学号:1030350111《单片机原理及接口技术》课程设计任务书课题描述随着社会发展,计算机硬件技术越来越多的应用到生活中的各个领域,人们对软硬件技术结合开发出来的产品的要求越来越迫切,需求日益增加,如今用软硬件结合设计电子产品已经成为了一大时尚。

本设计编写的一个用开关模拟电子琴的程序,以8086作为处理器,用8255接八个开关K1~K8,做电子琴按键输入,以8253控制扬声器,拨动不同的开关,发出相应的音阶。

其中K1代表静音,K2发si的音,K3发la 的音,K4发sol的音,K5发fa的音,K6发mi的音,K7发re的音,K8发do的音。

开发工具:汇编语言;DICE-8086K实验系统。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

一、课程设计目的1、通过本次课程设计加深对单片机课程的认识和掌握,对单片机的应用做进一步了解。

2、通过本次课程设计提高学生的编程能力、调试能力、文献资料查阅能力,为毕业设计和以后工作打基础。

3、学生的创新意识,巩固了解汇编语言知识并要掌握8255芯片的使用并熟悉实验系统。

4、掌握蜂鸣器的使用方法;掌握蜂鸣器的不同发音的方法。

二、实验内容1、简易电子琴原理:(1)蜂鸣器输入不同频率的方波,会发出不同的声音(2)通过按键,由单边机控制产生不同频率的方波,从而发出不同的声音。

2、实验过程(1)通过单边机,使G6区的1到7号键由低到高发出1到7的音阶。

三、功能简介本简易电子琴的设计可实现的功能如下:通过一个独立键盘可以实现对该音乐的播放和停止操作的控制。

连续按下不同的按键,可以实现乐曲的演奏。

当按下某一按键,会发出相应的音调。

微机原理与汇编语言课设——电子琴

微机原理与汇编语言课设——电子琴

微机原理与汇编语言课设——电子琴一、引言电子琴是一种常见的电子乐器,其原理主要是利用微控制器和音频芯片来实现音乐的产生和演奏。

本文将介绍微机原理与汇编语言课设中关于电子琴的设计和实现。

二、设计目标本次课设的设计目标是实现一个简单的电子琴,具备以下功能:1. 发出不同音高的音符;2. 支持多种音效,如音量调节、音色切换等;3. 支持多音同时演奏。

三、硬件设计1. 微控制器选择本次设计选用了ATmega328P微控制器作为主控芯片。

它具有丰富的外设资源,适合用于音频处理和控制。

2. 音频芯片选择为了实现音乐的产生,我们选择了一个音频芯片,例如YM2612。

它能够根据输入的音符和音效参数产生相应的音频信号。

3. 键盘电路设计电子琴的键盘通常采用矩阵键盘的设计,通过扫描键盘的状态来检测按键的触发。

我们可以使用行列扫描法来实现键盘的检测。

4. 音频输出电路设计为了将产生的音频信号输出到扬声器上,我们需要设计一个音频输出电路。

一般来说,可以使用功放电路来放大音频信号,然后通过扬声器播放出来。

四、软件设计1. 系统初始化在系统初始化阶段,我们需要对微控制器进行初始化设置,包括时钟配置、引脚配置等。

2. 键盘扫描通过行列扫描法,我们可以检测到按下的键盘按键。

一旦检测到按键按下,我们需要进行相应的处理,例如发出对应的音符。

3. 音符发声根据键盘扫描的结果,我们可以确定需要发出的音符。

通过音频芯片,我们可以将相应的音符转换为音频信号,并输出到音频输出电路。

4. 音效处理除了发出不同音高的音符外,我们还可以通过调节音量、切换音色等方式实现多种音效。

这些音效参数可以通过按键或旋钮来控制。

5. 多音演奏电子琴通常支持多音同时演奏的功能。

为了实现这一功能,我们可以通过多线程或中断的方式来处理多个音符的发声。

五、实验结果经过设计和实现,我们成功地完成了一个简单的电子琴。

它能够发出不同音高的音符,并支持多种音效。

通过按键和旋钮的操作,我们可以控制音量、音色等参数。

基于51单片机的简易电子琴汇编程序实验报告

基于51单片机的简易电子琴汇编程序实验报告

单片机应用课程设计报告——简易电子琴电子信息科学与技术2013-2xxx单片机应用课程设计报告——简易电子琴xxx摘要本设计是一个基于AT89C52系列单片机的简易电子琴,通过硬件电路制作以及软件编译,设计制作出一个由按键电路、复位电路、数码管显示电路,定时器及蜂鸣器组成简易的电子琴。

通过键盘按键确定键号送去显示以及产生对应的频率的方波。

本次实验的难点是键盘的扫描程序设计,因为本次实验实用的键盘是通过P3.4-P3.7端口输入测试信号,从P3.0-P3.3端口进行检测的,涉及到端口的读入写出原理等问题,后来通过先送出F0数值使低四位处于读入状态,高四位处于输出状态等方法实现。

还有一个问题是如何使单片机产生确定频率的波形,后来利用定时器计时结束后的溢出信号,控制信号反转实现。

关键词:电子琴扫描式键盘数码管1、设计任务和要求1.1设计任务利用AT89C52单片机以及各种元器件自行设计编程制作一个简易电子琴。

1.2任务要求基本要求:利用查询式键盘,数字键1、2、3、4、5、6、7作为电子琴的按键,按键按下时发出Do、Re、Mi、Fa、So、La、Xi的声音。

在弹奏音乐的同时将音符显示在数码管上。

扩展要求:具备存储播放所弹奏的音乐的功能,用三个功能键进行切换状态:按一下按键控制是否进入存储状态。

;按键二控制是否进入演奏状态;按键三为复位键。

1.3方案论证(1)如何产生一定频率的方波信号首先我们知道,每一个音符都有一个固定的频率,当蜂鸣器根据不同频率的方波信号便会震动产生对应的音符。

其次要产生音频脉冲,只要算出某一音频的周期(1/f),然后将此周期除以2,即为半周期的时间,由于使用的是12MHz的晶振,所以每一个计数的脉冲长度为1us,脉冲的个数用半周期时间除以1us,用65536减去脉冲的个数便可以得到计数初值。

利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

最新简易电子琴实验报告

最新简易电子琴实验报告

最新简易电子琴实验报告
实验目的:
本次实验旨在通过组装简易电子琴并进行基本测试,了解电子琴的工
作原理及其音乐合成过程。

通过实践操作,加深对电子音乐设备的认识,并提高动手实践能力。

实验材料:
- 简易电子琴套件
- 电源适配器
- 连接线
- 螺丝刀
- 电阻、电容等电子元件(根据套件清单)
- 焊接工具
实验步骤:
1. 组装电子琴:根据说明书,将电子琴的各个电子元件按照电路图进
行焊接和组装。

确保所有连接都牢固无误。

2. 连接电源:使用电源适配器为电子琴供电,并确保电源线连接正确,避免短路。

3. 测试音阶:开启电源后,逐个测试电子琴的音阶,确保每个按键都
能发出准确的音高。

4. 功能测试:检查电子琴的其他功能,如音量调节、音色选择等,确
保它们能正常工作。

5. 故障排查:如果在测试过程中发现问题,应根据电路图进行故障排查,并及时修复。

6. 性能评估:记录电子琴的音质、音量范围、操作便捷性等性能指标,评估其整体性能。

实验结果:
通过组装和测试,电子琴能够顺利发出预定音阶,并且各功能键均能正常工作。

音质清晰,音量调节范围满足基本需求。

在测试过程中,未发现明显的性能问题。

实验结论:
本次实验成功完成了简易电子琴的组装和功能测试。

实验结果表明,通过基础的电子元件和电路设计,可以制作出具有一定音乐表现力的电子琴。

此外,实验过程中对电子琴的工作原理有了更深入的理解,同时也锻炼了动手能力和问题解决能力。

微机原理与接口实验_电子琴设计

微机原理与接口实验_电子琴设计

微机原理与接口实验_电子琴一、设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。

通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。

为以后学生结合专业从事微机应用设计奠定基础。

二、设计的原始资料及依据查阅定时器8254,可编程8255及音节的频率范围等资料。

通过改变键盘输入来改变8254输出频率,实现扬声器发音。

三、设计的主要内容及要求利用微机原理试验箱,设计简易电子琴,要求至少可以弹出7个音阶。

四、设计完成后应提交成果的种类、数量、质量等方面的要求;提交课程设计说明书一份。

在说明书中要有设计原理、硬件电路接线图、设计的程序及必要注释等。

七、主要参考资料(文献)1、《微机原理与应用》大连理工大学出版社2、《微机原理与接口技术》北京航空航天大学出版社3、《微型计算机原理与汇编语言》电子工业出版社4、《8088/8086汇编语言程序设计》中央广播电视大学出版社中文摘要和关键词本实验是利用微机原理试验箱、8255芯片、8254芯片、键盘、扬声器等硬件设备,设计简易电子琴。

首先利用了编程程序,编辑了8255芯片控制字, 对其进行初始化,使其工作在方式0,即基本输入输出状态,将8255的A端口设置为输出,C端口进行,经CPU运算后, 输出到8254芯片的A端口中,由此实现对其的初始化。

将8254芯片设置为工作在方式3,即输出对称方波状态。

A端口为输入,“OUT”指令可将输出对应一定频率的方波送到扬声器中,由此实现发声。

本实验通过频率大小控制发出声音的高低,通过对延时程序的调用控制发出声音的长短。

并通过所编程序实现对键盘的重复扫描,重而可以弹奏多个音符的试验目的。

关键字: 编程、工作方式、运算一、设计题目:简易电子琴设计二、设计内容:利用微机原理试验箱,设计简易电子琴。

三、设计目的:通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。

电子琴综合实验报告(汇编语言)

电子琴综合实验报告(汇编语言)

基于分频原理的多功能电子琴+节拍器信息科学技术学院电子学系任伶00548091 [摘要]一,课题及完成情况简介:利用TPC-H实验箱上的8253实现二级分频,同时配合以8255A,与门和DAC0832,通过扬声器放音,实现两个八度音高(包括半音)的电子琴。

在软硬件相互配合下,电子琴具有弹奏和播放已存乐曲的功能,音长可控,播放速度可选,拥有美观的图形界面模拟真实琴键,且琴键随弹奏有起伏变化。

利用微机内部的8253,8255A和内置扬声器,与TPC-H 实验板上的8255A和LED,实现节拍器,可产生长度和速度可控的2/4拍,3/4拍及4/4拍等,LED和内置扬声器同时对节拍进行提示。

二,关键词:8253,8255A,DAC0832,弹奏,录音,播放,用户选择[目标要求]一,基本功能:1.以微机键盘模拟真实琴键,发出标准C大调音阶和其高八度音阶,包括半音2.每个音可以任意长短发音,由用户的按键时间决定,模拟真实电子琴的发生效果二,附加功能:1. 通过编写汇编语言,实现可视化界面,便于用户操作;弹奏过程中,琴键随用户按键的按下和弹起有起落变化的效果2. 在弹奏过程中同步录音;播放已经录制的乐曲;播放速度由用户决定,由慢速,中速和快速等选择3. 将电子琴作为节拍器使用,输出各种节拍,有2/4拍,3/4拍及4/4拍等供用户选择,在节拍器输出的同时,有LED和微机内置扬声器作为指示;拥有LED指示是真实节拍器没有而本课题独有的功能4. 节拍器的输出拍数有长短两种,拍速有快慢两种,均由用户选择[设计和实施方案]一,设计方案选择与论述电子琴的实现方案有多种,例如基于波形叠加原理和基于分频原理等。

基于波形叠加原理,其核心在于数模转换过程,其实现的过程和需要的组件较简单;用到的芯片主要为DAC0832,数目太少,很难达到硬件使用能力的锻炼;而基于分频原理的电子琴实现能够给我更多的锻炼机会。

基于分频原理,其核心在于对分频计数的控制,多变复杂;用到的芯片包括8253,8255A,DAC0832和与门等,包括了基于波形叠加原理用到的芯片,同时我对8253和8255A的应用更熟练,便于方案可行性估计和软件调试;此方案下,TPC-H实验箱上的连线较多,更是一种对硬件处理能力的挑战。

简易电子琴 实验报告

简易电子琴 实验报告

简易电子琴实验报告
标题:简易电子琴实验报告
在这次实验中,我们使用了一台简易的电子琴来进行音乐实验。

电子琴是一种能够发出各种音调的电子乐器,它可以模拟各种乐器的音色,并且可以通过按键来发出不同的音调。

首先,我们对电子琴进行了简单的了解和操作。

我们发现,电子琴上有一排按键,每个按键都能发出不同的音调。

通过按下不同的按键,我们可以演奏出不同的音乐。

此外,电子琴还有一些控制按钮,可以调节音量、音色和节奏。

接着,我们进行了一些音乐实验。

我们尝试了不同的音调组合,演奏出了一些简单的旋律。

我们还尝试了调节音色和节奏,发现这些参数的改变会对音乐的表现产生影响。

通过不断的尝试和调整,我们逐渐掌握了电子琴的操作技巧,并且能够演奏出一些简单的乐曲。

在实验的过程中,我们发现电子琴是一种非常有趣的乐器。

它不仅能够模拟各种乐器的音色,还能够通过按键演奏出丰富多彩的音乐。

通过这次实验,我们对电子琴有了更深入的了解,也增加了对音乐的兴趣。

总的来说,这次实验让我们对电子琴有了更深入的了解,也让我们体验到了音乐的魅力。

我们相信,在未来的学习和生活中,电子琴会给我们带来更多的乐趣和启发。

简易电子琴实验报告

简易电子琴实验报告

简易电子琴实验报告简介本实验旨在设计并制作一个简易的电子琴,通过按下不同的按键,发出不同的音调。

本实验使用的材料包括Arduino UNO控制板、蜂鸣器、按钮以及若干杜邦线。

实验步骤步骤一:准备工作1.将Arduino UNO控制板连接到计算机,并打开Arduino IDE软件。

2.将蜂鸣器通过杜邦线连接到Arduino UNO控制板的数字引脚(可选择任意一个数字引脚)。

3.将按钮通过杜邦线连接到Arduino UNO控制板的数字引脚(可选择任意一个数字引脚)。

步骤二:编写代码1.在Arduino IDE软件中,新建一个空白文件,并将以下代码复制进去:int buttonPin = 2; // 按钮连接的引脚int speakerPin = 3; // 蜂鸣器连接的引脚int melody[] = { 262, 294, 330, 349, 392, 440, 494, 523 }; // 不同音调的频率int noteDuration = 1000; // 音符的持续时间void setup() {pinMode(buttonPin, INPUT); // 设置按钮引脚为输入模式pinMode(speakerPin, OUTPUT); // 设置蜂鸣器引脚为输出模式}void loop() {int buttonState = digitalRead(buttonPin); // 读取按钮状态if (buttonState == HIGH) { // 按钮被按下for (int i = 0; i < 8; i++) {tone(speakerPin, melody[i]); // 发出音调delay(noteDuration); // 持续一段时间noTone(speakerPin); // 停止发声delay(100); // 延时一段时间}}}2.点击Arduino IDE软件中的上传按钮,将代码上传到Arduino UNO控制板。

简易电子琴实验报告

简易电子琴实验报告

简易电子琴实验报告简易电子琴实验报告引言电子琴作为一种常见的音乐乐器,具有音色多样、易于学习和携带便利等优点,深受广大音乐爱好者的喜爱。

本实验旨在通过简易电子琴的制作,了解其基本原理和工作方式,并通过实际操作来感受音乐的魅力。

材料与方法实验所需材料包括电路板、导线、电阻、电容、压电蜂鸣器、按钮开关、电池等。

首先,将电路板上的元件按照电路图连接起来,确保电路的连通性。

然后,将压电蜂鸣器与按钮开关连接到电路板上的相应位置。

最后,将电池连接到电路板上,使电子琴能够正常工作。

实验结果经过以上步骤的操作,我们成功制作了一台简易电子琴。

当按下按钮开关时,压电蜂鸣器会发出不同音高的声音,从而模拟出钢琴的音阶。

通过按下不同的按钮,我们可以弹奏出不同的音符,从而演奏出各种乐曲。

讨论与分析简易电子琴的工作原理是利用压电蜂鸣器的振动产生声音。

当按钮开关闭合时,电流通过电路,使压电蜂鸣器的振动片振动,从而产生声音。

不同的按钮对应不同的电阻和电容值,通过改变电路中的电阻和电容值,可以调整压电蜂鸣器的振动频率,从而改变音高。

简易电子琴虽然只能发出简单的音阶,但它的制作过程和原理与真正的电子琴相似。

真正的电子琴通过电子元件和数字电路实现了更多的功能,如调音、和弦、节奏等。

通过制作简易电子琴,我们可以初步了解电子琴的工作原理,为深入学习电子琴打下基础。

结论通过本次实验,我们成功制作了一台简易电子琴,并通过按下按钮开关演奏出不同的音符。

我们了解到简易电子琴的工作原理是利用压电蜂鸣器的振动产生声音,通过改变电路中的电阻和电容值来调整音高。

这次实验不仅让我们感受到音乐的魅力,还为我们深入学习电子琴打下了基础。

展望尽管本次实验只是制作了一个简易的电子琴,但我们可以进一步探索如何改进电子琴的功能和音色。

例如,可以添加更多的按钮和电路元件,实现和弦、节奏等功能。

另外,我们还可以学习更多关于电子琴的知识,了解其更复杂的工作原理,为今后的学习和创作打下坚实的基础。

#《微机原理与接口技术》课程设计--简易电子琴设计

#《微机原理与接口技术》课程设计--简易电子琴设计

华夏学院《微机原理与接口技术》课程设计题目:简易电子琴的设计学院(系):信息工程系年级专业:自动化1072学号: 10212407230学生姓名: Y Y指导教师: G Q课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 简易电子琴的设计初始条件:1.运用所学的微机原理和接口技术知识;2.微机原理和接口技术实验室的实验箱设备。

要求完成的主要任务:(包括课程设计工作量及其技术要求以及说明书撰写等具要求)使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):1.弹奏:用户每按一个键盘琴键就弹奏相应的音符;2.演奏:按下键盘上某一个指定的建后自动弹奏预存琴谱功能;3.变调:按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;4.严格按照课程设计说明书要求撰写课程设计说明书。

时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日基于微机原理简易电子琴的设计摘要系统功能简介:计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。

利用定时器可发出不同频率的方波,不同频率的方波经喇叭就会发出不同音调。

其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的方波,本设计中按键一次,会发出方波,松开后随之延时,但在延时的期间继续检测按键,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。

单片机控制通用MIDI音源模块制作制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。

这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。

手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的QS6400 等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置。

简易电子琴设计实验报告

简易电子琴设计实验报告

简易电子琴设计实验报告
本次实验是针对简易电子琴的设计,主要使用以下几种器件完成:
ADC(数模转换器):
ADC是将模拟量转换成数值的重要器件,它的输入具有模拟量,而输出是一组数字量。

在本次实验中,用ADC读取我们设计的电路上的按键电压,以便得到正确的音符。

示波器:
示波器有助于直观地观察器件输出的数字和模拟信号,以诊断出电路中可能存在的故障,也能方便排除效果中的干扰信号。

本次实验主要实现电子琴的播放,首先通过电阻组等元器件来设计一组ADC电路,可
以正确测量到不同键盘上按键时的电压和电流值,读取到的电压值将被转换成十六进制数值,然后根据不同的数值,带入不同的DAC电路,电路会产生不同的模拟信号电压,最后
通过功放芯片,放大成足以听到的电子琴音乐。

在实验制作过程中,使用示波器可以实时地可视化观察我们的设计,检查出是否有任
何可能的故障,以便根据电路图维修,再次检查组装的电路输出是否正常,排除是否有任
何问题电路没有检查出来。

通过综合以上器件,一台不用太多复杂器件,而只要合理连接,即可以让简易电子琴
发出优美的音乐。

由于组装过程及晶体振荡器及ADC,DAC在电路设计上的影响,使得电子
琴的播放声音非常流畅,而且没有太多的驱动电路。

基于8086的简易电子琴设计附汇编源程序

基于8086的简易电子琴设计附汇编源程序

《微机原理与接口技术》综合设计实验报告设计课题:基于8086的简易电子琴设计指导老师:学生姓名:学号:院系:专业:通信工程基于8086的简易电子琴设计摘要在学习《微机原理与接口设计》的基础上,针对课程设计要求,综合运用相关软件、硬件知识,设计一个简易电子琴,使之具有音区切换、数码管显示音区及当前音符、记录音符与音符持续时间、播放录制的音乐等功能。

关键词:8086;电子琴;仿真调试;汇编目录第1章总体方案设计 (1)1.1 系统整体架构图 (1)1.2 功能介绍 (1)第2章硬件设计 (3)2.1 硬件资源 (3)2.2 硬件接线图 (4)2.2.1 8254接线图 (4)2.2.2 8255及键盘、数码管接线图 (4)第3章软件设计 (5)3.1 程序框图 (5)3.1.1 整体框图 (5)3.1.2 延时函数 (6)3.1.3 键盘扫描 (7)3.1.4 数码管显示 (7)3.1.5 声音及时间录制 (8)3.1.6 选择音区(高、中、低) (8)3.1.7 播放音乐 (9)第4章实验结果及演示 (9)第5章遇到的问题及改进措施 (12)5.1 条件转移指令报错 (12)5.2 无法使用8254作为录音时间计数器 (12)附录 (13)程序源码 (13)第1章总体方案设计1.1 系统整体架构图系统整体架构图如图1-1所示。

图1-11.2 功能介绍本实验设计实现了音区切换、数码管显示当前音区及音符、记录音符与音符持续时间、播放录制的音乐等功能。

功能具体说明如下。

按键0-6为音符键,按下后会有对应的音符音调响起,按键弹起后音符终止,此时,按下的音符以及时间将被记录。

按键12,13,14可以选择低音,中音,高音区。

按下按键15后开始播放录制的音符(不超过16个)。

另外数码管0显示音符,数码管2显示音区。

第2章硬件设计2.1 硬件资源TD-PITE 实验教学系统,其主要系统构成如表2-1 所示。

CPU Intel 386EX系统程序存储器:Flash ROM (128KB)存储器数据存储器:SRAM (128KB)信号源单次脉冲:消抖动脉冲 2 组逻辑电平开关与显示16 组电平开关,16 组电平显示LED 灯(正逻辑)8259、8237、8254、8255、8251、DAC0832、ADC0809、SRAM 、键盘扫描及数接口实验单元码管显示、电子发声、点阵LED、液晶LCD(可选)、步进电机(可选)、直流电机、温度控制实验扩展单元 2 组40 线通用集成电路扩展单元、扩展模块总线单元系统电源+5V/2A,±12V/0.2A表2-1 TD-PITE 系统构成系统硬件结构如图2-1 所示。

简易电子琴 实验报告

简易电子琴 实验报告

简易电子琴实验报告简易电子琴实验报告引言电子琴是一种以电子技术为基础的乐器,它能够模拟出各种音调和音色,使得演奏者能够轻松地演奏出美妙的音乐。

在这个实验中,我们将制作一台简易的电子琴,并探索其工作原理和音乐效果。

材料和方法1. 需要的材料:- Arduino开发板- 电子元件:电阻、电容、按钮开关、蜂鸣器等- 连接线和面包板2. 搭建电路:- 将电阻、电容等元件按照电路图连接到Arduino开发板上- 将按钮开关连接到开发板的输入引脚- 将蜂鸣器连接到开发板的输出引脚3. 编写代码:- 使用Arduino开发环境编写程序,实现按下按钮时发出不同音调的功能- 程序中需要定义不同按钮对应的音调频率和持续时间4. 上传程序:- 将编写好的程序上传到Arduino开发板上- 确保程序能够正常运行结果和讨论经过搭建电路和上传程序后,我们成功制作了一台简易的电子琴。

按下不同的按钮,蜂鸣器会发出不同的音调。

通过这个实验,我们深入了解了电子琴的工作原理。

电子琴的核心是Arduino 开发板,它通过接收按钮开关的输入信号,根据程序定义的音调频率和持续时间,控制蜂鸣器发出相应的声音。

在实验过程中,我们还发现了一些问题和改进的空间。

首先,由于使用的是简易的电路和元件,音质并不是很高。

如果使用更高级的电子元件,可能会有更好的音质效果。

其次,我们只实现了按下按钮发出音调的功能,但电子琴还有很多其他功能,比如调节音量、切换音色等,这些功能可以在以后的实验中进一步探索。

此外,通过这个实验,我们也体会到了电子琴对于音乐的重要性。

电子琴的出现,使得音乐演奏变得更加简单和便捷。

它不仅可以模拟出各种乐器的音色,还可以通过编程实现更多创意和变化。

电子琴为音乐爱好者提供了更多的可能性,也为音乐创作带来了新的思路。

结论通过本次实验,我们成功制作了一台简易的电子琴,并深入了解了其工作原理和音乐效果。

虽然这只是一个简单的实验,但它展示了电子琴的魅力和潜力。

数字电子技术综合实验报告——简易电子琴

数字电子技术综合实验报告——简易电子琴

数字电子技术综合实验报告2012--2013学年第二学期姓名:学号:班级:实验时间:实验指导老师:目录一、设计任务 (2)二、设计方案 (2)三、系统框图 (3)四、方案实现 (3)1.乐曲演奏的原理 (3)2.总体方案 (4)五、实验结果 (6)六、方案优化 (7)七、心得体会 (7)附录 (7)1.VHDL源程序 (7)2.各层次原理图 (35)3.编译报告 (40)1题目: 简易电子琴设计摘要电子琴的设计大规模可编程逻辑器件(FPGA )作为系统的核心控制部分通过软件的设计编写然后进行软硬件的调试运行最终达到设计电路的乐器演奏、选歌及显示功能。

设计中采用计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现。

可以用它来弹奏和播放乐曲。

特点是设计思路简单、清晰。

关键字:电子琴 CPLD一、设计任务1.基本要求(1)具有一般弹奏功能;(2)自动播放功能;(3)数码显示音符功能。

2.发挥部分(1)能通过选择键在多首歌曲中选择播放;(2)输出增加功率放大电路,增加歌曲容量;(3)增加音效或节拍可调;(4)无线弹奏。

二、设计方案采用大规模可编程逻辑器件(FPGA),利用quartusII,通过verilog代码实现简易电子琴演奏电路。

2三、系统框图四、方案实现1.乐曲演奏的原理:乐曲演奏的原理:组成乐曲的每个音符的频率值(音调)以及持续时间(音长)是乐曲能持续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续的时间,就可以使扬声器发出持续的乐曲声。

音调的控制频率的高低决定了音调的高低。

音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。

在两个八度音之间,又可分为十二个半音,每半个音的频率比为。

另外,音名A(简谱中的低音6)的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。

由此可以计算出简谱中从低音1至高音1之间的每个音名对应的频率如图所示:3所有不同频率均从同一基准频率分频得到。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简易电子琴——键盘控制电子音响发声、8x8点阵LED灯显示实验报告12281166 崔雪莹 12281161 安容巧 12281183 张佳悦一、实验目的1.了解小键盘的工作原理,学会如何使用小键盘进行控制,熟悉流程和代码编程;2.了解电子音响的发声原理,会利用8253A级联方式控制其发出不同频率的声音;3.了解8X8点阵LED灯的工作原理,学会显示想要显示的文字和图形;4.实验结合8253,8259,8255和小键盘,8*8点阵的应用共同实现。

5.实验目的效果:小键盘触发按键,控制电子音响发出相应频率的声音,8X8点阵LED灯显示相应的内容。

二、实验内容实验主要概述:键盘控制实现两个音部(高音部、低音部)的发声,即:当在键盘上按下‘0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’时,电子音响发出不同频率的低音调,当在键盘上按下‘8’、‘9’、‘A’、‘B’、‘C’、‘D’、‘E’、‘F’时,电子音响发出不同频率的高音调。

同时,在8x8LED灯上显示相应音调对应的‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘A’、‘B’、‘C’、‘D’、‘E’、‘F’。

1.小键盘按键的获取:图1 小键盘原理图小键盘按键获取原理:(1)判断是否有按键按下:若某行为低电平,此时该行某按键对应某列也为低电平,则说明该按键此时被按下。

将8255A的A口PA0-PA3接行0到行3,B口的PB0-PB3接列0到列3。

A口做输出,B口做输入。

将A口输出设置为0000读取B口的此时的值,若不是全为1则说明有按键按下。

无按键按下则等待。

(2)去抖动:延时,等待按键通断引起的抖动消失。

延时后再读B端口,若还有按键闭合,则认为按键已确定。

(3)找到被按下的按键:用逐行扫描的方法读出此时按键相应的值。

从第0行开始,输出0,顺序逐行扫描。

每扫描一行,读入列线值,从0列开始,逐列检查是否为0。

若为0,则表示该列有键按下;若为1,则表示无键按下。

这样按顺序扫描每一行及其列值,直到找到为0列值,则该键就是被按下的键。

计算按键编号。

(4)根据找到的键号,执行键号对应的程序。

2.电子音响发声电子音响发声基本原理:8253A的1工作方式和3方式配合可以产生占空比不同的输出方波,用这种波形可控制电子音响发出不同的音调。

使用通道0和通道2,通道0 的输出OUT0作为通道2的GATE2的门控信号;通道0工作在3方式,产生一定周期的方波信号,通道2 工作在1方式;1方式虽然不是周期输出,但是在GATE2信号上升沿周期出现时,1方式可以重新计数。

通过对这两种工作方式的计数初值的合理设置,通道2可以产生不同频率的周期性信号,来控制扬声器的发声。

当3方式的方波周期大于1方式定时长度时,可通过改变1方式定时时间常数就可以改变方波的占空比(如下图2示);当3方式的方波周期小于1方式定时长度时,1方式总处于定时期间(发声停止)。

图2 波形图3.8x8点阵LED灯显示8x8LED灯的工作原理:只要在行线R1-R8加上高电平,在列线C1-C8加上低电平,则两线交叉点的LED就会发光。

通过此原理我们计算出了‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘A’、‘B’、‘C’、‘D’、‘E’、‘F’所对应的编码方案。

并通过逐列扫描并延迟的方法实现字母的显示。

图3-1 8x8点阵内部结构图图3-2 8x8点阵外部图举一个很简单的例子,将8X8点阵简化为1个平面有64个点图像,来确定其显示的编码形式,如代码中DATA部分的那个大的显示矩阵以“0”来举例说明显示8X8点阵显示过程:图3-2 8x8点阵‘0’显示8X8点阵显示“0”是因为,我们将所有的列都置高电平,然后让需要显示的发光二极管对应的点的行置低电平,其他行的则置高电平,然后把置低电平的行码记为1其他的记0,再从左向右读,则可以得到一个8位的2进制数。

如上图所示,第1行和第8行是00H,第2行和第7行是18H,第3、4、5行都是24H 则“0”显示的编码是:00H,18H,24H,24H,24H,18H,00H三、实验分析与设计1.硬件思路小键盘部分:因为小键盘的读入用的扫描法,4行必须使用输入,4列必须输出,所以我们用到8255的PA0-PA3作为输出,PB0-PB3作为输入。

8255片选接200H。

扬声器发声部分:8253使用级联方式,OUT0接GATE2,OUT2接扬声器,片选接210H。

点阵显示部分:8X8阵列行接A口,列接B口。

中断部分:PC6接MIR5中断。

2.软件分析查询流程图如下:图4-1 主程序图4-2 小键盘子程序图4-3 发声子程序图4-4 8x8LED灯子程序四、实验硬件连线图根据以上描述的硬件设计思路,电路连接线应如下图所示。

图5-1 发声子程序实验连线图图5-2 小键盘子程序(含数码管)实验连接图图5-3 8X8LED灯子程序实验连接图五、实验创意我们应用了小键盘模块、扬声器和8x8点阵LED模块,同时结合8253A定时计数模块,8255并行接口模块,8299中断模块将整个实验联系起来,实现了一个简易电子琴的装置。

同时在8x8点阵显示了按键对应的字符显示,让这个电子琴看起来更加炫!8*8点阵我们最初想随着音调的高低变化亮度和点的多少,在实现的时候发现效果并不明显,所以我们改成随着按键发声来显示对应的字符,效果比之前好得多。

另外,发声频率由8253A写入计数控制,基本音有7个,加上一个高一调,而键盘可控制16个,所以我们分为高音部和低音部,实现了一个转换音的效果,更加人性化。

其实,我们有更高的愿望,比如,我们希望可以小键盘弹奏一首歌后按键实现自动播放整首歌曲的功能,这样就更加完整了,但是因时间和能力关系没能实现。

我们还想用128x64LCD实现一个音阶才的实时变化,希望我们在今后的学习之余回顾这个实验时可以补上这些功能。

六、实验结果演示1.实际实验连线图黄线8255的A口连8*8点阵的行1~8,小键盘的行0~3,红线B口连点阵的列1~8,小键盘的列0~3。

绿线表示8253的级联和cs接法,黑线连接扬声器SIN和out2,中断MIR5接PC6。

2.8x8点阵各字母显示图(部分举例,未全部贴图)(‘2’‘5’‘8’‘9’‘A’‘B’‘D’‘E’)3.声音视频见文件“实验效果视频”。

七、实验体会崔雪莹:本次实验我主要负责程序代码的编写和整个实验的设计,通过此次实验,我对于硬件编程有了更为深入的了解,懂得了怎样编写硬件的较大一点的程序,尤其是写代码的时候一定要思路清晰,明确的知道自己到底想要做些什么,怎么去设计这个实验,通过此次试验对于今后的硬件学习打下了很好的基础。

经过这次试验,我对8255等芯片以及小键盘、8X8LED灯、电子音响的工作原理有了更为全面、更为深刻的理解,锻炼自己独立的利用手上芯片进行独立编程的能力。

实验还有继续改进的地方,我会继续学习,更加深入的去学习和研究。

安容巧:本次试验是接口课中最复杂的一次实验,第一次实验课之前我们小组就去实验室讨论试验内容,确定了试验内容之后开始代码的初步编写。

经过实验课和老师的指导,我们完善了设计方案,经过多次课下小组自己找时间自己做实验,最终完成了试验。

经过这次试验,我们队8255等芯片以及小键盘、8X8LED灯、电子音响的工作原理有了更为全面、更为深刻的理解。

小组一起做实验,一起讨论,让我们学会了团队合作,对以后的学习工作很有帮助。

张佳悦:本实验考查的内容很多,不仅有课堂上所学习的汇编与接口的知识,还对我们团队小组的分工协作提出了很高的要求。

我们小组成员分工明确、各尽所能,为整个设计性实验的完成作出了贡献。

同时,在和小组成员的交流中,我也强化了自己对汇编程序的理解以及对接口知识的巩固。

最后的成果,我个人感到非常满意,达到了预期的效果。

汇编与接口方面还有很多我们不太会用但的确重要的东西需要我们在接下来的学习中深入研究和探索。

_______________________________________________________________________________附件:程序清单(加注释).model small.386DATA SEGMENTKEY_NO DB ?;用来存储按键编号;8*8点阵显示时字符D0 DB 00H,18H,24H,24H,24H,24H,18H,00H ;‘0’D1 DB 00H,18H,18H,18H,18H,18H,18H,00H ;‘1’D2 DB 00H,3CH,20H,20H,3CH,04H,04H,3CH ;‘2’D3 DB 00H,3CH,20H,20H,3CH,20H,20H,3CH ;‘3’D4 DB 00H,24H,24H,24H,3CH,20H,20H,20H ;‘4’D5 DB 00H,3CH,04H,04H,3CH,20H,20H,3CH ;‘5’D6 DB 00H,3CH,04H,04H,3CH,24H,24H,3CH ;‘6’D7 DB 00H,3CH,20H,20H,20H,20H,20H,20H ;‘7’D8 DB 00H,3CH,24H,24H,3CH,24H,24H,3CH ;‘8’D9 DB 00H,3CH,24H,24H,3CH,20H,20H,3CH ;‘9’DA DB 18H,3CH,66H,66H,7EH,66H,66H,66H ;‘A’DB1 DB 00H,1CH,24H,24H,14H,24H,24H,14H ;‘B’DC DB 00H,18H,24H,04H,04H,24H,18H,00H ;‘C’DD1 DB 00H,1CH,24H,24H,24H,24H,1CH,00H ;‘D’DE DB 00H,3CH,04H,04H,3CH,04H,04H,3CH ;‘E’DF DB 00H,3CH,04H,04H,3CH,04H,04H,04H ;‘F’NUMER DB 7FH,5BH,6DH,6FH,40H,77HDIPIN DW0EE8H,0D49H,0BD6H,0B41H,9F7H,8E1H,7E8H,778H,7A6H,700H,66BH,600H,55BH,500H,454H,400H;频率表即计数器计数初值DATA ENDS ;前8个低音,后8个高音CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX, DATAMOV DS, AXCLIMOV DX, 21H ;设置主片中断屏蔽字IN AL, DXAND AL, 11011111B ;使用MIR5OUT DX, ALCALL PREPARE ;调用PREPARE子程序,写入中断向量表LOP:CALL INKEY ;调用INKEY子程序,检测按键CALL SHOWALPHA ;调用SHOWALPHA子程序, 8X8点阵显示字母JMP LOP ;循环MOV AX, 4CH ;程序结束INT 21H;中断服务程序INTER PROC ;中断服务程序,进中断发声PUSH DX ;保护寄存器PUSH AXCLI ;关中断CALL LOUD ;调用发声子程序MOV DX, 20H ;发EOI中断结束命令MOV AL, 20H ;OCW2,非自动结束OUT DX, ALSTI ;开中断POP AXPOP DXIRETINTER ENDP;发声子程序LOUD PROCPUSH AXPUSH DXMOV DX, 213H ;初始化8253通道0MOV AL, 00110110B ;命令字,通道0,3方式OUT DX, ALMOV DX, 210HMOV AX, 0FF40H ;通道0,赋初值8000OUT DX, AL ;先写低字节MOV AL, AHOUT DX, AL ;再写高字节MOV DX, 213H ;初始化8253 通道2MOV AL, 10110010B ;命令字,1方式,方波OUT DX, ALMOV DX, 212H ;通道2MOV SI, OFFSET DIPIN ;频率表首地址送SIMOV AL, KEY_NO ;取键盘编号MOV AH, 0ADD SI, AX ;相加得到键盘编号对应的计数初值MOV AX, [SI] ;取得对应的计数初值,送扬声器发声OUT DX, ALMOV AL, AHOUT DX, ALCALL DELAY ;调用延时子程序MOV DX, 213H ;将通道0的周期改成小于通道二让发声停止 MOV AL, 00110110B ;通道0 3方式OUT DX, ALMOV DX, 210HMOV AX, 00F4H;通道0赋初值500OUT DX, AL ;先写低字节MOV AL, AHOUT DX, AL;再写高字节POP DXPOP AXRETLOUD ENDP;检测键盘子程序INKEY PROCMOV DX, 213H ;按键之前不发声MOV AL, 00110110B ;通道0,3方式OUT DX, ALMOV DX, 210HMOV AX, 01F4H ;通道0赋初值500OUT DX, AL ;先写低字节MOV AL, AHOUT DX, AL ;再写高字节CLIMOV DX, 203H ;初始化8255MOV AL, 10000010B ;A输出,B读入OUT DX, ALMOV DX, 200H ;输出PA为0以便下面获得是否有按键按下MOV AL, 0OUT DX, ALWAIT1:MOV DX, 201H ;读入PB的值IN AL, DXAND AL, 0FH ;屏蔽无关位CMP AL, 0FH ;检测是否有列线为0JZ WAIT1 ;没有按键输入就退出函数CALL DELAY ;调用延时子程序BEGIN2: ;检测按下的是哪一个按键MOV CH, 04H ;循环检测4行MOV CL, 0FFH ;-1,保存按键编码MOV BL, 0EH ;行屏蔽码LOP2:MOV AL, BL ;从第0行开始扫描MOV DX, 200H ;把AL指示的行线置零OUT DX, ALMOV DX, 201HIN AL, DX ;读入列线状态AND AL, 0FH ;屏蔽无关位CMP AL, 0FH ;若某位为0,则表明检测到按键JNZ SAVEADD CL, 4 ;无按键,跳过一行键盘编号SHL BL, 1 ;移动到下一行DEC CH ;行数减一JNZ LOP2 ;继续扫描JMP BEGIN2 ;检测完4行,无按键按下,跳转到等待按键SAVE: ;保存按键号INC CLSHR AL, 1JC SAVE ;得到键盘编号ADD CL, CLMOV KEY_NO, CL ;保存键盘编号STIMOV DX, 203H ;PC6按位置位触发中断MOV AL, 00001101BOUT DX, AL ;发高电平NOPNOPMOV AL, 00001100B ;发低电平OUT DX, ALRETINKEY ENDP;写中断向量表子程序PREPARE PROC NEARPUSH AXCLICLDMOV AX, 0MOV ES, AXMOV DI, 4*35HMOV AX, OFFSET INTERSTOSWMOV AX, SEG INTERSTOSWSTIPOP AXRETPREPARE ENDP;8x8点阵显示子程序SHOWALPHA PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV BL, KEY_NO ;判断是否有按键按下CMP BL, -1 ;寄存器BL中数据与-1比较;大于1则证明有按键,反之则无按键MOV BH, 3FH ;将3FH送到BH中,代表了8X8点阵有64个 JZ END1;初始化8255MOV DX, 203HMOV AL, 10000000B ;A输出,B输出OUT DX, ALNEXT1:MOV BL, 00000001BMOV SI, OFFSET A ;得到偏移量MOV AL, 8MUL LED_NOADD SI, AXMOV CL, 8NEXT:MOV DX, 201HMOV AL, BLOUT DX, ALMOV DX, 200HMOV AL, [SI]OUT DX, ALCALL DELAY1CALL DELAY1CALL DELAY1CALL DELAY1INC SISHL BL, 1DEC CL;刷完8列后就跳出 JNZ NEXTDEC BHJNZ NEXT1END1:POP DXPOP CXPOP BXPOP AXRETSHOWALPHA ENDP;延时子程序DELAY1 PROCPUSH AXMOV AX,0FFHL: DEC AXJNZ LPOP AXRETDELAY1 ENDP;延时子程序DELAY PROC NEARPUSH AXMOV AX, 0FFFFHW: DEC AXJNZ WMOV AX, 0FFFFHW2: DEC AXJNZ W2POP AXRETDELAY ENDPCODE ENDSEND START八、成员分工崔雪莹(第一完成人):整体代码框架,小键盘、中断、8255、显示8x8点阵等代码,撰写的实验报告包括实验目的,实验原理小键盘部分和电子琴发声部分,绘制全部实验原理图、实验流程图和实验连接图,实验分析,实验结果分析和图片,实验的全部代码及注释,实验报告的排版等。

相关文档
最新文档