为了不让文章太长,就分开来写了:
根据需求里的分析:
unsigned char receive(void);
processor_data(unsigned char receive_data);
display(temper * data);
unsigned char readkey(void);
temper read_temperature();//use a struct
processor_key(unsigned char key_value);
需要有几个重要的子程序块:
//brief: receive the data from the transfer device
//parameter: NO
//return: Receive Data
unsigned char receive(void);
//brief: processor receive data
//parameter: unsigned char receive_data
//return: NO
processor_data(unsigned char receive_data);
//brief : display temperature value and other message when it working in setting mode.
//parameter: temper * data
//return: NO
display(temper * data);
//brief: read_temperature
//parameter: NO
//return: temper_value
temper read_temperature();//use a struct
define as:
typedef temper{
unsigned char flag;
unsigned int interger[2];
unsigned int decimal;
}
//brief: read keys, get the key-value
//parameter: NO
//return: keys value
unsigned char readkey(void);
//brief: processor key-value
//parameter: unsigned char key-value
//return: NO
processor_key(unsigned char key_value);
定时器,用于系统的定时
输出蜂鸣器的控制
主函数对各个子函数的控制
设定系统状态的全部变量
根据全局变量进行系统的控制
程序报警需求:
1.发现通讯故障时,随时发现随时发出报警声音,
温度过高时也随时发现随时报警,
2.至于水流检测超时,温度过低,井水缺水等故障,平时只是故障LED显示,只有在抽水过程中,
发现以下故障时才发出报警音,也就是说,这几个项目的报警,待机时出现这些问题,只是LED故障显示,
当水塔的水用到0%时,如果这些故障没有消除,就发出报警音,或是待机时没有这些故障,在抽水过
程中,发现其中任何一条才发出声音.
这样的目的是,平时不用人去管理,比如温度低于0度是很正常的,但设置低温时又不建议低
于0度,如果半夜老是在响,那很烦的,
3.另外,关于消音,在一种报警时按了消音,出现另外一种报警时,应该能发出报警音才好.故障
排除后应能自动停止报警
4.关于程序中止抽水,哪怕是手动启动抽水情况下,有以下几种情况都应要停止抽水,
A,水塔水位100%后,停止抽水不报警
B,开始抽水后,水流检测超时,停止抽水并报警
C,抽水时间超过设置时间,停止抽水并报警
D,抽水时通讯故障,停止抽水并报警
E,抽水时温度过低,停止抽水并报警
F,抽水时温度过高.停止抽水并报警
G,抽水时井水位过低,停止抽水并报警
F,手动按了停止抽水时,中止抽水不需要报警
以上抽水时出现任一情况造成停止抽水的,相应的故障LED亮并都必需发出报警声音.程序中止抽
水或是手动中止抽水的,程序应默认水塔里的水要用到0%才开始下一次抽水,防止频繁启动电机.
5.任何故障时,包括LED显示的和喇叭报警的,数码管闪烁,频率2HZ左右,这样更显眼,
6.关于LED水位显示,我记得提过,40%亮时,40%以下的几个LED都亮.依此类推,这样更直观的显示水位
7.0%接口功能保留,有些报警情况下这个水位指示有意义
8.抽水时让喇叭发出响0.5秒,停2秒的报警吧,作为工作提示.抽水结束自动停止声音提示.
文章评论(0条评论)
登录后参与讨论