APP下载

单片机系统模块化设计方法教学研究

2013-04-11郭兆正尹作友

关键词:功能模块C语言程序设计

郭兆正,尹作友

(渤海大学 工学院,辽宁 锦州 121013)

现在研究单片机课程教学的方法很多,但无论哪种教学方法都是为了让学生理解和掌握真正的系统设计知识,所以无论如何学生都要亲手去做系统的硬件和软件设计,那么掌握软硬件系统设计的方法和规律就变得极其重要。

在参加一些科研项目时,经常会发现一些技术高手,他们的硬软件设计速度很快,经验很丰富,技术很熟练,系统设计能力令人羡慕和钦佩。经过分析并与他们探讨发现:他们平时在长时间的设计工作中积累了大量的硬件和软件模块,一些硬件模块可直接用于新系统的硬件设计,软件模块几乎不用改写即可直接移植于新程序中。只有新设计和使用的模块才能花费他们一些时间,一旦设计成功,新模块又被收入模块库。由此可知,单片机系统设计人员一定要建立好自己的模块库,在设计中最大限度的实现软硬件移植,节省开发时间,提高开发效率。作为单片机课程的教师也要把这种模块化设计思想和方法讲授给学生,让学生掌握这种实用的系统设计方法。

如何建立硬件和软件模块库需要遵循一定的规律,在长期的教学与科研中总结出如下的一些思想和方法。

1 硬件模块化

1.1 硬件模块化设计思想

任何复杂电路系统都是由具有完整基本功能的功能模块电路组成。如黑白电视机,其中的电子器件有几百个,但都由阻抗匹配器、高频头、中放、检波、视放及显像管电路、伴音中放及鉴频、低放、电源、AGC电路、同步分离、帧扫描、鉴相器及行振荡、行推动及输出等功能模块电路组成。

单片机应用系统也是如此,一般有CPU系统、存储器、各种输入输出接口等。这些输入输出接口模块有的集成在单片机内部,有的需要外部扩展。随着应用系统功能的不同,呈现多样性的特点。再加上各种输入、输出信号变换和调理电路,电源转换电路等,组成了各种各样功能复杂的应用系统。

既然这些复杂的电路系统都可以分解为多个单一的功能模块电路,学习单片机系统设计就可以从功能模块电路入手。在教学、科研过程中,要不断收集遇到的各种硬件功能模块电路,弄清它们的工作原理、性能及特性、特定的功能及使用方法,把系统化整为零,建立起自己的硬件模块库。在设计一个新的单片机应用系统时,要根据系统要求的功能和性能,选择、设计满足要求的功能模块电路,按照一定的规律,将它们恰当地组合成单片机应用系统,合零为整,完成硬件系统设计。

以这样的模块化设计思想做基础,在教学过程中,指导学生学会搜集、分析别人的设计案例、论文和相关书籍中的功能模块电路,不断地充实自己的功能模块电路库,日积月累,学生就会觉得自己的单片机系统设计能力越来越强。

1.2 硬件模块化设计注意事项

在系统硬件设计过程中,功能模块电路不能随意选择,具体的注意事项如下。

叶霭玲说,白丽筠是个大美人嘛,追她的人不要太多喔。你看到她骑电动车可真稀罕。要不是到半边街那条狭窄的老街去,她在大马路上总是开宝马的。

1.2.1 根据系统的功能和使用环境选择模块

系统设计时,要分析系统的功能要求,还要考虑系统在什么环境下工作,需不需要防潮、振、热、冷等恶劣环境,芯片选择军用、工业级还是民用的。通过综合考虑这些因素,确定合适的硬件模块。

1.2.2 根据系统要求的性能指标选择模块

同样功能的电路模块,应用场合可能不一样,精度、速度、功耗、体积、重量、价格、可靠性等性能指标也可能不一样。如测温电路,铂电阻和热敏电阻及热电偶电路的测温性能就很不同,选择时要注意这些性能的区别。

1.2.3 注意各个功能模块电路的耦合方式和接口方式

数字信号接口一般有并行、串行接口方式,开关量接口要考虑电平是否与CPU一致、驱动能力如何,从抗干扰的角度要考虑它们是否需要隔离。模拟信号的耦合方式一般有直接、阻容和变压器3种耦合方式。必须考虑信号幅度、频率、滤波、输入输出阻抗及驱动能力等因素,保证耦合后信号真实可用。

1.2.4 注意各个功能模块之间的干扰

模块之间的干扰主要是指高频信号的窜扰、地线上的信号干扰、热源的干扰及输入输出之间的窜扰。为了更好的提高系统的抗干扰能力,首先选择抗干扰性能好的模块提高抗干扰能力,其次增加各种滤波及隔离电路减少干扰,最后合理布局制板,让容易受干扰的部分远离发出干扰的部件,让模拟部分和数字部分单点共地,让怕热的部分远离发热的功率电路等。

2 软件模块化

2.1 软件模块化设计思想

在软件设计过程中,往往将一个大规模的程序划分成若干个容易理解、大小适当、功能明确、具有一定独立性的的程序段去编写,或者是将那些重复使用的程序段进行独立设计,这样划分的程序段被称为程序模块。

这样做的优点如下:各模块相对独立、功能单一、结构清晰、接口简单;便于调试、连接,控制了程序设计的复杂性;缩短了开发周期;避免程序开发的重复劳动;易于维护、功能扩充和程序移植;可以实现自顶向下的程序设计等。

2.2 模块划分原则

在进行模块分解时,各模块功能尽可能专一,联系尽可能简单,使模块独立性强,容易设计、维护、修改和移植,使程序有很好的可维护性和可扩展性,提高程序设计的效率和质量。

2.3 模块组织原则

完整的软件含有的功能模块较多,如何降低功能函数之间联系的复杂性,使调用关系简化对提高程序的可移植性很重要。可以采用软件分层的思想,将软件模块划分为应用函数层、功能函数层、硬件隔离层和硬件驱动层4个层次。从前至后每一层只能调用后一层的函数,不允许跨层调用.前两层属于硬件无关层,不用考虑硬件,可以编写成不同的单片机都可以移植使用的模块。最后一层是硬件驱动层,程序移植时中,只改变此层的编写即可。硬件隔离层用于消除硬件差别。这符合结构化程序设计按层次结构组织各模块的原则,能做到自顶向下地将一个大程序逐层分解。得到程序的模块层次结构,而后再进一步把每个模块分解为具体的执行模块或执行步骤。

2.4 C语言对模块程序设计的支持

各种单片机都有自己的汇编语言,但汇编语言缺乏通用性,需要编程人员必须对计算机硬件有相当深入的了解,并且程序不易模块化,不易移植,所以不利于模块化程序设计。

C语言是一种编译型程序设计语言,它兼顾了高级语言、汇编语言的特点。有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,可以直接实现对系统硬件的控制,支持自顶向下结构化程序设计技术 。C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。C语言具有高级语言的可读性好的特点,便于改进和扩充,容易开发研制出规模大、性能完备的系统。因此,使用C语言进行程序设计已成为软件开发的一个主流。

3 教学效果

在近年单片机教学和指导学生参加电子设计竞赛的培训中,逐步采用并总结单片机教学经验,在教学案例中采用模块化软硬件设计教学方法,取得了事半功倍的教学效果。

从2005年参加全国大学生电子设计竞赛开始,笔者指导的学生多次获得了辽宁赛区一、二、三等奖。在近几年的学生就业中,大部分电子专业的学生都找到了合适的工作,还有一些毕业生应聘去了电子技术开发类的公司从事嵌入式系统开发工作,提高很快,成为一些项目的核心开发人员。

[1]陈海松,何惠琴,刘丽莎.单片机应用技术项目化教程[M].北京:电子工业出版社,2012:1-323.

[2]王晓娜,宋世德,王彦霞.单片机实验教学方法的研究[J].实验科学与技术,2012,10(1):69-73.

[3]秦宏,张玉梅,周腾蛟,等.以“模块-综合”架构构建电力、能源类电子系列课程体系[J].沈阳师范大学学报:自然科学版,2011,29(4):581-585.

[4]吴丽娟,申海,张浩华.C语言课程设计教学模式的探索与实践[J].沈阳师范大学学报:自然科学版,2012,30(1):122-125.

[5]陈向奎,李元臣.单片机教学改革的思考与探索[J].洛阳师范学院学报,2012,31(5):84-86.

[6]任斌,赖树明.单片机教学方法探析[J].东莞理工学院学报,2007,14(2):49-52.

[7]姜宁,樊延虎.单片机教学改革与实践[J].延安大学学报:自然科学版,2011,30(1):45-46.

[8]潘言全.单片机教学改革的思考[J].湖北师范学院学报:自然科学版,2007,27(1):113-115.

[9]谢楷,赵建.MSP430系列单片机系统工程设计与实践[M].北京:机械工业出版社,2009:1-280.

[10]谢维成,杨加国.单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2009:67-322.

[11]谭浩强.C程序设计[M].北京:清华大学出版社,1991:101-251.

[12]马长林,陈怡,程利民.单片机实践应用与技术[M].北京:清华大学出版社,2008:1-275.

猜你喜欢

功能模块C语言程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究
M市石油装备公服平台网站主要功能模块设计与实现
PLC梯形图程序设计技巧及应用
功能模块的设计与应用研究
论子函数在C语言数据格式输出中的应用