找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1655|回复: 4
打印 上一主题 下一主题
收起左侧

51单片机温度传感器和蜂鸣器程序结合问题

[复制链接]
跳转到指定楼层
楼主
ID:1007138 发表于 2022-2-27 20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果要时时检测温度到达一个零界点,传出来的温度本来就有延时,而且还要继续显示温度,都会影响蜂鸣器的频率怎么解决void BeepRing() {
        if (Ds18b20ReadTemp() * 0.0625 > 25) {      //大于25°C就报警
                while (1) {
                        beep = ~beep;
                        delay(10);        
                        datapros(Ds18b20ReadTemp());
                        weixuan();
                        if (Ds18b20ReadTemp() * 0.0625 <= 25)   //不大于就推出
                                break;
                }
        }        
}


蜂鸣器部分代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2022-2-27 21:34 | 只看该作者
给你一个思路
  1. bit Beep_On = 0;

  2. void 1微秒中斷() interrupt 1
  3. {
  4.         if(Beep_On)
  5.         {
  6.                 beep = ~beep;
  7.         }
  8.         flag1ms = 1;
  9. }

  10. void main()
  11. {int msCount = 0;
  12. float Temp = 0.0;
  13.         while(1)
  14.         {
  15.                 if(flag1ms)
  16.                 {
  17.                         flag1ms = 0;
  18.                         if(msCount++ >= 1000)
  19.                         {
  20.                                 msCount = 0;
  21.                                 Temp = Ds18b20ReadTemp() * 0.0625;
  22.                                 if(Temp > 25)
  23.                                 {
  24.                                         Beep_On = 1;
  25.                                 }
  26.                                 if(Temp <= 25)
  27.                                 {
  28.                                         Beep_On = 0;
  29.                                 }
  30.                         }
  31.                 }
  32.         }
  33. }
复制代码
回复

使用道具 举报

板凳
ID:213173 发表于 2022-2-27 21:49 | 只看该作者
给你一个示例参考,数码管和LCD任选。 DS18B20温度上下限报警数码 1602显示.rar (182.67 KB, 下载次数: 36)

回复

使用道具 举报

地板
ID:123289 发表于 2022-2-28 15:14 | 只看该作者
音域:20-20K,蜂鸣器不超过10K,周期>100us。
你的CPU执行指令周期远小于100us,如何就不够了呢?
更何况,你使用的是长鸣蜂鸣器,触发一下即能实现鸣叫的起、停,就更不会有冲突了。
一定是你把CPU的大量时间用于等待了!请修改一下程序。
回复

使用道具 举报

5#
ID:1013437 发表于 2022-3-28 10:47 | 只看该作者
wulin 发表于 2022-2-27 21:49
给你一个示例参考,数码管和LCD任选。

感谢感谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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