完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
思路:按键k1,k2,k3分别为数值增大,数值减小,保存为一级报警值 理想效果:K1,K2调整数值,K3保存阈值,当前浓度小于一级报警值,绿色指示灯亮 红色指示灯不亮,蜂鸣器不响。,当当前浓度小于二级报警值大于一级报警值,绿色指示灯闪烁 红色指示灯不亮,蜂鸣器不响。当前浓度大于二级报警值,绿色指示灯不亮 红色指示灯亮,蜂鸣器响 可是现在只有绿色亮无论怎么调整都没有用
程序只选用超限处理,按键模块,还有主程序。
void proc() //超限处理 { if(ch2o/100>=ch2o_H1&&ch2o/100<=ch2o_H2) //当前浓度小于二级报警值大于一级报警值 { while(1) { led_1=0; //绿色指示灯闪烁 红色指示灯不亮 delay(500); led_1=1; delay(500); } led_2=1; beep1=1; //蜂鸣器不响 } else if(ch2o/100>=ch2o_H1) { led_1=1; //红灯点亮 绿灯不亮 led_2=0; beep1=1; //蜂鸣器不响 } else { led_1=0; //对应指示灯点亮 led_2=1; beep1=0; } void key() { if(!key_1) //判断按下 { ms=sec=0; delay(888); //按键延时去抖 if(!key_1) //判断按下 { if(ch2o_H2<700)ch2o_H2++; ms=sec=0; //清楚按键按下计时 重新计时 while(!key_1) //按键判断释放 { show(); proc(); } SectorErase(0x2000); //保存上限值 byte_write(0x2000,ch2o_H2/256); byte_write(0x2001,ch2o_H2%256); if(!key_3) { ms=sec=0; delay(888); //按键延时去抖 if(!key_3) { ms=sec=0; while(!key_3) { proc(); } SectorErase(0x2002); //保存上限值 byte_write(0x2002,ch2o_H2/256); byte_write(0x2003,ch2o_H2%256); } } else { SectorErase(0x2002); byte_write(0x2002,0); byte_write(0x2003,0); proc(); }
}
}
if(!key_2) //判断按下 { ms=sec=0; delay(888); //按键延时去抖 if(!key_2) //判断按下 { if(ch2o_H2>0) ch2o_H2--; ms=sec=0; while(!key_2) //按键判断释放 { show(); proc(); } SectorErase(0x2000); //保存二级报警 值 byte_write(0x2000,ch2o_H2/256); byte_write(0x2001,ch2o_H2%256); if(!key_3) { ms=sec=0; delay(888); //按键延时去抖 if(!key_3) { ch2o_H1=ch2o_H2; ms=sec=0; while(!key_3) { proc(); } SectorErase(0x2002); //保存一级报警值 byte_write(0x2002,ch2o_H1/256); byte_write(0x2003,ch2o_H1%256); } } else { SectorErase(0x2002); byte_write(0x2002,0); byte_write(0x2003,0); proc(); }
} } }
void main() { uchar h,l,h1,l1; LCD1602_cls(); //LCD 1602 调用初始化程序 TMOD=0x21; //配置定时 TH0=0x4c; //50ms 定时赋值 TL0=0x00; ET0=1; TR0=1; TH1=0xfd; //串口波特率定时初始 TL1=0xfd; SCON=0x50; //只发送 EA=1; //打开定时总中断 ES=1; //打开串口中断 TR1=1; h=byte_read(0x2000); l=byte_read(0x2001); //读取保存的数据 ch2o_H2=h*256+l; if(ch2o_H2>700) ch2o_H2=80; h1=byte_read(0x2002); l1=byte_read(0x2003); //读取保存的数据 ch2o_H1=h1*256+l1; while(1) { show(); //显示函数 key(); //按键处理程序 proc(); //超限处理程序 } } |
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
551 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
910 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
575 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
572 浏览 0 评论
1221 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11769 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 20:39 , Processed in 0.565167 second(s), Total 68, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号