昨天完成了软件模拟SPI通讯模块的调试,成功地接收到了51单片机发来的数据,紧接着开始调试控制模块的代码。控制模块的代码是之前在调试通讯不顺利时,为了转换情绪,缓解大脑思维,临时搁置通讯的调试来写的。现在SPI通讯基本完成,顺理成章就来调试控制模块的代码。
首先是将接收到的字符信息转换为数值,这本来并不复杂的问题也花了我约两个小时才完成。然后是模拟水位图(屏幕左边),这是按照仪器安装高度(屏幕左上角显示的数值)为总高,根据当前水位来显示柱状图,算法是用当前水位除以安装高度再乘以48(即屏幕列向点阵),得到需要显示的点数。我在调试时这个数值一直都为0,百思不得其解,后来才反映过来应该先乘后除,因为先除的结果是小于1的小数,我定义的变量类型是无符号整型,所以中间值是零,最后换为先乘后除才达到目的。
控制模块的调试相对容易些,加上代码是先前基本写好的,所以一天多时间就顺利完成了。现在整个项目大部分已经完成,机房的机组控制线路是前两年就完成了的,当时是用WIFI继电器组,通过互联网用手机远程就可以调整进水阀门开大或关小、机组启动或紧急停机,现在只要将这个自动控制部分添加进去就行。
下面发几张照片:
这是主控制模块调试的情景:
这是显示屏,最左边是模拟显示当前水位的高低,左上角显示超声波检测仪器安装的高度,左下角显示最低水位0m,当前水位则显示在中间部位,正常水位时显示的中间,偏高水位和超高水位则靠上显示,偏低水位和超低水位则靠下显示,同时在屏幕中间靠右位置会用汉字显示。正常水位时没有输出控制的操作,偏低水位时,LED2会熄一秒左右(拉低信号),超低水位则熄两秒左右(控制进水阀门关闭的时间长一点),偏高水位和超高水位的控制原理相同,只是控制LED3,现场使用时只需要将这两个引脚接到相应的中间继电器上。
当初调试SPI通讯时,为了排除杜邦线的问题,直接从引脚排插上焊接连线,以便逻辑分析仪取信号,所以开发板上长了一个小辨子,现在调试完成了,这个小辨子也该剪掉了。
下面是移除了小辨子的开发板:
为了方便去现场调试,特地做了找了有个小盒子,给开发板安个家。
开发板、辅助板、屏幕各就各位,有了临时的住处,只不过因为盒子不透明,屏幕有点模糊,先将就使用吧。