独闷闷网

 找回密码
 立即注册
搜索
查看: 14874|回复: 12
打印 上一主题 下一主题
收起左侧

[分享] 纯手工打造,51单片机智能热水器控制系统

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-4 10:01:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
/********************************************************************************************
名    称:智能热水器控制系统
功    能:
                 1、数码管显示当前北京时间。可对时间进行修改。
                  2、设定时间,到达设定的时间开始加热。
                  3、设定温度,到达设定的温度值,停止加热。
                  4、加热完毕后,蜂鸣器报警提示,温度控制在设定温度+-5度变化。(+-5度还是温度采样的                        精度,只是为了不让继电器平凡跳动)
                  5、DS1302备用电池电量用完时,蜂鸣器报警。并在数码管上显示E002代码
                  6、发热体好坏判别,如果坏了,蜂鸣器报警,并在数码管上显示E001代码。
                  7、没有水的情况下,不加热,并且蜂鸣器发出报警。
                  8、数码管显示6个窗口。
                       窗口1:显示当前的北京时间
                       窗口2:显示设定的时间
                       窗口3:显示设定的温度
                       窗口4:显示设定的水温
                       窗口5:显示错误代码
                       窗口6:显示开机画面
                  9、按键采用了:单击,长按,短按。最多一个按键实现三个功能。
作    者:肖亚平
创建时间:2014年11月11日
修改时间:2014年3月4日   

备    注:程序是在鸿哥程序基础上改过来的。
            
**************************************************************************************************/
















热水器程序——测试.zip (123.57 KB, 下载次数: 1142)



主要器件说明:
1、STC89C52单片机作为主控芯片
2、ADC0832
  · 8位分辨率
. 逐次逼近式A/D转换器
· 双通道A/D转换;
· 输入输出电平与TTL/CMOS相兼容;
· 5V电源供电时输入电压在0~5V之间;
· 工作频率为250KHZ,转换时间为32μS;
· 一般功耗仅为15mW;
芯片接口说明:
· CS_片选使能,低电平芯片使能。
· CH0 模拟输入通道0,或作为IN+/-使用。
· CH1 模拟输入通道1,或作为IN+/-使用。
· GND 芯片参考0 电位(地)。
· DI 数据信号输入,选择通道控制。
· DO 数据信号输出,转换数据输出
· CLK 芯片时钟输入。
· Vcc/REF 电源输入及参考电压输入(复用)。
ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。
单片机对ADC0832 的控制原理
正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能详见官方资料。
3、DS1302实时时钟芯片(用于用准确的时间


DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
结构DS1302的引脚排列,其中Vcc2为主电源,VCC1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。 下图为DS1302的引脚功能图





     4、温度采用NTC10K热敏电阻

          10K温度阻值对应表.zip (4.14 KB, 下载次数: 1)


    5、继电器
         由于是热水器,发热体的功率比较大,所以就选用:12V、40A
         注:原理图和中的继电器驱动用的是低电平,程序中用的是高电平。
     
     6、数码管

          共阳极数码管,PNP三极管做驱动。中间两点是时间的秒,要单独用一个I/O控制。


          为什么要单独用一个I/O口控制?
          因为:中间两点闪亮一下就是1S,不可以放在P0数据端口,这样数码管要500MS才扫描一次,数码管会闪烁,所以要单独用一个I/O来控制。file:///d:/program files/360se6/User Data/temp/092053h8s7spul2post8t5.jpgfile:///d:/program files/360se6/User Data/temp/092053h8s7spul2post8t5.jpg




乐于分享,勇于质疑!
沙发
发表于 2014-12-4 18:37:05 | 只看该作者
顶一下,太牛了
乐于分享,勇于质疑!
板凳
发表于 2014-12-4 18:49:15 | 只看该作者
非常好的作品。
乐于分享,勇于质疑!
地板
 楼主| 发表于 2014-12-5 12:22:36 | 只看该作者

感谢鸿哥的点评,跟着鸿哥的步伐走,尽点微薄之力。下一个将是《基于51单片机的24L01无线温度传输》
乐于分享,勇于质疑!
5#
发表于 2014-12-5 13:40:51 | 只看该作者
xiao_yp2014 发表于 2014-12-5 12:22
感谢鸿哥的点评,跟着鸿哥的步伐走,尽点微薄之力。下一个将是《基于51单片机的24L01无线温度传输》

期待你的分享。
乐于分享,勇于质疑!
6#
发表于 2014-12-15 22:49:31 | 只看该作者
非常棒,我也打算照你的方式练习做一个
乐于分享,勇于质疑!
7#
 楼主| 发表于 2014-12-16 00:01:22 | 只看该作者
xjtuwm@ 发表于 2014-12-15 22:49
非常棒,我也打算照你的方式练习做一个

相互学习                                
乐于分享,勇于质疑!
8#
发表于 2014-12-16 19:07:10 | 只看该作者
还不错。。。。。。
乐于分享,勇于质疑!
回复

使用道具 举报

9#
 楼主| 发表于 2014-12-16 19:24:16 | 只看该作者
着急10 发表于 2014-12-16 19:07
还不错。。。。。。

                                      
乐于分享,勇于质疑!
10#
发表于 2014-12-24 17:48:02 | 只看该作者
请问你怎么检测有没有水?
乐于分享,勇于质疑!
11#
发表于 2014-12-24 19:31:23 | 只看该作者
太牛了,从上次的手工焊接296引脚的视频教程,到现在的作品,非常的赞。支持你,哥们
乐于分享,勇于质疑!
12#
 楼主| 发表于 2014-12-24 21:49:06 | 只看该作者
华菲 发表于 2014-12-24 19:31
太牛了,从上次的手工焊接296引脚的视频教程,到现在的作品,非常的赞。支持你,哥们

谢谢,一起学习。。。。。
乐于分享,勇于质疑!
13#
 楼主| 发表于 2014-12-24 21:50:43 | 只看该作者
安之 发表于 2014-12-24 17:48
请问你怎么检测有没有水?

以前是做了一个干烧检测的,后来没有用了,可能是没有改到功能。
乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-5-3 15:35 , Processed in 0.189893 second(s), 19 queries .

快速回复 返回顶部 返回列表