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