📄 my1602.h
字号:
//我的1602启动程序
//my1602.h
#ifndef LCM_MY1602_20071130
#define LCM_MY1602_20071130
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//数据口、端口定义
sbit RS=P3^5; //数据、命令端
sbit RW=P3^6; //读、写选择
sbit EN=P3^7; //
#define Dataport P0 //数据输入输出口P3
#define Busy 0x80 //忙检测
/**********函数声明**********/
void lcm_delay(uint k);
void lcm_init(void);
void lcm_write_command(uchar command,uchar wait);
void lcm_write_data(uchar char_data);
void lcm_wait(void);
void display_char(uchar X,uchar Y,uchar char_data);
void display_string(uchar X,uchar Y,uchar str[]);
void display_string2(uchar X,uchar Y,uchar str[]);
void left_move_string(uchar X,uchar S,uchar str1[],uchar str2[]);
void left_move_string(uchar X,uchar S,uchar str1[],uchar str2[]);
/**********延时K*1ms,12MHz晶振**********/
void lcm_delay(uint k)
{
uint i,j;
for(i=0;i<k;i++)
{
for(j=0;j<240;j++){;}
}
}
/**********液晶初始化**********/
void lcm_init(void)
{
Dataport=0;
lcm_delay(15);
lcm_write_command(0x38,0);//三次显示模式设置
lcm_delay(5);
lcm_write_command(0x38,0);
lcm_delay(5);
lcm_write_command(0x38,0);
lcm_delay(5);
lcm_write_command(0x38,1);//8bit数据传送,2行显示,5*7字型
lcm_write_command(0x08,1);//显示关闭
lcm_write_command(0x01,1);//显示清屏
lcm_write_command(0x06,1);//显示光标右移设置
lcm_write_command(0x0c,1);//显示屏打开,光标不显示,不闪烁
}
/***************液晶内部等待*******************/
void lcm_wait(void)
{
Dataport=0xff;
EN=1;
RS=0;
RW=1;
_nop_();
while(Dataport&Busy)
{
EN=0;
_nop_();
_nop_();
EN=1;
_nop_();
_nop_();
}
EN=0;
}
/**********写指令函数**********/
void lcm_write_command(uchar command,uchar wait)
{
if(wait)lcm_wait();
Dataport=command;
RS=0; // 选中指令寄存器
RW=0; // 写模式
EN=1;
_nop_();
_nop_();
_nop_();
EN=0;
}
/***************写数据函数*****************/
void lcm_write_data(uchar char_data)
{
lcm_wait( ); //检测忙信号
Dataport=char_data;
RS=1; // 选中数据寄存器
RW=0; // 写模式
EN=1;
_nop_();
_nop_();
_nop_();
EN=0;
}
/**************字符显示函数**************/
void display_char(uchar X,uchar Y,uchar char_data)
{
X&=1;
Y&=15;
if(X)Y|=0x40; //若y为1(显示第二行),地址码+0X40
Y|=0x80; //指令码为地址码+0X80
lcm_write_command(Y,0);
lcm_write_data(char_data);
}
/***************字符串显示函数******************/
/*void display_string(uchar X,uchar Y,uchar str[])
{
uchar i=0;
X&=0x01;
Y&=0x0f;
while(Y>=0&&Y<16&&str[i]!='\0')
{
display_char(X,Y,str[i]);
i++;
Y++;
}
}
/***************字符串显示函数******************/
/*void display_string2(uchar X,uchar Y,uchar str[])
{
uchar i=0;
X&=0x01;
Y&=0x0f;
while(Y>=0&&Y<16&&str[i]!='\0')
{
display_char(X,Y,str[i]);
i++;
Y--;
}
}*/
/*****************左移字符串函数************************/
/*void left_move_string(uchar X,uchar S,uchar str1[],uchar str2[]) //X为选行,S为移动速度(S*1ms)
{
uint i;
uchar X1;
X1=~X;
for(i=15;i>=0;i--)
{
lcm_write_command(0x01,1);
display_string(X1,0,str1);
display_string(X,i,str2);
lcm_delay(S);
}
}
/*****************右移字符串函数************************/
/*void right_move_string(uchar X,uchar S,uchar str1[],uchar str2[]) //X为选行,S为移动速度(S*1ms)
{
uint i;
uchar X1;
X1=~X;
for(i=0;i<=15;i++)
{
lcm_write_command(0x01,1);
display_string2(X1,15,str1);
display_string2(X,i,str2);
lcm_delay(S);
}
}
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -