📄 lcd.h
字号:
#ifndef lcd_H
#define lcd_H
#include <absacc.h>
#include <REG52.h>
#include <stdio.h>
#include <intrins.h>
#include <decode.h>
#define para1 0x20;
#define dat1 DBYTE[0x30]
#define dat2 DBYTE[0x31]
#define LCMDW XBYTE[0xF0FF]
#define LCMCW XBYTE[0xF1FF]
#define com DBYTE[0x32]
#define O_Y DBYTE[0x33]
#define O_X DBYTE[0x34]
#define code_1 DBYTE[0x35]
sbit ACC_0=ACC^0;
sbit ACC_1=ACC^1;
sbit ACC_3=ACC^3;
/************************************************/
/* 判状态位S1,S0 子程序(读写指令和读写数据状态) */
/************************************************/
void ST01(void)
{
do
{
ACC=LCMCW;
}
while(ACC_0==0&&ACC_1==0);
}
/****************************/
/* 写指令和写数据子程序 */
/****************************/
void PR12(void) /* 无参数指令写入入口 */
{
ST01();
LCMCW=com; /* 写入指令代码 */
}
void PR11(void) /* 单字节参数指令写入入口 */
{
ST01();
LCMDW=dat2; /* 取第二参数单元数据 */
PR12();
}
void PR1(void) /* 双字节参数指令写入入口 */
{
ST01();
LCMDW=dat1; /* 取第一参数单元数据 */
PR11();
/* PR12(); */
}
/************************************/
/* 判状态位S3子程序(数据自动写状态) */
/************************************/
void ST3(void)
{
do
{
ACC=LCMCW;
}
while(ACC_3==0);
}
/**************************/
/* 初始化子程序 */
/**************************/
void chushi_1(void)
{
dat1=0x00; /*设文本显示区域首地址*/
dat2=0x00;
com=0x40;
PR1();
dat1=para1; /* 设文本显示区域宽度 */
dat2=0x00;
com=0x41;
PR1();
dat1=0x00; /*设图形显示区域首地址*/
dat2=0x08;
com=0x42;
PR1();
dat1=para1; /*设图形显示区域宽度*/
dat2=0x00;
com=0x43;
PR1();
com=0xa7; /*光标形状设置*/
PR12();
com=0x80; /*显示方式设置逻辑"或"合成*/
PR12();
com=0x9c; /*显示开关设置 开文本和图形显示*/
PR12();
}
/***************************/
/* 清显示子程序 */
/***************************/
void CLEAR(void)
{
unsigned char i,j;
dat1=0x00;
dat2=0x00;
com=0x24;
PR1();
com=0xb0;
PR12();
for(i=0;i<205;i++) /* 205 */
{
for(j=0;j<=40;j++) /* 40 */
{
ST3();
LCMDW=0x00;
}
}
com=0xb2;
PR12();
}
/********************************/
/* 16点阵汉字写入(图形方式)子程序 */
/********************************/
void CCW2_PR(uchar x1)
{ unsigned char i,count1;
unsigned int j;
i=para1;
j=i*O_Y+O_X+0x0800;
for(count1=0;count1<32;count1=count1+2)
{
dat1=j%256;
dat2=j/256;
com=0x24;
PR1();
dat2=CCTAB[code_1][count1];
com=0xc0;
if(x1==0)
{dat2=~dat2;}
PR11();
dat2=CCTAB[code_1][count1+1];
if(x1==0)
{dat2=~dat2;}
PR11();
j=j+i;
}
}
void CCW2_Num(uchar x1)
{ unsigned char i,count1;
unsigned int j;
i=para1;
PR1();
j=i*O_Y+O_X+0x0800;
for(count1=0;count1<16;count1++)
{
dat1=j%256;
dat2=j/256;
com=0x24;
PR1();
dat2=CCNum[code_1][count1];
com=0xc4;
if(x1==0)
{dat2=~dat2;}
PR11();
j=j+i;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -