单片机建立自己的库文件(3)

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

项目需要:调用自己写写的.c .h文件,为STM32学习奠定基础


提示:以下是本篇文章正文内容,下面案例可供参考

一、新建工程

上一次新建了.c 和 .h 文件这次新建工程来调用


二、将库文件复制到工程中

1.在工程中添加.c文件

2.主函数中添加LCD1602.h文件

3.主函数中添加需要的LCD1602的显示文件

c 复制代码
#include<reg51.h>
#include<LCD1602.h>

unsigned int a=0;

void main()
{
// 初始化LCD1602 
	LcdInit();	
	 
	LcdWriteCom(0x80);
	 LcdWriteData('a'); 
	LcdWriteData('1'); 	 
	LcdWriteData('2'); 
	LcdWriteData('3'); 
	LcdWriteData('4'); 	 
	 // WUZHOU   1234      第一行
	 // 0123456789123456   第二行
	while(1)
	{
			a++;
			if(a==10000)
			{
				a=0;
			}
			LcdWriteCom(0x80);
		    LcdWriteData('a'); 
			LcdWriteData(a/1000%10+0x30); 	 //+0x30 将数字转换成字符  acii表
			LcdWriteData(a/100%10+0x30); 
			LcdWriteData(a/10%10+0x30); 
			LcdWriteData(a%10+0x30); 
			
			
//			lcd_4num(0xc0,a);
//			Lcd1602_Delay1ms(2000);  
		   
		
	}


                          

}

三、编译测试

四、遇到问题


五、最后完整.h .c

LCD1602.h

c 复制代码
#ifndef __LCD1602_H__
#define __LCD1602_H__


//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint 
#define uint unsigned int
#endif

/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c);   //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/	
void LcdWriteData(uchar dat);
/*LCD1602初始化子程序*/		
void LcdInit();	

#endif

LCD1602.c

c 复制代码
 #include <reg52.h> 
 #include <LCD1602.h> 


/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;



 /*******************************************************************************
* 函 数 名         : Lcd1602_Delay1ms
* 函数功能		   : 延时函数,延时1ms
* 输    入         : c
* 输    出         : 无
* 说    名         : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/

void Lcd1602_Delay1ms(uint c)   //误差 0us
{
    uchar a,b;
	for (; c>0; c--)
	{
		 for (b=199;b>0;b--)
		 {
		  	for(a=1;a>0;a--);
		 }      
	}
    	
}

/*******************************************************************************
* 函 数 名         : LcdWriteCom
* 函数功能		   : 向LCD写入一个字节的命令
* 输    入         : com
* 输    出         : 无
*******************************************************************************/
 
void LcdWriteCom(uchar com)	  //写入命令
{
	LCD1602_E = 0;     //使能
	LCD1602_RS = 0;	   //选择发送命令
	LCD1602_RW = 0;	   //选择写入
	
	LCD1602_DATAPINS = com;     //放入命令
	Lcd1602_Delay1ms(1);		//等待数据稳定

	LCD1602_E = 1;	          //写入时序
	Lcd1602_Delay1ms(5);	  //保持时间
	LCD1602_E = 0;
}

/*******************************************************************************
* 函 数 名         : LcdWriteData
* 函数功能		   : 向LCD写入一个字节的数据
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/		   

void LcdWriteData(uchar dat)			//写入数据
{
	LCD1602_E = 0;	//使能清零
	LCD1602_RS = 1;	//选择输入数据
	LCD1602_RW = 0;	//选择写入

	LCD1602_DATAPINS = dat; //写入数据
	Lcd1602_Delay1ms(1);

	LCD1602_E = 1;   //写入时序
	Lcd1602_Delay1ms(5);   //保持时间
	LCD1602_E = 0;
}

/*******************************************************************************
* 函 数 名       : LcdInit()
* 函数功能		 : 初始化LCD屏
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/		   

void LcdInit()						  //LCD初始化子程序
{
 	LcdWriteCom(0x38);  //开显示
	LcdWriteCom(0x0c);  //开显示不显示光标
	LcdWriteCom(0x06);  //写一个指针加1
	LcdWriteCom(0x01);  //清屏
	LcdWriteCom(0x80);  //设置数据指针起点
}

main.c

c 复制代码
#include<reg51.h>
#include<LCD1602.h>

unsigned int a=0;

void main()
{
// 初始化LCD1602 
	LcdInit();	
	 
	LcdWriteCom(0x80);
	 LcdWriteData('a'); 
	LcdWriteData('1'); 	 
	LcdWriteData('2'); 
	LcdWriteData('3'); 
	LcdWriteData('4'); 	 
	 // WUZHOU   1234      第一行
	 // 0123456789123456   第二行
	while(1)
	{
			a++;
			if(a==10000)
			{
				a=0;
			}
			LcdWriteCom(0x80);
		    LcdWriteData('a'); 
			LcdWriteData(a/1000%10+0x30); 	 //+0x30 将数字转换成字符  acii表
			LcdWriteData(a/100%10+0x30); 
			LcdWriteData(a/10%10+0x30); 
			LcdWriteData(a%10+0x30); 
			
			
//			lcd_4num(0xc0,a);
//			Lcd1602_Delay1ms(2000);  
		   
		
	}


                          

}

总结

用最简单的方式,将.c .h 添加到工程根目录,并用添加main.c 的方法添加LCD1602.c。主打一个简单实用。 第四将将讲解过度到 项目管理的要求做库管理。

相关推荐
网易独家音乐人Mike Zhou6 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
zy张起灵6 小时前
48v72v-100v转12v 10A大功率转换电源方案CSM3100SK
经验分享·嵌入式硬件·硬件工程
lantiandianzi13 小时前
基于单片机的多功能跑步机控制系统
单片机·嵌入式硬件
哔哥哔特商务网13 小时前
高集成的MCU方案已成电机应用趋势?
单片机·嵌入式硬件
跟着杰哥学嵌入式13 小时前
单片机进阶硬件部分_day2_项目实践
单片机·嵌入式硬件
电子科技圈14 小时前
IAR与鸿轩科技共同推进汽车未来
科技·嵌入式硬件·mcu·汽车
东芝、铠侠总代1361006839315 小时前
浅谈TLP184小型平面光耦
单片机·嵌入式硬件·物联网·平面
lantiandianzi15 小时前
基于单片机中医药柜管理系统的设计
单片机·嵌入式硬件
嵌入式知识大讲堂15 小时前
HDMI数据传输三种使用场景
单片机
黑客呀16 小时前
[系统安全]Rootkit基础
stm32·单片机·系统安全