#include"1602.h"
/*****************LCD延时********************/
void Delay(WORD n)
{
WORD x;
while(n--)
{
x=500;
while(x--);
}
}
/************************************************************************
Function name: write_cmd
Descriptions: 向lcd输入指令
************************************************************************/
void write_cmd(BYTE cmd)
{
BYTE dl;
do {
dl=rd_com;
} while((dl&0x80)!=0); //判忙
wr_com= cmd;
Delay(1);
}
/**********************************************************************
Function name: write_data
Descriptions: 写入数据
**********************************************************************/
void write_data(BYTE dat)
{
BYTE dl;
do {
dl=rd_com;
} while((dl&0x80)!=0); //判忙
wr_data= dat;
Delay(1);
}
/***********************************************************************
Function name: write_string
Descriptions: 写入字符串
***********************************************************************/
void write_string(BYTE *s)
{
while(*s != '\0') //'\0'为字符串结束标志
{
write_data(*s);
s++;
}
}
/**********************************************************************
Function name: set_display_place
Descriptions: 设置字符的显示位置
**********************************************************************/
void set_display_place(BYTE line,column)
{
BYTE address;
if(line == 1)
{
address = 0x80 + column;
}
else if(line == 2)
{
address = 0xc0 + column;
}
write_cmd(address);
}
/*******************************************************************
Function name: 将字符串写到指定的位置
Descriptions: 将字符串显示在lcd的特定位置
*******************************************************************/
void write_string_lcd(BYTE line,column,unsigned char *string)
{
set_display_place(line,column);
write_string(string);
Delay(1);
}
void write_sfm2(BYTE line,column,unsigned char date) // ASCII 代码 0x30=0: 0x39=9
{
set_display_place(line,column);
write_data(0x30+date/10%10);
write_data(0x30+date%10);
Delay(1);
}
void LCD_Show_Time(unsigned char Hour_Read,Min_Read,Sec_Read,Year_Read,Month_Read,Day_Read) // BCD代码
{
set_display_place(1,5);
write_data(0x30+Year_Read/16);
write_data(0x30+Year_Read%16);
set_display_place(1,8);
write_data(0x30+Month_Read/16);
write_data(0x30+Month_Read%16);
set_display_place(1,11);
write_data(0x30+Day_Read/16);
write_data(0x30+Day_Read%16);
set_display_place(2,4);
write_data(0x30+Hour_Read/16);
write_data(0x30+Hour_Read%16);
set_display_place(2,7);
write_data(0x30+Min_Read/16);
write_data(0x30+Min_Read%16);
set_display_place(2,10);
write_data(0x30+Sec_Read/16);
write_data(0x30+Sec_Read%16);
Delay(1);
}
/***************************************************
************液晶模块初始化******************************
****************************************************/
//write_string_lcd(1,0," 2019-01-07 ");//5 8 11
//write_string_lcd(2,0," 18:50:00 ");//4 7 10
void Init_1602(void)
{
write_cmd(0x38);//
write_cmd(0x0c);//
write_cmd(0x06);//
write_cmd(0x01);// 清屏
write_cmd(0x01);// 清屏
write_string_lcd(1,0," 2019-01-07 ");//5 8 11
write_string_lcd(2,0," 17:50:00 ");//4 7 10
write_string_lcd(1,0," 2019-01-07 ");//5 8 11
write_string_lcd(2,0," 17:50:00 ");//4 7 10
}