单片机库文件建立指南(第三部分)

文章目录

  • 前言
  • 一、新建工程
  • 二、将库文件复制到工程中
  • 1.在工程中添加.c文件
  • 2.主函数中添加LCD1602.h文件
  • 3.主函数中添加需要的LCD1602的显示文件
  • 三、编译测试
  • 四、遇到问题
  • 五、最后完整.h .c
  • 总结

  • 前言

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

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


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

    一、新建工程

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


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

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

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

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

    #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

    
    #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

     #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

    #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。主打一个简单实用。 第四将将讲解过度到 项目管理的要求做库管理。

    作者:Winner1300

    物联沃分享整理
    物联沃-IOTWORD物联网 » 单片机库文件建立指南(第三部分)

    发表回复