www.pudn.com > plj.rar > plj.c


  #include   
  #include 
  #define UINT  unsigned int 
  sbit CLK=P1^1; 
  sbit DIO=P1^2; 
  sbit ZLG_CS=P1^3; 
 
  void SysInit(void); 
  void UserInit(void); 
  void DisInit(void); 
  void SendComm(UINT); 
  void SendData(UINT); 
  void Display(UINT,UINT); 
  void DataDis(unsigned long); 
  void Delay(UINT); 
  UINT T1count; 
  UINT timecount; 
  bit flag; 
  unsigned long pl; 
 
void main(void) 
 { 
  SysInit(); 
  UserInit(); 
  DisInit(); 
  TMOD=0x51; 
  TH1=0; 
  TL1=0; 
  TH0=(65536-46080/256; 
  TL0=(65536-46080)%256; 
  TR0=1; 
  TR1=1; 
  ET0=1; 
  ET1=1; 
  EA=1; 
 
  while(1) 
  { 
   if(flag==1) 
   { 
    flag=0; 
    pl=T1count*65535+TH1*255+TL1;     
    T1count=0; 
    TH1=0; 
    TL1=0; 
    TH0=(65536-46080/256; 
    TL0=(65536-46080)%256; 
    TR1=1; 
    TR0=1; 
    } 
   DataDis(pl); 
   } 
  } 
 
 
  void t1(void) interrupt 3 using 0 
  { 
   TH1=0; 
   TL1=0; 
   T1count++; 
  } 
 
  void t0(void) interrupt 1 using 0 
  { 
   TH0=(65536-46080/256; 
   TL0=(65536-46080)%256; 
   timecount++; 
   if(timecount==20) 
   { 
    TR1=0; 
    TR0=0; 
    timecount=0; 
    flag=1; 
   } 
 } 
 
void UserInit() 
{ 
    ZLG_CS = 1;          
    CLK = 0;   
    DIO = 0; 	 
}	 
 
 
void DisInit() 
{ 
	ZLG_CS = 0; 
	Delay(10);              
	SendComm(0xa4);    
	ZLG_CS = 1; 
	Display(0x0c,3); 
	Display(0x0b,4); 
        Display(0x0d,5); 
        Display(0x0e,6); 
} 
 
 
void SendComm(UINT commandTemp) 
{ 
    UINT temp = commandTemp; 
	UINT i; 
	for(i = 0;i < 8;i++) 
	{ 
	    if((temp&0x80) == 0x80) 
	    	DIO = 1; 
	    else 
	    	DIO = 0; 
	    Delay(10); 
		CLK = 1; 
        Delay(10);           
        CLK = 0; 
		temp <<= 1; 
    } 
} 
 
  void SendData(UINT dataTemp) 
  { 
	UINT temp = dataTemp; 
	UINT i; 
	for(i = 0;i < 16;i++) 
	{ 
	    if((temp&0x8000) == 0x8000) 
	    { 
	        DIO = 1; 
	    } 
	    else 
	    { 
	        DIO = 0; 
	    } 
	    Delay(10); 
	    CLK = 1; 
            Delay(10);       
	    CLK = 0; 
	    temp <<= 1; 
        } 
  } 
 
 
  void Display(UINT disData,UINT position) 
  { 
	UINT sendData = 0x8000; 
	UINT temp = position;         
	sendData |= disData; 
	temp <<= 8; 
	sendData |= temp; 
	ZLG_CS = 0; 
	Delay(10);             
	SendData(sendData); 
	ZLG_CS = 1; 
  } 
 
  void DataDis(unsigned long dataTmp) 
  { 
	UINT disData[7]; 
	UINT i; 
	unsigned long ref = 1000000; 
	for(i = 0;i < 7;i++) 
	{ 
		disData[i] = dataTmp/ref; 
		dataTmp %= ref; 
		ref /= 10; 
	} 
	for(i = 0;i < 3;i++) 
	{ 
		Display(disData[6-i],i); 
		Delay(10); 
	} 
	for(i = 3;i < 7;i++) 
	{ 
		Display(disData[6-i],9-i); 
		Delay(10); 
	} 
  } 
 
 void SysInit(void) 
 { 
    IE = 0x01; 
    IP = 0x00; 
    TMOD = 0x20; 
    IT0 = 1; 
    IT1 = 0; 
    SCON = 0x50; 
    PCON = 0x00;     
    TH1 = 0xfd; 
    TL1 = 0xfd; 
    TR1 = 1; 
    EA = 1; 
 } 
 
 void Delay(UINT n) 
 { 
    UINT i; 
    for(i = n; i > 0; i--); 
 }