准备好所需要的基础知识、软件工具、硬件工具后就具备了设计单片机系统的基础。接下来看看单片机系统设计的流程是什么,如何把以上这些知识、工具利用起来完成一个具有实际功能的单片机系统。
需求分析是分析功能、确定参数要求的过程。无论在学习单片机系统设计或是将来设计一些解决实际问题的项目,明确最终要达到的功能非常重要。
比如一个简单的单片机控制发光二极管的例子,功能确定为单片机控制一个发光二极管点亮500ms,熄灭500ms,再点亮500ms,再熄灭500ms……如此反复,如图2-17所示。
根据这个功能,可以设计一个系统框图,如图2-18所示,这是世界上最简单的单片机控制系统。
图2-17 单片机控制一个发光二极管的需求分析
图2-18 单片机控制一个发光二极管的系统框图
从系统框图出发,就可以利用所学知识把电路图设计出来。设计过程中单片机部分的电路可参考许多现成的电路功能模块,稍做修改就可以直接使用。
图2-19是根据系统框图设计的一个电路图,左边阴影框里就是单片机,右边的是发光二极管。至于单片机为什么是这样设计、发光二极管为什么以这种方式连接,稍后我们还会有更详细的介绍。现在只要感受到系统需求分析形成的框图(图2-18)已经根据经验设计成电路图(图2-19)即可。
图2-19 单片机控制一个发光二极管的电路图
电路图设计出来后,就可以购买电路所需的元器件,并利用面包板、万用板等把实际的电路搭出来,以便接下来程序调试中有一个硬件平台。
有的朋友或许听说过,单片机实现功能靠的是程序。像图2-19这样的电路搭建出来之后就好比一台没有软件的计算机,上电(接通电源)后各个元器件正常工作,但是对外不表现任何的功能。
我们看到图2-19中发光二极管与单片机的一个叫“P0.4(AD4)”的管脚相连,这个管脚自己并不会产生如图2-17所示的让发光二极管闪烁的功能,而需要我们设计控制单片机的程序并写入单片机中。
单片机程序用汇编语言或C51语言编写(后面有详细介绍),有许多计算机上的应用软件可支持这两种语言的单片机程序开发,比如第4章将要介绍的μVision软件等。
用汇编或C51语言设计好的单片机程序,将通过一个连接计算机USB口和单片机下载接口的下载器,下载到单片机中,如图2-20所示。下载完成后,单片机启动时运行下载的程序就可以实现相应的控制功能了。
图2-20 下载程序
在调试阶段,也就是“磨合”软件和硬件以便它们共同实现系统功能。当程序下载到单片机系统后,启动单片机运行程序,观察系统的“反应”和我们的设计是不是相符。
比如图2-17设计要求发光二极管以500ms为间隔进行闪烁。当程序设计完成并下载到单片机之后,可能出现的问题是发光二极管不闪烁或闪烁的时间间隔不对。如果出现这些与设计不符的实验效果,首先在保证硬件电路是正确的前提下,回到程序中找错误,修改后再下载到单片机系统中。如此反复,直到系统运转正常为止。