📄 160x160.c
字号:
#include "absacc.h"
/*define function*/
/*define SED1335 port address*/
#define SEDWRCOM XBYTE[0X8001] //写指令代码
#define SEDRDCSR XBYTE[0X8001] //读光标指针
#define SEDWRDAT XBYTE[0X8000] //写指令参数和显示数据
#define SEDRDSTA XBYTE[0X8000] //读状态标志
/*define LCD code */
#define SYSSET 0x40//显示参数
#define SCROLL 0x44
#define SLEEP 0x53
#define DISPON 0x59
#define DISPOFF 0x58
#define OVLAY 0x5b
#define HDOTSCR 0x5a
#define CSRFORM 0x5d
#define CGRAMADR 0x5c
#define CSRRGT 0x4c
#define CSRLFT 0x4d
#define CSRUP 0x4e
#define CSRDOWN 0x4f
#define CSRW 0x46
#define CSRR 0x47
#define MWRITE 0x42
#define MREAD 0x43
#define BasePart1 0x00 //SAD1H
#define BasePart2 0x40 //SAD2H
#define BasePart3 0x60 //SAD3H
#define BasePart4 0x00 //SAD4H
#define paraP9 0x14 // 相对于160 X 160每行20列
unsigned char code SYSTAB[8]={0x30,0x87,0x07,0x13,0x1f,0xa0,0x14,0x00};//初始化系统参数
unsigned char code SCRTAB[10]={0x00,0x00,0x9f,0x00,0x40,0x9f,0x00,0x60,0x00,0x00};
/*******************************************************************************************/
/*函数名称:void WLcdCom(unsigned char com ) */
/*功能描述:写LCD控制命令 */
/*输入:命令 */
/*输出: */
/*全局变量: */
/*调用函数: */
/* */
/*创建人: 罗广良 */
/*创建日期:2007年11月13日 */
/*修改人: */
/*修改日期: */
/*修改描述: */
void WLcdCom(unsigned char com )
{
SEDWRCOM = com;
_nop_();
}
/*******************************************************************************************/
/*函数名称:void WLcdData(unsigned char ref ) */
/*功能描述:写LCD控制参数和显示字符数据 */
/*输入:控制参数和显示字符数据 */
/*输出: */
/*全局变量: */
/*调用函数: */
/* */
/*创建人: 罗广良 */
/*创建日期:2007年11月13日 */
/*修改人: */
/*修改日期: */
/*修改描述: */
//
void WLcdData(unsigned char ref )
{
SEDWRDAT = ref;
_nop_();
}
/*******************************************************************************************/
/*函数名称:void ClrVRam(void) */
/*功能描述:显示存储器清零 */
/*输入: */
/*输出: */
/*全局变量: */
/*调用函数: */
/* */
/*创建人: 罗广良 */
/*创建日期:2007年11月13日 */
/*修改人: */
/*修改日期: */
/*修改描述: */
//
void ClrVRam(void)
{
unsigned int ii=0x2000,j;
WLcdCom(CSRRGT);
WLcdCom(CSRW);
WLcdData(0x00);
WLcdData(0x00);
WLcdCom(MWRITE);
while(ii--)
{
WLcdData(0x00);
}
}
/*函数名称:void LCM_SetCsrMovDir( unsigned char direction) */
/*功能描述:设置光标自动移动方向 0x4D,或者0x4E */
/*输入: 方向参数 */
/*输出: */
/*全局变量: */
/*调用函数: */
/* */
/*创建人: 罗广良 */
/*创建日期:2007年11月13日 */
/*修改人: */
/*修改日期: */
/*修改描述: */
void LCM_SetCsrMovDir( unsigned char direction)
{
WLcdCom( direction );
}
/*******************************************************************************************/
/*函数名称:void LCM_SetDisOnOff( unsigned char DisOnOff,unsigned char DisParameter ) */
/*功能描述:开关显示屏,写显示参数,可设置显示区域 */
/*输入:
//DisOnOff: 为固定的开关显示参数
//DisParametter: 显示参数, */
/*输出: */
/*全局变量: */
/*调用函数: */
/* */
/*创建人: 罗广良 */
/*创建日期:2007年11月13日 */
/*修改人: */
/*修改日期: */
/*修改描述: */
void LCM_SetDisOnOff( unsigned char DisOnOff,unsigned char DisParameter )
{
WLcdCom( DisOnOff);
WLcdData( DisParameter );
}
/*******************************************************************************************/
/*函数名称:void LCM_Disp_HZ( unsigned char x, unsigned char y, unsigned char chartype, unsigned char *pLocation ) */
/*功能描述:显示一个字符或者汉字 */
/*输入:
//x,y坐标,x以字符为单位,y以点为单位
//chartype -8,表示8X16的数字,-16,表示16X16的汉字
//pLocation,表示要显示字的点阵数据的指针 */
/*输出: */
/*全局变量: */
/*调用函数: 在要显示字符的函数调用 */
/* */
/*创建人: 罗广良 */
/*创建日期:2007年11月13日 */
/*修改人: */
/*修改日期: */
/*修改描述: */
void LCM_Disp_HZ( unsigned char x, unsigned char y, unsigned char chartype, unsigned char *pLocation )
{
unsigned int Optr;
unsigned char i,j;
unsigned char BaseCount = 16;
Optr = y * paraP9 + x; // paraP9=20
LCM_SetCsrMovDir( CSRDOWN ); // 自动右移。
LCM_SetDisOnOff( DISPON,0x54 );
switch(chartype)
{
case 8: //ASCII,8*16
WLcdCom(CSRW);
WLcdData( (unsigned char)(Optr % 256) ); // 设置光标地址CSR低8位
WLcdData( (unsigned char)(Optr / 256) + BasePart1); // 设置光标地址CSR高8位
WLcdCom(MWRITE);
for( j=0; j < 16; j++ )
{
WLcdData( *(pLocation + j) );
}
break;
case 16: //16x16
for (i = 0; i < 2; i++)
{
WLcdCom(CSRW);
WLcdData( (unsigned char)(Optr % 256) ); // 设置光标地址CSR低8位
WLcdData( (unsigned char)(Optr / 256) + BasePart1); // 设置光标地址CSR高8位
WLcdCom(MWRITE);
for( j=0; j < 16 ; j++ )
{
WLcdData( *(pLocation + j * 2 + i) );
}
Optr++;
}
break;
default:
break;
}
}
/*******************************************************************************************/
/*函数名称:void LCM_Init(void) */
/*功能描述:初始化LCD显示参数以及界面 */
/*输入: */
/*输出: */
/*全局变量: */
/*调用函数: 主程序初始化完设备后时调用 */
/* */
/*创建人: 罗广良 */
/*创建日期:2007年11月13日 */
/*修改人: */
/*修改日期: */
/*修改描述: */
void LCM_Init(void)
{
unsigned char i;
WLcdCom(SYSSET);
for(i=0;i<8;i++)
{
WLcdData(SYSTAB[i]);
}
WLcdCom(SCROLL);
for(i=0;i<10;i++)
{
WLcdData(SCRTAB[i]);
}
WLcdCom(HDOTSCR);//水平点位移设置
WLcdData(0X00);
WLcdCom(OVLAY);
WLcdData(0X1c);
WLcdCom(DISPOFF);//关显示
WLcdData(0X56);//设置光标参数
ClrVRam(); //清屏
WLcdCom(CSRFORM); //设置光标形状
WLcdData(0X07);
WLcdData(0X87);
WLcdCom(DISPON);//开显示
WLcdData(0X54);
}
****************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -