📄 lcm061.c
字号:
/*
LCM061显示驱动程序
*/
sbit CS=P0^3;
sbit LRD=P0^2;
sbit LWR=P0^1;
sbit DA=P0^0;
uchar idata tt[7];
void lcm_wr_com(com)//写命令
{
uchar idata i;
uint idata aa;
aa=com;
aa=aa<<5;
aa=aa|0x8000;
for(i=0;i<12;i++)
{
CS=0;
LWR=0;
DA=(bit)(aa&0x8000);
aa=aa<<1;
LWR=1;
}
CS=1;
LWR=1;
DA=1;
}
void lcm_wr_dat(add,dat)//写数据
{
uchar idata i;
uint idata aa;
aa=add;
aa=aa<<7;
aa=aa|0xa000;
aa=aa|(dat<<3);
for(i=0;i<13;i++)
{
CS=0;
LWR=0;
DA=(bit)(aa&0x8000);
aa=aa<<1;
LWR=1;
}
CS=1;
LWR=1;
DA=1;
}
void lcm_init()
{
lcm_wr_com(0x29);//初始化定义
lcm_wr_com(0x18);//RC工作方式
lcm_wr_com(0x03);//开显示
lcm_wr_com(0x01);//开振荡器
lcm_wr_com(0x04);//关定时器
lcm_wr_com(0x07);//开WDT
lcm_wr_com(0x88);//允许WDT输出
lcm_wr_com(0xa0);//WDT时间4S
}
void lcm_cle()//清LCM
{
uchar idata i;
for(i=0;i<32;i++){lcm_wr_dat(i,0);}
}
void lcm_wr_data(add,dat)//写显示数字
{
//字符代码 0、 1、 2、 3、 4、 5、 6、 7、 8、 9、 A、 B、 C、 D、 E、 F、 - U
uchar code zm[]={0xb7,0x06,0xe5,0xc7,0x56,0xd3,0xf3,0x07,0xf7,0xd7,0x77,0xf2,0xb1,0xe6,0xf1,0x71,0x40,0xb6};
lcm_wr_dat(add*2,(zm[dat]&0xf0)>>4);
lcm_wr_dat(add*2+1,zm[dat]&0xf);
}
void lcm061a_disp()
{
//uchar idata aa;
//lcm_cle();
lcm_init();
if(tt[2]<20)/*显示模拟量*/
{
lcm_wr_data(2,16);//显示-
if(tt[2]==0||tt[2]==1)
{
lcm_wr_data(0,10);
lcm_wr_data(1,tt[2]+1); //显示通道号
lcm_wr_dat(18,0);//显示小数点
lcm_wr_dat(19,0);
}
else if(tt[2]==2||tt[2]==3)
{
lcm_wr_data(0,10);
lcm_wr_data(1,tt[2]+1); //显示通道号
lcm_wr_dat(18,0x0f);//显示小数点
lcm_wr_dat(19,0);
}
else if(tt[2]==4||tt[2]==5)
{
lcm_wr_data(0,17);//U
lcm_wr_data(1,tt[2]-3);
lcm_wr_dat(19,0x0f);//显示小数点
lcm_wr_dat(18,0);
}
lcm_wr_data(3,tt[3]);//显示数据
lcm_wr_data(4,tt[4]);
lcm_wr_data(5,tt[5]);
}
//显示方向调高
if(tt[6]==0x40)//左上
lcm_wr_dat(25,0x0f);
else if(tt[6]==0x10)//向左
lcm_wr_dat(26,0x0f);
else if(tt[6]==0x02)//向右
lcm_wr_dat(14,0x0f);
else if(tt[6]==0x20)//左下
lcm_wr_dat(24,0x0f);
else if(tt[6]==0x08)//右上
lcm_wr_dat(15,0x0f);
else if(tt[6]==0x04)//右下
lcm_wr_dat(13,0x0f);
else if(tt[6]==0)
{
lcm_wr_dat(25,0);
lcm_wr_dat(26,0);
lcm_wr_dat(14,0);
lcm_wr_dat(24,0);
lcm_wr_dat(15,0);
lcm_wr_dat(13,0);
}
if(tt[2]>=20&&tt[2]<80)/*显示运行故障*/
{
lcm_wr_dat(18,0);//清小数点
lcm_wr_dat(19,0);
tt[2]=tt[2]-19;
lcm_wr_data(0,14);
lcm_wr_data(1,14);
lcm_wr_data(2,16);
lcm_wr_data(3,tt[2]/100);
tt[2]=tt[2]%100;
lcm_wr_data(4,tt[2]/10);
lcm_wr_data(5,tt[2]%10);
}
else if(tt[2]==80)/*开机显示,正在初始化-0000-*/
{
lcm_wr_dat(18,0);//清小数点
lcm_wr_dat(19,0);
lcm_wr_data(0,16);
lcm_wr_data(1,0);
lcm_wr_data(2,0);
lcm_wr_data(3,0);
lcm_wr_data(4,0);
lcm_wr_data(5,16);
}
else if(tt[2]==81)/*开机显示,等待键盘命令-1111-*/
{
lcm_wr_dat(18,0);//清小数点
lcm_wr_dat(19,0);
lcm_wr_data(0,16);
lcm_wr_data(1,1);
lcm_wr_data(2,1);
lcm_wr_data(3,1);
lcm_wr_data(4,1);
lcm_wr_data(5,16);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -