pic单片机c程序 蜂鸣器 滴滴声音c程序怎么写

21ic官方微信-->
后使用快捷导航没有帐号?
查看: 2460|回复: 5
单片机控制蜂鸣器唱歌,程序里的speak为什么要取反
&&已结帖(0)
主题帖子积分
初级技术员, 积分 81, 距离下一级还需 19 积分
初级技术员, 积分 81, 距离下一级还需 19 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 81, 距离下一级还需 19 积分
初级技术员, 积分 81, 距离下一级还需 19 积分
本帖最后由 luabc 于
10:28 编辑
/********************************************************************
* 文件名&&: 蜂鸣器唱歌.c
* 描述& & :&&该程序实现控制蜂鸣器演奏音乐。& &&&
***********************************************************************/
#include&reg52.h&
#define uchar unsigned char
#define uint&&unsigned int
sbit Speak =P1^2;& && &//蜂鸣器器控制脚  
/*以下数组是音符编码*/
unsigned char code SONG[] ={& && &//祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
& && && && && && && && && && && & //路边的野华不要采
0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,
/********************************************************************
* 名称 : Time0_Init()
* 功能 : 定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振,10ms
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Time0_Init()
TMOD = 0x01;
IE& &= 0x82;
TH0&&= 0xDC;
TL0&&= 0x00;&&
/********************************************************************
* 名称 : Time0_Int()
* 功能 : 定时器中断,中断中实现 Count 加一
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Time0_Int() interrupt 1
TH0 = 0xDC;
TL0 = 0x00;
Count++;& &//长度加1
/********************************************************************
* 名称 : Delay_xMs()
* 功能 : 延时子程序,经过软件调试,测得延时程序大概为55us.
* 输入 : x
* 输出 : 无
***********************************************************************/
void Delay_xMs(uint x)
& & uint i,j;
& & for(i=0; i&x; i++)
& && &&&for(j=0; j&3; j++);
/********************************************************************
* 名称 : Play_Song()
* 功能 : 播放蜂鸣器控制程序
* 输入 : i (选择播放哪首歌曲,0为“祝你平安”,1为“路边的野花你不要采”
* 输出 : 无
***********************************************************************/
void Play_Song(uchar i)
uchar Temp1,Temp2;
Count = 0;& && &//中断计数器清0
Addr = i * 217;
&&Temp1 = SONG[Addr++];
& &&&if (Temp1 == 0xFF)& && && & //休止符
& && &TR0 = 0;
& && &Delay_xMs(100);
& &&&else if (Temp1 == 0x00)& &//歌曲结束符
& && &Temp2 = SONG[Addr++];
& && &TR0 = 1;
& &&&while(1)
& && & Speak = ~S
& && & Delay_xMs(Temp1);
& && & if(Temp2 == Count)
& && &&&Count = 0;
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main()
Time0_Init();& &//定时器0中断初始化
&&Play_Song(1);&&//Play_Song(0)为祝你平安& & Play_Song(1)为路边的野花你不要裁
, , , , , , , ,
主题帖子积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
主题帖子积分
专家等级:结帖率:91%
主题帖子积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
能不能贴一下图啊
不需要别人来证明自己,自己的态度更重要
主题帖子积分
初级技术员, 积分 81, 距离下一级还需 19 积分
初级技术员, 积分 81, 距离下一级还需 19 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 81, 距离下一级还需 19 积分
初级技术员, 积分 81, 距离下一级还需 19 积分
本帖最后由 luabc 于
10:30 编辑
突然明白了,这样不停给蜂鸣器加上高低电平,蜂鸣器振动发声,是不是这样?
突然想起以前自己写的让蜂鸣器发声的程序,只是不断给speak赋1和0,虽然可以发声,但是声音很小。
speak取反和给speak赋1和0有什么区别?
想想,其实效果都一样
主题帖子积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
主题帖子积分
专家等级:结帖率:91%
主题帖子积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
不需要别人来证明自己,自己的态度更重要
主题帖子积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
主题帖子积分
专家等级:结帖率:91%
主题帖子积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
助理工程师, 积分 1125, 距离下一级还需 875 积分
...对的,是靠震动才发声的
不需要别人来证明自己,自己的态度更重要
主题帖子积分
中级工程师, 积分 3499, 距离下一级还需 1501 积分
中级工程师, 积分 3499, 距离下一级还需 1501 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级工程师, 积分 3499, 距离下一级还需 1501 积分
中级工程师, 积分 3499, 距离下一级还需 1501 积分
speak取反、延时就是以一定的频率不断给speak赋1和0,达到改变蜂鸣器音色的目的。因为要让蜂鸣器唱出歌声来,不仅让它响还要控制声音起伏。
学好单片机收入不会低!
时间类勋章
技术新星奖章
人才类勋章
欢快之小溪
发帖类勋章
时间类勋章
技术高手奖章
人才类勋章
社区建设奖章
等级类勋章
突出贡献奖章
等级类勋章
沉静之湖泊
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
热门推荐 /2C语言控制51单片机蜂鸣器播放音乐 - 洪越源代码 - VC源码 - VC源代码
          
您的位置: >>
>> >>C语言控制51单片机蜂鸣器播放音乐
本类下载排行
??????????
总下载排行榜
??????????
C语言控制51单片机蜂鸣器播放音乐
源码等级:
源码大小:108K
源码语言:简体中文
授权方式:免费版
源码类别:VC源码 /
运行环境:Win9x/NT/2000/XP/2003/
源码更新: 9:30:36
页面刷新: 17:44:35
相关连接:
下载次数:535 次
源码介绍:
摘要:VC/C++源码,多媒体技术,51单片机,蜂鸣器
  C语言控制51单片机蜂鸣器播放音乐,另附单片机演奏音乐时音调和节拍的确定方法。压缩包内有两个使用51单片机播放音乐的实验程序源代码,供初学者参考。
立即下载:
相关源码:
注意事项:
?注意:本站源码一律只用鼠标左键打开,否则将不能正常下载!
?如果出现该页无法显示,请多试几次;如果总是不能下载,请点击,谢谢!
?请一定升级到最新版[]才能正常解压本站提供的源码;如有其它问题,欢迎发信.
?由于网站服务器承受能力有限,请其他网站不要直接链接我们提供的源码,谢谢!!额头深刻的皱纹和斑驳的脸庞,让人感受到岁月的无情。
当地人给断掉的鼻子贴上了创口贴,一时在网上走红。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  //**************************************************
  //实验目的:
  //熟悉使用驱动蜂鸣器产生
  //**************************************************
  //**************************************************
  //硬件设置:
  //1、硬件不需设置
  //**************************************************
  //**************************************************
  //*****************定义头文件**********************
  //**************************************************
  #include&PIC.h&
  //**************************************************
  //******************定义配置位*********************
  //**************************************************
  __CONFIG(0x3545);
  //FLASH代码不保护,RB6和RB7为调试模式,FLASH不写保护,数据代码不保护
  //RB3为数字IO口,低电压复位使能,上电延时开,看门狗开,4M晶体XT振荡器
  //**************************************************
  //******************定义常量***********************
  //**************************************************
  #define uchar unsigned char
  #define uint unsigned int
  //***********************************************
  //函 数 名:delayms(uchar time);
  //入口参数:time
  //出口参数:无
  //函数作用:延时
  //说 明:
  //***********************************************
  void delayms(uchar time)
  while(time--)
  for(i=93;i&0;i--){;}
  //***********************************************
  //函 数 名:port_init(void);
  //入口参数:无
  //出口参数:无
  //函数作用:端口初始化
  //说 明:
  //***********************************************
  void port_init(void)
  PORTA=0X00; //RA口输出低电平
  ADCON1=0X07; //设置RA口,RE口为普通IO口
  TRISA=0X00; //设置RA为输出口,关闭并行口
  OPTION=0X8F; //分频给WDT,分频比为128
  //***********************************************
  //函 数 名:buzzer(void);
  //入口参数:无
  //出口参数:无
  //函数作用:产生警报声
  //说 明:
  //***********************************************
  void buzzer(void)
  RA5=1; //RE1输出高电平
  delayms(150);
  RA5=0; //RE1输出低电平
  delayms(50);
  RA5=1; //RE1输出高电平
  delayms(150);
  RA5=0; //RE1输出低电平
  //***********************************************
  //函 数 名:main(void);
  //入口参数:无
  //出口参数:无
  //函数作用:MAIN函数
  //说 明:
  //***********************************************
  void main(void)
  port_init(); //调用端口初始化函数
  while(1)
  buzzer(); //调用报警函数
  delayms(250); //总延时1秒
  CLRWDT(); //清看门狗
  delayms(250);
  delayms(250);
  delayms(250);
  CLRWDT(); //清看门狗
  原文链接:
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
电子工程世界(EEWorld)是一家专为中国电子工程师和电...
23278文章数
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:}

我要回帖

更多关于 pic单片机c程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信