基本8位单片机的软件平台设计方案(2)
时间:2025-05-14
时间:2025-05-14
软件平台设计方案
基本8位单片机的软件平台 设计方案(2)基本平台架构设计及模块划分
软件平台设计方案
平台设计目标
规范性:做到从变量命名、函数命名到模块划分全 部有规范可依,使非编程本人也可以正确、快速、 无误地修改软件 硬件无关性:与硬件有关的函数单独处理,而主程 序则通过调用这些函数来对MCU端口进行操作,这 样无论使用什么MCU,只要支持C语言,都可以很 快地将程序移植过来,使软件不再受MCU的控制; 可扩展性:流程确定后,如果有新的模块加入,不 会改动整个系统流程,只需在程序中加入此模块的 调用,修改与此模块有关的函数即可; 模块化:将整个软件程序分为若干个模块,模块之 间通过函数相连,只要确定了模块的输入/出变量以 及模块流程,此模块在经过详细测试后便可保证不 再出错,如有新的程序需要编写,只需编写新的模 块即可,真正使软件错误不会重复出现; 可移植性:本方案中所定义的模块可以嵌入至任意 一个系统,在编制一个新的系统前,首先将与系统 有关的函数调用过来即可
软件平台设计方案
基本软件架构主循环 时间中断 外部中断
* 三者是并行的关系 * 本质上单片机是顺序执行,只有在中断发生的时候才 会进入中断执行,中断内容执行完毕后返回到主循环中 * 事实上程序中的大部分代码都是无硬件无关的,因此 我们为提高程序的可移植性,提出分层设计的思想
软件平台设计方案
软件工程中的分层设计应用程序 操作系统 驱动程序 硬件抽象层
硬件平台
软件平台设计方案
我们的分层设计基本软件平台 不随硬 件更改 而更改 应用程序 通用程序 负责程 序的时 间片分 配
驱动程序 硬件抽象层
随硬件 更改而 更改
硬件平台
软件平台设计方案
改变思路 一个源文件解决所有:可以,但可移植性和可
读性不好。可以说把c程序做成一个文件的还 停留在汇编程序设计的思路上,他只是换了种 语言工具而已,而非改变了设计思路。 以后的系统会越来越复杂,使用成熟的代码等 于站在巨人的肩膀上 从系统角度考虑问题:没有最好的,只有最适 合的(不要迷信规格书),事实上很多系统工程 师也不知道怎么做才是最好的 软件只是系统的一部分,但是是灵魂所在,尤 其在涉及到控制算法的时候
软件平台设计方案
设计控制器前需了解整机系统 控制板的控制目标:一定要弄清楚负载
是什么,控制负载的电控元件是什么, 此元件的优缺点。如继电器、可控硅、 比例阀等等 控制板的精度:如温度控制会同时涉及 到采样和控制的精度问题 这样做是最可靠的方式吗? 这样做是对用户最来说是最方便的方式 吗? 一定要注意回差问题:如通过水流量判 断开关机,
通过温度判断风机转速等等
软件平台设计方案
设计思想 为8位单片机软件设计提供一个可参考的
平台,程序设计人员按照此平台可以轻 松,可靠地设计出高质量的产品 一些成熟的模块标准化,提供长时间测 试没有问题的模块供大家调用 尽量做到硬件无关,当主芯片更改后, 只需改动很少的部分即可以适应新的芯 片系统。而且这些改动不会影响到系统 的可靠性 提供一个可以检测软件代码编写是否符 合设计规范的测试平台
软件平台设计方案
举例:盖房子 本平台要提供一个房子的框架结构(固
定好是砖混结构),并定好门、窗、阳 台的位置,但具体的内部装修并不固定, 可由程序人员自由组合 同时提供多种门、窗及装修材料(模块) 供程序人员使用,并且这些材料都是经 过测试没有问题的,保证工程的质量 当地基改变后,只需动与地面相连的地 方即可,上层全可以不动
软件平台设计方案
模块划分原则:按文件划分主程序(main.c) (对下面的函数进行调用) 硬件无关 通过函数与 驱动文件相 连 流程相关文件 通用函数文件 与硬件相关 内容 算法文件 包括滤波、控制算法 其他与硬件有关 的文件 设备驱动文件 蜂鸣器驱动 与硬件有关的内容 (.h文件)
显示相关文件
按键处理相关文件
设备驱动文件 LCD驱动 与硬件有关的内容 (.h文件)
设备驱动文件 按键检测 硬件抽象层 (.h文件)
主芯片
软件平台设计方案
硬件抽象层的实现 Hardware.c文件:负责整个MCU的初始
化,PWM输出,检测AD等函数的实现 举例:Hardware.c .h文件:负责与驱动程序的接口 举例:与EEPROM的接口
EEP_hardware.h 从上面可以看出,当更换芯片时,驱动
程序的内容完全不动,只需更改 EEP_hardware.h里的内容即可
软件平台设计方案
程序初始化流程开始 (Main) 硬件SFR初始化 (f_InitSFR) 软件预处理 (f_Predeal) 基本数据初始化 (f_InitData) EEPROM中保存数据读取 (f_ReadEEPData) 检测跳线 (f_CheckJumper) 系统自检 (f_SelfTest) 主循环 While (1)…
注:
并不是所有的模块都是必须的 括号内的内容为模块名称; 软件预处理为一段延时,等待芯片复位后各端口均稳定下来;
软件平台设计方案
主循环流程图系统框图.doc
软件平台设计方案< …… 此处隐藏:1000字,全部文档内容请下载后查看。喜欢就下载吧 ……