|
 这是运行照片
这是去掉显示器后的线路板
终结:
1:元件选择;全部选用低功耗低电压的串行模块,包括一总线温度传感器DS18B20,串行时钟DS1302,串行8位笔划液晶显示器SMS0801b(长沙太阳人公司产),及89C2051单片机,原本要增加一个频率输出的湿度传感器,因89C2051代码空间有限而作罢.
2:开发工具,51开发板,KEIL C51,自己用试验板焊的板子(开发完成,试验板就成了成品板了),EP51PRO编程器,XL1000主要用来测试DS18B20及重新熟悉C51程序,因开发板输出端子接触不牢靠,影响DS1302正常读数,故而DS1302其实是在试验板上用烧片的方式完成测试(没有仿真器很苦)
3:程序,全部用C51书写编译(搞习惯了高级语言.写不来汇编了),编译后大约占用了1.84K的代码空间,56字节的XDATA空间,一片89C51正好装下,程序采用模块化设计,显示,数据写入读出,键盘处理全部是集中处理的,使用了一定的编程技巧.
4:功能,参照本人的卡西欧手表的按键操作方式设计了功能模块的显示,调整,切换,
按键一:开机复位后显示时间界面,按一下切换到日期显示,再按是温度,再按是闹钟,再按返回时间界面,若在调整界面则用于调整项目的循环切换;
按键二:在时间,日期,闹钟显示界面下按2秒,出现各自的调整界面,再按2秒退出调整界面,进入调整界面后,要调整的项目0.5秒间隔闪烁;
按键三:调整---数字加1,或启停闹钟(暂不支持连续按键)
按键四:调整---数字减1,或启停闹钟
5:精度,时间精确到秒(具体精度由32.768K晶振决定),闹钟以分为单位响闹,每次响闹20秒,按任意键停止.温度精确到0.5度,分辨率是0.1度
6:电源问题:起初用DC-DC升压模块+两节镍氢电池供电,后测试电池输出电流达20毫安,2400毫安时的电池5天不到就完了, 而89C2051本身只耗7毫安电流,其他模块加起来耗电还不到1毫安,可见DC-DC升压模块的效率实在太低,不具备实用的价值,起码用在电池供电电路要求长期供电的成品中是不行的,后来去掉DC-DC模块,直接用3.7v锂电池供电,则电流减小到3毫安,比原来足足少了6倍之多.
采用3.7v供电后产生了一个问题,到现在还不知道原因,就是板上的模块理论上都支持2.7v的低压,DS1302支持2.5V,但是在实际使用中发现供电电源小于3.6V时,DS1302读数就出现混乱了,离器件手册所说的2.5v相差很大,以至于用锂电池供电都有一定的困难了,因为锂电的放电终止电压有2.75v,用3节镍氢供电存在同样的问题,3节电池总电压是1.35*3=4.05v,放电到1.2*3=3.6v就不能正常工作,但是他的终止电压有1.1v,加起来才3.3v,除非用碱性电池,这样问题是解决了,成本也上去了.
7:改进,未来想更换12M的晶振为4M的,进一步减少耗电,但是要改动程序,因为DS18B20对时序要求很严格,为了保证DS18B20的正常读数,甚至要暂时关闭中断.还可以试验用让系统进入空闲方式的方法减少耗电.
|
|