📄 lcd.c
字号:
#include "LCD.h"
#include "DELAY.h"
#include "mega16.h"
/*******************************************************************
函 数 名:LCD_INIT
入口参数:无
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:液晶初始化
说 明:
********************************************************************/
void LCD_INIT(void)
{
LCD_WR1BYTE(0,0,0x30); //功能设置 8位数据,基本指令
DELAY_1MS(2);
LCD_WR1BYTE(0,0,0x0C); //显示状态 ON,游标OFF,反白OFF
DELAY_1MS(2);
LCD_WR1BYTE(0,0,0x01); //清除显示
DELAY_1MS(2);
LCD_WR1BYTE(0,0,0x02); //地址归位
DELAY_1MS(2);
LCD_WR1BYTE(0,0,0x80); //设置DDRAM地址
DELAY_1MS(2);
LCD_WR1BYTE(0,0,0x30); //关闭绘图模式,进入字符模式
DELAY_1MS(2);
}
/********************************************************************
函 数 名:LCD_WR8BITS
入口参数:W_bits
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:负责串行输出8个bit位
说 明:
********************************************************************/
void LCD_WR8BITS(unsigned int wbits)
{
unsigned int i,Temp_data;
for(i=0; i<8; i++)
{
Temp_data = wbits;
Temp_data <<= i;
if((Temp_data&0x80)==0) //bit7 is zero
{
Clr_SID();
#asm("nop");
Set_SCLK();
#asm("nop");
#asm("nop");
Clr_SCLK();
#asm("nop");
Clr_SID();
}
else //bit7 is one
{
Set_SID();
#asm("nop");
Set_SCLK();
#asm("nop");
#asm("nop");
Clr_SCLK();
#asm("nop");
Clr_SID();
}
}
}
/*******************************************************************
函 数 名:LCD_WR1BYTE
入口参数:RW、RS、W_data
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:写一个字节的数据到12864液晶,包括指令和数据
说 明:RW=1,从液晶读数据到MCU;RW=0,写一个数据到液晶;
一般RW都设为0,即只向液晶写数据,不读数据
RS=1,写入的是数据;RS=0,写入的是指令;
一般模式:RW=0,RS=1;写数据
RW=0,RS=0;写指令
********************************************************************/
void LCD_WR1BYTE(unsigned char RW,unsigned char RS,unsigned char wdata)
{
unsigned int H_data,L_data,S_ID = 0xf8; //11111RWRS0
if(RW == 0)
{
S_ID &=~ 0x04;
}
else //if(RW==1)
{
S_ID |= 0X04;
}
if(RS == 0)
{
S_ID &=~ 0x02;
}
else //if(RS==1)
{
S_ID |= 0X02;
}
H_data = wdata;
H_data &= 0xf0; //屏蔽低4位的数据 //为什么要这样,见SG12864J501C2.pdf第18页
L_data = wdata; //xxxx0000格式
L_data &= 0x0f; //屏蔽高4位的数据
L_data <<= 4; //xxxx0000格式
Set_CS();
LCD_WR8BITS(S_ID); //发送S_ID
LCD_WR8BITS(H_data); //发送H_data
LCD_WR8BITS(L_data); //发送L_data
Clr_CS();
}
/********************************************************************
函 数 名:LCD_DISPLAY
入口参数:*message
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:在LCD上显示*message所指向的内容
说 明:
********************************************************************/
void LCD_DISPLAY(unsigned char *message)
{
unsigned char i = 0;
for(i=0;message[i]!='\0';i++)
{
LCD_WR1BYTE(0,1,message[i]);
}
}
/*******************************************************************
函 数 名:LCD_CLEAR
入口参数:无
出口参数:无
建立日期:2007年8月17日
修改日期:
函数作用:清屏
说 明:
********************************************************************/
void LCD_CLEAR(void)
{
#asm("nop");
LCD_WR1BYTE(0,0,0x01);
#asm("nop");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -