版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、8255并行接口 B口(端口地址0 x61),音乐程序设计,1.PC机的扬声器驱动系统,与门,8254的2号定时器,7 6 5 4 3 2 1 0,1.193MHz输入脉冲,1,1,1,8255并行接口 B口的第 0 位为1时,定时器开始工作,产生音频信号。,8255并行接口 B口的第 1 位为1时,与门打开,音频信号送到扬声器。,控制扬声器发声,8254是可编程的定时器,有0号、1号、2号共3个可独立编程的16位定时器,还有一个控制字寄存器。,2号定时器工作在方波频率发生器方式,即输出方波信号。 输出方波的频率为:1193180Hz / 计数初值。 向2号定时器写入不同的计数初值,可控制输出
2、方波的频率。,控制字寄存器的I/O端口地址是 0 x43 0号定时器的I/O端口地址是 0 x40 1号定时器的I/O端口地址是 0 x41 2号定时器的I/O端口地址是 0 x42,计数初值是16位的,要分两次写入2号定时器,先写低8位,再写高8位。,8位端口输入函数 inportb( ),函数原型: unsigned char inportb(int portid);,功能: 从地址为 portid 的8位端口输入一个字节(8位), 所读的值是该函数的返回值,由头文件 dos.h 说明。,用法: #include unsigned char b; b = inportb(端口地址);,8位
3、端口输出函数 outportb( ),函数原型: void outportb(int portid ,unsigned char value);,功能:向地址为 portid 的8位端口输出一个字节 (8位),其值为 value,由头文件 dos.h 说明。,用法: #include outportb(端口地址,无符号字符型数据或变量);,音符的定义,音频信号的频率范围是 202000Hz,音乐中使用的频率一般为1311976Hz , 包括中央C调及其前后的4个八度的音程。音符与频率的关系如下表所示。,音长的定义,音长即一个音符持续的时间。 N1 表示全音符 N2 表示半音符 N4 表示4分音
4、符 N8 表示8分音符 N16 表示16分音符,用C语言定义音乐,1 2 3 4 5 6 7 C0 D0 E0 F0 G0 A0 B0,第一小节: D0,N4+N8 , E0,N16 , D0,N16 , C0,N4+N8 , A0,N8,第二小节: G0,N4 , E0,N8 , G0,N8, A0,N4+N8 , C0,N8,源程序,#include #include #include #include #include #include #define N1 64 #define N2 32 #define N4 16 #define N8 8 #define N16 4 #define
5、 END 0,enum NOTES C10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247, C0=262,D0=296,E0=330,F0=349,G0=392,A0=440,B0=494, C1=523,D1=587,E1=659,F1=698,G1=784,A1=880,B1=988, C2=1047,D2=1175,E2=1319,F2=1397,G2=1568,A2=1760,B2=1976 ; typedef enum NOTES SONG; SONG song=D0,N4,E0,N8,D0,N8,C0,N4,A10,N4,G
6、10,N8,E10,N8, G10,N8,A10,N8,C0,N2,A10,N4,A10,N8,C0,N8,G10,N8,A0,N8, E0,N8,G0,N8,D0,N2,E0,N4,D0,N8,E0,N8,G0,N4,E0,N4,G0,N8, E10,N8,G10,N8,A10,N8,C0,N2,A10,N4,A10,N8,C0,N8,A10,N8, A10,N8,D10,N8,E10,N8,G10,N2,D0,N4,D0,N4,G0,N4,A0,N8, G0,N8,F0,N2,G0,N2,A0,N4,G0,N8,E0,N8,D0,N8,E0,N8,C0,N8, A10,N8,D0,N2,E
7、0,N4,G0,N8,E0,N8,G0,N4,E0,N4,G10,N8,E10,N8, G10,N8,A10,N8,C0,N4,A10,N4,A10,N8,C0,N8,D0,N8,A10,N8, C0,N8,E0,N8,D0,N1,END,END;,main() int note=0, fre , dur , control; clock_t goal; while(songnote!=END) fre=songnote; dur=songnote+1; if(kbhit() break; if(fre) /*若频率值fre非0*/ outportb(0 x43,0 xb6); /*初始化2号
8、定时器 */ fre=(unsigned)(1193180L/fre); /*计算计数初值 */ outportb(0 x42,(char)fre); /*先写计数初值的低8位*/ outportb(0 x42,(char)(fre8); /*再写计数初值的高8位*/ control=inportb(0 x61); /*读0 x61的状态*/ outportb(0 x61,control|0 x03); /*将第0位,第1位置1,使喇叭发声*/ ,goal=(clock_t)dur+clock( ); while(goalclock( ); if(dur) outportb(0 x61,con
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目疫情常态化防控管理方案
- 某钢铁厂采购管理规范
- 项目分包单位安全管理方案
- 高边坡开挖及加固防护施工技术方案
- 家具厂研发准则
- 17、长城-【阅读理解练习】26年秋季统编新版四年级上册(含答案)
- 老旧小区综合改造项目施工组织设计
- 电子厂采购管理办法
- 某家电厂质量管理办法
- 师德师风考核指标设计
- 药用炭的稳定性和持久性-洞察分析
- 《孙子兵法》文言文与白话文对照
- 中建基础设施公司“主要领导讲质量”
- 应急通信课件教学课件
- 人教版体育与健康《足球》单元作业设计
- DB34T∕ 2805-2016 焦炉煤气生产硫化钠技术规程
- 国有企业成本管控的优化措施研究
- 示范村建设项目勘察设计后续服务的安排及保证措施
- 收费站机电维护知识讲座
- 非遗文化创意产品设计 课件全套 第1-5章 概述- 非遗文创产品设计案例解析
- 新概念英语第二册+Lesson+4+An+exciting+trip+讲义
评论
0/150
提交评论