⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcm061.c

📁 字符显示器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 + -