EDN51实验板实现多点测温(1)——总体方案
终于完成多点测温的毕业设计了,十分感谢EDN提供这么好的学习板,也感谢老王的热心。由于整个毕业设计的程序太大了,一时半会也贴不完,所以决定有空就和大家分享一点,也不知道会写多少。今天先分享总体方案和hex格式的程序供大家测试。
EDN51板要实现多点测温需要进行改造。首先DS18B20不能焊在板子上,在板子上焊接一个三线的插座,然后把多个DS18b20连在一条线上再接到板子上。改造方法在前面的博文里已经介绍过,有兴趣大家可以去看看。http://blog.ednchina.com/will666/91892/message.aspx建议大家用插座连接18B20,不要直接焊。
整个系统有四种工作方式:自动模式、手动模式、ID模式和报警设置模式。自动模式下,单片机循环从每个DS18B20读取温度值,经过报警处理后显示在LCD上。手动模式下,可以人工选择要观测的测温点,单片机只从被选择的DS18B20读取温度,报警处理后显示。ID模式可以显示每个DS18B20的序列号,并可以替换总线上的DS18B20以方便系统维护。报警设置模式允许为每个总线上的DS18B20设置报警的上下限温度TH和TL,设置完毕后单片机将信息存入DS18B20的片上E2PROM中使该信息在掉电后得以保存。共支持5个DS18B20,其实只需稍加修改就可以达到8个。
键盘布局如下图
在第一次使用时,需要进行必要的配置,方法如下。
1、系统第一次上电后会报警,此时长按Menue键两秒钟会进入模式选择菜单,按Down键选择ID Mode,按SET键进入。此时会发现器件ID号都是0,因为我们还没有将DS18b20的序列号存入单片机。选择NO1,在总线上只有一个DS18B20情况下按Change键,单片机会读出该DS18b20的序列号并显示在LCD1602上。再按Down键选择NO2,用同样的办法可依次读出5个器件的序列号。如果没有5个传感器,就将后续几个读入同一个传感器的序列号。总之就是保证在每个编号下都有一个序列号。DS18B20的序列号后两位是28,我们可以依此大体判断序列号的正误。
2、配置完毕按Quit键退出,系统会进入默认模式,自动循环处理五个DS18B20的温度并显示。
3、在默认模式下,长按Menue会进入系统菜单,第一项就是“Hand Mode”该模式可以手动选择器件,单片机只处理选择的器件。第二项就是上面提到的“ID Mode”,可以查看器件序列号,可以替换总线上的DS18b20。第三项是“Alarm Set”模式,可以更改报警上下限。注意,只有在默认模式下菜单功能才有效,在其他模式下只需按Quit即可进入默认模式。默认模式在屏幕右上角有“Auto”显示。
一般在屏幕的第二行会显示当前有效按键,大家可以自己尝试操作。
系统菜单处理流程见下图
从图中可以看到每个按键的功能。
系统默认的自动模式流程图如下
主程序流程也十分简单
当初编程难点其实就是前面那个实现菜单操作的大图,很是费劲。
本程序实现多点测温并没用使用搜索ROM指令,而是利用了读ROM指令,读出的ID号被保存在STC单片机内部提供的EEPROM中,掉电不会丢失。
闲话少说,把程序先给大家,供大家测试。由于还没有完成毕业设计,所以只能给大家Hex文件,源程序会在后面分别与大家分享。程序有什么问题还请各位留言指出,感谢大家的热心。还注意一点,单片机使用的是STC89C52,不能换用其他型号,STC89C51都不可以,因为他们内部EEPROM地址不一样。
感觉好别忘了支持一下哦......
用户172003 2009-4-28 20:52
用户227895 2009-4-28 13:19
用户198475 2009-3-10 11:12
用户1364249 2008-6-27 23:06
用户152939 2008-6-26 10:50
用户1364249 2008-6-20 00:46
用户132862 2008-6-16 13:41
用户1364249 2008-6-11 08:14
用户80602 2008-6-10 09:01