📄 lcd.c
字号:
/************************************************************
Copyright (C) Xiong,Hui at www.51embed.com
FileName: lcd.c
Author: Xiong,Hui huixiong73@gmail.com
Date:08/3/24
Description:
Version: 1.0
Function List:
1. lcd_disp();
2. lcd_init();
3. lcd_sta();
4. lcd_data();
5. lcd_clr();
History:
1. Huixiong 08/3/24 1.0 build this moudle
***********************************************************/
#include "at89x52.H"
#include <absacc.h>
#include <intrins.h>
#include "lcd.h"
/*************************************************************
* Function:lcd_disp()
* Description:
* Calls:
* Called by:
* Input:
* Output:
* Return:
* Others:
* History:
1.Huixiong 08/3/24 created
*************************************************************/
void lcd_disp(unsigned char data page,unsigned char data line,unsigned char *character)
{
unsigned char data i;
LCS1 = 1;
LCS2 = 0;
if(line >= 0x80){
LCS1 = 0;
LCS2 = 1;
line = line-0x40;
}
lcd_sta(page);
lcd_sta(line);
for(i=0;i<16;i++){
lcd_data(character[i]);
}
lcd_sta(page+1);
lcd_sta(line);
for(i=16;i<32;i++){
lcd_data(character[i]);
}
}
/*************************************************************
* Function:lcd_init()
* Description:test the busy bit of LCD status,b7
* Calls:
* Called by: lcd_disp()
* Input:
* Output:
* Return:
* Others:
* History:
1.Huixiong 08/3/24 created.
*************************************************************/
void lcd_init(void)
{
LCDRST = 0;
_nop_();
_nop_();
_nop_();
LCDRST = 1; //reset the lcd module
LCS1 = 0;
LCS2 = 0;
lcd_sta(0x3f); //turn on the display
lcd_sta(0xc0); //display the first line
lcd_clr(); //clear the LCD display
}
/*************************************************************
* Function:lcd_sta()
* Description:write the command into the LCD
* Calls:
* Called by: lcd_disp()
* Input:
* Output:
* Return:
* Others:because the status of LCD cannot be read,so the BUSY status has not been processed
it works in the proteus'simulation,but the following code may need time delay between instructions
in real circuits.
* History:
1.Huixiong 08/3/24 created.
*************************************************************/
void lcd_sta(unsigned char data sta)
{
XBYTE[CS5]=sta;
EN = 1;
RW = 0;
RS = 0;
EN = 0;
}
/*************************************************************
* Function:lcd_data()
* Description:write the data into the LCD
* Calls:
* Called by: lcd_disp()
* Input:
* Output:
* Return:
* Others:
* History:
1.Huixiong 08/3/24 created.
*************************************************************/
void lcd_data(unsigned char data dat)
{
XBYTE[CS5]=dat;
EN = 1;
RS = 1;
RW = 0;
EN = 0;
}
/*************************************************************
* Function:lcd_clr()
* Description:clear the LCD
* Calls:
* Called by: lcd_init()
* Input:
* Output:
* Return:
* Others:
* History:
1.Huixiong 08/3/24 created.
*************************************************************/
void lcd_clr(void)
{
unsigned char data i,j,m;
for(i=0;i<8;i++){
m = i;
m = m | 0xb8;
lcd_sta(m);
lcd_sta(0x40);
for(j=0;j<64;j++){
lcd_data(0x00);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -