www.pudn.com > newrlb.rar > lcd.h


/* 
* copyright (c) 兰州瑞德高科技有限公司电专项目组 
* all rights reserved. 
 
* 文件名称: lcd.c 
* 摘    要: lcd的显示控制 
 
* 当前版本: v1.0 
* 作    者: 杨晓卫 
* 完成日期: 2004.7.29 
*/ 
#ifndef LCD_H 
#define LCD_H 
 
#include   
#include "predef.h" 
 
 
char *LCD=LCDMEM; 
 
uchar BufferDat[10]; 
uchar number[10]={ 
                  0xfa ,//0 
                  0x60 ,//1 
                  0xd6 ,//2 
                  0xf4 ,//3 
                  0x6c ,//4 
                  0xBC ,//5 
                  0xbe ,//6 
                  0xe0 ,//7 
                  0xfe ,//8 
                  0xfc  //9 
                  }; 
 
void Clear_LCD(void); 
 
//void Off_LCD(void); 
void Set_digit(uchar digit,uchar data); 
//void Set_day(void); 
void Set_hour(void); 
void Set_pleasebuy(void);//请存 
void Set_cunru(void); //存入 
void Set_cardwrong(void);//插卡错 
//void Set_ganrao(void);// 电磁干扰 
void Set_chaibiao(void);//拆表破坏 
//void Set_xianlu(void);// 线路破坏 
void Set_fakai(void);//  阀开 
void Set_faguan(void);// 阀关  
void Set_reliang(void);//reliang 
void Set_battery(void);//   battery 
void Set_left(void);//余额 
void Set_temp(void);//温度 
void Set_point(uchar digit);// 
void delay10us(void); 
void Set_MWh(void); 
void Set_KWh(void); 
void Set_MJ(void); 
void Set_GJ(void); 
void Set_leiji(void);//累积 
void Set_shunshi(void);//瞬时 
void Set_liuliang(void); 
void Set_cardok(void); 
void Set_number(ulongint number,int decimal); 
void Set_input(void); 
void Set_output(void);  //进水回水温度指示 
 
void  Clear_LCD(void) 
{ 
uchar i; 
for(i=0;i<10;i++) 
  { 
  LCD[i]=0; 
  } 
} 
 
void Set_digit(uchar digit,uchar data) 
{ 
LCD[8-digit]|=number[data]; 
} 
/* 
void Set_day(void) 
{ 
LCD[9]|=0X04; 
} 
*/ 
void Set_hour(void) 
{ 
LCD[9]|=0X08; 
} 
 
void Set_pleasebuy(void) 
{ 
LCD[9]|=0x02; 
} 
 
void Set_cunru(void) 
{ 
LCD[9]|=0x01; 
} 
 
void Set_cardwrong(void) 
{ 
LCD[9]|=0X80; 
} 
/* 
void Set_ganrao(void) 
{ 
LCD[9]|=0x40; 
} 
*/ 
void Set_chaibiao(void) 
{ 
LCD[9]|=0x20; 
} 
/* 
void Set_xianlu(void) 
{ 
LCD[9]|=0x10; 
} 
*/ 
void Set_fakai(void) 
{ 
LCD[1]|=0X01; 
} 
 
void Set_faguan(void) 
{ 
LCD[4]|=0X01; 
} 
 
void Set_reliang(void) 
{ 
LCD[8]|=0X04; 
} 
 
void Set_battery(void) 
{ 
LCD[8]|=0x02; 
} 
 
void Set_left(void) 
{ 
LCD[8]|=0x08; 
} 
 
void Set_temp(void) 
{ 
LCD[7]|=0X01; 
} 
 
void Set_point(uchar digit) 
{ 
if(digit!=0) 
LCD[7-digit]|=0x01; 
} 
 
void Set_MWh(void) 
{ 
LCD[8]|=0X40; 
} 
 
void Set_KWh(void) 
{ 
LCD[8]|=0X80; 
} 
 
void Set_MJ(void) 
{ 
LCD[8]|=0X20; 
} 
 
void Set_GJ(void) 
{ 
LCD[8]|=0X10; 
} 
 
void Set_leiji(void) 
{ 
LCD[0]|=0X01; 
} 
 
void Set_input(void) 
{ 
LCD[0]|=0X20; 
} 
 
void Set_output(void) 
{ 
LCD[0]|=0X36; 
} 
void Set_shunshi(void) 
{ 
LCD[2]|=0X01; 
} 
 
 
 
void Set_liuliang(void) 
{ 
LCD[3]|=0X01; 
} 
void Set_number(ulongint number,int decimal)  //decimal小数点 
{ 
uint rest; 
uint i=0; 
 
if((number<100)&&(decimal==1)) 
 { 
  while((number!=0)||(i<(decimal+1))) 
  {  
     
     rest=number%10; 
     number=number/10; 
     i++; 
      Set_digit(i,rest); 
      Set_digit(3,0);     
  } 
      Set_point(decimal);  
 } 
 else if(!((number<1000)&&(decimal==2))) 
      { 
      while((number!=0)||(i<(decimal+1))) 
       { 
      rest=number%10; 
      number=number/10; 
      i++; 
      Set_digit(i,rest); 
       } 
      Set_point(decimal);  
      } 
 
if((number<1000)&&(decimal==2)) 
 { 
  while((number!=0)||(i<(decimal+1))) 
  {  
     
     rest=number%10; 
     number=number/10; 
     i++; 
      Set_digit(i,rest); 
      Set_digit(4,0);     
  } 
      Set_point(decimal);  
 } 
 else if(!((number<100)&&(decimal==1))) 
      { 
      while((number!=0)||(i<(decimal+1))) 
       { 
      rest=number%10; 
      number=number/10; 
      i++; 
      Set_digit(i,rest); 
       } 
      Set_point(decimal);  
      } 
 
   
} 
 
#endif