单片机 生日快乐歌程序.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验名称:生日快乐歌程序 组员名单:A706 指导教室:### 日期:2009年11月10 日 #include<reg52.h> //包含头文件 #define uint unsigned int //宏定义,定义uint 为无符号整形变量 #define uchar unsigned char//宏定义,定义uchar 为无符号字符形变量 sbit BUZZER= P3^6; //定义p3.6 为蜂鸣器输出口 uchar code tab_1[16]={0xFF,0xFB,0xFB,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE, 0xFE,0xFE,0xFE,0xFE}; //定义音调,音调表示一个音符唱多高的频率, 节拍表示一个音符唱多长的时间。 uchar code tab_2[16]={0xF1,0x4,0x90,0xC,0x44,0xAC,0x9,0x34,0x82,0xC8,0x06,0x22,0x56,0x 85,0x9A,0xC1}; //定义音调 uchar code music[32]={8,0,8,9,8,0xB,0xA,0,8,0,8,9,8,0xC,0xB,0,8,0,8,0xF,0xD,0xB,0xA,9,0xE, 0,0xE,0xD,0xB,0xC,0xB,0x0};//定义调用音符数组 uchar code music_L[32]={2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4};// 定义节 拍 uchar a,b; //定义a,b 无符号字符型变量。 void delay(uint v) //延时涵数 { while(v!=0) v--; } void delay1(uint j)//延时涵数 { while(j!=0){j--;delay(180);} } void delay2(uint j)//延时涵数 { while(j!=0){j--;delay1(70);} } /*主涵数*/ main() { uchar k,n,m; //定义无符号字符型变量k,n,m TMOD=0x11; //计数器以方式一工作,16 位计数器 EA=1;//开启所有中断 ET1=1;//允许定时计数器T1 中断 TR1=1;//开启定时计数器T1 while(1)主程序循 { for(k=0;k<32;k++)// 内循环,程序执行32 次《输出32 个音符》。 { n=music[k];//把music[] 的数据读到n m=music_L[k];//把music_L[] 《节拍》的数据读到m a=tab_1[n];//把tab_1[] 《音调》数据读到a b=tab_2[n];//把tab_2[] 《音调》数据读到b delay2(m);//调用延时涵数delay2(),节拍 } } /*定时计数器1 溢出中断服务程序*/ time1 () interrupt 3 using 3 { TH1=a;//把a 的数据读到TH1 ,定时器1 高八位置位 TL1=b;//把b 的数据读到TL1,定时器1 低八位置位 BUZZER=!BUZZER; //蜂呜器取反输出 }

文档评论(0)

150****8099 + 关注
实名认证
内容提供者

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

认证主体卞**

1亿VIP精品文档

相关文档

相关课程推荐