📄 gps.h
字号:
#ifndef LCD1602_4_H
#define LCD1602_4_H
#include <reg52.h>
#include <intrins.h>
#define HIGH 1
#define LOW 0
//*****************************************
#define DATA_MODE 0x28//LCD模式设置,0x28位四位数据线模式
//***********//LCD1602的接线//*****************************
sbit LCD1602_D7=P0^0;
sbit LCD1602_D6=P0^1;
sbit LCD1602_D5=P0^2;
sbit LCD1602_D4=P0^3;
sbit LCD1602_RS=P0^6;//RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
sbit LCD1602_RW=P0^5;//RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
sbit LCD1602_EN=P0^4;//E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
//**********************************************************************
void LCD_en_com(unsigned char command); //写命令指令
void LCD_en_dat(unsigned char temp); //写数据指令
void LCD_init(void); //lcd初始化
void LCD_Read_BF(void); //LCD读忙信号
void LCD_write_string(const unsigned char *s);
//**********************************************************************
/*
LCD1602.c
Created by Zhang Lei
email: zhlei06985@126.com
*/
void LCD_Read_BF(void) //读忙
{
LCD1602_RW=HIGH; //RW 1
LCD1602_RS=LOW; //RS 0
_nop_();
_nop_();
LCD1602_EN=HIGH; //EN 1 读忙信号
while(LCD1602_D7);
LCD1602_EN=LOW;
}
void LCD_en_write(void) //EN端产生一个高电平脉冲,写LCD
{
_nop_();
_nop_();
_nop_();
LCD1602_EN=HIGH;
_nop_();
_nop_();
LCD1602_EN=LOW;
_nop_();
_nop_();
_nop_();
}
//*************************************
void LCD_en_com(unsigned char command)//写命令
{
LCD_Read_BF();
LCD1602_RS=LOW; //RS 0 写命令
_nop_();
_nop_();
LCD1602_RW=LOW; //RW 0
command=command<<1;//先发高四位
LCD1602_D7=CY;
command=command<<1;
LCD1602_D6=CY;
command=command<<1;
LCD1602_D5=CY;
command=command<<1;
LCD1602_D4=CY;
_nop_();
LCD_en_write();
_nop_();
_nop_();
command=command<<1;//后发低四位
LCD1602_D7=CY;
command=command<<1;
LCD1602_D6=CY;
command=command<<1;
LCD1602_D5=CY;
command=command<<1;
LCD1602_D4=CY;
_nop_();
_nop_();
LCD_en_write();
_nop_();
_nop_();
}
//*********************************
void LCD_en_dat(unsigned char dat)
{
LCD_Read_BF();
LCD1602_RS=HIGH; //RS 1 写数据
_nop_();
_nop_();
LCD1602_RW=LOW; //RW 0
dat=dat<<1;//先发高四位
LCD1602_D7=CY;
dat=dat<<1;
LCD1602_D6=CY;
dat=dat<<1;
LCD1602_D5=CY;
dat=dat<<1;
LCD1602_D4=CY;
_nop_();
LCD_en_write();
_nop_();
_nop_();
dat=dat<<1;//后发低四位
LCD1602_D7=CY;
dat=dat<<1;
LCD1602_D6=CY;
dat=dat<<1;
LCD1602_D5=CY;
dat=dat<<1;
LCD1602_D4=CY;
_nop_();
LCD_en_write();
_nop_();
_nop_();
}
//*********************************
void LCD_write_string(const unsigned char *s)
{
while(*s)
{
LCD_en_dat(*s);
if(*s=='N')
{
LCD_en_com(0xc2);
s++;
}
s++;
}
}
//*****//LCD的初始化函数(刚上电的时候一定要调用一次)//*********************
void LCD_init(void)
{
LCD_en_com(DATA_MODE); //设计四位数据线模式
LCD_en_com(DATA_MODE); //设计四位数据线模式
LCD_en_com(0x0c);//开屏, 光标不显示,光标不闪烁
LCD_en_com(0x06);//指针加加,屏不移动
LCD_en_com(0x01);//清屏
_nop_();
_nop_();
_nop_();
_nop_();
LCD_en_com(0x81);//定义首地址
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -