/******************************************************************************************** 名 称:智能热水器控制系统 功 能: 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日 备 注:程序是在鸿哥程序基础上改过来的。 **************************************************************************************************/ 主要器件说明: 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 |
jianhong_wu 发表于 2014-12-4 18:49
非常好的作品。
xiao_yp2014 发表于 2014-12-5 12:22
感谢鸿哥的点评,跟着鸿哥的步伐走,尽点微薄之力。下一个将是《基于51单片机的24L01无线温度传输》
xjtuwm@ 发表于 2014-12-15 22:49
非常棒,我也打算照你的方式练习做一个
着急10 发表于 2014-12-16 19:07
还不错。。。。。。
华菲 发表于 2014-12-24 19:31
太牛了,从上次的手工焊接296引脚的视频教程,到现在的作品,非常的赞。支持你,哥们
安之 发表于 2014-12-24 17:48
请问你怎么检测有没有水?
欢迎光临 独闷闷网 (http://dumenmen.com/) | Powered by Discuz! X3.2 |