有时候我们会看到一些半导体厂商提供的代码是.lib文件的,只告诉我们一些接口。.lib文件对我们来说是内容不可见的,这对保护知识产权等,很有用,那这.lib文件是如何生成的呢?现在我们在Keil中来试试,以C51为例。
硬件平台:51开发板(STC12C5A60S2)+1602LCD
软件平台:Keil μVison2,C语言
目标:在Keil中生成关于1602液晶的lib文件,然后在新的工程中使用lib文件。
STEP1:
先新建一个工程,里面的源文件在附件1602_creat_lib.zip中,其中的代码我们不一一详述,关于1602液晶的使用,大家可以参考网上其他朋友的文档,我也不详细讲解了。其中的源程序中有以下几个函数:
void Delay(unsigned int t); //延时函数
void WriteCMD(unsigned char CMD); //向1602LCD发送指令
void WriteData(unsigned char Data); //向1602LCD发送数据
void LCDInitial(void); //1602LCD初始化
void PutString2LCD(unsigned char addr, unsigned char *p); //向LCD发送要显示的字符串
这几个函数的功能从名字基本就可以知道,而且也加了简单的注释。最后一个解释一下,输入的第一个参数是要在液晶上显示的地址,按说明书,第一行首地址为0x00,第二行首地址为0x40,每行可显示16个字符;第二个参数是要显示的字符串的指针。
注意,没有main()函数!
STEP2:
选择工程的设置,如下图
在弹出的对话框中,选择图中红圈的部分,生成库。注意蓝圈中的名字,可以改成其他名字,这样生成的lib文件名也会改变,我们就用1602好了。
STEP3:
Build,这样就会发现新生成的lib文件。
STEP4:
重新建一个工程,我们使用库里面的两个函数,就是STEP1提到的后两个,一个液晶的初始化,一个是向液晶发送字符串。
所以我们在程序的开头加入
extern void LCDInitial(void);
extern void PutString2LCD(unsigned char addr, unsigned char *p);
或者如下面视频里面提到的,加一个头文件,在头文件里面声明这些外部函数。
只编写一个主函数
void main(void)
{
LCDInitial();
PutString2LCD(0x00,"****Welcome!****");
PutString2LCD(0x40,"www.ednChina.com");
while(1);
}
可以看到是向液晶发送两个字符串:"****Welcome!****" 和 www.ednChina.com
build一下,没有任何错误和警告,我们把生成的hex文件下载到STC单片机中看下效果:
下面我录了一段视频,折腾一晚上,终于弄好了,但是ms挺模糊
用户1041631 2013-1-18 10:45
很不错哦!
handong123123_906892115 2012-12-10 09:44
用户412065 2012-12-9 12:58
飞言走笔 2012-11-29 11:20
luoyp8805_694243840 2012-11-27 09:28
飞言走笔 2012-11-26 11:28
用户425756 2012-11-23 22:08