- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 stackdw 64 dup(?)stack endsdata segmentmsg dw -1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axpush dsmov dx, 43h mov al ;8253计数器2读/写计数器16位数模式3 BCD码out dx,almov 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, 1048data endscode segment?assume cs:code, ds:datastart:?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)