欢迎来到天天文库
浏览记录
ID:60824678
大小:39.50 KB
页数:9页
时间:2020-12-20
《基于51单片机具有存储记忆节拍功能的电子琴源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于51单片机有存储功能的电子琴源程序#include//包含51单片机寄存器定义的头文件sbitP14=P1^4;//将P14位定义为P1.4引脚sbitP15=P1^5;//将P15位定义为P1.5引脚sbitP16=P1^6;//将P16位定义为P1.6引脚sbitP17=P1^7;//将P17位定义为P1.7引脚unsignedcharkeyval;//定义变量储存按键值sbitsound=P3^7;//将sound位定义为P3.7sbitP31=P3^0;//将P31位定义为P3.
2、1引脚sbitP34=P3^4;//将P34位定义为P3.4引脚sbitP35=P3^5;//将P35位定义为P3.5引脚unsignedintC;//全局变量,储存定时器的定时常数unsignedintf;//全局变量,储存音阶的频率unsignedchars;//全局变量,储存节拍//以下是C调低音的音频宏定义#definel_dao262//将“l_dao”宏定义为低音“1”的频率262Hz#definel_re286//将“l_re”宏定义为低音“2”的频率286Hz#definel_mi311//将
3、“l_mi”宏定义为低音“3”的频率311Hz#definel_fa349//将“l_fa”宏定义为低音“4”的频率349Hz#definel_sao392//将“l_sao”宏定义为低音“5”的频率392Hz#definel_la440//将“l_a”宏定义为低音“6”的频率440Hz#definel_xi494//将“l_xi”宏定义为低音“7”的频率494Hz//以下是C调中音的音频宏定义#definedao523//将“dao”宏定义为中音“1”的频率523Hz#definere587//将“re”宏
4、定义为中音“2”的频率587Hz#definemi659//将“mi”宏定义为中音“3”的频率659Hz#definefa698//将“fa”宏定义为中音“4”的频率698Hz#definesao784//将“sao”宏定义为中音“5”的频率784Hz#definela880//将“la”宏定义为中音“6”的频率880Hz#definexi987//将“xi”宏定义为中音“7”的频率53//以下是C调高音的音频宏定义#defineh_dao1046//将“h_dao”宏定义为高音“1”的频率1046Hz#de
5、fineh_re1174//将“h_re”宏定义为高音“2”的频率1174Hz#defineh_mi1318//将“h_mi”宏定义为高音“3”的频率1318Hz#defineh_fa1396//将“h_fa”宏定义为高音“4”的频率1396Hz#defineh_sao1567//将“h_sao”宏定义为高音“5”的频率1567Hz#defineh_la1760//将“h_la”宏定义为高音“6”的频率1760Hz#defineh_xi1975//将“h_xi”宏定义为高音“7”的频率1975Hz/*****
6、*********************************************************函数功能:软件延时子程序**************************************************************/voiddelay20ms(void){unsignedchari,j;for(i=0;i<100;i++)for(j=0;j<60;j++);}/*******************************************函数功能:节拍的
7、延时的基本单位,延时200ms******************************************/voiddelay(){unsignedchari,j;for(i=0;i<250;i++)for(j=0;j<250;j++);}/*******************************************函数功能:输出音频入口参数:F******************************************/voidOutput_Sound(void){C=(50000
8、/f)*10;//计算定时常数TH0=(8192-C)/32;//可证明这是13位计数器TH0高8位的赋初值方法TL0=(8192-C)%32;//可证明这是13位计数器TL0低5位的赋初值方法TR0=1;//开定时T0for(s=0;s<2;s++)delay();//延时200ms,播放音频TR0=0;//关闭定时器sound=1;//关闭蜂鸣器keyval=0xff;//播放按键音频后,将按键
此文档下载收益归作者所有