您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>C/C++语言编程>

C语言程序如何让蜂鸣器开口说话

大小:0.1 MB 人气: 2017-09-06 需要积分:0

简易电子琴实验

/* ch09-5-1.c- 简易电子琴实验 */
#include     // 包含reg51.h档  
#define LED  P1    // 定义LED位置 
#define SW_Port  P2   // 定义按键位置 
sbit  buzzer=P3^7;   // 声明蜂鸣器位置 
unsigned char  keys;  // 声明变量  
/* 声明音阶阵列 --       Do Re Mi Fa So La Si Do_H  */
unsigned char code tone[]= {115, 102, 91, 86, 77, 68, 61, 57 };
void sound(unsigned char); // 声明发声函数 
void delay8us(unsigned char);// 声明延迟函数 
//====主程序=====================================
main()      // 主程序开始 
{ while (1)    // while循环   
 { LED=SW_Port = 0xff; // 将LED关闭,SW_Port规划成输入埠 
  keys=~SW_Port;  // 读取按键 
  switch (keys)  // 判读 
  { case 0x01:sound(0);break;  // 按下S1,发Do音 
   case 0x02:sound(1);break;  // 按下S2,发Re音 
   case 0x04:sound(2);break;  // 按下S3,发Mi音 
   case 0x08:sound(3);break;  // 按下S4,发Fa音 
   case 0x10:sound(4);break;  // 按下S5,发So音 
   case 0x20:sound(5);break;  // 按下S6,发La音 
   case 0x40:sound(6);break;  // 按下S7,发Si音 
   case 0x80:sound(7);break;  // 按下S8,发高音Do音 
  }  
 }         // while循环结束 
}          // 主程序结束 
//=====发声函数=============================
void sound(unsigned char x)    // 发声函数开始
{ unsigned char i;     // 声明变量 
 LED=SW_Port;      // 点亮LED
 for (i=0;i<60;i++)     // 执行60次 
 { buzzer=0; delay8us(tone[x]); // 蜂 器动作 
  buzzer=1; delay8us(tone[x]);} // 蜂 器不动作 
 LED=0xff;       // 关闭LED
}          // 结束 
//======延迟函数==============================
void delay8us(unsigned char x) // 延迟函数开始 
{ unsigned char i,j;   // 声明变量 
 for (i=0;i   for (j=0;j<1;j++);  // 内循环 
}        // 结束 

非常好我支持^.^

(1) 100%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!