标题:
51单片机题目:按下按钮时启动报警并且红灯闪烁,蜂鸣器报警.....
[打印本页]
作者:
940148990
时间:
2018-11-19 10:59
标题:
51单片机题目:按下按钮时启动报警并且红灯闪烁,蜂鸣器报警.....
51单片机题目: 要求:按下按钮时启动报警并且红灯闪烁,蜂鸣器报警,按钮松开,报警解除,绿灯闪烁。
下面附上代码,有没有高手直接修改一下
#include<reg51.h>
void delay(unsigned int i);
sbit K=P0^0;
sbit beep=P1^0;
sbit green=P1^1;
sbit red=P1^2;
void main()
{
green=0;
red=1;
while(1)
{
if(K==0)
{
delay(200);
if(K==0)
{
green=1;
red=0;
beep=0;
delay(100);
red=1;
beep=1;
}
}
else
green=0;
}
}
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
作者:
rfidtest
时间:
2018-11-19 10:59
本帖最后由 rfidtest 于 2018-11-19 13:33 编辑
修改了下main 暂时没有硬件测试 你可以试试
void main() {
green = 0;
red = 1;
beep =1;
unsigned char key =0;
unsigned char key_old =0;//上一次按键状态
unsigned int t=0;//记录循环周期
while (1) {
key = 0;
if (K == 0) {
delay(200);
if (K == 0) {
key = 1;
}
}
if(t++ > 600 || key!= key_old) //调整周期数值 控制闪烁/报警间隔 增加数值增大间隔 按键状态改变立即处理
{
key = key_old;
t = 0;
if(key >0)
{
//报警
green = 1;
red = !red;
beep = !beep;
}
else
{
green = !green;
red = 1;
beep = 1;
}
}
}
}
复制代码
作者:
MMU_FS
时间:
2018-11-19 11:36
#include<reg51.h>
void delay(unsigned int i);
void init(void);
sbit K=P0^0;
sbit beep=P1^0;
sbit green=P1^1;
sbit red=P1^2;
uint key_flag = 0;
uint led_flag = 0;
void main()
{
init();
while(1)
{
if((K == 0) && (key_flag == 0))
{
delay(200);
if(K == 0)
{
beep=0;
key_flag = 1;
led_flag = 1;
}
}
if((k != 0) && (key_flag == 1))
{
beep=1;
key_flag = 0;
led_flag = 0;
}
}
}
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
void init(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(++count >= 20)
{
count = 0;
if(led_flag)
{
green =~green;
}
else
{
red =~red;
}
}
}
作者:
冰冰洁洁
时间:
2018-11-19 11:45
你这个程序红灯是会闪烁的,绿灯也同上处理下就行了,频率加点修改一下 #include<reg51.h> void delay(unsigned int i); sbit K=P0^0; sbit beep=P1^0; sbit green=P1^1; sbit red=P1^2; void main() { green=0; red=1; while(1) { if(K==0) { delay(200); if(K==0) { green=1; red=0; beep=0; delay(100); red=1; beep=1; } } else {green=0; beep=1; delay(100); green=1; beep=1;} } } void delay(unsigned int i) { unsigned int k; for(k=0;k<i;k++); }
作者:
693695
时间:
2018-11-19 16:56
哇~刚好需要
作者:
hjh2621845983
时间:
2018-11-19 17:44
派上用成了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1