毕业设计--8253定时器 计数器接口与数字电子琴.doc

毕业设计--8253定时器 计数器接口与数字电子琴.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
毕业设计--8253定时器 计数器接口与数字电子琴

实验要求 实验:8253定时器/计数器接口与数字电子琴 实验目的 加深对课堂教授内容的理解,掌握汇编语言的语法规则; 熟悉所用的计算机系统的操作方法,了解和熟悉8086微处理器的逻辑结构、工作模式、指令系统、汇编语言程序实验、DEBUG程序调试工具; 学习上机调试程序的方法和技巧,提高编程能力。 实验环境 操作系统:DOS、windows98/2000/xp 软件:MASM宏汇编 实验内容 内容:根据提供的音乐频率表和时间表,编写程序控制8253,使其输出连接到扬声器上能发出相应的乐曲。 说明:一个音符对应一个频率。将对应一个音符频率的方波通到扬声器上就可发出这个音符的声音。音符与频率对照表如下图所示: 音符 1 2 3 4 5 6 7 I 频率 524 588 660 698 784 880 988 1048 (利用8253的方式3—“方波发生器”,改变定时器2的计数值来改变声音频率,通过编程来获得声调(频率)和节奏(延时长短),使计算机演奏出音乐来。) 将相应的一种频率的计数初值写入计数器,就可产生对应频率的方波。计数初值计算如下: 计数初值=输入时钟÷输出频率 例如输入时钟采用系统总线上CLK(1.041667MHZ),要得到800HZ的频率,计数初值即为1041667/800。对于每个音符演奏的时间,可以通过软件延时来处理。 8253用于发声的电原理图: 要求:自选曲目,实现该曲目的演奏功能,完成实验报告(电子版:文件类型*.doc)并提交一份完整的程序清单(文件类型:*.asm);实验报告字数不得少于1200字 实验报告内容要求:有实验目的、实验环境、实验内容及主要工作原理(附8253内部结构和引脚图;8253控制字及初始化编程原理;发声程序电路原理图、流程图;主要功能附必要的功能说明。)、实验步骤、实验总结、参考资料。 三、 实验内容 实验线路如下图,8253的CLK2接1.19MHz时钟,GATE2接+5V,OUT2接喇叭。8255的B口PB0 、PB1、PB2、PB3、PB4、PB5、PB6、PB7,分别接开关KK0、KK1、KK2、KK3、KK4、KK5、KK6、KK7,作为电子琴的按键输入。拨动不同的开关,发出相应的音阶。 设定8253的2#通道工作方式为方式3——方波发生器,用于计数一定的方波数,发出七个音阶相应的频率。 8255B口作为输入,工作方式为方式0——基本输入\输出方式。 四、 实验步骤 (1) 编写并输入程序,检查无误后,经汇编、连接后装入系统。 stack segment stack dw 64 dup(?) stack ends data segment msg dw -1 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax push ds mov dx, 43h mov al ;8253计数器2读/写计数器16位数模式3 BCD码 out dx,al mov dx,63h 使用8253实现使用1到8弹奏歌曲 ;其他键退出 data segment ?message? db Use 1 ...?8 to play the music,$ ?frequ dw 524, 588, 660, 698, 784, 880, 988, 1048 data ends code segment ?assume cs:code, ds:data start: ?mov ax, data ?mov ds, ax ? ?lea dx, message ?mov ah, 09h ?int 21h ? ?mov al, ?out 43h, al? ;set the control ? next:?mov ah, 7 ?int 21h ? ?cmp al, 1 ?jb? exit ?cmp al, 8 ?ja? exit ?;get the frequency of the number ?sub al, 30h ?mov ah, 0 ?mov bx, ax ?sub bx, 1 ?shl bx, 1 ?mov cx, frequ[bx] ?;get the counter ?mov ax, 34dch ??????? mov dx, 12h? ;DX:AX=1234DCH=1193180D ??????? div cx ?mov bx, ax?? ;set the counter ? ?mov ax, bx ??????? out 42h, al? ;send the lower ??????? mov al, ah ??????? out 42h, al?

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档