⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gps.h

📁 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 + -