- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机程序的模块化设计.pdf
技术论坛:/bbs 淘宝店铺:
前面我们已经做好了工程模板,接下来我们来讲讲单片机的面子问题,做为人机交互的
一部分,显示屏在单片机系统中占了相当重要的一部分,当然也有部分产品采用led 指示或
者用串口来输出相关信息,前者不够清晰,后者需要电脑配合。今天我们要讲的是字符型液
晶LCD1602,1602 可以显示2 行、每行显示16 个ASCII 字符,并且可以自定义图形,只需
要写入相对应字符的ASCII 码就可以显示,使用上相对数码管更能显示丰富的信息。这个是
一款比较好入门的产品,而且在实际产品中因为成本优势使用的也是相当广泛。
在正式开始之前先来了解一下模块化编程的问题
模块化程序设计
何谓模块化,百科上给的解释是模块化是指解决一个复杂问题时自顶向下逐层把系
统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起
来,成为一个整体,完成整个系统所要求的功能。模块具有以下几种基本属性:接口、功能、
逻辑、状态,功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。在系统的结
构中,模块是可组合、分解和更换的单元
结合前面的定义,我们可以知道所谓模块化程序设计的基本思想就是:把一个大的程序
按一定的要求分解成相应的小模块。对各模块的要求其相对独立,功能单一,接口简单。我
们了解了模块化的基本思想,那么他有什么好处
1 降低了程序设计的复杂性。(模块划分好后,我们只要考虑当前模块的问题)
2 提高了程序的可移植性,减少重复劳动
3 对于实际的工程来说方便分工合作,没人只要处理一部分
4 使得程序看起来更有条理,更清晰。容易维护
电子钟
显示界面模块
时钟处理模块 按键处理模块
LCD 1602驱动模块 DS1302驱动模块 按键驱动模块
画了个简单的示意图,外面最大的方框标示我们这次要完成的程序既电子钟,每一个小
的方块都是一个模块,再划分模块时要求每个模块尽可能少的和外部发生联系,这样可以方
便程序的移值。另外根据模块在程序中所处位置的不同可以分为驱动层,逻辑处理层,以及
技术论坛:/bbs 淘宝店铺:
技术论坛:/bbs 淘宝店铺:
显示界面层,如图中横线所示,最下面为驱动层,主要和硬件打交道,中间是裸机处理层,
主要是进行各种逻辑运算等等,最上层主要是用户界面。一个好的程序在移值时只要修改硬
件驱动层就可以了,其他部分不用动
了解了模块,我们来看看在C 语言中如何设计一个模块化的程序
1 模块即是一个.c 文件和一个.h 文件的结合,头文件(.h) 中是对于该模块接口的声明;
2 某模块提供给其它模块调用的外部函数及数据需在.h 中文件中冠以 extern 关键字
声明;
3 模块内的函数和全局变量需在.c 文件开头冠以static 关键字声明;
4 永远不要在.h 文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分
配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从
其它模块寻找外部函数和变量。
模块的划分应该满足:
驱动LCD1602
打开keil 工程,新建两个文件,分别保存为LCD1602.H 和LCD1602.C。 其中.h 文件保
存在Source—inc 中,.C 文件保存在Sourcesrc 中。然后把LCD1602.C 添加到当前工程中,
keil 里的设置就完成了。接下来打开C- FREE 工程文件,把LCD1602.H 和LCD1602.C 添加进来。
在LCD1602.H 中键入如下代码。这3 行代码就是头文件的一个框架,前面两行是防止重复引
用的,最后一行的意思是头文件到此结束
#ifndef _LCD1602_H_
#define _LCD1602_H_
// 这里
#endif
在LCD1602.C 中将LCD1602.h 和reg51.h 包含进来
技术论坛:/bbs 淘宝店铺:
技术论坛:/bbs 淘宝店铺:
根据电路图和LCD1602 的引脚说明(
文档评论(0)