×

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

消耗积分:0 | 格式:rar | 大小:0.1 MB | 2017-09-06

分享资料个

简易电子琴实验

/* 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++);  // 内循环 
}        // 结束 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !