计算机综合实践报告(谢周洋).docx

上传人:太** 文档编号:97915229 上传时间:2024-07-08 格式:DOCX 页数:8 大小:61.99KB
返回 下载 相关 举报
计算机综合实践报告(谢周洋).docx_第1页
第1页 / 共8页
计算机综合实践报告(谢周洋).docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《计算机综合实践报告(谢周洋).docx》由会员分享,可在线阅读,更多相关《计算机综合实践报告(谢周洋).docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、四M大学网络散有学浣实验报告题.目计算机综合实践办学学院四川大学电气信息学院学习中心成都职工大学学习中心专 业电气工程及其自动化年 级2009年秋季学生姓名谢周洋学 号DH1092140022011年08月22日实验8253定时器/计数器接口与数字电子琴实验题目:8253定时器/计数器接口与数字电子琴二、实验目的:改变定时器2的计数值来改变声音频率,通过编程 来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲 来。三、实验内容:设计程序让微机演奏一段简单乐曲利用DOS的键盘管理功能。将微机变为一个具有简 单功能的电子琴(选作)。四、.程序设计硬件设计利用实验板上的8253计数/定时器和8

2、255并行接口,定时器8253 利用工作方式3产生一定频率信号,通过可编程的并行外围接口芯片 8255控制频率信号的通断。8255的A 口设置为输出,8255的A 口的低两位用来控制扬声器驱 动,当输出端口的PA0位为“1”或为“0”时,将使控制驱动器的与 门电路接通或关闭,使8253所发出的音频信号能到达驱动器或被阻 断。这样通过控制PAO的变化,可使扬声器接通和断开,控制扬声器 是否能发出声音。止匕外,通过控制PAO的通断时间,就能发出不同的 音长。8255的PA1位为“1”时,控制8253定时器产生驱动扬声器 发声的音频信号,该位为“0”则不发信号。8253有三个定时器,分 为0号、1号

3、和2号定时器,驱动扬声器的是0号定时器,该定时器 工作在方式3,是一个频率发生器,它负责向扬声器发送指定频率的脉冲信号。当8255的PAO和PA1都为1时,8253发出指定频率的声音信号的前提下,声音信号通过与门到达驱动器驱动扬声器发声。硬件原理图如图1所示:图1硬件原理图8255Q0 8255扬声器驱动电路如图2所示。8 7 i rjojooituI-图2扬声器驱动电路软件设计系统要求实现2个功能,电子琴和音乐盒的功能。两者发声的方法 一样,只是一个数据是从键盘读取的,另一个是已经保存好的数据。 首先我们可以用一个子程序实现单个音调的产生,对8253输入不同的 计数初值生成不同频率的波形,然

4、后延时一段时间。电子琴程序主要 是读取键盘按键,根据键值产生不同的音调即可。而乐曲的播放先将 乐曲的音符编码表和节拍编码表建立好的,然后在播放时读取数据O1.单音调子程序SOUND单音调子程序的调用前需要进行以下几个方面工作:1)确定相应的音调所对应的频率,查表可以得到,再由频率得 到对应的8253计数初值。2)确定音长,即一个音符所持续的时间。在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程图如图3所不:图3单音调子程序流程图2.音乐盒程序音乐盒的乐曲播放程序中需要有两组数据支持:一组是频率数据, 一组是节拍时间数据。音符的频率可以通过简谱从频率表中查得。节 拍时间就是音符的持续

5、时间,取决于乐曲的速度和每个音符的节拍数 据。如4/4 (四四拍)中,每小节包括4拍,全音符持续4拍,二分 音符持续2拍,四分音符持续一拍,八分音符持续半拍等。有了音调与频率和时间的关系后,就可以按照乐曲的曲谱将每个 音符的频率和持续的时间定义成两组数据表,然后编程依次取出表中的频率值和节拍值,调用单音调子程序就可依次产生各个音调,播放 出乐曲。在程序中存储几个乐曲数据,根据音乐盒子菜单选择相应的乐曲演奏,读取对应的数据输出。乐曲两只老虎的简谱如下:两只老虎1=C 4/41231|1231|345-3 4 5 - | 56 54 3 1 | 56 54 3 12 5 1 - 2 5 1 -对应

6、的频率数据表Freq、节拍数据表Time如下:TWOTIGERS_TIME DW;乐曲的时间表DWDWTWOTIGERS_FRE DW 2 DUP (524,588,660,524,0);乐曲的频率表DW2 DUP(660, 698, 784, 0)DW2 DUP (784, 880, 784, 698, 660, 524, 0)DW 2 DUP (588, 392, 524, 0), 110 DUP (100), 200, 100, 100, 2002 DUP (50, 50, 50, 50, 100, 100)2 DUP (100, 100,200)outb_p(0x34, 0x43);o

7、utb_p(LATCH&Oxff, 0x40);outb_p (LATCH8, 0x40);outb(inb_p (0x21) &0x01, 0x21) ; /允许接收定时器中断void do_timer(void)这是定时器主程序,用于每隔一段时间后进行某些操作8253. asm:/以下是nasm格式的汇编代码,这个中断处理函数必须用汇编timer_interrupt:push gspush fspush espush dspush ebppush edipush esipush edxpush ecx push ebxpush eax;如果你不在操作系统下使用,以下三行必须删除,否则必须把

8、0x10更改为内核段选择符mov eax, 0x10mov ds, axmov es, axmov al, 0x20out OxaO, al ;发送 E0Iout 0x20, alcall do_timerpop ebxpop ecxpop edxpop esipop edipop ebppop dspop espop fspop gsxor eax, eax iretd实践体会本次微机实验课程设计,使我对微机软硬件结合有了进一步的了 解。原来并不太清楚是什么意思,一直都很模糊,听课本也是很迷茫; 而之前的那些单元实验,也没有都做好。之前做的实验,由于大部分 是验证性的,所以就很被动地去做,甚

9、至并没有想为什么要那样连电 路,内部的代码更没有认真看。这次课程设计,因为要自己去设计整 个过程,所以就不得不去了解学习自己原来并没有真正弄懂的东西。 比如一些程序的代码的意思,汇编语言的逻辑,比如一些芯片的用途。 使我对前面所做的实验有了原理性的了解,回头看一些实验,也知其 然其所以然了。同时对课本上讲的一些内容,不再像以前那样觉得抽 象,通过这次设计,有了具体的理解。同时,我也知道了设计一个项目,应该如何下手。应该先对项目 要求有个全面的了解,知道要做什么,然后根据要求所要涉及到的知 识我们要主动去摄取,结合自己已学过的,再对整体框架有个感知, 心里有数后,进行设计。设计时用流程图,这很重要,这样整个思路 就很清晰,而且是按照软硬件语言的逻辑顺序进行,就很方便。设计 过程可以分模块,不要一开始就想把所有的功能都实现了,应该一个 模块一个模块地实现,再总的连起来,实现最后的总模块。在每个模 块设计时,尽量想到比较简单的设计,简化编程和电路,也可少出错。 对微机是这样,对其他的像数字系统设计,也是一样的。因此,我也觉得微机实验的这种形式的课程设计对我们对微机实验的理解有很大帮助。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁