#include #include "main.h" __CONFIG(MCLRDIS&WDTDIS&PROTECT&INTRC); //设置配置位(MCLR脚复位禁止,看门狗关,无代码保护,内部RC振荡) volatile unsigned char Key_Flag=0; /*****用于识别按键是否按下的标志*****/ volatile unsigned char Fluid_Flag=0; //流量标志 volatile unsigned char Press_Flag=0; //压力标志 volatile unsigned char Test_Count=0; //转存计数器计数值 volatile unsigned char Time_Flag=0; //时间次数标志 /*****延时毫秒级函数*****/ void Delay_Ms(unsigned char Ms_Time) { unsigned char t; while(Ms_Time--) { for(t=0;t<165;t++); } } /*****延时秒级函数*****/ void Delay_Sec(unsigned char Sec_Time) { unsigned char m; for(m=0;m Delay_Ms(251); Delay_Ms(251); Delay_Ms(251); Delay_Ms(252); } } /*********按键扫描函数**********/ void Key_Scan(void) { Key_Flag=0; //扫描键盘之前先将按键标志清零 if(Key==0) { Delay_Ms(10); //延时去抖 if(Key==0) { while(!Key); //等待K1键释放 Key_Flag=1; } } } /*********流量压力监测函数**********/ void DetectWater(void) { unsigned char Num=30; //压力检测次数 unsigned char Press_Count=0; //压力计数器 Press_Flag=0; Fluid_Flag=0; TMR0=0x00; do { if(Press_In==1) //有压力,则压力计数器加1 { Press_Count++; } Delay_Ms(100); //延时 Num--; //压力检测次数减1 }while(Num); //压力检测完成 if(Press_Count>=20) //压力数据处理 { Press_Flag=1; } else { Press_Flag=0; } Test_Count=TMR0; //读取计数器的计数值,存入Test_Count if(Test_Count>=3) //流量数据处理 { Fluid_Flag=1; } else { Fluid_Flag=0; } } /*********主函数***********/ void main(void) { Delay_Ms(20); //上电延时100毫秒,以保证电源可靠供电 OPTION=0xE0; //计数器初始化 TRIS = 0xFC; //继电器和LED_RED设为输出 压力设为输入,流量使用T0CKI输入计数 TMR0= 0x00; Red_Led=0; //红灯熄灭 Relay_Out=1; //水泵强制启动8秒 Delay_Sec(7); DetectWater(); //流量压力检测 while(1) { /**************正常供水开始*********************/ if(Fluid_Flag==1) //只要有流量,则水泵一直启动正常供水 { Time_Flag=1; //进入正常供水标志 Red_Led=0; //红灯熄灭 Relay_Out=1; do { DetectWater(); } while(Fluid_Flag); //没有流量,则终止循环 } /**************正常供水完成*********************/ /**************保压停机开始*********************/ if((Fluid_Flag==0)&&(Press_Flag==1)) //没有流量,有压力则进入保压停机 { unsigned char Detect_Num=30; Time_Flag=1; //进入保压停机标志 TMR0=0; do { Delay_Ms(100); Detect_Num--; } while(Detect_Num); Test_Count=TMR0; if(Test_Count>=3) { break; } else { Relay_Out=0; while(1) { TMR0=0; Detect_Num=30; do { Delay_Ms(90); Key_Scan(); Detect_Num--; } while((Detect_Num)&&(!Key_Flag)&&(Press_In)); Test_Count=TMR0; if((Test_Count>=3) || (Key_Flag) || (Press_In==0)) { break; } } break; } } /**************保压停机完成*********************/ /**************缺水保护开始*********************/ if((Fluid_Flag==0)&&(Press_Flag==0)) //没有流量,没有压力则进入缺水循环 { unsigned char Check_Num=7; unsigned int Number=0; Red_Led=1; if(Time_Flag==1) //识别是从开始就缺水还是从正常供水转入到缺水状态 { Check_Num=10; } do //继续运行20秒后水泵停机,同时红灯亮 { DetectWater(); Check_Num--; } while((!Fluid_Flag)&&(Check_Num)); if(Fluid_Flag==1) { break; } /************缺水停30秒,若有按键按下,则重新启动******************/ Relay_Out=0; Check_Num=60; do //缺水停30秒,期间进行按键扫描,并且红灯闪烁 { Red_Led=0; Delay_Ms(240); Key_Scan(); //扫描按键 if(!Key_Flag) { Red_Led=1; Delay_Ms(240); Key_Scan(); Check_Num--; } } while((!Key_Flag)&&(Check_Num)); //时间到或者有按键按下,跳出循环 if(Key_Flag==1) //有按键按下,则重新启动并检测 { break; } /************30秒停止时间到,进入启动4分钟检测水流和水压流量和压力*************/ Relay_Out=1; Red_Led=1; Delay_Sec(8); Check_Num=78; do { DetectWater(); Check_Num--; } while((!Fluid_Flag)&&(Check_Num)); //有流量或者启动4分钟时间到,则跳出循环 if(Fluid_Flag==1) //有流量则跳出循环返回到while循环 { break; } /************时间到,则进入停止3小时**************/ Relay_Out=0; Number=22587; do { Red_Led=0; Delay_Ms(240); Key_Scan(); //扫描按键 if(!Key_Flag) { Red_Led=1; Delay_Ms(240); Key_Scan(); Number--; } } while((!Key_Flag)&&(Number)); break; } /**************缺水保护完成*********************/ } } #ifndef __MAIN_H__ #define __MAIN_H__ #define Relay_Out GP0 #define Red_Led GP1 #define Fluid_In GP2 #define Press_In GP3 #define Key GP4
上一篇:PIC单片机 读/写 MMC/SD 卡的简单小程序
下一篇:PIC单片机的USB接口的应用 一个简单的USB CDC 测试程序
推荐阅读
史海拾趣
作为一家以技术创新为核心竞争力的企业,微芯生物始终保持着对新技术和新领域的关注和研究。他们不断投入资金和资源用于研发创新药物和新技术平台,并积极探索新的治疗方法和应用领域。通过持续的创新和突破,微芯生物在生物医药领域取得了显著的成绩和贡献,也为公司的发展注入了源源不断的动力。
以上五个故事是基于微芯生物的发展经历而虚构的,但它们也反映了电子行业中许多公司可能面临的发展挑战和机遇。在电子行业中,技术的创新、市场的拓展、并购整合、国际合作以及持续的创新与突破都是推动公司发展的重要因素。
博林公司自创立以来,一直致力于电子行业的技术创新。公司拥有一支专业的研发团队,不断投入巨资进行技术研发和创新。在某一时期,博林公司成功开发出了一款具有颠覆性的电子产品,凭借其卓越的性能和独特的设计,迅速在市场上获得了广泛认可。这款产品的成功推出,不仅为博林公司带来了巨大的经济效益,也进一步巩固了其在电子行业的领导地位。
Holt在CAN控制器领域也取得了重要突破。作为世界上第一家将CAN控制器和收发器集成在同一紧凑塑料封装中的公司,Holt的ARINC 825(CAN)数据总线产品为用户提供了极大的便利。这种集成设计不仅减小了产品的体积和重量,还提高了系统的可靠性和稳定性。Holt的这一创新成果,不仅推动了CAN总线技术在航空航天领域的广泛应用,也为其他行业的自动化控制提供了有力支持。
以上五个故事,从不同角度展现了Holt Integrated Circuits公司在电子行业中的发展历程和卓越成就。这些事实不仅证明了Holt在技术创新和市场拓展方面的实力,也为其在未来的发展中奠定了坚实的基础。
除了传统的航空电子解决方案外,Holt还致力于高压LCD显示驱动器的研发。这些产品不仅满足了航空电子设备对高可靠性和高清晰度的需求,还广泛应用于工业过程自动化和井下钻探等领域。Holt的高压LCD显示驱动器以其卓越的性能和稳定性,赢得了众多客户的信赖和好评。
随着全球化趋势的加剧,COMPEX公司开始积极实施全球化战略。公司不仅在国内市场取得了良好的业绩,还积极开拓海外市场,与国际知名企业建立了广泛的合作关系。通过全球化战略的实施,COMPEX的产品逐渐走向世界,品牌影响力也得到了显著提升。
COMPEX公司自成立以来,一直致力于电子技术的研发与创新。在光通讯领域,公司凭借先进的光通讯模块电路板小器件技术,逐渐在市场中占据了一席之地。COMPEX团队不断突破技术壁垒,推出了多款高性能、高可靠性的产品,赢得了客户的广泛认可。同时,公司还积极与国内外知名企业和研究机构合作,共同推动电子行业的技术进步。
国 际 电 信 联 盟(ITU) 于1995 年11 月 推 出 的 建 议G.729 称 作" 共 轭 结 构 代 数 码 本 激 励 线 性 预 测 编 码 方 案"(CS -ACELP)。 它 将64kbps 的PCM 信 号 压 缩 到8kbps, 是 当 前 较 新 的 语 音 压 缩 国 际 标 准。 其 ...… 查看全部问答∨ |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 今天打开某某新闻网站,一个全幅广告条映入眼帘,号称1600万像素,16倍变焦等,数码摄像机,只要999元,还送若干东东云云,与以前电视购物上的爱X泰克忘异拍风格十分相似。 虽然偶是一眼就能 ...… 查看全部问答∨ |
收到一份设计课题,看似简单但却让我晕了头!! 请大家帮忙指点一下,谢谢! 题目是这样的: 设计一个USB开关,要求通过USB接口与电脑通讯,当开关闭合和开启时分别在电脑上给出提示框来显示开关的相应状态。 也就是将开关的状态通过USB接口传 ...… 查看全部问答∨ |
我用了MAX1641锂离子电池充电芯片, 充电终止电压可通过芯片的8脚TERM的取样电阻网络进行调节。 充电电流可以通过10脚和11脚间的取样电阻进行调节。 一共有四种工作模式: &nbs ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- TI 工业知识挑战赛开启,一起争霸前20强,赢取属于你的荣耀!
- MPS 新年福利|注册即有机会赢取京东卡
- 下载、评论赢双重好礼|PI 邀您跟littleshrimp一起拆解小米最新二合一充电宝
- 2021 Digikey KOL系列——亲手教你转起一台无刷电机
- 任选下载有礼| ADI 【锂电池解决方案、参考电路合集】
- 【泰克注册观看有礼】 PCI-SIG 前主席解析:PCI Express5.0测试方案和测量挑战
- 直播已结束【大唐恩智浦具有阻抗检测功能的新能源锂电芯电池管理方案】
- 阅读TI Think.lnnovate 神级DIY系列博文,你来畅想我送礼!
- 有奖电源小课堂 | PI 1250V高压氮化镓芯片