📄 lcd240x128.c
字号:
write(1,1,d2); //设置自动写方式
d2=hex_dsc((codedata>>12)&0x000f);
write(2,0,d2);
d2=hex_dsc((codedata>>8)&0x000f);
write(2,0,d2);
d2=hex_dsc((codedata>>4)&0x000f);
write(2,0,d2);
d2=hex_dsc(codedata&0x000f);
write(2,0,d2);
d2=0xb2;
write(1,1,d2); //结束自动写方式
}
//************************************************************************************
// 汉字的地址 行位置(0-14) 列位置(0-27)
void write_hz(unsigned char code_addr,unsigned char X,unsigned char Y)
//从指定位置输出一个汉字 1 3
{ // 2 4
write_char(code_addr,X,Y);
write_char(code_addr+2,X,Y+1);
write_char(code_addr+1,X+1,Y);
write_char(code_addr+3,X+1,Y+1);
}
// 汉字的地址 汉字的个数 行位置(0-14) 列位置(0-27)
void write_shz(unsigned char code_addr,unsigned char cont,unsigned char X,unsigned char Y)
//从指定位置输出一串汉字
{
unsigned char data i;
for(i=0;i<cont;i++)
{
write_hz(code_addr,X,Y+i*2);
code_addr=code_addr+4;
}
}
//***************************************************************************************
// 光标开关设置 光标行位置 光标列位置
void cursor_set(bit on,unsigned char X,unsigned char Y)//光标设置
{
if(on==1)
{
d1=Y;
d2=X;
com=0x21;
write_2();
//X*32+Y=i
sursor_place=(X*32+Y)+1;//减9,是为了方便在指定位置上显示输入字符
d2=0x9f;
}
else
{
d2=0x9c;
}
write(1,1,d2);
}
//****************************************************************************************
void lcd_ini() //LCD初始化
{
lcd_rst(); //LCD复位
d1=0x03;
d2=0;
com=0x22;
write_2();
d1=0;
d2=0;
com=0x24;
write_2();
d1=0;
d2=0;
com=0x40;
write_2(); //文本区首地址 0x0000
d1=32;
d2=0;
com=0x41;
write_2(); //文本区行宽度 32个字符
d1=0;
d2=0x08;
com=0x42;
write_2(); //图形区首地址 0x0800
d1=32;
d2=0;
com=0x43;
write_2(); //图形区行宽度 32个字符
d2=0x80;
write(1,1,d2); //使用片内,文本特征显示模式
//d2=0x84;
//write(1,1,d2); //使用片外,文本特征显示模式
d2=0x9c;
write(1,1,d2); //图形,文本均打开,关掉光标
d2=0xa1;
write(1,1,d2); //光标形状为一行
lcd_clear() ;
}
//*****************************************************************************************
/*
void lcd_cls(unsigned char X,unsigned char Y,unsigned int lenths) //按要求LCD清屏
{ //从X行,Y列位位置开始,清除连续lenths长度的内容
unsigned int data i;
unsigned int data addr;
// unsigned char data d1,d2;
addr=32*X+Y;
d1=addr;
d2=addr>>8;
com=0x24;
write_2();//设置显示位置
d2=0xb0;
write(1,1,d2); //设置自动写方式
d2=0;
for(i=lenths-1;i>=0;i--)
{
write(2,0,d2);
}
d2=0xb2;
write(1,1,d2); //结束自动写方式
}
*/
//********************************************************************
void lcd_clear() //清除整屏
{
//unsigned char data d1,d2;
unsigned int data i;
d1=0;
d2=0;
com=0x24;
write_2();
//关显示
d2=0x90;
write(1,1,d2);
d2=0xb0;
write(1,1,d2);
for(i=0;i<=0x1fff;i++) //2K的RAM
{
d2=0x00;
write(2,0,d2);
}
d2=0xb2;
write(1,1,d2);
//开显示
d2=0x9c;
write(1,1,d2);
}
//****************************************************************************
// 加载CGRAM内容
// ccant 8*8点阵个数 ,addr 要加载数据的地址
//一个汉字有4个点阵,
extern void load_cgram(unsigned char ccant,unsigned char *addr)
{
unsigned int i;
d1=3;
d2=0;
com=0x22;
write_2();
d1=0;
d2=0x1c;
com=0x24;
write_2();
d2=0xb0;
write(1,1,d2);
i=ccant*8;
//==================================
for(;i>0;i--)//加载ccant*8个点阵
{
d2=*addr;
write(2,0,d2);
addr++;
}
//==================================
d2=0xb2;
write(1,1,d2);
}
//****************************************************************************
void write_st_log(unsigned char sadr,unsigned char X,unsigned char Y)
{
unsigned int data addr;
// unsigned char data d1,d2;
unsigned char data i,j;
addr=32*X+Y;
d1=addr;
d2=addr>>8;
com=0x24;
write_2( );//设置显示位置
for(j=0;j<=4;j++)
{
for(i=0;i<=2;i++)
{
d2=sadr+i+j*3;
write_char(d2,(X+i),(Y+j));
}
}
}
//*************************************************************************************
void disply_powwer_on() //开机画面
{
const st=23;
//load_user1();
//12具汉字,一个5X3的图形
//共 12*4+15=63
load_cgram(63,&starttable);
write_shz(0x80,6,1,9);
write_shz(0x98,6,4,9);
write_char(0x36,0,st+0); // V
write_char(0x45,0,st+1); // e
write_char(0x52,0,st+2); // r
write_char(0x1a,0,st+3);// :
write_char(0x11,0,st+4);// 1
write_char(0x0e,0,st+5);// .
write_char(0x10,0,st+6);// 0
write_st_log(0xb0,11,12);
// write_jens(0x80,11,10); //在最下面中间输出(JENS)图标
}
//**************************************************************************************
//80 84 88 8c 90 94 98 9c a0
//输 入 密 码 重 新 不 正 确
void disply_pass()
{ //输入密码
lcd_clear();
load_cgram(36,&inputpass);
write_shz(0x80,4,1,1);//
cursor_set(1,4,10);
}
void disply_err()
{ //密码不正确,重新输入
write_shz(0x88,2,1,1);
write_shz(0x98,3,1,5);
write_char(0x0c,2,11);// ,
write_shz(0x90,2,1,12);
write_shz(0x80,4,1,16);
}
//**************************************************************************************
void disply_run() //非设置正常运行画面
{
// 80 84 88 8c 90 94 98 9c a0 a4 a8 ac b0 b4 b8 ba bc be c0 c2 c4 c6 c8 ca cc ce d0 d2 d4 d6 d8
// 火 车 站 货 名 单 斗 重 量 累 计 取 消 数 0 1 2 3 4 5 6 7 8 9 A B C D E F T (720)
cursor_set(0,0,0);//光标设置
lcd_clear();
load_cgram(104,&hz_table1);//加载汉字时,汉字个数*4,就是要加载的个数
write_shz(0x80,3,0,20); //火车站 0,1 行
write_hz(0x8c,3,0) ;//货 3,4 行
write_hz(0x90,3,6); //名
write_char(0x1a,4,8);//:
write_shz(0xa4,2,6,0);//累计 6,7行
write_shz(0x9c,2,6,4);//重量
write_char(0x1a,7,8);//:
write_shz(0x94,4,9,0); //单斗重量 9,10行
//write_hz(0xbc,6,6); //重
write_char(0x1a,10,8);// :
write_shz(0xac,2,12,0);//取消 12,13行
write_hz(0x98,12,4);//斗
write_hz(0xb4,12,6);//数
write_char(0x1a,13,8);//:
}
//*******************************************************************************
// 80 84 88 8c 90 94 98 9c a0 a4 a8 ac b0 b4 b8 bc c0 c4 c8 cc
// 系 统 标 定 分 度 值 装 载 机 信 息 校 正 按 索 引 号 选 择
// d0 d4 d8 dc e0 e4 e8 ec f0 f4 f8 fc
// 设 置 管 理 权 限 密 码 时 间 设 置
void disply_set()
{
cursor_set(0,0,0);
lcd_clear();
load_cgram(128,&hz_table2);;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -