第14章实践项目开发——智能温控系统14.5(上)
14.5项目实战开始进入本章的重头戏也是本书即将结束的综合训练实实在在的实战项目--智能温控系统。当接到一个具体项目开发任务后要根据项目做出框架规划整理出逻辑思路设计电路图写出规范的代码调试代码最终完成功能。14.5.1项目需求分析作为一个空调的温控器基本功能以及使用Kingst51开发板上的电子元件包含显示当前室内温度使用18B20温度传感器和数码管完成。记录当前设定的温度值以便下次开机直接使用使用EEPROM完成。当室内温度高于设定温度时启动压缩机开始工作使用继电器完成。当空调压缩机损坏无法降低室内温度温度高到一定值系统报警使用蜂鸣器完成。手动调整制冷温度值和报警温度值使用按键和数码管和LED小灯完成。使用LED点阵显示一个爱心图像。14.5.2硬件电路布局和选型设计一个产品并不是一个所需功能的简单杂乱堆积而是要从功能设计产品布局让人用起来更舒服、更愉悦、更符合人性化这才是一个优秀的设计。比如以Kingst51开发板作为智能温控器的设计参考产品硬件设计和开发充分考虑的几个方面。主控芯片通常放到整个线路板的偏中心位置方便走线。显示部分的LED小灯、数码管和点阵都放到线路板右上方比较醒目的位置。按键输入部分放到线路板的右下角方便右手按按键。继电器、蜂鸣器放到左上方USB供电和通信放到左下方。对于器件的选择考虑的因素有所选器件是否可靠和稳定根据产品的定位考量。如果是DIY练习为主器件选择可以能方便购买就行如果是批量产品要充分考虑器件品质能否耐用长期使用尽量不选一些最近半年出的新的器件。所选器件是否满足批量生产、长期生产的需求。首先避免所选器件为市场淘汰产品市场上仅有一些二手拆机件容易造成整个产品次品率大幅提高生产供应跟不上。其次要确保所选器件厂家的品质和实力能否确保长期使用不断货。选择器件时考虑部分器件是否方便替代是否可以有备选方案。所选器件是否方便生产。原则上能用SMT贴片的就不选插件的能选机器完成焊接的就不能选人工组装的。满足稳定可靠的基础上选择价格合理的控制整体产品的硬件成本。最后还可以有美观上的加分项比如Kingst51开发板的器件整个板子设计成红色需要手动操作的部件包括插针都选了蓝色。14.5.3程序结构规划项目需求和硬件规划已经确定那就要开始研究如何实现所需要的软件功能程序结构如何组织。一个项目如果需要参与工作的器件比较多同时实现的功能也很多为了方便程序编写和维护整个程序必须采用模块化编程也就是每个功能模块对应一个.c文件来实现这种用法在前边的章节已经开始使用了。一方面所有的代码堆到一起会显得杂乱无章更重要的是容易造成意外错误程序一旦有逻辑上的问题或者功能增加或者程序更新的需求修改程序代码将是一种灾难。另外一方面如果一个项目程序很大的时候可能需要多个程序开发人员共同参与编程多模块的方式也可以让每位程序员之间的代码最终很灵活的融合到一起。模块的划分没有什么教条可以遵循而是根据具体需要灵活处理就以这个智能温控器项目为例。这个项目在实际开发中算是一个微型产品所以功能和模块规划也比较简单。LED小灯、数码管和LED点阵都是显示部件因此合并一个功能模块led.c。矩阵按键驱动部分程序代码作为单独的功能模块keyboard.c。温度传感器作为一个独立的功能模块DS18b20.c。虽然EEPROM和I2C在本项目中是一起用的但是依然做成了两个模块方便做成通用的程序用来移植。系统工作模式分为三种模式正常工作模式设置继电器动作温度和设置蜂鸣器报警温度主程序不断地扫描目前系统所处的模式扫描按键并执行相应的动作同时主程序定时扫描进行温度显示。随着程序量逐步增多程序功能逐步增强对于程序的划分需要逐步有分层的思路。其中按键、LED、I2C、EEPROM、18B20这些都属于底层驱动的范畴它们要共同为上层应用服务那么上层是什么呢就是根据最终需要显示的效果来调度各种驱动函数根据按键的输入来实现模式切换和温度调整并且控制系统进行继电器动作和蜂鸣器报警动作这些都属于应用层的功能。