www.pudn.com > remotepro.rar > SPILCD.c


#pragma sfr 
#define SET_LCDSCLK P0.4=1 
#define CLR_LCDSCLK P0.4=0 
#define SET_LCDDATA P0.3=1 
#define CLR_LCDDATA P0.3=0 
#define SET_CS P0.5=1 
#define CLR_CS P0.5=0 
#ifndef  UINT8 unsigned  char 
#define  UINT8 unsigned  char 
#endif 
#include  
#include "function.h" 
UINT8 display_num1,display_num2; 
struct{ 
	UINT8 char_num[20]; 
}LCDchar; 
union  
{ 
 UINT8 TempData[4]; 
 long x; 
}n; 
UINT8  display[10]; 
 
/* 
********************************************************************************************* 
********************************************************************************************* 
*/ 
const unsigned char  ASC_MSK[]={ 
0x00,0x00,0x00,	 
/*--  文字:     --*/ 
0x00,0x00,0x00, 
/*--  文字:  !  --*/ 
0x00,0x00,0x00, 
/*--  文字:  "  --*/ 
0x00,0x00,0x00, 
/*--  文字:  #  --*/ 
0x00,0x00,0x00, 
/*--  文字:  $  --*/ 
0x00,0x00,0x10, 
/*--  文字:  %  --*/ 
0x00,0x00,0x00, 
/*--  文字:  &  --*/ 
0x00,0x00,0x00, 
/*--  文字:  '  --*/ 
0x00,0x00,0x00, 
/*--  文字:  (  --*/ 
0x00,0x00,0x00, 
/*--  文字:  )  --*/ 
0x00,0x00,0x00, 
/*--  文字:  *  --*/ 
0x00,0x00,0x00, 
/*--  文字:  +  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ,  --*/ 
0x00,0x00,0x00, 
/*--  文字:  -  --*/ 
0x00,0x00,0x00, 
/*--  文字:  .  --*/ 
0x00,0x00,0x00, 
/*--  文字:  /  --*/ 
0x00,0x00,0x00, 
/*--  文字:  0  --*/ 
0xC6,0x30,0x00, 
/*--  文字:  1  --*/ 
0x00,0x30,0x00, 
/*--  文字:  2  --*/ 
0xe4,0x28,0x00, 
/*--  文字:  3  --*/ 
0xe0,0x38,0x00, 
/*--  文字:  4  --*/ 
0x2a,0x09,0x00, 
/*--  文字:  5  --*/ 
0xe2,0x18,0x00, 
/*--  文字:  6  --*/ 
0xe6,0x18,0x00, 
/*--  文字:  7  --*/ 
0x80,0x30,0x00, 
/*--  文字:  8  --*/ 
0xe6,0x38,0x00, 
/*--  文字:  9  --*/ 
//0x3b,0xe2,0x00, 
0xe2,0x38,0x00, 
/*--  文字:  :  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ;  --*/ 
0x00,0x00,0x00, 
/*--  文字:  <  --*/ 
0x00,0x00,0x00, 
/*--  文字:  =  --*/ 
0x00,0x00,0x00, 
/*--  文字:  >  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ?  --*/ 
0x00,0x00,0x00, 
/*--  文字:  @  --*/ 
0x00,0x00,0x00, 
/*--  文字:  A  --*/ 
0xa6,0x38,0x00, 
/*--  文字:  B  --*/ 
0xe6,0x38,0x00, 
/*--  文字:  C  --*/ 
0xc6,0x00,0x00, 
/*--  文字:  D  --*/ 
0xc6,0x30,0x00, 
/*--  文字:  E  --*/ 
0xE6,0x08,0x00, 
/*--  文字:  F  --*/ 
0xa6,0x08,0x00, 
/*--  文字:  G  --*/ 
0xc6,0x18,0x00, 
/*--  文字:  H  --*/ 
0x26,0x38,0x00, 
/*--  文字:  I  --*/ 
0xc8,0x01,0x00, 
/*--  文字:  J  --*/ 
0x30,0x40,0x00, 
/*--  文字:  K  --*/ 
0x06,0x06,0x00, 
/*--  文字:  L  --*/ 
0x46,0x00,0x00, 
/*--  文字:  M  --*/ 
0x8E,0x31,0x00, 
/*--  文字:  N  --*/ 
0x16,0x32,0x00, 
/*--  文字:  O  --*/ 
0xC6,0x30,0x00, 
/*--  文字:  P  --*/ 
0xa6,0x28,0x00, 
/*--  文字:  Q  --*/ 
0xc7,0x32,0x00, 
/*--  文字:  R  --*/ 
0xa6,0x2a,0x00, 
/*--  文字:  S  --*/ 
0xe2,0x18,0x00, 
/*--  文字:  T  --*/ 
0x88,0x01,0x00, 
/*--  文字:  U  --*/ 
0x46,0x30,0x00, 
/*--  文字:  V  --*/ 
0x0a,0x20,0x00, 
/*-  文字:  W  --*/ 
0x4e,0x31,0x00, 
/*--  文字:  X  --*/ 
0x11,0x06,0x00, 
/*--  文字:  Y  --*/ 
0x18,0x04,0x00, 
/*--  文字:  Z  --*/ 
0xc1,0x04,0x00, 
/*--  文字:  [  --*/ 
0x00,0x00,0x00, 
/*--  文字:  \  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ]  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ^  --*/ 
0x00,0x00,0x00, 
/*--  文字:  _  --*/ 
0x00,0x00,0x00, 
/*--  文字:  `  --*/ 
0x00,0x00,0x00, 
/*--  文字:  a  --*/ 
0x00,0x00,0x00, 
/*--  文字:  b  --*/ 
0x00,0x00,0x00, 
/*--  文字:  c  --*/ 
0x00,0x00,0x00, 
/*--  文字:  d  --*/ 
0x00,0x00,0x00, 
/*--  文字:  e  --*/ 
0x00,0x00,0x00, 
/*--  文字:  f  --*/ 
0x00,0x00,0x00, 
/*--  文字:  g  --*/ 
0x00,0x00,0x00, 
/*--  文字:  h  --*/ 
0x00,0x00,0x00, 
/*--  文字:  i  --*/ 
0x00,0x00,0x00, 
/*--  文字:  j  --*/ 
0x00,0x00,0x00, 
/*--  文字:  k  --*/ 
0x00,0x00,0x00, 
/*--  文字:  l  --*/ 
0x00,0x00,0x00, 
/*--  文字:  m  --*/ 
0x00,0x00,0x00, 
/*--  文字:  n  --*/ 
0x00,0x00,0x00, 
/*--  文字:  o  --*/ 
0x00,0x00,0x00, 
/*--  文字:  p  --*/ 
0x00,0x00,0x00, 
/*--  文字:  q  --*/ 
0x00,0x00,0x00, 
/*--  文字:  r  --*/ 
0x00,0x00,0x00, 
/*--  文字:  s  --*/ 
0x00,0x00,0x00, 
/*--  文字:  t  --*/ 
0x00,0x00,0x00, 
/*--  文字:  u  --*/ 
0x00,0x00,0x00, 
/*--  文字:  v  --*/ 
0x00,0x00,0x00, 
/*--  文字:  w  --*/ 
0x00,0x00,0x00, 
/*--  文字:  x  --*/ 
0x00,0x00,0x00, 
/*--  文字:  y  --*/ 
0x00,0x00,0x00, 
/*--  文字:  z  --*/ 
0x00,0x00,0x00, 
/*--  文字:  {  --*/ 
0x00,0x00,0x00, 
/*--  文字:  |  --*/ 
0x00,0x00,0x00, 
/*--  文字:  }  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ~  --*/ 
0x00,0x00,0x00, 
};	 
const unsigned char  ASC_MSKsmall[]={ 
 
0x00,0x00,0x00,	 
/*--  文字:     --*/ 
0x00,0x00,0x00, 
/*--  文字:  !  --*/ 
0x00,0x00,0x00, 
/*--  文字:  "  --*/ 
0x00,0x00,0x00, 
/*--  文字:  #  --*/ 
0x00,0x00,0x00, 
/*--  文字:  $  --*/ 
0x00,0x00,0x10, 
/*--  文字:  %  --*/ 
0x00,0x00,0x00, 
/*--  文字:  &  --*/ 
0x00,0x00,0x00, 
/*--  文字:  '  --*/ 
0x00,0x00,0x00, 
/*--  文字:  (  --*/ 
0x00,0x00,0x00, 
/*--  文字:  )  --*/ 
0x00,0x00,0x00, 
/*--  文字:  *  --*/ 
0x00,0x00,0x00, 
/*--  文字:  +  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ,  --*/ 
0x00,0x00,0x00, 
/*--  文字:  -  --*/ 
0x00,0x00,0x00, 
/*--  文字:  .  --*/ 
0x00,0x00,0x00, 
/*--  文字:  /  --*/ 
0x00,0x00,0x00, 
/*--  文字:  0  --*/ 
0x2f,0x01,0x00, 
/*--  文字:  1  --*/ 
0x20,0x01,0x00, 
/*--  文字:  2  --*/ 
0x3d,0x00,0x00, 
/*--  文字:  3  --*/ 
0x39,0x01,0x00, 
/*--  文字:  4  --*/ 
0x32,0x01,0x00, 
/*--  文字:  5  --*/ 
0x1b,0x01,0x00, 
/*--  文字:  6  --*/ 
0x1f,0x01,0x00, 
/*--  文字:  7  --*/ 
0x21,0x01,0x00, 
/*--  文字:  8  --*/ 
0x3f,0x01,0x00, 
/*--  文字:  9  --*/ 
0x3b,0x01,0x00, 
/*--  文字:  :  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ;  --*/ 
0x00,0x00,0x00, 
/*--  文字:  <  --*/ 
0x00,0x00,0x00, 
/*--  文字:  =  --*/ 
0x00,0x00,0x00, 
/*--  文字:  >  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ?  --*/ 
0x00,0x00,0x00, 
/*--  文字:  @  --*/ 
0x00,0x00,0x00, 
/*--  文字:  A  --*/ 
0x37,0x01,0x00, 
/*--  文字:  B  --*/ 
0x3f,0x01,0x00, 
/*--  文字:  C  --*/ 
0x0f,0x00,0x00, 
/*--  文字:  D  --*/ 
0x2f,0x01,0x00, 
/*--  文字:  E  --*/ 
0x1f,0x00,0x00, 
/*--  文字:  F  --*/ 
0x17,0x00,0x00, 
/*--  文字:  G  --*/ 
0x0f,0x01,0x00, 
/*--  文字:  H  --*/ 
0x36,0x01,0x00, 
/*--  文字:  I  --*/ 
0x20,0x01,0x00, 
/*--  文字:  J  --*/ 
0x28,0x01,0x00, 
/*--  文字x40,:  K  --*/ 
0x00,0x00,0x00, 
/*--  文字:  L  --*/ 
0x0e,0x00,0x00, 
/*--  文字:  M  --*/ 
0x00,0x00,0x00, 
/*--  文字:  N  --*/ 
0x00,0x00,0x00, 
/*--  文字:  O  --*/ 
0x2f,0x01,0x00, 
/*--  文字:  P  --*/ 
0x37,0x00,0x00, 
/*--  文字:  Q  --*/ 
0x00,0x00,0x00, 
/*--  文字:  R  --*/ 
0x00,0x00,0x00, 
/*--  文字:  S  --*/ 
0x1b,0x01,0x00, 
/*--  文字:  T  --*/ 
0x00,0x00,0x00, 
/*--  文字:  U  --*/ 
0x2e,0x01,0x00, 
/*--  文字:  V  --*/ 
0x2e,0x01,0x00, 
/*-  文字:  W  --*/ 
0x00,0x00,0x00, 
/*--  文字:  X  --*/ 
0x00,0x00,0x00, 
/*--  文字:  Y  --*/ 
0x00,0x00,0x00, 
/*--  文字:  Z  --*/ 
0x00,0x00,0x00, 
/*--  文字:  [  --*/ 
0x00,0x00,0x00, 
/*--  文字:  \  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ]  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ^  --*/ 
0x00,0x00,0x00, 
/*--  文字:  _  --*/ 
0x00,0x00,0x00, 
/*--  文字:  `  --*/ 
0x00,0x00,0x00, 
/*--  文字:  a  --*/ 
0x00,0x00,0x00, 
/*--  文字:  b  --*/ 
0x00,0x00,0x00, 
/*--  文字:  c  --*/ 
0x00,0x00,0x00, 
/*--  文字:  d  --*/ 
0x00,0x00,0x00, 
/*--  文字:  e  --*/ 
0x00,0x00,0x00, 
/*--  文字:  f  --*/ 
0x00,0x00,0x00, 
/*--  文字:  g  --*/ 
0x00,0x00,0x00, 
/*--  文字:  h  --*/ 
0x00,0x00,0x00, 
/*--  文字:  i  --*/ 
0x00,0x00,0x00, 
/*--  文字:  j  --*/ 
0x00,0x00,0x00, 
/*--  文字:  k  --*/ 
0x00,0x00,0x00, 
/*--  文字:  l  --*/ 
0x00,0x00,0x00, 
/*--  文字:  m  --*/ 
0x00,0x00,0x00, 
/*--  文字:  n  --*/ 
0x00,0x00,0x00, 
/*--  文字:  o  --*/ 
0x00,0x00,0x00, 
/*--  文字:  p  --*/ 
0x00,0x00,0x00, 
/*--  文字:  q  --*/ 
0x00,0x00,0x00, 
/*--  文字:  r  --*/ 
0x00,0x00,0x00, 
/*--  文字:  s  --*/ 
0x00,0x00,0x00, 
/*--  文字:  t  --*/ 
0x00,0x00,0x00, 
/*--  文字:  u  --*/ 
0x00,0x00,0x00, 
/*--  文字:  v  --*/ 
0x00,0x00,0x00, 
/*--  文字:  w  --*/ 
0x00,0x00,0x00, 
/*--  文字:  x  --*/ 
0x00,0x00,0x00, 
/*--  文字:  y  --*/ 
0x00,0x00,0x00, 
/*--  文字:  z  --*/ 
0x00,0x00,0x00, 
/*--  文字:  {  --*/ 
0x00,0x00,0x00, 
/*--  文字:  |  --*/ 
0x00,0x00,0x00, 
/*--  文字:  }  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ~  --*/ 
0x00,0x00,0x00, 
}; 
 
const unsigned char  ASC_MSKsmalltwo[]={ 
 
0x00,0x00,0x00,	 
/*--  文字:     --*/ 
0x00,0x00,0x00, 
/*--  文字:  !  --*/ 
0x00,0x00,0x00, 
/*--  文字:  "  --*/ 
0x00,0x00,0x00, 
/*--  文字:  #  --*/ 
0x00,0x00,0x00, 
/*--  文字:  $  --*/ 
0x00,0x00,0x10, 
/*--  文字:  %  --*/ 
0x00,0x00,0x00, 
/*--  文字:  &  --*/ 
0x00,0x00,0x00, 
/*--  文字:  '  --*/ 
0x00,0x00,0x00, 
/*--  文字:  (  --*/ 
0x00,0x00,0x00, 
/*--  文字:  )  --*/ 
0x00,0x00,0x00, 
/*--  文字:  *  --*/ 
0x00,0x00,0x00, 
/*--  文字:  +  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ,  --*/ 
0x00,0x00,0x00, 
/*--  文字:  -  --*/ 
0x00,0x00,0x00, 
/*--  文字:  .  --*/ 
0x00,0x00,0x00, 
/*--  文字:  /  --*/ 
0x00,0x00,0x00, 
/*--  文字:  0  --*/ 
0xeb,0x00,0x00, 
/*--  文字:  1  --*/ 
0xc0,0x00,0x00, 
/*--  文字:  2  --*/ 
0x7a,0x00,0x00, 
/*--  文字:  3  --*/ 
0xf8,0x00,0x00, 
/*--  文字:  4  --*/ 
0xd1,0x00,0x00, 
/*--  文字:  5  --*/ 
0xb9,0x00,0x00, 
/*--  文字:  6  --*/ 
0xbb,0x00,0x00, 
/*--  文字:  7  --*/ 
0xe0,0x00,0x00, 
/*--  文字:  8  --*/ 
0xfb,0x00,0x00, 
/*--  文字:  9  --*/ 
0xf9,0x00,0x00, 
/*--  文字:  :  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ;  --*/ 
0x00,0x00,0x00, 
/*--  文字:  <  --*/ 
0x00,0x00,0x00, 
/*--  文字:  =  --*/ 
0x00,0x00,0x00, 
/*--  文字:  >  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ?  --*/ 
0x00,0x00,0x00, 
/*--  文字:  @  --*/ 
0x00,0x00,0x00, 
/*--  文字:  A  --*/ 
0xf3,0x00,0x00, 
/*--  文字:  B  --*/ 
0xfb,0x00,0x00, 
/*--  文字:  C  --*/ 
0x2b,0x00,0x00, 
/*--  文字:  D  --*/ 
0xeb,0x00,0x00, 
/*--  文字:  E  --*/ 
0x3b,0x00,0x00, 
/*--  文字:  F  --*/ 
0x33,0x00,0x00, 
/*--  文字:  G  --*/ 
0xaf,0x00,0x00, 
/*--  文字:  H  --*/ 
0xd3,0x00,0x00, 
/*--  文字:  I  --*/ 
0xc0,0x00,0x00, 
/*--  文字:  J  --*/ 
0xc8,0x00,0x00, 
/*--  文字x40,:  K  --*/ 
0x00,0x00,0x00, 
/*--  文字:  L  --*/ 
0x0b,0x00,0x00, 
/*--  文字:  M  --*/ 
0x00,0x00,0x00, 
/*--  文字:  N  --*/ 
0x00,0x00,0x00, 
/*--  文字:  O  --*/ 
0xeb,0x00,0x00, 
/*--  文字:  P  --*/ 
0x73,0x00,0x00, 
/*--  文字:  Q  --*/ 
0x00,0x00,0x00, 
/*--  文字:  R  --*/ 
0x00,0x00,0x00, 
/*--  文字:  S  --*/ 
0xb9,0x00,0x00, 
/*--  文字:  T  --*/ 
0x00,0x00,0x00, 
/*--  文字:  U  --*/ 
0xcf,0x00,0x00, 
/*--  文字:  V  --*/ 
0xcf,0x00,0x00, 
/*-  文字:  W  --*/ 
0x00,0x00,0x00, 
/*--  文字:  X  --*/ 
0x00,0x00,0x00, 
/*--  文字:  Y  --*/ 
0x00,0x00,0x00, 
/*--  文字:  Z  --*/ 
0x00,0x00,0x00, 
/*--  文字:  [  --*/ 
0x00,0x00,0x00, 
/*--  文字:  \  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ]  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ^  --*/ 
0x00,0x00,0x00, 
/*--  文字:  _  --*/ 
0x00,0x00,0x00, 
/*--  文字:  `  --*/ 
0x00,0x00,0x00, 
/*--  文字:  a  --*/ 
0x00,0x00,0x00, 
/*--  文字:  b  --*/ 
0x00,0x00,0x00, 
/*--  文字:  c  --*/ 
0x00,0x00,0x00, 
/*--  文字:  d  --*/ 
0x00,0x00,0x00, 
/*--  文字:  e  --*/ 
0x00,0x00,0x00, 
/*--  文字:  f  --*/ 
0x00,0x00,0x00, 
/*--  文字:  g  --*/ 
0x00,0x00,0x00, 
/*--  文字:  h  --*/ 
0x00,0x00,0x00, 
/*--  文字:  i  --*/ 
0x00,0x00,0x00, 
/*--  文字:  j  --*/ 
0x00,0x00,0x00, 
/*--  文字:  k  --*/ 
0x00,0x00,0x00, 
/*--  文字:  l  --*/ 
0x00,0x00,0x00, 
/*--  文字:  m  --*/ 
0x00,0x00,0x00, 
/*--  文字:  n  --*/ 
0x00,0x00,0x00, 
/*--  文字:  o  --*/ 
0x00,0x00,0x00, 
/*--  文字:  p  --*/ 
0x00,0x00,0x00, 
/*--  文字:  q  --*/ 
0x00,0x00,0x00, 
/*--  文字:  r  --*/ 
0x00,0x00,0x00, 
/*--  文字:  s  --*/ 
0x00,0x00,0x00, 
/*--  文字:  t  --*/ 
0x00,0x00,0x00, 
/*--  文字:  u  --*/ 
0x00,0x00,0x00, 
/*--  文字:  v  --*/ 
0x00,0x00,0x00, 
/*--  文字:  w  --*/ 
0x00,0x00,0x00, 
/*--  文字:  x  --*/ 
0x00,0x00,0x00, 
/*--  文字:  y  --*/ 
0x00,0x00,0x00, 
/*--  文字:  z  --*/ 
0x00,0x00,0x00, 
/*--  文字:  {  --*/ 
0x00,0x00,0x00, 
/*--  文字:  |  --*/ 
0x00,0x00,0x00, 
/*--  文字:  }  --*/ 
0x00,0x00,0x00, 
/*--  文字:  ~  --*/ 
0x00,0x00,0x00, 
}; 
/* 
********************************************************************************************* 
start_coordinate:char start coordinate 
val:it will be display char 
********************************************************************************************* 
*/ 
void bitchar_value(UINT8 start_coordinate, UINT8 val) 
{ 
	if(val>0x1f) 
	{ 
		switch(start_coordinate) 
		{ 
		   
	   	/*第1个字符位置*/ 
	   	case 1:   
			   	n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=ASC_MSK[(val-0x1f)*3+2]; 
			   	n.TempData[3]=0x00; 
			   	n.x=n.x<<4; 
			   	LCDchar.char_num[0]&=0x0f; 
			   	LCDchar.char_num[0]|=n.TempData[0]; 
			   	LCDchar.char_num[1]=n.TempData[1]; 
			   	LCDchar.char_num[2]&=0xfc; 
			   	LCDchar.char_num[2]|=n.TempData[2]; 
	    	 break ;  
	    	  
	    	  
	   	/*第2个字符位置*/ 
	   	case 2: 
			    n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=ASC_MSK[(val-0x1f)*3+2]; 
			   	n.TempData[3]=0x00; 
			   	n.x=n.x<<3; 
			   	LCDchar.char_num[2]&=0x07; 
			   	LCDchar.char_num[2]|=n.TempData[0]; 
			   	LCDchar.char_num[3]=n.TempData[1]; 
			   	LCDchar.char_num[4]&=0xfc; 
			   	LCDchar.char_num[4]|=n.TempData[2];  
			   	break ; 
	   	 
	   	 
	   	/*第3个字符位置*/ 
	   	case 3:  
			   	n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=ASC_MSK[(val-0x1f)*3+2]; 
			   	n.TempData[3]=0x00; 
			   	n.x=n.x<<2; 
			   	LCDchar.char_num[4]&=0x03; 
			   	LCDchar.char_num[4]|=n.TempData[0]; 
			   	LCDchar.char_num[5] =n.TempData[1];  
			   	break ;  
			   	 
			   			 
	   	/*第4个字符位置*/ 
	   	case 4:	 
			  	n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=ASC_MSK[(val-0x1f)*3+2]; 
			   	n.TempData[3]=0x00; 
			   	n.x=n.x<<1; 
			  	LCDchar.char_num[6]&=0x01; 
			   	LCDchar.char_num[6]|=n.TempData[0]; 
			   	LCDchar.char_num[7]&=0x80; 
			   	LCDchar.char_num[7]|=n.TempData[1];  
			   	break ;  
			   	 
			   	 
	   	/*第5个字符位置*/ 
	   	case 5:  
			  	n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=0x00; 
			   	n.TempData[3]=0x00; 
			   	LCDchar.char_num[8]=n.TempData[0]; 
			   	LCDchar.char_num[9]&=0xc0; 
			   	LCDchar.char_num[9]|=n.TempData[1]; 
			    LCDchar.char_num[9]=n.TempData[1]; 
			    break ;	 
			     
			     
	   	/*第6个字符位置*/ 
	   	case 6:  
			  	n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=0x00; 
			   	n.TempData[3]=0x00; 
			   	n.TempData[3]=n.TempData[0]&0x01; 
			   	n.TempData[3]<<=7; 
			   	LCDchar.char_num[9]&=0x7f; 
			   	LCDchar.char_num[9]|=n.TempData[3];  
			   	n.x=n.x>>1;  	 
			   	LCDchar.char_num[10]=n.TempData[0]; 
			   	LCDchar.char_num[11]&=0xe0; 
			   	LCDchar.char_num[11]|=n.TempData[1]; 
	   	    break ;	 
	   	 
	   	    
	   	/*第7个字符位置*/ 
	   	case 7:  
			  	n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=0x00; 
			   	n.TempData[3]=0x00; 
			   	n.TempData[3]=n.TempData[0]&0x03; 
			   	n.TempData[3]=n.TempData[3]<<6; 
			   	LCDchar.char_num[11]&=0x3f; 
			  	LCDchar.char_num[11]|=n.TempData[3];  	 
			   	n.x=n.x>>2;  	 
			  	LCDchar.char_num[12]=n.TempData[0]; 
			   	LCDchar.char_num[13]&=0xf0; 
			  	LCDchar.char_num[13]|=n.TempData[1]; 
			  	break ;	 
			  	 
			  	 
	   	/*第8个字符位置*/ 
	   	case 8:  
			   	n.TempData[0]=ASC_MSK[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSK[(val-0x1f)*3+1]; 
			   	n.TempData[2]=0x00; 
			   	n.TempData[3]=0x00; 
			   	n.TempData[3]=n.TempData[0]&0x07; 
			   	n.TempData[3]=n.TempData[3]<<5; 
			   	LCDchar.char_num[13]&=0x1f; 
			   	LCDchar.char_num[13]|=n.TempData[3];  
			   	n.x=n.x>>3;  	 
			  	LCDchar.char_num[14]=n.TempData[0]; 
			   	LCDchar.char_num[15]&=0xf8; 
			  	LCDchar.char_num[15]|=n.TempData[1]; 
			  	break ;	  	 
			  	 
			  			 
	   	/*第9个字符位置小字*/ 
	   	case 9:  
			  	n.TempData[0]=ASC_MSKsmall[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSKsmall[(val-0x1f)*3+1]; 
			   	n.TempData[2]=0x00; 
			   	n.TempData[3]=0x00; 
			   	n.TempData[3]=n.TempData[0]&0x01; 
			   	n.TempData[3]=n.TempData[3]<<7; 
			   	LCDchar.char_num[15]&=0x7f; 
			   	LCDchar.char_num[15]|=n.TempData[3];  
			   	n.x=n.x>>1;  
			   	n.TempData[2]=LCDchar.char_num[16]&0x60; 	 
			  	LCDchar.char_num[16]=n.TempData[0]|n.TempData[2];   
			  	break ;  	 
	   	/*第10个字符位置小字*/  
	   	case 10: 
			  	n.TempData[0]=ASC_MSKsmalltwo[(val-0x1f)*3+0]; 
			   	n.TempData[1]=ASC_MSKsmalltwo[(val-0x1f)*3+1]; 
			   	n.TempData[2]=0x00; 
			   	n.TempData[3]=0x00; 
			   	n.TempData[3]=n.TempData[0]&0x03; 
			   	n.TempData[3]=n.TempData[3]<<5; 
			   	LCDchar.char_num[16]&=0x9f; 
			   	LCDchar.char_num[16]|=n.TempData[3];  
			   	n.x=n.x>>3; 	 
			   	LCDchar.char_num[17]&=0xe0; 
			  	LCDchar.char_num[17]|=n.TempData[0];  
			  	break ;	 
			default : 
			    break; 
		}   		 	 
	} 
} 
/* 
********************************************************************************************* 
********************************************************************************************* 
*/ 
void delay(void) 
{ 
	unsigned char i=0; 
	for(i=0;i<50;i++) 
	{ 
		; 
	} 
} 
/* 
********************************************************************************************* 
********************************************************************************************* 
*/ 
void lcd7528init(void) 
{ 
  PM0.4=0;//CLK OUT MODE   
  PM0.3=0; 
  PM0.5=0; 
	CLR_CS; 
	SET_LCDSCLK; 
	SET_LCDDATA; 
} 
/* 
********************************************************************************************* 
function:单字节写 
********************************************************************************************* 
*/ 
void WriteByte7528( unsigned char bytedata) 
{ 
 unsigned char i,val=0; 
  
   val=bytedata; 
   SET_LCDSCLK; 
   for (i=0; i<8; i++) 
	{ 
    CLR_LCDSCLK; 
    delay(); 
    if(val & 0x01) 
    SET_LCDDATA; 
    else 
    CLR_LCDDATA; 
    delay(); 
    SET_LCDSCLK; 
    delay(); 
    val >>=1; 
  } 
} 
/* 
********************************************************************************************* 
FUNCTION:LCD 数据 
********************************************************************************************* 
*/ 
void LCD_SENDDATA(void) 
{ 
 unsigned char i; 
		CLR_CS; 
		delay(); 
		WriteByte7528(0x41); 
		SET_CS ; 
		delay(); 
		delay(); 
	for (i=0; i<20; i++) 
	{ 
	WriteByte7528(LCDchar.char_num[i]); 
	} 
 
		CLR_LCDSCLK; 
		delay(); 
		SET_LCDSCLK; 
		delay(); 
		delay(); 
		CLR_CS;		 
} 
/* 
********************************************************************************************* 
Function:char display 
start_coordinate:char start coordinate 
fmt:char string    
num:1~10 
********************************************************************************************* 
*/ 
void eprintf(UINT8 start_coordinate,char *fmt,...) 
{ 
	UINT8 i,uLen; 
	va_list arg_ptr; 
	char  c1,c2; 
	uLen=0; 
	va_start(arg_ptr,fmt); 
	uLen = (unsigned char)vsprintf(display, fmt, arg_ptr) ; 
	va_end(arg_ptr); 
	if(start_coordinate>10) 
	{ 
	start_coordinate=0; 
	}	 
	c2=start_coordinate+uLen; 
	if(c2<=11) 
	{ 
		while(i= 0) 
			{	 
	     bitchar_value(start_coordinate,c1); 
	     
			} 
			start_coordinate++; 
			i++; 
		}	 
		LCD_SENDDATA(); 
  } 
} 
/* 
********************************************************************************************* 
********************************************************************************************* 
*/ 
void clearchar(void) 
{ 
	UINT8 i; 
		CLR_CS; 
		delay(); 
		WriteByte7528(0x41); 
		SET_CS ; 
		delay(); 
		delay(); 
		for(i=0;i<19;i++) 
		{ 
			LCDchar.char_num[i]=0x00;	 
			WriteByte7528(LCDchar.char_num[i]); 
		} 
		CLR_LCDSCLK; 
		delay(); 
		SET_LCDSCLK; 
		delay(); 
		delay(); 
		CLR_CS;		 
} 
/* 
********************************************************************************************* 
function:specialties char display 
num:specialties char display coordinate  1~10 
********************************************************************************************* 
*/ 
void spec_char_display(UINT8 num,UINT8 fit) 
{ 
	UINT8 tempdata=0; 
	switch(num) 
	{ 
		case 1: 
		    if(fit) 
		    { 
		    	tempdata=LCDchar.char_num[0]; 
		    	tempdata|=0x0f; 
		    	LCDchar.char_num[0]=tempdata; 
			    tempdata=LCDchar.char_num[4]; 
		    	tempdata|=0x02;	    	 
		    	LCDchar.char_num[4]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[0]; 
		    	tempdata&=0xf0; 
		    	LCDchar.char_num[0]=tempdata; 
			    tempdata=LCDchar.char_num[4]; 
		    	tempdata&=0xfd;	    	 
		      LCDchar.char_num[4]=tempdata;	 
		    	LCD_SENDDATA();		    	 
		    } 
		 break;	 
		case 2: 
		    if(fit) 
		    { 
			    tempdata=LCDchar.char_num[2]; 
		    	tempdata|=0x04;	    	 
		    	LCDchar.char_num[2]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[2]; 
		    	tempdata&=0xfb; 
		    	LCDchar.char_num[2]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }		 
		 break;	 
		case 3: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[7]; 
		    	tempdata|=0x80;	    	 
		    	LCDchar.char_num[7]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[7]; 
		    	tempdata&=0x7f; 
		    	LCDchar.char_num[7]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }	 
		 break;	 
		case 4: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[9]; 
		    	tempdata|=0x40;	    	 
		    	LCDchar.char_num[9]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[9]; 
		    	tempdata&=0xbf; 
		    	LCDchar.char_num[9]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }			    	 
		 break;	 
		case 5: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[11]; 
		    	tempdata|=0x20;	    	 
		    	LCDchar.char_num[11]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[11]; 
		    	tempdata&=0xdf; 
		    	LCDchar.char_num[11]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }			 
		 break;	 
		case 6: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[13]; 
		    	tempdata|=0x10;	    	 
		    	LCDchar.char_num[13]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[13]; 
		    	tempdata&=0xef; 
		    	LCDchar.char_num[13]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }				 
		 break;	 
		case 7: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[15]; 
		    	tempdata|=0x08;	    	 
		    	LCDchar.char_num[15]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[15]; 
		    	tempdata&=0xf7; 
		    	LCDchar.char_num[15]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }				 
		 break;	 
		case 8: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[15]; 
		    	tempdata|=0x10;	    	 
		    	LCDchar.char_num[15]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[15]; 
		    	tempdata&=0xef; 
		    	LCDchar.char_num[15]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }				 
		 break;	 
		case 9: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[15]; 
		    	tempdata|=0x20;	    	 
		    	LCDchar.char_num[15]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[15]; 
		    	tempdata&=0xdf; 
		    	LCDchar.char_num[15]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }			 
		 break;	 
		case 10: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[15]; 
		    	tempdata|=0x40;	    	 
		    	LCDchar.char_num[15]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[15]; 
		    	tempdata&=0xbf; 
		    	LCDchar.char_num[15]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }			 
		 break;	 
		case 11: 
				if(fit) 
		    { 
			    tempdata=LCDchar.char_num[17]; 
		    	tempdata|=0x20;	    	 
		    	LCDchar.char_num[17]=tempdata;	 
		    	LCD_SENDDATA(); 
		    } 
		    else 
		    { 
		    	tempdata=LCDchar.char_num[17]; 
		    	tempdata&=0xdf; 
		    	LCDchar.char_num[17]=tempdata; 
		    	LCD_SENDDATA();		    	 
		    }				 
		 break;	 
		default : 
		 break;	 
	} 
}