原创 【MCU单片机】LCD1602的单片机C语言头文件

2014-4-21 12:05 3344 27 32 分类: MCU/ 嵌入式 文集: MCU单片机

一般来说,C语言头文件的格式为:

#ifndef _头文件名_H_
#define   _头文件名_H_
//代码部分,一般为函数声明,变量定义,常数设置等
#endif
//头文件的具体内容,如函数定义等。
        
当使用include包含头文件时,用引号“”或尖括号<>意思不一样。只用引号“”时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录。而当使用尖括号<>时,搜索编译器头文件所在目录,再搜索工程文件所在目录。一般来说,包含自己编写的头文件时,用双引号“”,而包含编译器自带的头文件时,用尖括号<>。
下面以LCD1602为例,在codeversion AVR中写头文件lcd.h:(当包含头文件时,只需添加#include"lcd.h")
#ifndef  _LCD_H_
#define _LCD_H_
/***************************************************************
LCD1602管脚定义
1             GND      
2             VCC
3             VEE
4             RS            PD4
5             RW            PD5 
6             E             PD6
7-14       DB0~DB7        PB0~PB7
15           LEDA+
16           LEDK-
***************************************************************/
void delay_xms(unsigned char m);       //定义延时x ms的延时函数
void LCD_write_data(unsigned char data);   //LCD写字节函数
void LCD_write_cmd(unsigned char cmd);   //LCD写命令函数
void LCD_gotoxy(unsigned char x,unsigned char y);   //LCD开始显示的位置坐标函数
void LCD_puts(unsigned char *str); //LCD输出字符串函数
void LCD_init(); //LCD初始化函数,清屏,光标归位(0,0),且光标不闪烁不显示。
#endif
//============延时1ms函数=================
#define RS PORTD.4
#define RW PORTD.5
#define EN PORTD.6
void delay_xms(unsigned char m)       
{
    unsigned int i;
    while(m--)             //延时xms
        for(i=0;i<1714;i++){ }    //延时1ms   
}
/*********************************************************
*******************LCD写数据函数*************************/
void LCD_write_data(unsigned char data)
{
   EN=0;
   RS=1;
   PORTB=data;          //送数据
   EN=1;
   delay_xms(1);
   EN=0; 
}
/********************************************************
*****************LCD写命令函数***************************/
void LCD_write_cmd(unsigned char cmd)
{
    EN=0;
    RS=0;
    PORTB=cmd;         //送命令码
    EN=1;
    delay_xms(1);
    EN=0;
}
/*********************************************************
******************LCD显示位置函数************************/
void LCD_gotoxy(unsigned char x,unsigned char y)
{
     unsigned char addr;
     switch(x)
     { 
       case 0: addr=0x00+y;break;     //x=0时,即开始显示位置为:0行y列
       case 1: addr=0x40+y;break;     //x=1时,即开始显示位置为:1行y列
       default: addr=0x00;            //若x超出范围,则默认从0行0列开始显示
     }
     LCD_write_cmd(addr|0x80);    //写显示位置命令,设置显示起始位置
}
/*********************************************************
****************LCD输出字符串函数************************/
void LCD_puts(unsigned char *str)
{
   unsigned char i=0;
   for(i=0;str!='\0';i++)    //输出字符串
   {
      LCD_write_data(str);
      delay_xms(1);
   } 
}
/***************************************************************
*******************LCD初始化*******************************/
void LCD_init()
{
    DDRD.4=1;        //设PD4~PD6为输出
    DDRD.5=1;
    DDRD.6=1;
    DDRB=0xff;         //PB各口设为输出
    LCD_write_cmd(0x38);        //2行,5*7点阵/每字符
    delay_xms(1);
    LCD_write_cmd(0x01);        //LCD清屏
    delay_xms(1);
    LCD_write_cmd(0x06);        //字符输入模式;地址增量,显示屏不动,字符后移
    delay_xms(1);
    LCD_write_cmd(0x0c);        //显示开,光标不显示不闪烁
    delay_xms(1);
    //RW=0;
}

 

 

文章评论5条评论)

登录后参与讨论

用户377235 2014-8-24 18:03

不错

用户593939 2014-4-28 18:44

学习和参考了

460114537_680770963 2014-4-22 13:07

恩。不错的建议

644398774_263592779 2014-4-22 00:22

个人觉得还可以将延时函数打包成头文件,方便调用

用户403664 2014-4-21 16:46

赞啊
相关推荐阅读
460114537_680770963 2014-06-09 18:25
【Protel】Altium Designer 10的初作PCB板——AVR mega16单片机系统版
       经过好久的挣扎,自学Altium Designer 10,终于画出了自己的第一块PCB——基于AVR mega16单片机的小系统开发板,不知道焊接好元器件后能否正常工作~~~~(&g...
460114537_680770963 2014-05-16 13:04
【关于工作】初次面试“血泪史“
公司:广东XXXXXX          岗位:硬件工程师       笔试 :半小时的笔试+填信息表      1、 一个C语言程序: include<stdio.h> v...
460114537_680770963 2014-05-12 22:08
【Protel】Altium Designer 10学习笔记(一)
1、PCB,Printed Circuit Board印制电路板/印刷电路板,准确定以为:以绝缘敷铜板为基板,经过印刷、蚀刻、钻孔及后处理等工序,将电路中元器件的连接关系用一组导线图形和孔位制作在...
460114537_680770963 2014-05-11 23:10
【protel】ATmega16单片机开发系统——基于Altium Designer 10
        最近,在自学Altium Designer 10(原Protel),想在大三下学期把PCB学会。上图和PDF附件一张,欢迎各位指教,感激不尽。  以下是我画的原理图,基于Atmel...
460114537_680770963 2014-04-29 12:17
联发科处理器能走多远?
功能机时代,联发科(MTK)是山寨手机的代名词,其廉价的手机芯片+操作界面解决方案成为了杂牌、低价手机的首选,一度“臭名昭彰”;而随着Android智能平台的崛起,联发科如今已经成为增长最快的科技公司...
460114537_680770963 2014-04-21 16:45
[博客大赛]【FPGA】基于DE2-70的VGA控制显示
一、概述    本文将讲述基于FPGA的VGA显示控制原理,并在Altera的DE2-70 FPGA开发板上实现以下效果:利用VGA控制,使液晶显示器显示一幅七彩色条图像(红、黄、蓝、白、洋红...
我要评论
5
27
关闭 站长推荐上一条 /2 下一条