自己用制冷片做的冷热杯电路开源,源代码部分开源。

2020-01-17 19:03发布

本帖最后由 ziluobu 于 2013-8-9 17:29 编辑

设计了2板电路,多次修改、优化单片机代码。
功能特点:
一、可以加温,加温到40以上,让你在冬天不再喝冷水。
二、可以制冷,将水制冷至相对室温低16度,夏天感受冰爽的感觉。
三、可以精确恒温,制定一个温度值始终恒温到那个值,比如42度,这样冬天不管任何时候都可以喝道温温的水,尤其对有小孩的家庭实用,弄一个小奶瓶放到杯子里,随时都可以给宝宝喝到温暖的奶或水。
四、我是根据某宝 冷热杯 的功能做的,但是我的功能比他的多很多,包括通过PWM防止H桥翻转时损伤制冷片,实时温度显示,USB充电接口,逆向发电电路等。
五、本来想用制冷片的特性做热水发电,但是发现功能不实用。
六、USB接口设计反了,所以焊到背面了,大家注意。
七、电路我全部开源,代码我只开源部分,虽然不是很复杂但是我不希望我的成果被别人拿来做其它用途,可以下载我的HEX文件,也可以自己开发代码。
八、23楼有部分源代码。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
66条回答
ziluobu
2020-01-21 03:58
程序开始,和数码管定义部分。
#include <reg51.h>
#include <intrins.h>
#include <./include/DS18B20.c>
#include <./include/General.c>
//void Int0_Routine(void);

extern unsigned char LEDSHU[12]= {0xc0,
                                                                        0xf9,
                                                                        0xa4,
                                                                        0xb0,
                                                                        0x99,
                                                                        0x92,
                                                                        0x82,
                                                                        0xf8,
                                                                        0x80,
                                                                        0x90,
                                                                        0xBF, //负号 10
                                                                        0xDC, //超过范围符号 11
                                                                        };

unsigned char sz[4]={0};                //缓存数组




unsigned int lengre=2;  //制冷=0 制热=1        无=2
void xs(int x)
{
        unsigned i=0x01;
        unsigned j=0x08;
        int z;
        z=x;
        if(z<0)
        {
            sz[0]=10;
        }else
        {
                sz[0]=x/100%10;       
        }
        //sz[0]=x/100%10;
        sz[1]=z/10%10;
        sz[2]=z%10;
                for(i=0;i<3;i++)                //对三位共阳数码管扫描
                {
                        P3=P3^j;
                        P2=LEDSHU[sz[i]];
                        delay(1);
                        P3=P3^j;
                        j=j<<1;
                }
}

一周热门 更多>