182 lines
4.5 KiB
C
182 lines
4.5 KiB
C
![]() |
#ifndef _lcd1602_H
|
|||
|
#define _lcd1602_H
|
|||
|
|
|||
|
#include "public.h"
|
|||
|
|
|||
|
//LCD1602<30><32><EFBFBD>ݿ<EFBFBD>4λ<34><CEBB>8λ<38><CEBB><EFBFBD>壬<EFBFBD><E5A3AC>Ϊ1<CEAA><31><EFBFBD><EFBFBD>ΪLCD1602<30><32>λ<EFBFBD><CEBB><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮Ϊ8λ
|
|||
|
#define LCD1602_4OR8_DATA_INTERFACE 0 //Ĭ<><C4AC>ʹ<EFBFBD><CAB9>8λ<38><CEBB><EFBFBD>ݿ<EFBFBD>LCD1602
|
|||
|
|
|||
|
//<2F>ܽŶ<DCBD><C5B6><EFBFBD>
|
|||
|
sbit LCD1602_RS=P2^6;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
sbit LCD1602_RW=P2^5;//<2F><>дѡ<D0B4><D1A1>
|
|||
|
sbit LCD1602_E=P2^7; //ʹ<><CAB9><EFBFBD>ź<EFBFBD>
|
|||
|
#define LCD1602_DATAPORT P0 //<2F>궨<EFBFBD><EAB6A8>LCD1602<30><32><EFBFBD>ݶ˿<DDB6>
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void lcd1602_init(void);
|
|||
|
void lcd1602_clear(void);
|
|||
|
void lcd1602_show_string(u8 x,u8 y,u8 *str);
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : lcd1602_write_cmd
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LCD1602д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : cmd<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8λLCD
|
|||
|
void lcd1602_write_cmd(u8 cmd)
|
|||
|
{
|
|||
|
LCD1602_RS=0;//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LCD1602_RW=0;//ѡ<><D1A1>д
|
|||
|
LCD1602_E=0;
|
|||
|
LCD1602_DATAPORT=cmd;//<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=1;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=0;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
}
|
|||
|
#else //4λLCD
|
|||
|
void lcd1602_write_cmd(u8 cmd)
|
|||
|
{
|
|||
|
LCD1602_RS=0;//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LCD1602_RW=0;//ѡ<><D1A1>д
|
|||
|
LCD1602_E=0;
|
|||
|
LCD1602_DATAPORT=cmd;//<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=1;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=0;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
|
|||
|
LCD1602_DATAPORT=cmd<<4;//<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=1;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=0;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : lcd1602_write_data
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LCD1602д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : dat<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8λLCD
|
|||
|
void lcd1602_write_data(u8 dat)
|
|||
|
{
|
|||
|
LCD1602_RS=1;//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LCD1602_RW=0;//ѡ<><D1A1>д
|
|||
|
LCD1602_E=0;
|
|||
|
LCD1602_DATAPORT=dat;//<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=1;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=0;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
}
|
|||
|
#else
|
|||
|
void lcd1602_write_data(u8 dat)
|
|||
|
{
|
|||
|
LCD1602_RS=1;//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LCD1602_RW=0;//ѡ<><D1A1>д
|
|||
|
LCD1602_E=0;
|
|||
|
LCD1602_DATAPORT=dat;//<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=1;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=0;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
|
|||
|
LCD1602_DATAPORT=dat<<4;//<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=1;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
delay_ms(1);
|
|||
|
LCD1602_E=0;//ʹ<>ܽ<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : lcd1602_init
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LCD1602<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8λLCD
|
|||
|
void lcd1602_init(void)
|
|||
|
{
|
|||
|
lcd1602_write_cmd(0x38);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<38><CEBB><EFBFBD><EFBFBD>ʾ2<CABE>У<EFBFBD>5*7<><37><EFBFBD><EFBFBD>/<2F>ַ<EFBFBD>
|
|||
|
lcd1602_write_cmd(0x0c);//<2F><>ʾ<EFBFBD><CABE><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD><DEB9>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸
|
|||
|
lcd1602_write_cmd(0x06);//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
|
|||
|
lcd1602_write_cmd(0x01);//<2F><><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
#else
|
|||
|
void lcd1602_init(void)
|
|||
|
{
|
|||
|
lcd1602_write_cmd(0x28);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4λ<34><CEBB><EFBFBD><EFBFBD>ʾ2<CABE>У<EFBFBD>5*7<><37><EFBFBD><EFBFBD>/<2F>ַ<EFBFBD>
|
|||
|
lcd1602_write_cmd(0x0c);//<2F><>ʾ<EFBFBD><CABE><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD><DEB9>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸
|
|||
|
lcd1602_write_cmd(0x06);//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
|
|||
|
lcd1602_write_cmd(0x01);//<2F><><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : lcd1602_clear
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LCD1602<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
void lcd1602_clear(void)
|
|||
|
{
|
|||
|
lcd1602_write_cmd(0x01);
|
|||
|
}
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : lcd1602_show_string
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LCD1602<EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : x,y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>꣬x=0~15<EFBFBD><EFBFBD>y=0~1;
|
|||
|
str<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
void lcd1602_show_string(u8 x,u8 y,u8 *str)
|
|||
|
{
|
|||
|
u8 i=0;
|
|||
|
|
|||
|
if(y>1||x>15)return;//<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD>˳<EFBFBD>
|
|||
|
|
|||
|
if(y<1) //<2F><>1<EFBFBD><31><EFBFBD><EFBFBD>ʾ
|
|||
|
{
|
|||
|
while(*str!='\0')//<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'\0'<27><>β<EFBFBD><CEB2>ֻҪǰ<D2AA><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE><EFBFBD>ʾ
|
|||
|
{
|
|||
|
if(i<16-x)//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD>ڵڶ<DAB5><DAB6>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
{
|
|||
|
lcd1602_write_cmd(0x80+i+x);//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lcd1602_write_cmd(0x40+0x80+i+x-16);//<2F>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
lcd1602_write_data(*str);//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
str++;//ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
i++;
|
|||
|
}
|
|||
|
}
|
|||
|
else //<2F><>2<EFBFBD><32><EFBFBD><EFBFBD>ʾ
|
|||
|
{
|
|||
|
while(*str!='\0')
|
|||
|
{
|
|||
|
if(i<16-x) //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>һ<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
{
|
|||
|
lcd1602_write_cmd(0x80+0x40+i+x);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lcd1602_write_cmd(0x80+i+x-16);
|
|||
|
}
|
|||
|
lcd1602_write_data(*str);
|
|||
|
str++;
|
|||
|
i++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endif
|