课程设计无声电子琴_第1页
课程设计无声电子琴_第2页
课程设计无声电子琴_第3页
课程设计无声电子琴_第4页
课程设计无声电子琴_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上计算机硬件技术基础课程设计无声电子琴学 院 名 称: 自动化学院专业: 自动化专业班级: 自动化一班学号: 姓名: 刘通 学号: 姓名: 王少飞 学号: 姓名: 石元婕 学号: 姓名: 袁超 指导教师: 胡青 时间:2015年9月7日至18日专心-专注-专业摘要计算机技术的飞速发展,加快了人类进入信息社会的步伐,改变了世界,改变了人们的工作、学习和生活,对社会发展产生了广发而深远的影响。计算机技术在其他领域中的应用,极大地促进了个学科的发展。有效掌握计算机技术保证了我们可以掌握最先进、最有效的研究开发手段,并影响我们所从事学科的发展。因此,计算机技术基础是我们工科大学

2、生必须掌握的、最重要的基础之一。通过大三上学期对计算机硬件技术课程的学习,我们初步掌握了一些计算机硬件工作的基本原理、汇编语言程序设计方法,建立了微型计算机系统的整体概念,初步形成微机系统软硬件开发的能力。为了更好的理解和掌握学习到的知识,也为了更深入的了解熟悉可编程定时器8254和8255,我们试图通过编程使8255识别输入键值,控制三色四脚发光二极管的发光个数及颜色,并使用八段LED显示音符,同时可无声播放预存的歌曲,同步显示歌曲音符,从而模拟无声电子琴的工作原理。无声电子琴作为音乐领域与科学技术领域结合的技术性产物,也代表了科学发展带来了其他方面的重要影响.,广泛应用于舞美设计、喷泉彩光

3、、音乐软件等诸多方面。无声电子琴虽然“无声”,但可有效烘托氛围,配合音乐节奏,给人以视觉享受。如今,无声电子琴引起了越来越多的关注。本报告首先介绍本次课程设计的目的、意义及任务要求,接着介绍设计功能,然后为各硬件功能简述与硬件电路设计,再次是音乐翻译、曲谱和软件流程图,最后为本组各成员的心得体会。附录是程序清单。目录一课程设计介绍1.1设计目的及意义在学习计算机硬件技术基础的过程中,我们学习了80486微处理器的指令系统,学习了汇编语言的程序设计,学习了输入/输出方式与接口芯片,还学习了外设接口技术,并结合课程实验,熟悉了汇编语言在计算机硬件中的应用,并对8254、8255A、8259A等器件

4、或单独、或配合使用有了一定的了解,还对显示器、键盘等设备的运用有了初步的掌握。在这种背景下,并考虑到计算机硬件技术在自动化专业后续工作学习中的重要地位,进行一次综合性的课程设计的意义自然不言而喻,将所学的知识综合运用起来,既是对这么课程本身的一次复习,更加是对学生个人能力的一次提升。1.2设计要求设计一个无声电子琴,具有低音和高音两组音阶,以4X4键盘模拟电子琴的琴键和功能按键,用户可以随心弹奏曲子,电子琴内部预存两首歌,可以直接播放。在计算机硬件实验系统基础上,自行外扩硬件完成该系统的基本功能,该部分占80分;并在此基础上自行完善和优化系统功能,该部分占20分。基本功能具体要求如下:1.用发

5、光二极管来取代扬声器,每组音阶的7个音调用7组发光二极管来表示,用一个发光二极管表示“DO”, 两个发光二极管排成一列表示“RE”, 以此类推,七个发光二极管排成一列表示“TI”.2.通过按键来选择要播放的曲目,能够通过按键播放,暂停/恢复和停止播放。3.用4X4键盘完成电子琴的所有输入,自行规划按键功能。二设计思路及功能2.1设计思路键盘控制主机模块(8255A)发光二极管LED音符音符音调音乐由音调与音符两部分组成,音调的高低可通过小灯的颜色显示,音符的大小可通过小灯的亮灭个数和LED直接显示。第五片8255A的A口与B口连接7个三色发光二极管,C口连接4X4非编码键盘,四片8255A则控

6、制八段LED。按下按键后,8255A识别按键,从而调用不同的程序模块,使发光二极管按不同的音符与音调变换颜色与明灭,八段LED同步显示音符。当选择播放歌曲时,会无声播放预存的歌曲。2.2总体功能本设计采用4X4非编码键盘,键与对应功能如下:.“0”键,复位键,按下可复位.“1”键,音符键,代表音符“DO”。.“2”键,音符键,代表音符“RE”。.“3”键,音符键,代表音符“MI”。.“4”键,音符键,代表音符“FA”。.“5”键,音符键,代表音符“SO。.“6”键,音符键,代表音符“LA”。.“7”键,音符键,代表音符“TI”。. “8”键,选歌键,按下可播放歌曲1。. “9”键,选歌键,按下

7、可播放歌曲2。. “A”键,暂停键,长按使歌曲播放暂停。. “B”键,继续键,使处于暂停状态的歌曲继续播放。. “C”键,音调键,代表低音调。. “D”键,音调键,代表中音调。. “E”键,音调键,代表高音调。. “F”键,音调键,代表升音调。三色四脚发光二极管按不同的音符与音调变换颜色与明灭:音符DOREMIFASOLATI发光小灯个数1234567音调低音中音高音升调颜色红色绿色蓝色白色八段LED同步显示音符。三硬件设计3.1 8255A的性能原理3.1.1、8255A的结构和功能8255A是一种使用单一的+5V电源、40引脚双列直插式的大规模集成电路芯片,并且是一种通用可编程并行I/O接

8、口芯片。8255内部有3个8位的输入、输出数据端口,即A口,B口和C口。它们均可通过编程设定为输入、输出,且都有数据锁存功能。C口可通过编程分为2个4位的输入/输出口,每个4位口均可单独设定为输入口或输出口,用于传送数据。且根据其控制字的不同,8255有三种不同的工作方式,方式0,方式1,方式2。在本次设计中8255采用方式0 :基本输入输出方式。3.1.2、8255A的方式控制字3.2 4x4非编码键盘工作原理在拓展的实验板上有4行4列非编码键盘,按键的行、列信号用过插孔引出,行信号通过插孔P0-P3引出,列信号用过插孔Q0-Q3引出,4X4非编码键盘电路图如下图所示。3.3 三色

9、LED工作原理8255A并行模块中共有4片8255A芯片,每个8255A芯片的输出控制了两个共阳极8段LED,通过PCI总线接口与其相连,下面为电路图和端口地址,字型码和LED显示颜色选择表格:3.4四脚三色发光二极管三色发光二极管是将3种不同颜色的管芯封装在一起,也分为共阴极和共阳极两种。本设计采用共阳极。共阳极4个引脚的三色发光二极管内部结构下所示,3种发光颜色(红、蓝、绿三色)的管芯正极连接在一起。4个引脚中,1脚为绿色发光二极管的负极,2脚为蓝色发光二极管的负极,3脚为公共正极,4脚为红色发光二极管的负极。使用时,公共正极3脚接VCC,其余引脚按需要接地即可。3.5设计总电路图第5片8

10、255A的PA0PA6接七个四脚三色发光二极管的阳极,为位选;PB0PB3接发光二极管的其余三个输入端,控制二极管颜色;PC0PC3接4X4非编码键盘的Q0Q3,PC4PC7接键盘的P0P3口四软件设计4.1 音符与音调代码音符01234567计数初值00H01H03H07H0FH1FH3FH7FH当处于休止符状态时,没有小灯发光,所以代码为00H;当音符为“DO”时,小灯的计数初值为0000 0001,为01H;当音符为“RE”时,小灯的计数初值为0000 0011,为03H;以此类推,可得出控制7个小灯亮灭的计数初值,即为音符的计数初值。音调低音中音高音升调计数初值0FEH0FDH0FBH

11、0F8H当输入1111 1110(0FEH)至四脚三色LED时,LED的红色端受有效驱动,LED显红光;同理,绿色的计数初值为0FDH,蓝色的计数初值为0FDH。特别地,当LED显白色时,计数初值为1111 1000(0F8H)。4.2 歌曲曲谱4.2.1、Song1:雪绒花3 3 52 2 21 1 54 4 43 0 33 4 56 6 65 5 53 3 52 221 1 54 4 43 3 55 6 71 1 14.2.2、Song2:重庆大学校歌0 6 5 43 6 5 50 6 3 53 1 1 10 6 5 47 7 6 60 1 7 62 2 2 20 5 6 71 3 2 2

12、0 6 5 72 2 2 11 1 1 11 0 0 05 5 1 35 5 5 15 5 5 65 5 5 05 7 1 32 2 2 12 2 2 75 5 5 05 5 1 35 5 5 15 5 5 62 2 2 25 7 1 32 2 2 12 2 2 31 1 1 14.4 模块功能4.4.1、键盘扫描程序由第五片8255A的C口检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测。4.4.2、音符、音调显示程序当有按键按下或播放歌曲时, 第五片8255A的A口送出计数初值送到LED小灯,对应的小灯会有不同的亮灭情况对应着不同的音

13、符;同时,8255的B口送出计数初值,小灯会有不同的颜色对应着不同的音调。4.4.3、八段LED显示程序由四片8255A控制八段LED,当按下“1”键至“7”键时,LED同步显示音符和音调;当播放歌曲时,LED只同步显示音符。4.4.4、音乐播放程序建表分别存放音乐的音符、音调和音符字形码。由8255A扫描按键值,根据扫描确定按得是哪个键,由此确定偏移地址,然后将表中的计数初值送入发光二极管,实现弹奏功能。4.4.5、暂停程序延时去抖动,判断是否有按键选择暂停:如果是,则跳入恢复程序并延时;反之,跳入复位程序。4.4.6、恢复程序延时去抖动,判断是否有按键选择恢复;如果是,则继续播放;反之,返

14、回恢复程序。4.4.7、复位程序延时去抖动,判断是否有按键选择恢复;如果是,则返回键盘扫描程序继续检测;反之,继续播放。4.5 总程序流程图五总结5.1 刘通心得体会在课设大会上,看到胡老师介绍了无声电子琴,就产生了浓厚的兴趣,因为无声电子琴就像一个音乐DJ,通过脉冲来显示音调频率。这也是日常生活中常见的东西,比如大多数的音乐播放器都是采用这种方式来表达,加上我也热爱音乐,所以果断选了此题。本次的课程设计。我主要负责软件部分。一开始和小组讨论整体设计的制作方案,到程序流程的编写,到编写整个程序,最后调试程序。从整个程序编写下来,程序难度并不大,感觉就是大三上学期硬件实验课所学东西的融合。通过本

15、次课设,我又重新熟悉了键盘的原理及扫描键盘的程序编写,熟悉了8255模块,熟悉了实验箱上三色LED灯模块,也对七彩灯的原理及应用有了一定了解。总体来说这算是第一次计算机硬件这门学科的综合应用,加深了我对汇编语言的理解。 一开始拿到题目,我还比较茫然,不知道应该从哪里开始入手。然后我把本次题目要求的功能分成了两个部分,第一个是弹奏键盘的模块,另一个是自动播放音乐的模块。通过分成这两个模块,使得我的思路非常清晰,并且这两个模块都是以前实验课编写过的,所以也相对容易。弹奏键盘模块就是通过按下实验箱上1,2,3,4,5,6,7这七个键,七彩灯会显示出相应的灯的亮灭情况;按下C,D,E,F键,七彩灯会显

16、示不同的颜色来代表不同的音阶及升降号;通过按下8,9键,会进入相应的自动播放歌的功能。按下0键,就复位。实质上这个模块就是一个键盘扫描形成键特征值,再和每个键所代表的特征值进行比较,然后进入子程序。自动播放音乐模块实质上就是依次取表地址,然后在中途加上键盘查寻,来实现暂停,继续和复位的功能。最后再将这两个模块融合在一起就完成了。 在本次设计中,我根据自己的需求也扩展了一些功能。比如加上高中低三个音阶和半音阶使得这个无声电子琴能够弹奏大部分的乐曲,不过本人没学过钢琴,所以也无法弹奏出高难度的乐曲。第二个是我在实验箱上加入了数字显示。因为我觉得仅仅通过看灯的变化,难以识别出所演奏的曲目,加上相应的

17、简谱显示,能够使老师更加清楚是什么音乐,在调试的时候,也容易看出灯是否显示有误。这两个小小的设计使得内容更加丰富有趣。 在本次编写程序过程中,还算顺利。但在编写子模块的时候犯了一个十分愚蠢的错误,就是调了半天的程序,各处打断点,单步调试发现寄存器里的值都是正确的,但是灯就是没有亮,然后又用万用表来测了实验箱上的小灯,都是好的。最后去问了老师,才发现是8255初始化搞错了,控制字写错了,这是最基本,最简单的东西,说明我学得还不够扎实。第二个问题是我在编写自动播放歌模块时,想在中途添加复位功能,但是一开始不知道如何从中途直接跳回主程序,后来通过查阅书籍资料,知道可以用jmp指令直接跳转到末尾的po

18、pa指令,相当于中途弹栈,回到call指令的下面。这也算是小小的收获吧。 最后,总的来说通过本次的设计,将书本上的知识和现实中的功能结合起来,加深了我对计算机硬件这门课程的理解,使我对汇编这门底层的机器语言也更加熟悉,也锻炼了我的逻辑思维和对一个系统的分析能力。我十分珍惜这次机会,也很享受制作过程。最后再次感谢制作过程中老师无偿的给我们提供帮助,也受益匪浅!5.2 王少飞心得体会通过这次课程设计,我学习和掌握了计算机中常用接口电路的应用和设计技术,充分认识理论知识 对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和

19、理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。 本次课程设计,主要是了解可编程外围芯片8255的工作原理,以及学会对RGB七彩小灯和三色LED的应用和设计技术。对微型计算机基本的系统结构、对微型计算机硬软件的工作原理有个整体的认识。 学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。微机原理与接口技术是一门很有趣的课程,任何一个

20、计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。这次课设让我对实验台有了足够的了解,让我知道了实验台上各个模块的用法;而且它还让我对自己动手写程序来控制实验台的运作有了一定的基础。虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我对有关接口的知识将会有一个更广

21、泛的认识,而且它对我以后的学习也会有帮助的。总之,这次课程设计对于我有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。 最后,感谢老师的悉心指导!5.3 石元婕心得体会在本次的计算机硬件技术基础课程设计中,我所担当的任务是翻译音符、参与设计讨论、音调和音符字形码,调试程序和撰写实验报告。我们在大三上学期学习了计算机硬件技术课程,那时候是老师讲的仔细,并且是学习的内容比较基础,所以并不觉得计算机硬件很难。头一次拿到一个感觉比较大

22、的题目,刚开始大家都有点不知所措,虽然以前都学习过这些知识,但是毕竟以前做的实验都是一些很小的程序,然而,这个出租车计费系统却不像以前那个那样简单了,它里面会包含很多小的子程序。所以,我们一开始面临的问题就是,如何将这样一个大的题目细小化,使它分成几个模块,成为我们可以编写的一些子程序。在第一次讨论的过程中,我们主要纠结于如何实现歌曲的暂停、恢复和停止,以及如何理清三者之间的逻辑结构。最后刘通同学通过循环的方法使歌曲在暂停的同时键盘可接收“恢复”信号,使三者逻辑结构清晰。在这两周中,我主要专注于附加功能,就是是八段LED同步显示音符。一开始由于逻辑问题不能显示出数字或者显示出的是乱码,但是单步

23、运行时是可以显示出来的,最后通过全组人的讨论以及老师同学的帮助终于解决了显示的问题。此外,我还想在播放歌曲1或2时八段LED静态显示“SONG01”或“SONG02”,但经常与动态显示音符的程序冲突,显示乱码。虽然到最后还是失败了,但我从中学到了许多,有了不少收获。通过本次计算机硬件课程设计,我们进一步巩固汇编语言的基础知识,以及8255A的常见应用,回顾了键盘的识别和LED的动态显示,了解系统程序设计的各个流程环节,掌握了程序设计的基本思想,提高了硬件编程和逻辑组织能力。同时,通过本次课程设计,让我们一个组凝聚在一起,大家一起思考一起解决问题,在和同组的同学协同配合下也加强了团队工作能力,这

24、当中不仅有专业知识的运用还有一些新奇以及小聪明的想法出现,无论是知识还是能力方面,都收获良多,相信一定对我今后的学习和工作有所帮助。非常感谢我的同组组员、指导教师和给我帮助的同学。5.4 袁超心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,对于自动化的学生而言,计算机硬件技术是一项必须掌握娴熟的学科,因此,此次的课程设计对我们在专业学习十分重要。我们小组选到的题目是无声电子琴,是一个相对容易的题目,不过回顾起此次单片机课程设计,我仍感慨颇多,从选题到定稿,从理论到实践,在

25、整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如用PROTUES绘制电路图不太熟练,不懂分得二极管的正负极,对单片机

26、汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。在此次课程设计中,因为小组成员专业知识掌握程度的不同,所以每个人对应任务的难易也会有所不同,身为学渣的我就做了相应简单的工作,每当看到其他组员为了调试程序通宵夜战,看到他们在实验台辛苦地焊接电路板,而我只能在旁边勉强帮上忙的时候,我都特别惭愧,但更多的是我希望自己以后能认真学好专业知识,能更好的完成任务.当然,我们小组之间的合作还是十分愉快的,最开始的分配任务和完成过程,都考虑到了各自的能力,让我们每个人都十分愉快的参与到了这次课程设计当中。 最后,这次课程设计终于顺利完成了,十分感谢老师的指导和同学的帮助,让我在专业知识

27、的学习上又迈进了一步。附录:程序清单.486PORTA EQU 300HPORTB EQU 304HPORTC EQU 308HCTRL EQU 30CHCODE SEGMENT USE16 ASSUME CS:CODE ORG 1000HBEG:JMP STARTLIGHT1 DB 07H,07H,1FH,03H,03H,03H,01H,01H,1FH,0FH,0FH,0FH,07H,00H,07H,07H,0FH,1FH,3FH,3FH,3FH,1FH,1FH,1FH,07H,07H,1FH,03H,03H,03H,01H,01H,1FH,0FH,0FH,0FH,07H,07H,1FH,1

28、FH,3FH,7FH,01H,01H,01HCOLOR1 DB 0FDH,0FDH,0FDH,0FBH,0FBH,0FDH,0FBH,0FBH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FBH,0FBH,0FDH,0FBH,0FBH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FBH,0FBH,0FBHSANSE1 DB 0B0H,0B0H,92H,0A4H,0A4H,0A4H,0F9H,

29、0F9H,92H,99H,99H,99H,0B0H,0C0H,0B0H,0B0H,99H,92H,82H,82H,82H,92H,92H,92H,0B0H,0B0H,92H,0A4H,0A4H,0A4H,0F9H,0F9H,92H,99H,99H,99H,0B0H,0B0H,92H,92H,82H,0F8H,0F9H,0F9H,0F9HLIGHT2 DB 00H,3FH,1FH,0FH,07H,3FH,0FH,0FH,00H,3FH,07H,1FH,07H,01H,01H,01H,00H,3FH,1FH,0FH,7FH,7FH,3FH,3FH,00H,01H,7FH,3FH,03H,03H,0

30、3H,03H,00H,1FH,3FH,7FH,01H,07H,03H,03H,00H,3FH,1FH,7FH,03H,03H,03H,01H,01H,01H,01H,01H,01H,00H,00H,00H,1FH,1FH,01H,07H,1FH,1FH,1FH,01H,1FH,1FH,1FH,3FH,1FH,1FH,1FH,00H,1FH,7FH,01H,07H,03H,03H,03H,01H,03H,03H,03H,7FH,1FH,1FH,1FH,00H,1FH,1FH,01H,07H,1FH,1FH,1FH,01H,1FH,1FH,1FH,3FH,03H,03H,03H,03H,1FH,7

31、FH,01H,07H,03H,03H,03H,01H,03H,03H,03H,07H,01H,01H,01H,01H COLOR2 DB 0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FBH,0FBH,0FBH,0FDH,0FDH,0FDH,0FCH,0FDH,0FDH,0FDH,0FDH,0FDH,0FBH,0FDH,0FDH,0FBH,0FBH,0FBH,0FBH,0FDH,0FDH,0FDH,0FDH,0FBH,0FBH,0FBH,0FBH,0FDH,0FDH,0FDH,0FDH,0FBH,0FBH,0

32、FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FBH,0FDH,0FDH,0FDH,0FDH,0FBH,0FBH,0FBH,0FBH,0FDH,0FDH,0

33、FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBHSANSE2 DB 0C0H,82H,92H,99H,0B0H,82H,92H,92H,0C0H,82H,0B0H,92H,0B0H,0F9H,0F9H,0F9H,0C0H,82H,92H,99H,0F8H,0F8H,82H,82H,0C0H,0F9H,0F8H,82H,0A4H,0A4H,0A4H,0A4H,0C0H,92H,82H,0F8H,0F9H,0B0H,0A4H,0A4H,0C0H,82H,92H,0F8H,0A4H,0A4H,0A4H,0F9H,

34、0F9H,0F9H,0F9H,0F9H,0F9H,0C0H,0C0H,0C0H,92H,92H,0F9H,0B0H,92H,92H,92H,0F9H,92H,92H,92H,82H,92H,92H,92H,0C0H,92H,0F8H,0F9H,0B0H,0A4H,0A4H,0A4H,0F9H,0A4H,0A4H,0A4H,0F8H,92H,92H,92H,0C0H,92H,92H,0F9H,0B0H,92H,92H,92H,0F9H,92H,92H,92H,82H,0A4H,0A4H,0A4H,0A4H,92H,0F8H,0F9H,0B0H,0A4H,0A4H,0A4H,0F9H,0A4H,0

35、A4H,0A4H, 0B0H,0F9H,0F9H,0F9H,0F9H START:MOV DX,CTRL ;初始化8255 MOV AL,88H OUT DX,AL MOV DX,20CH ;初始化8255(三色LED) MOV AX,80H OUT DX,AL MOV DX,208H MOV AX,05H OUT DX,ALKSCAN:MOV BL,0FEH ;扫描键盘(Q0开始扫描)NXTCOL:MOV AL,BL MOV DX,PORTC OUT DX,AL ;送列信号 CALL DLYS MOV DX,PORTC IN AL,DX ;读行信号 AND AL,0F0H CMP AL,0F

36、0H JNZ FNDKEY ROL BL,1 JC NXTCOL JMP KSCANFNDKEY:AND BL,0FH ;形成键特征值 OR AL,BL CALL DLYS MC: CMP AL,0E7H ;判断高中低音(C,D,E键) JNZ MD MOV DX,PORTB MOV AL,0FEH OUT DX,AL MOV DX,200H MOV AL,0F7H OUT DX,AL JMP KSCAN MD: CMP AL,0D7H JNZ ME MOV DX,PORTB MOV AL,0FDH OUT DX,AL MOV DX,200H MOV AL,0BFH OUT DX,AL JMP

37、 KSCAN ME: CMP AL,0B7H JNZ MF MOV DX,PORTB MOV AL,0FBH OUT DX,AL MOV DX,200H MOV AL,0FEH OUT DX,AL JMP KSCAN MF: CMP AL,077H ;判断半音阶 JNZ K1 MOV DX,PORTB MOV AL,0F8H OUT DX,AL MOV DX,200H MOV AL,7FH OUT DX,AL JMP KSCAN K1: CMP AL,0DEH ;如果等于1键 JNZ K2 MOV DX,PORTA MOV AL,01H OUT DX,AL MOV DX,204H MOV AL

38、,0F9H OUT DX,AL W1:MOV DX,PORTC MOV AL,0F0H OUT DX,AL CALL DLYS MOV DX,PORTC IN AL,DX AND AL,0F0H CMP AL,0D0H JZ W1 MOV DX,PORTA MOV AL,00H OUT DX,AL JMP KSCAN K2: CMP AL,0BEH ;如果等于2键 JNZ K3 MOV DX,PORTA MOV AL,03H OUT DX,AL MOV DX,204H MOV AL,0A4H OUT DX,AL W2:MOV DX,PORTC MOV AL,0F0H OUT DX,AL CAL

39、L DLYS MOV DX,PORTC IN AL,DX AND AL,0F0H CMP AL,0B0H JZ W2 MOV DX,PORTA MOV AL,00H OUT DX,AL JMP KSCANK3: CMP AL,7EH ;如果等于3键 JNZ K4 MOV DX,PORTA MOV AL,07H OUT DX,AL MOV DX,204H MOV AL,0B0H OUT DX,AL W3:MOV DX,PORTC MOV AL,0F0H OUT DX,AL CALL DLYS MOV DX,PORTC IN AL,DX AND AL,0F0H CMP AL,70H JZ W3 M

40、OV DX,PORTA MOV AL,00H OUT DX,AL JMP KSCAN K4: CMP AL,0EDH ;如果等于4键 JNZ K5 MOV DX,PORTA MOV AL,0FH OUT DX,AL MOV DX,204H MOV AL,99H OUT DX,AL W4:MOV DX,PORTC MOV AL,0F0H OUT DX,AL CALL DLYS MOV DX,PORTC IN AL,DX AND AL,0F0H CMP AL,0E0H JZ W4 MOV DX,PORTA MOV AL,00H OUT DX,AL JMP KSCAN K5: CMP AL,0DDH

41、 ;如果等于5键 JNZ K6 MOV DX,PORTA MOV AL,1FH OUT DX,AL MOV DX,204H MOV AL,92H OUT DX,AL W5:MOV DX,PORTC MOV AL,0F0H OUT DX,AL CALL DLYS MOV DX,PORTC IN AL,DX AND AL,0F0H CMP AL,0D0H JZ W5 MOV DX,PORTA MOV AL,00H OUT DX,AL JMP KSCAN K6: CMP AL,0BDH ;如果等于6键 JNZ K7 MOV DX,PORTA MOV AL,3FH OUT DX,AL MOV DX,2

42、04H MOV AL,82H OUT DX,AL W6:MOV DX,PORTC MOV AL,0F0H OUT DX,AL CALL DLYS MOV DX,PORTC IN AL,DX AND AL,0F0H CMP AL,0B0H JZ W6 MOV DX,PORTA MOV AL,00H OUT DX,AL JMP KSCANK7: CMP AL,7DH ;如果等于7键 JNZ K8 MOV DX,PORTA MOV AL,7FH OUT DX,AL MOV DX,204H MOV AL,0F8H OUT DX,AL W7:MOV DX,PORTC MOV AL,0F0H OUT DX

43、,AL CALL DLYS MOV DX,PORTC IN AL,DX AND AL,0F0H CMP AL,70H JZ W7 MOV DX,PORTA MOV AL,00H OUT DX,AL JMP KSCAN K8:CMP AL,0EBH ;播放song1 JNZ K9 CALL SONG1 JMP KSCAN K9:CMP AL,0DBH ;播放song2 JNZ K0 CALL SONG2 JMP KSCANK0:CMP AL,0EEH ;复位键 JNZ KSCAN MOV DX,PORTA MOV AL,00H OUT DX,AL MOV DX,200H MOV AL,0C0H OUT DX,AL MOV DX,204H MOV AL,0C0H OUT DX,AL JMP KSCAN SONG1 PROC NEAR ;第一首歌子模块 PUSHA MOV AH,45 LEA SI,LIGHT1 LEA DI,COLOR1 LEA BX,SANSE1 S1:MOV AL,DI MOV D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论