资源简介
该设计采用AT89C51(AT89C51数据手册)单片机作为主控制芯片,外接灯光闪烁功能和8音调键。
代码片段和文件信息
#include //包含51单片机寄存器定义的头文件
sbit P14=P1^4; //将P14位定义为P1.4引脚
sbit P15=P1^5; //将P15位定义为P1.5引脚
sbit P16=P1^6; //将P16位定义为P1.6引脚
sbit P17=P1^7; //将P17位定义为P1.7引脚
unsigned char keyval; //定义变量储存按键值
sbit sound=P3^7; //将sound位定义为P3.7
unsigned int C; //全局变量,储存定时器的定时常数
unsigned int f; //全局变量,储存音阶的频率
//以下是C调低音的音频宏定义
#define l_dao 262 //将“l_dao”宏定义为低音“1”的频率262Hz
#define l_re 286 //将“l_re”宏定义为低音“2”的频率286Hz
#define l_mi 311 //将“l_mi”宏定义为低音“3”的频率311Hz
#define l_fa 349 //将“l_fa”宏定义为低音“4”的频率349Hz
#define l_sao 392 //将“l_sao”宏定义为低音“5”的频率392Hz
#define l_la 440 //将“l_a”宏定义为低音“6”的频率440Hz
#define l_xi 494 //将“l_xi”宏定义为低音“7”的频率494Hz
//以下是C调中音的音频宏定义
#define dao 523 //将“dao”宏定义为中音“1”的频率523Hz
#define re 587 //将“re”宏定义为中音“2”的频率587Hz
#define mi 659 //将“mi”宏定义为中音“3”的频率659Hz
#define fa 698 //将“fa”宏定义为中音“4”的频率698Hz
#define sao 784 //将“sao”宏定义为中音“5”的频率784Hz
#define la 880 //将“la”宏定义为中音“6”的频率880Hz
#define xi 987 //将“xi”宏定义为中音“7”的频率53
//以下是C调高音的音频宏定义
#define h_dao 1046 //将“h_dao”宏定义为高音“1”的频率1046Hz
#define h_re 1174 //将“h_re”宏定义为高音“2”的频率1174Hz
#define h_mi 1318 //将“h_mi”宏定义为高音“3”的频率1318Hz
#define h_fa 1396 //将“h_fa”宏定义为高音“4”的频率1396Hz
#define h_sao 1567 //将“h_sao”宏定义为高音“5”的频率1567Hz
#define h_la 1760 //将“h_la”宏定义为高音“6”的频率1760Hz
#define h_xi 1975 //将“h_xi”宏定义为高音“7”的频率1975Hz
/**************************************************************
函数功能:软件延时子程序
**************************************************************/
void delay20ms(void)
{
unsigned char ij;
for(i=0;i<100;i++)
for(j=0;j<60;j++)
;
}
/*******************************************
函数功能:节拍的延时的基本单位,延时200ms
******************************************/
void delay()
{
unsigned char ij;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
;
}
/*******************************************
函数功能:输出音频
入口参数:F
******************************************/
void Output_Sound(void)
{
C=(46083/f)*10; //计算定时常数
TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法
TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法
TR0=1; //开定时T0
delay(); //延时200ms,播放音频
TR0=0; //关闭定时器
sound=1; //关闭蜂鸣器
keyval=0xff; //播放按键音频后,将按键值更改,停止播放
}
/*******************************************
函数功能:主函数
******************************************/
void main(void)
{
EA=1; //开总中断
ET0=1; //定时器T0中断允许
ET1=1; //定时器T1中断允许
TR1=1; //定时器T1启动,开始键盘扫描
TMOD=0x10; //分别使用定时器T1的模式1,T0的模式0
TH1=(65536-500)/256; //定时器T1的高8位赋初值
TL1=(65536-500)%256; //定时器T1的高8位赋初值
while(1) //无限循环
{
switch(keyval)
{
case 1:f=dao; //如果第1个键按下,将中音1的频率赋给f
Output_Sound(); //转去计算定时常数
break;
case 2:f=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9603 2018-06-01 21:43 电子琴.cpp
相关资源
- EDA课程设计-电子密码锁.zip
- 即时通信.zip
- 北京大学数字电路实验电路仿真数字
- 趴站蹲点\\整站扫描工具(intellitamp
- CC2530原理图元件库.zip
- 远程桌面连接.rdp.zip
- bootstrap3可视化布局系统离线版 .zip
- nostarch1.zip web漏洞实验app
- STM32+8266+连接云平台源码.zip
- 51单片机程序.zip
- Douyin.zip
- 链接.zip
- springboot.zip
- TIJ4-code.zip
- pfx证书一键生成.zip
- 基于8086的交通灯.zip
- batcopyv2.0.zip
- 梯度下降法.zip
- workerman_gameMatch.zip
- BIGEMAP地图器_18@209548.exe.zip
- iAP2SampleSourceR1.zip
- 串口帮助类实现超时机制.zip
- DbVisualizer破解dbvis.puk和dbvis.license.zi
- NI_VISA最新驱动器.zip
- StarRat远控改内存加载免杀源码+成品
- 多端口服务器多个客户端相互聊天.
- 961北航考研全部资料.zip
- 2019美赛B题思路及参考资料.zip
- Crack_Quartus_Prime_Standard_Pro_16.0_Windows密
- qq_33167325_9306649.zip
评论
共有 条评论