📄 sed1335.c
字号:
#include "include.h"
/****************************************************************************************
* 文件名:1335DRV.C
* 功能:图形液晶320*240驱动(型号为SMG240128A)。32K显示存,0000H-7FFFH地址。显示是横向字节,高位
* 在前。
* 说明:图形液晶采用SED1335为LCD控制芯片,内带负压产生器,单5伏供电,并行接口(使用f020驱动)。
* 硬件连接: D0--D7 <===> D0--D7
* /WR <===> /WR
* /RD <===> /RD
* /CE <===> A14
* C/D <===> A0
*
* /RST <===> VCC
****************************************************************************************/
/***********************************************************************
* 以下为LCM的驱动层,主要负责发送SED1335的各种命令,提供设置显示地址等功能,
* 在发送命令前会检测其状态字。
* 带参数命令模式:先参数,后命令;操作模式:先命令,后数据
***********************************************************************/
unsigned char code DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08,0x04, 0x02, 0x01};
unsigned char code SYS_INIT_DAT[8] = {0x30, 0x87, 0x07, 0x27, 0x42,0xef, 0x28, 0x00};//{0x30, 0x87, 0x07, 0x27, 0x2F,0xef, 0x28, 0x00};
unsigned char code SCROLL_DAT[10] = {0x00, 0x00, 0xf0, 0x80, 0x25, 0xF0, 0x80, 0x50,0x00,0x60};//{0x00, 0x00, 0xF0, 0xb0, 0x04, 0xf0, 0x80, 0x50,0x00,0x60};
int Disp_Base_Addr=0;
/***********************************************************************
* 名称:SED1335_Init()
* 功能:LCM初始化,将LCM初始化为纯图形模式,显示起始地址为0x0000,。
* 入口参数:无
* 出口参数:无
* 说明:函数会设置LCM数据总线为输出方式
***********************************************************************/
void SED1335_Init(void)
{
unsigned char i;
LCD_WriteCommand(LCD_SYS_SET); //
for(i=0 ; i < 8 ; i++)
{LCD_WriteData(SYS_INIT_DAT[i]);}
LCD_WriteCommand(LCD_SCR_OLL); //
for(i=0 ; i < 10 ; i++)
{LCD_WriteData(SCROLL_DAT[i]);}
LCD_WriteCommand(LCD_DOT_DIR); //
LCD_WriteData(0x00);
LCD_WriteCommand(LCD_DIS_OVR); //
LCD_WriteData(0x0C);
LCD_WriteCommand(LCD_DIS_ON); //
LCD_WriteData(0x04);
LCD_WriteCommand(LCD_CSR_WR); //
LCD_WriteData(0x00);
LCD_WriteData(0x00);
LCD_WriteCommand(LCD_CSR_DIR); //
}
/***********************************************************************
* 名称:LCD_FillAll()
* 功能:LCD填充。以图形方式进行填充,起始地址为0x0000。
* 入口参数:dat 要填充的数据
* 出口参数:无
***********************************************************************/
void LCD_FillAll(unsigned char dat)
{
unsigned char i,j;
for(j = 0 ; j < 40 ; j++){ //列数: 320/8 = 40
SED1335_CsRw(j);
LCD_WriteCommand(LCD_CSR_DIR+3); //光标自动向下
LCD_WriteCommand(LCD_MEM_WR); //写入显示缓冲区
for(i = 0 ; i < 240 ; i++){
LCD_WriteData(dat);
}
}
}
/*****************************************************************************************
* 名称:LCD_PutHZ(unsigned int X,unsigned int Y,unsigned int p_code)
* 功能:在指定的位置上显示汉字
* 入口参数:
* 出口参数:
******************************************************************************************/
void SED1335_SYS_Set()
{
}
/*************************************************************************
*名称:SED1335_Sleep()
*功能:使LCD工作在休眠模式或从休眠模式唤醒
*入口参数:bit flg_sleep:判断是要进入休眠模式(0)还是从休眠模式唤醒(1)
* unsigned char dat:LCD唤醒时要工作在什么模式
*出口参数:无
***************************************************************************/
void SED1335_Sleep(char flg_sleep,unsigned char P1)
{
switch(flg_sleep&0x01)
{
case 0:
{
LCD_WriteCommand(LCD_SLEEP_IN);break;
}
case 1:
{
LCD_WriteCommand(LCD_SYS_SET);LCD_WriteData(P1); //只要求P1参数
break;
}
}
}
/******************************************************************************
* 名称:SED1335_OnOff()
* 功能:设置光标和显示区的亮暗(光标还有闪烁的功能,默认只有一显示区亮)
* 入口参数:bit OnOff :总控制(0--液晶不显示 1--CurOnOff才有效)
* unsigned char CurOnOff:0--光标不显示,1--光标显示但不闪烁,2 3--光标闪烁
* 出口参数:无
*******************************************************************************/
void SED1335_OnOff(char OnOff,unsigned char CurOnOff)
{
switch (OnOff&0x01)
{
case 0:
{
LCD_WriteCommand(LCD_DIS_OFF);
LCD_WriteData(0x00);
break;
}
case 1:
{
LCD_WriteCommand(LCD_DIS_ON);
LCD_WriteData(0x04&(CurOnOff&0x03));
break;
}
}
}
/*************************************************************************************
* 名称:SED1335_Scroll()
* 功能:设置显存与LCD的对应关系
* 入口参数:
* 出口参数:
**************************************************************************************/
void SED1335_Scroll(unsigned int SAD1,unsigned int SAD2,unsigned int SAD3,unsigned int SAD4,unsigned char SL1,unsigned char SL2)
{
LCD_WriteCommand(LCD_SCR_OLL);
LCD_WriteData(GET_LOW_BYTE(SAD1));
LCD_WriteData(GET_HIG_BYTE(SAD1)); //P2
LCD_WriteData(SL1);
LCD_WriteData(GET_LOW_BYTE(SAD2));
LCD_WriteData(GET_HIG_BYTE(SAD2)); //P5
LCD_WriteData(SL2);
LCD_WriteData(GET_LOW_BYTE(SAD3));
LCD_WriteData(GET_HIG_BYTE(SAD3)); //P8
LCD_WriteData(GET_LOW_BYTE(SAD4));
LCD_WriteData(GET_HIG_BYTE(SAD4)); //P10
}
/***************************************************************************************
* 名称:SED1335_CsrForm()
* 功能:设置光标显示方式和形状
* 入口参数:
* 出口参数:
****************************************************************************************/
void SED1335_CsrForm(unsigned char CRX,unsigned char CRY,unsigned char Disp_Form)
{
LCD_WriteCommand(LCD_CSR_FOM);
LCD_WriteData(CRX&0x07);
LCD_WriteData((CRY&0x0f)|((Disp_Form&0x01)<<7));
}
/*****************************************************************************************
* 名称:SED1335_CspDir()
* 功能:设置光标自增方向
* 入口参数:
* 出口参数:
*****************************************************************************************/
void SED1335_CspDir(Cur_Direct dic)
{
LCD_WriteCommand(LCD_CSR_DIR + dic);
}
/****************************************************************************************
* 名称:SED1335_Oylay()
* 功能:甚至显示方式和显示合成开关
* 入口参数:
* 出口参数:
*****************************************************************************************/
void SED1335_Oylay(Txt_Graph SAD1,Txt_Graph SAD3,OVlay_Form form)
{
LCD_WriteCommand(LCD_DIS_OVR);
LCD_WriteData((SAD3<<3)|(SAD1<<2)|form);
}
/****************************************************************************************
* 名称:SED1335_CsRw()
* 功能:设置光标位置
* 入口参数:
* 出口参数:
*****************************************************************************************/
void SED1335_CsRw(unsigned int cur_addr)
{
LCD_WriteCommand(LCD_CSR_WR);
LCD_WriteData(GET_LOW_BYTE(cur_addr));
LCD_WriteData(GET_HIG_BYTE(cur_addr));
}
/*****************************************************************************************
* 名称:SED1335_CsRr()
* 功能:读取光标位置
* 入口参数:
* 出口参数:
******************************************************************************************/
unsigned int SED1335_CsRr(void)
{
unsigned char APL,APH;
LCD_WriteCommand(LCD_CSR_RD);
LCD_ReadData(APL);
LCD_ReadData(APH);
return (unsigned int)((unsigned int)APL|(unsigned int)(APH<<8));
}
/*****************************************************************************************
* 名称:SED1335_WMrite()
* 功能:向显存写入数据
* 入口参数:
* 出口参数:
******************************************************************************************/
void SED1335_WMrite(unsigned char *p,unsigned int LEN)
{
unsigned int i;
LCD_WriteCommand(LCD_MEM_WR);
for(i=0;i<LEN;i++)
LCD_WriteData(p[i]);
}
/******************************************************************************************
* 名称:SED1335_MRead(void)
* 功能:读取显存内容
* 入口参数:
* 出口参数:
********************************************************************************************/
unsigned char *SED1335_MRead(unsigned int LEN)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -