主题:求助编写程序,运行时使PC机成为一架可弹奏的“钢琴”。
3、编写程序,程序运行时使PC机成为一架可弹奏的“钢琴”。当按下数字键0~9时,发出6,7,1,2,3,4,5,6,7,i,十个音调,按‘.’则退出“钢琴”状态。
设计提示:
1)PC机扬声器电路图如下:
61H端口第1位
61H端口第0位 8253 与门 放大器 扬声器
定时器2
计数值(地址42H) 控制字
(先送低位,再送高位) (地址43H)
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形,当与门打开后,经过放大器放大的作用,便可驱动扬声器发出不同频率的音调。要使该音调的声音持续一段时间,只要插入一段延时程序,之后再将扬声器切断(关闭与门)。
另外,要使计算机成为可弹奏的钢琴,需要使用系统调用的01H功能以接收键入字符,并且要建立一张表,使键入字符与频率值构成一个对应关系。
2)程序框图:
键入字符 9 0 1 2 3 4 5 6 7 8
音 符 6 7 1 2 3 4 5 6 7 i
频率值 440 494 524 588 660 698 784 880 988 1048
接收键入字符
↓
是‘.‘键? 到 Y到结束
↓N
键入字符值转化为查表偏移量→BX 结束
↓
常数120000H作被除数→(DX,AX)
↓
查表得频率值作为除数
↓
相除结果作为计数初值→BX
↓
设置8253计数器2的工作模式
↓
装入计数初值
↓
打开与门
↓
延迟一段时间
↓
关闭与门
设计提示:
1)PC机扬声器电路图如下:
61H端口第1位
61H端口第0位 8253 与门 放大器 扬声器
定时器2
计数值(地址42H) 控制字
(先送低位,再送高位) (地址43H)
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形,当与门打开后,经过放大器放大的作用,便可驱动扬声器发出不同频率的音调。要使该音调的声音持续一段时间,只要插入一段延时程序,之后再将扬声器切断(关闭与门)。
另外,要使计算机成为可弹奏的钢琴,需要使用系统调用的01H功能以接收键入字符,并且要建立一张表,使键入字符与频率值构成一个对应关系。
2)程序框图:
键入字符 9 0 1 2 3 4 5 6 7 8
音 符 6 7 1 2 3 4 5 6 7 i
频率值 440 494 524 588 660 698 784 880 988 1048
接收键入字符
↓
是‘.‘键? 到 Y到结束
↓N
键入字符值转化为查表偏移量→BX 结束
↓
常数120000H作被除数→(DX,AX)
↓
查表得频率值作为除数
↓
相除结果作为计数初值→BX
↓
设置8253计数器2的工作模式
↓
装入计数初值
↓
打开与门
↓
延迟一段时间
↓
关闭与门