//超聲波測距模塊 trig接P3^1 Echo接P3^2
#ifndef _LCD1602_DEF_
#define _LCD1602_DEF_
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//LCD1602 引腳定義 //采用 8 位并行方式,DB0~DB7 連接至 P00~P07
sbit RS=P1^2;
sbit RW=P1^1;
sbit CS=P1^0;
#define LCDDATA P2 //數(shù)據(jù)端口在 P0
//**********************************************
void Delay_xms(uint x) //功能:延時 1 毫秒
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<122;j++);
}
//******************************************
void Delay_xus(uint t) //功能:12us 延時
{
for(;t>0;t--)
{ _nop_();
}
}
//*************************************
void LCD_en(void) //控制 LCD 寫時序
{
CS=1; //EN 端產(chǎn)生一個高電平脈沖,控制 LCD 寫時序
Delay_xus(20);
CS=0;
Delay_xus(20);
} //**************************************************
void WR_Command(uchar command) //寫指令函數(shù)//寫指令函數(shù)
{
RS=0;
RW=0;
CS=1;
LCDDATA=command;
LCD_en();//寫入指令數(shù)據(jù)
}
//*******************************************
void WR_Data(uchar Wdata) //寫數(shù)據(jù)函數(shù)
{
RS=1;
RW=0;
CS=1;
LCDDATA=Wdata;
LCD_en();//寫入數(shù)據(jù)
}
//********************************************************
void SET_XY(uchar X,uchar Y) //字符顯示初始地址設(shè)置
{
uchar address;
if(Y==0)
address=0x80+X;//Y=0,表示在第一行顯示,地址基數(shù)為 0x80
else
address=0xc0+X;//Y 非 0 時,表時在第二行顯示,地址基數(shù)為 0xC0
WR_Command(address);//寫指令,設(shè)置顯示初始地址
}
//***********************************************
void WR_str(uchar X,uchar Y,uchar *s) //在第 X 行 Y 列開始顯示,指針*S 所指向的字符串
{
SET_XY(X,Y); //設(shè)置初始字符顯示地址
while(*s) //逐次寫入顯示字符,直到最后一個字符"/0"
{
WR_Data(*s); //寫入當前字符并顯示
s++; //地址指針加 1,指向下一個待寫字符
}
}
//*****************************************************
void WR_char(uchar X,uchar Y,uchar Wdata) //在第 X行 Y 列開始顯示 Wdata 所對應(yīng)的單個字 符
{
SET_XY(X,Y);//寫地址
WR_Data(Wdata);//寫入當前字符并顯示
}
//***********************************
void LCD_clear(void) //清屏函數(shù)
{
WR_Command(0x01);
Delay_xms(5); }
//*********************************************
void LCD_init(void) //顯示屏初始化函數(shù)
{
WR_Command(0x38); //8bit interface,2line,5*7dots
Delay_xms(5);
WR_Command(0x38);
Delay_xms(5);
WR_Command(0x38);
WR_Command(0x08); //關(guān)顯示,不顯光標,光標不閃爍
WR_Command(0x01); //清屏
Delay_xms(5);
WR_Command(0x04); //寫一字符,整屏顯示不移動
Delay_xms(5);
WR_Command(0x0C); //開顯示,光標、閃爍都關(guān)閉
}
#endif
|