找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19786|回复: 28
收起左侧

求51单片机蜂鸣器和流水灯同时工作的程序。

  [复制链接]
ID:82714 发表于 2015-6-11 13:56 | 显示全部楼层 |阅读模式
求51单片机蜂鸣器和流水灯同时工作的程序。

评分

参与人数 1黑币 +5 收起 理由
天下第一帅 + 5 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:76227 发表于 2015-6-11 17:19 | 显示全部楼层
原理图都没有 让别人怎么给你程序
思路:
看你的是有源蜂鸣器还是无源的。假设是无源的
1.蜂鸣器导通几个到几十个毫秒,再关断  再导通  再关断 轮流运行  写个函数  叫BEEP()
2.流水灯   依次点亮单个LED  LED1ON() delay()  LED2ON()  delay()  LED3ON()  delay()............
函数叫 flow_led()
3.蜂鸣器和LED同时工作  在while(1)里面调用 上面的两个函数  BEEP()  和flow_led()




就行啦

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:60611 发表于 2015-6-11 21:48 | 显示全部楼层
工作的时候,调用蜂鸣器程序后,再调用点灯即可

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:82795 发表于 2015-6-12 10:04 | 显示全部楼层
这类很简单的吧,一般单片机的书上都会有类似程序的

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:83701 发表于 2015-6-23 15:21 | 显示全部楼层
同          问
回复

使用道具 举报

ID:81808 发表于 2015-6-24 08:49 来自手机 | 显示全部楼层
蜂鸣器,就是某个io口的持续震荡。流水灯就是秒级延时以后的io电平变化。要这样的程序,必须明确单片机型号,以及晶振频率,否则有快有慢效果不一定好

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:81808 发表于 2015-6-24 08:50 来自手机 | 显示全部楼层
本帖最后由 yanjibao 于 2015-6-24 08:58 编辑

这个用定时器好一些,定时125us,定时器函数直接翻转io蜂鸣器就会响。累计80次就是10毫秒,在累计100次就是一秒钟了

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:84042 发表于 2015-6-27 10:47 | 显示全部楼层
同问,楼主知道了要告诉我
回复

使用道具 举报

ID:83349 发表于 2015-6-27 13:36 | 显示全部楼层
同时工作其实也有个先后顺序的
回复

使用道具 举报

ID:81808 发表于 2015-6-27 18:09 来自手机 | 显示全部楼层
liuxianbin2015 发表于 2015-6-27 10:47
同问,楼主知道了要告诉我

同问的还有吗,要不要我发布一个。就定在今天晚上吧

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:84096 发表于 2015-6-27 18:27 | 显示全部楼层
分别写蜂鸣器和流水灯的程序,然后在while(1)里调用。。。。

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:110710 发表于 2016-3-25 12:31 | 显示全部楼层
yanjibao 发表于 2015-6-27 18:09
同问的还有吗,要不要我发布一个。就定在今天晚上吧

同求😊
回复

使用道具 举报

ID:110710 发表于 2016-3-25 12:32 | 显示全部楼层
yanjibao 发表于 2015-6-27 18:09
同问的还有吗,要不要我发布一个。就定在今天晚上吧

同求,^O^
回复

使用道具 举报

ID:97438 发表于 2016-3-25 14:20 | 显示全部楼层
我觉得用定时器最好~~~
回复

使用道具 举报

ID:57657 发表于 2016-7-7 12:04 | 显示全部楼层
控制特殊功能寄存器让某IO口输出指定频率,再通过定时器中断控制频率持续时间,中断外添加流水灯程序,要求中断外延迟程序精度高的不得使用此方法。
回复

使用道具 举报

ID:129563 发表于 2016-7-7 15:44 | 显示全部楼层
原理图都没有 让别人怎么给你程序 思路: 看你的是有源蜂鸣器还是无源的。假设是无源的 1.蜂鸣器导通几个到几十个毫秒,再关断  再导通  再关断 轮流运行  写个函数  叫BEEP() 2.流水灯   依次点亮单个LED  LED1ON() delay()  LED2ON()  delay()  LED3ON()  delay()............ 函数叫 flow_led() 3.蜂鸣器和LED同时工作  在while(1)里面调用 上面的两个函数  BEEP()  和flow_led()
回复

使用道具 举报

ID:111634 发表于 2016-7-7 21:37 | 显示全部楼层
先安排流水灯工作,在某个灯亮延时时让蜂鸣器工作。
回复

使用道具 举报

ID:129868 发表于 2016-7-10 10:00 | 显示全部楼层
自己研究吧,多看看大神们的资料
回复

使用道具 举报

ID:111634 发表于 2016-7-10 22:30 | 显示全部楼层
distance1502 发表于 2016-7-10 10:00
自己研究吧,多看看大神们的资料

非常有道理。
回复

使用道具 举报

ID:74784 发表于 2017-8-2 19:01 | 显示全部楼层
楼主问的这个问题不简单
这2天我正好在试验把发声和点led合并在一起
也就是一边叫单片机唱“生日快乐”
同时叫单片机点亮一个led拼凑的心形图案
发现2个子程序的调用会有冲突
相互之间有bug
正在排除中。。。。。
回复

使用道具 举报

ID:213173 发表于 2017-8-3 06:50 | 显示全部楼层
无源蜂鸣器和流水灯同时工作的程序,你自己按实际电路更改设置I/O口
#include <AT89X52.H>                         //单片机头文件
#include <intrins.h>
#define uint unsigned int                 //宏定义变量uint为无符号整型数据(0-65535)
#define uchar unsigned char         //宏定义变量uchar为无符号字符型数据(0-255)
sbit Buzzer=P2^3;                                //蜂鸣器端口定义
bit Buzzer_sign=0;                                //蜂鸣器使能标志位
uint Cnt200us=0;                                //中断计数
void xianshi();                                        //显示子程序声明
void Timer0Init();                                //定时器初始化声明

void main()
{
        Buzzer=1;                                        //蜂鸣器端口初始化
        Timer0Init();                                //定时器初始化
        P1=0xfe;                                        //LED端口初始化
        while(1)
        {
                xianshi();                                //显示子程序
        }
}

void xianshi()                                        //显示子程序
{
        if(Cnt200us>=5000)                        //1秒
        {
                Cnt200us=0;
                P1=_crol_(P1,1);                //循环移位
                Buzzer_sign=1;                        //蜂鸣器使能标志置1
        }
}
void Timer0Init()                                //200微秒@11.0592MHz
{
        TMOD = 0x02;                                //设置定时器8位自动重载模式
        TL0  = 0x48;                                //设置定时初值
        TH0  = 0x48;                                //设置定时重载值
        TF0  = 0;                                        //清除TF0标志
        TR0  = 1;                                        //定时器0开始计时
        EA=1;                                                //开总中断
        ET0=1;                                                //开定时器0中断       
}
void timer0() interrupt        1                //中断服务程序
{
        static uint count;
        Cnt200us++;
        if(Buzzer_sign==1)                        //如果蜂鸣器使能标志1
        {
                count++;                                //定时器中断变量自+1
                Buzzer=~Buzzer;                        //蜂鸣器端口取反
                if(count>=1000)                        //持续鸣0.2秒
                {
                        count=0;                        //计数清0       
                        Buzzer_sign=0;                //蜂鸣器使能标志清0                               
                        Buzzer=1;                        //蜂鸣器端口清0
                }
        }
}
回复

使用道具 举报

ID:217820 发表于 2017-8-3 09:40 | 显示全部楼层
用定时器,如果需要的话,可以加我QQ 3110312640
回复

使用道具 举报

ID:137261 发表于 2017-8-5 11:17 | 显示全部楼层
蜂鸣器的节奏是啥啊?只是响就行了?
回复

使用道具 举报

ID:223754 发表于 2017-8-5 12:29 | 显示全部楼层
先写好一个蜂鸣器的子程序,然后在写LED点亮程序后面的同时调用蜂鸣器子程序即可。
回复

使用道具 举报

ID:225626 发表于 2017-8-7 23:03 | 显示全部楼层
意思是亮一个灯,蜂鸣器响同样的时间?
回复

使用道具 举报

ID:283193 发表于 2018-2-8 20:59 | 显示全部楼层
#include"reg51.h"  #include"intrins.h"  #include"stdio.h"  typedef unsigned char u8;  typedef unsigned int  u16;    #define led P2  sbit beep=P1^5;  void delay(u16 i)  {     while(i--); }    void main() {       int i;    led=0xfe;    delay(100000);    while(1)     {          for(i=0;i<7;i++)           {                 led=_crol_(led,1);            delay(100000);           }         }            led=0;     delay(50000);    while(1)    { beep=~beep;                 delay(10);   } }
回复

使用道具 举报

ID:286030 发表于 2018-2-28 16:22 | 显示全部楼层
可以在论坛里面找找应该有这方面的内容
回复

使用道具 举报

ID:285815 发表于 2018-2-28 17:41 | 显示全部楼层
如果蜂鸣器和流水灯使用的IO不同的话,可以分别写出函数,再在主函数中调用即可,
回复

使用道具 举报

ID:265915 发表于 2018-2-28 20:30 | 显示全部楼层
这个书上和网上有资料,只要把单独的流水灯和蜂鸣器程序合并就行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表