历史上的今天
今天是:2024年10月08日(星期二)
2021年10月08日 | 基于51单片机的智能水表
2021-10-08 来源:eefocus
一.硬件方案
本设计主要以51单片机作为主控处理器的智能水表,该水表能够记录总的用水量和单次用水量,当用水量超出设定值时系统发出声光报警提醒,水量报警值能够通过按键进行自行设置,并且存储于AT24C02中,并且可以测量水流速度。测量的结果采用LCD1602液晶显示平显示出来。
主要由51单片机+最小系统+LCD1602液晶显示模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+按键电路+AT24C02芯片模块+水泵驱动电路;如图:

二.设计功能
(1)采用LCD1602液晶显示屏实时显示瞬时水流速、总用水量、本次用水量、水流量限值;
(2)可通过按键设置水流量限值,当本次用水量超过水流量限值时系统发出声光报警提醒;
(3)系统加入AT24C02存储芯片用于存储总用水量,具有掉电存储的功能,能够记录历史总共用水量;
(4)按键说明:“设置”键 :按下进入设置用水量限值;
“加值”键 :当设置时,按下限值+1;
“减值”键 :当设置时,按下限值-1;
“复位”键 :按下后单片机复位,总用水量不会清除;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计
(1)程序流程图

(2)主程序源码
/********************************************************
函数名称:void main()
函数作用:主函数
参数说明:
********************************************************/
void main()
{
if(key_jian==0)
{
delayms(7);
if(key_jian==0)
{
AT24C02_write_date(0,0); //写入【总流量】数据保存
AT24C02_write_date(1,0); //写入【总流量】数据保存
AT24C02_write_date(2,1000/256);//写入【流量限值】数据保存
AT24C02_write_date(3,1000%256);//写入【流量限值】数据保存
}
}
ML2=AT24C02_read_date(0); //读取存储的【总流量】数据
ML2=ML2*256+AT24C02_read_date(1); //读取存储的【总流量】数据
ML2=ML2*256+AT24C02_read_date(2); //读取存储的【总流量】数据
ML_up=AT24C02_read_date(3); //读取存储的【流量限值】数据
ML_up=ML_up*256+AT24C02_read_date(4);//读取存储的【流量限值】数据
LCD_init(); //LCD1602初始化
T0_init(); //定时器初始化
while(1) //死循环
{
scan(); //按键检测处理
if(set_f==0)
display(); //正常显示界面
else
display2(); //设置流量限值
}
}
上一篇:基于51单片机的电梯控制系统
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 现在,家庭有多台电视是常见的,如果家庭成员在房间、客厅都想收看数字收费电视,该怎么办呢?有了综合布线之后,你就不会有这方面的困扰了,而且也可以轻易实现卫星电视和数字电视的交换 ...… 查看全部问答> |
|
印制电路设计中的工艺缺陷 一、焊盘的重叠 1、焊盘(除表面贴焊盘外)的重叠,意味孔的重叠,在钻孔工序会因为在一处多次钻孔导致断钻头,导致孔的损伤。 2、多层板中两个孔重叠,如一个孔位为隔离盘,另一孔位为连接盘(花焊盘),这样 ...… 查看全部问答> |
|
这款来自台湾的Misumi MO-R803摄像头号称全球最小的摄像头。镜头直径为4.4毫米,长为15毫米。后面连有一段可弯曲的蛇形把手,方便你拿取。 不过由于体积的限制,这款摄像头的分辨率只能达到320×240.目前还没有进一步的价格信息。… 查看全部问答> |
|
如题所示,耗了我两个星期,今天终于搞定了串口的驱动,现在我的串口1的串口2都可以正常收发外界的数据了,明天准备上手SD卡驱动的编写。 我的环境:WinCE5.0+S3C2440 我的BSP是厂家由三星的4.2版本的SMDK2440改造而来的。 现在我的SD卡插插槽里 ...… 查看全部问答> |
|
如题 利用延时可以输出正弦波了 但是改用中断方式 却无法输出波形 利用proteus仿真时 下列程序可以输出正弦波 但是频率只有大概40hz 与设计的100hz差很远 请求指教! 附上程序 FLAG BIT 70H DA_SC BIT P1.1 ORG 0000H LJMP MAIN ORG 000BH ...… 查看全部问答> |
|
SYS_INIT(); ---> 这里面将外设时钟都disable了 /* GPIO Configuration */ &nbs ...… 查看全部问答> |




