qq_39136468 2017-06-13 08:39 采纳率: 0%
浏览 1587
已结题

谁能帮我把这个问题完善一下,关于51单片机c的声光报警器!

在这个程序里加一个控制按键,按键按下流水灯和蜂鸣器开始运行,再按下停止运行!可以的话帮我把蜂鸣器发出的声音改成节奏报警!谢谢

#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit beep = P2^7; // P1.2口控制蜂鸣器
Delay(uint);
unsigned int a,b;
unsigned char c;
void delay(unsigned char);
main ()
{
c=0xfe;
while(1)
{
P1=c;
beep=0;
delay(10);
beep=1;
delay(10);
c=_crol_(c,1);
}
}
void leday(unsigned char x)
{
for(a=500;a>0;a--)
for(b=x;b>0;b--);
}
Delay(uint z) //含有发音功能的延时程序
{
uint i, j;
for(j = z; j > 0; j--) {
beep = 0; for(i = 100; i > 0; i--);
beep = 1; for(i = 100; i > 0; i--);
}
}
图片说明

  • 写回答

1条回答 默认 最新

  • 沈泽文 2017-06-15 03:50
    关注

    这个问题可以使用定时器实现,定时器代码请自行百度。
    给是否需要报警做个标志为如。1,报警,0,停止报警,初始化为0
    main函数中可以用一个两个if判断按键是否按下,为什么要用两个,防止误操作
    当检测到按下按键,把标志位置为1,再次按下置为0
    在定时器中可以检测标志位为1时,beep=1就给赋值为0,beep=0就给赋值为1,这样就有节奏了,节奏可以根据你定时器的时长修改,
    检测到标志位为0时,beep等于几是关闭,就给他赋值为关闭把。当然你在按下按钮就把beep关闭了的话这里可以不做处理了

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序