📄 1602.txt
字号:
/*************************************************
File name: // 1602DRriver.h
Author: 文qinyong Version:Uv2 Date:2007-03-15
Description: //字符型液晶1602驱动头文件,
*************************************************/
#include"1602Driver.h"
/*******************************************/
/*******************************************/
/********** 函数功能:延时5ms ********/
/********** 输入参数:无 ********/
/********** 返回值 :无 ********/
/*******************************************/
/*******************************************/
void delay_5ms(void) //短延时5ms
{
unsigned int i=5552;
while(i--);
}
/*******************************************/
/*******************************************/
/********** 函数功能:延时400ms ********/
/********** 输入参数:x ********/
/********** 返回值 :无 ********/
/*******************************************/
/*******************************************/
void delay_400ms(void) //长延时400ms
{
unsigned char i = 5;
unsigned int j;
while(i--){
j=7269;
while(j--);
};
}
/**********************************************/
/**********************************************/
/******* 函数功能:写命令 *******/
/******* 输入参数:command,BusyC *******/
/******* 返回值 :无 *******/
/**********************************************/
/**********************************************/
void LCD_command(unsigned char command,unsigned char BusyC)
{
if (BusyC) ReadStatus(); //Test it busy or not
LCDIO=command;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_EN=0;
LCD1602_EN=0;
LCD1602_EN=1;
}
/***********************************************/
/***********************************************/
/******* 函数功能:写数据 ****************/
/******* 输入参数:dat,BusyC ****************/
/******* 返回值 :无 ****************/
/***********************************************/
/***********************************************/
void LCD_data(unsigned char dat,unsigned char BusyC) //置显示值
{
if (BusyC) ReadStatus(); //Test it busy or not
LCDIO=dat;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
LCD1602_EN=0;
LCD1602_EN=1;
}
/********************************************/
/********************************************/
/******* 函数功能:写地址 *****/
/******* 输入参数:x,y *****/
/******* 返回值 :无 *****/
/********************************************/
/********************************************/
/****************** x为列,y为行**************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == LINE1) //第一行
address = LINE1_HEAD + x;
else //第二行
address = LINE2_HEAD + x;
LCD_command(address,1); //送显示首地址
}
/*********************************************/
/*********************************************/
/********** 函数功能:显示单字符 ******/
/********** 输入参数:X,Y,s ******/
/********** 返回值 :无 ******/
/*********************************************/
/*********************************************/
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y ); //设地址
LCD_data(dat,1); //写数据
}
/*********************************************/
/*********************************************/
/********** 函数功能:显示字符串 ******/
/********** 输入参数:X,Y,s ******/
/********** 返回值 :无 ******/
/*********************************************/
/*********************************************/
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y ); //set address
while (*s) // write character
{
LCDIO=*s;
LCD_data(*s,1);
s ++;
}
}
/********************************************/
/********** 功 能:显示数组数据 *********/
/********** 输入参数:X,Y,*p,longstr *******/
/********** 返回值 :无 ********/
/********************************************/
//void LCD_write_Array(unsigned char X,unsigned char Y,unsigned char *p, unsigned char longstr)
//{
// unsigned char i=0;
// LCD_set_xy( X, Y ); //set address
// while(i<longstr)
// {
// LCD_data(p[i],1); //写数据
// i++;
// }
//}
/**********************************************/
/**********************************************/
/******* 函数功能:初始化 *********/
/******* 输入参数:无 *********/
/******* 返回值 :无 *********/
/**********************************************/
/**********************************************/
void LCD_init(void)
{
delay_400ms();
LCD_command(CLR,0); //清屏
LCD_command(DATA_MODE,1); //set 8 bit data transmission mode 8位2行5*7点阵
LCD_command(OPEN_SCREEN,1); //open display (enable lcd display) 显示开,无光标,不闪烁
LCD_command(DISPLAY_ADDRESS,1); //set lcd first display address 送显示首地址
LCD_command(CLR,1); //clear screen 清屏
}
/**********************************************/
/**********************************************/
/********* 函数功能:忙判断位 ***************/
/********* 输入参数:无 ***************/
/********* 返回值 :LCDIO ***************/
/**********************************************/
/**********************************************/
unsigned char ReadStatus(void)
{
LCDIO = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
LCD1602_EN = 0;
LCD1602_EN = 0;
LCD1602_EN = 1;
while (LCDIO & BUSY); //Test Busy State
return(LCDIO);
}
/*************************************************/
/*********************main*********************/
/***********************************************/
unsigned char SR1[]="Hello girl! ";
#define L 12 //SR1的长度
void main(void)
{
unsigned char i,j;
LCD_init();
LCD_command(CLR,0);
while(1)
{
for(j=0;j<L;j++)
{
for(i=0;i<L-j;i++)
{
LCD_write_char(i,0,SR1[i+j]); //字符串左移消失 第一遍从第一个数开始显示,
} //第二遍从第二个开始,以此类推
LCD_write_string(0,1," 2007-09-2 "); //字符串居中
delay_400ms();
delay_400ms();
delay_400ms();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -