没事焊了一块洞洞板~想做鱼缸定时加氧和温度的控制~
AC~220V做电源~两个固态继电器~板上有5V 6V两个电压分别用7805 7806来输出~1602做界面24C16A做用户数及存储 1302做时钟~18B20做温度传感
两个黑包是继电器,这板有功力了 luosifu 发表于 2012-8-4 18:09 static/image/common/back.gif
提一个小建议,RTC的电池部分,如果用二极管,做到系统有供电的时候从系统外部取电,系统断电的时候由电池供 ...
看了照片,楼主用的是DS1302专用RTC芯片,供电上它本身可以实现外部取电还是电池取电自动切换功能;另外,楼主假若设置
DS1302相关寄存器,还可以外电源供电时,DS1302对电池经行小电流浮充,这样,电池几乎不用换了,永久型:) 呵呵~程序还在使劲憋的过程中~DS1302确实有涓流充电功能~就是没找到中文的说明书~郁闷~还有~
18B20读回来的数*0.0625*10是不是就能精确到小数点后一位了?不晓得怎么计算出负温度~
而且1602现在正在头疼在自定义字符处~说明书写的太笼统~不会操作!
还有~发现~单总线和I2C的这几个IC在去写过程中~不能发生中断~否则会出现异常~
郁闷呀! 生活的旋律 发表于 2012-8-5 20:37 static/image/common/back.gif
呵呵~程序还在使劲憋的过程中~DS1302确实有涓流充电功能~就是没找到中文的说明书~郁闷~还有~
18B20读回来的 ...
写涓流寄存器操作;
/***********************************
函数功能:向DS1302某地址写1字节数据
入口参数:addr,w_dat
出口参数:无
*************************************/
void write_ds1302(unsigned char addr,unsigned char w_dat)
{
DS1302_RST=0;
_nop_();
DS1302_CLK=0;
_nop_();
DS1302_RST=1; //开始操作
inputByte(addr); //写命令字
_nop_();
inputByte(w_dat); //写数据
DS1302_CLK=1; //释放时钟线
_nop_();
DS1302_RST=0;//停止操作
}
void write_power(void)
{
write_ds1302(0x8e,0x00);//写保护寄存器值为允许
write_ds1302(0x90,0xaa); //串4K和2只二极管涓流充电
} 生活的旋律 发表于 2012-8-5 20:37 static/image/common/back.gif
呵呵~程序还在使劲憋的过程中~DS1302确实有涓流充电功能~就是没找到中文的说明书~郁闷~还有~
18B20读回来的 ...
不能精确到小数点后是因为变量类型不对,使用浮点数就好了,或者将整数和小数分开计算;负温度是整数部分为补码;这些DS18B20的手册里都写了。单总线和I2C确实不能中断。1602自定义字符吧?还好,多在网上搜搜PDF参考一下就好了。 xiaoyao_mdj 发表于 2012-8-5 23:21 static/image/common/back.gif
单片机的时钟XTAL1 XTAL2接的是哪里啊?
接的是晶振,晶振藏在单片机下面。 给DS1302的备份电池一般是不能充电的,如果想充电就换超级电容。
24C16的读写操作之前最好关闭中断,这个操作过程不要被轻易打断。
DS18B20的温度是用补码表示的,所以很好处理,你说要乘以0.0625,那就是12bit方式,你乘以0.0625倒不如除以16,这样得到温度的整数部分,然后低4bit稍微处理一下就得到小数点后1位的温度值,这比*0.0625*10要快的多。或者直接把温度值乘以10再除以16,也差不多了。 Paktu 发表于 2012-8-6 15:37 static/image/common/back.gif
给DS1302的备份电池一般是不能充电的,如果想充电就换超级电容。
24C16的读写操作之前最好关闭中断,这个操 ...
"给DS1302的备份电池一般是不能充电的,如果想充电就换超级电容。"
注意,我们说的的浮充.就像一般的碳锌电池一样,照样也能充电。问题就是度量上的问题。
焊功很不错,是不是缺少隔离啊!!!! 焊得很漂亮啊,不过这样焊接比较费时费焊锡。:lol 评分的时候以为自己是NO。1一看都排队了!
好久未见旋律兄发贴了:'(
程序嘛 仔细的慢慢来不急,祝成功:lol 顶,等贴程序出来也仿制一个,呵呵。 焊的不错。
页:
[1]