www.pudn.com > TG12864.rar > test2.c


#include              /*   NT7502采用6800系列MCU*/ 
#include                               
#include                
 
 
#define uchar unsigned char 
#define uint unsigned int 
#define ulong unsigned long 
 
#define DATA  P0 
#define SomeNOP(); _nop_();_nop_();_nop_();_nop_(); 
 
 
 
#define  FALSE  0 
#define   TRUE  1 
 
 
 
//----define key parmeters begin----// 
//sbit enter=P0^3; 
 sbit dec=P1^5; 
  sbit inc=P1^7; 
   //sbit mode=P1^2; 
  sbit mode=P1^6; 
 
 
bdata uchar oldk; 
sbit old_enter=oldk^7; 
 sbit old_dec=oldk^6; 
  sbit old_inc=oldk^5; 
   sbit old_mode=oldk^4; 
    sbit modify=oldk^3; 
     sbit old_sense=oldk^2; 
      sbit sample_flag=oldk^1; 
       sbit key_sense=oldk^0; 
bdata uchar key; 
sbit key_enter=key^7; 
 sbit key_dec=key^6; 
  sbit key_inc=key^5; 
   sbit key_mode=key^4; 
    sbit fastkey=key^3; 
     sbit scankmd=key^2; 
      sbit scankey=key^1; 
       sbit sktemp=key^0; 
        
 
 
        
  void delayu(uint us); 
   
 
//define lcd begin  
 
sbit CS=P2^1; 
sbit A0=P1^1; 
sbit WR=P2^6; 
sbit RD=P2^7; 
 
 
 
//sbit E1=P2^1; 
//sbit E2=P3^0; 
//sbit RW=P2^6; 
//sbit A0=P2^7; 
 
void writecmd(uchar); 
void readcmd(uchar); 
 
void writedat(uchar); 
void readdat(uchar); 
void init_7502(void); 
 
void show88(uchar lin,uchar col,uint address); 
 
 
 code uchar numtable[10*16]= 
{  
/*--  文字:  0  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
 
/*--  文字:  1  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 
 
/*--  文字:  2  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 
 
/*--  文字:  3  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 
 
/*--  文字:  4  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 
 
/*--  文字:  5  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 
 
/*--  文字:  6  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 
 
/*--  文字:  7  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 
 
/*--  文字:  8  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 
 
/*--  文字:  9  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
 
}; 
 
 code uchar hextable[16*16]= 
{  
/*--  文字:  0  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
 
 
/*--  文字:  1  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 
 
/*--  文字:  2  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 
 
/*--  文字:  3  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 
 
/*--  文字:  4  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 
 
/*--  文字:  5  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 
 
/*--  文字:  6  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 
 
/*--  文字:  7  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 
 
/*--  文字:  8  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 
 
/*--  文字:  9  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
 
/*--  文字:  A  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00, 
 
/*--  文字:  B  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00, 
 
/*--  文字:  C  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00, 
 
/*--  文字:  D  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00, 
 
/*--  文字:  E  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 
 
/*--  文字:  F  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 
}; 
 code uchar zftable[11*8]=          /*显示8*8点阵字符库*/ 
{ 0x00,0x3C,0x42,0x81,0x81,0x42,0x3C,0x00,//"0" 
  0x00,0x82,0x82,0xFF,0x80,0x80,0x00,0x00,//"1" 
  0x00,0xC6,0xA1,0x91,0x89,0x85,0xC3,0x00,//"2" 
  0x00,0x42,0x81,0x89,0x89,0x95,0x66,0x00,//"3" 
  0x00,0x38,0x24,0xA2,0xA1,0xFF,0xA0,0x00,//"4" 
  0x00,0x4F,0x89,0x85,0x85,0x49,0x39,0x00,//"5" 
  0x00,0x3E,0x52,0x89,0x89,0x53,0x20,0x00,//"6" 
  0x00,0x03,0x01,0x41,0x09,0x07,0x01,0x00,//"7" 
  0x00,0x66,0x91,0x91,0x91,0x91,0x66,0x00,//"8" 
  0x00,0x0C,0x92,0x91,0x91,0x52,0x37,0x00,//"9" 
  0x24,0x24,0x24,0x24,0xA5,0x66,0x24,0x18,//"=>"  
   
}; 
 
code uchar hztable[8*32]= 
{ 
 
/*--  文字:  状  1--*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x04,0x02,0x01,0xFF,0x40,0x20,0x18,0x07,0x00,0x00,0x03,0x0C,0x30,0x60,0x20,0x00, 
0x08,0x30,0x00,0xFF,0x20,0x20,0x20,0x20,0xFF,0x20,0xE1,0x26,0x2C,0x20,0x20,0x00, 
 
/*--  文字:  态  2--*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x00,0x60,0x39,0x01,0x00,0x3C,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00, 
0x00,0x04,0x04,0x04,0x84,0x44,0x34,0x4F,0x94,0x24,0x44,0x84,0x84,0x04,0x00,0x00, 
 
/*--  文字:  显  3--*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00, 
0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0x00,0x00,0x00,0x00, 
 
/*--  文字:  示  4--*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00, 
0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00, 
 
/*--  文字:  参  5-*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x02,0x42,0x45,0x55,0x52,0x4A,0x29,0x24,0x24,0x12,0x12,0x09,0x0B,0x06,0x02,0x00, 
0x20,0x20,0x28,0x2C,0xAA,0x6B,0x38,0xAC,0x24,0x64,0xA6,0x2C,0x20,0x20,0x00,0x00, 
 
/*--  文字:  数  6--*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00, 
0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00, 
 
/*--  文字:  设  7--*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00, 
0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00, 
 
/*--  文字:  定  8--*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/ 
0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x7F,0x42,0x42,0x42,0x42,0x40,0x40,0x00,0x00, 
0x00,0x10,0x0C,0xA4,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x14,0x0C,0x04,0x00, 
 
}; 
 
//define lcd end 
 
bit mtxbusy; 
bit re_ready,r_bit; 
uchar keydelaycn;//temp01,temp02; 
uchar curwnd; 
uint wake_count; 
 
 
 
void int_time0(void); 
 
void int_time0(void) interrupt 1 
{TR0=0; 
  TH0=-(40000/256);TL0=-(40000%256); 
 TR0=1; 
  --keydelaycn; 
   if(keydelaycn==0x01){scankey=1;} 
   //if(keydelaycn==0x03);{scankmd=1;} 
 if(keydelaycn==0x03);{r_bit=1;}	        
    //if(keydelaycn==0x05);{disp_bit=1;}	 
  if(keydelaycn==0){keydelaycn=0x05;} 
  
  
 wake_count++; 
  
 } 
 
 
 
 
void main() 
{ 
  TMOD=0x11; 
 TAMOD=0x00; 
 TR0=1; 
 TH0=-(40000/256);TL0=-(40000%256); 
 ET0=1; 
 
  P0M1=0x00;P0M2=0x00; 
  P1M1=0x00;P1M2=0x00; 
 // P1M1=0x0c;P1M2=0x00; 
  P2M1=0x00;P2M2=0x00; 
  P3M1=0x00;P3M2=0x00; 
 // EX1=1;IT1=1;/*外部中断1使能,下降沿触发*/ 
   EA=1;//EWDRT=1; 
 
 
init_7502(); 
 
 wake_count=0x00; 
 
do              //---- main loop begin ---- // 
{ 
   show88(3,1,4); 
   
if(scankey) 
   {scankey=0;                  //---- Scan Keys Begin----// 
      
          
	    sktemp=mode;             //---scan mode key down 
	     if(old_mode&!sktemp){key_mode=1;} 
		//if(!old_mode&sktemp){key_mode=0;}    
	      old_mode=sktemp; 
 
 
	    sktemp=inc;             //---scan inc key down 
	 
	     if(old_inc&!sktemp){key_inc=1;} 
	       
		old_inc=sktemp; 
 
	   sktemp=dec;             //---scan dec key down 
	     if(old_dec&!sktemp){key_dec=1;} 
	       
		old_dec=sktemp; 
	 
 
} 
 
if(key_mode) 
{  
  key_mode=0; 
    curwnd++; 
   
   
    if(curwnd>4) 
	 { curwnd=0;       
	 } 
} 
if(key_inc) 
     {//key_inc=0;   /*时间设定:2005年2月24日18时13分05秒,星期三*/ 
      
      
      key_inc=0; 
      } 
       
//if(key_dec) 
     {key_dec=0; 
      
   
     }  
 
 }while(1);      //--- main loop end --- // 
} 
 
 
//lcd subprog begin 
 
           //6800   series MPU 
 
void writecmd(uchar i) 
{   
   CS=1; _nop_(); 
   RD=0; _nop_(); 
   A0=0; _nop_(); 
   RD=1; _nop_(); 
   WR=0; 
   _nop_(); _nop_(); 
   CS=0; 
    _nop_(); 
   DATA=i;  
   
   _nop_(); _nop_(); 
   WR=1; 
   RD=0; _nop_(); 
   CS=1; _nop_(); 
   _nop_(); 
} 
 
 
void readcmd(uchar i) 
{   
   CS=1; _nop_(); 
   A0=0; _nop_(); 
   RD=1; _nop_(); 
   WR=1; _nop_(); 
   _nop_(); 
   CS=0; 
    
   i=DATA;  
   _nop_(); _nop_(); 
   RD=0; _nop_(); 
   CS=1; 
   _nop_(); 
} 
 
 
void writedat(uchar i) 
{   
   CS=1; _nop_(); 
   RD=0; _nop_(); 
   A0=1; _nop_(); 
   RD=1; _nop_(); 
   WR=0; _nop_(); 
   _nop_(); 
   CS=0; 
    
   DATA=i; 
  
   _nop_(); _nop_(); 
   WR=1; 
   RD=0; _nop_(); 
   CS=1; 
   _nop_(); 
} 
 
 
void readdat(uchar i) 
{   
   CS=1; _nop_(); 
   A0=1; _nop_(); 
   RD=1; _nop_(); 
   WR=1; _nop_(); 
   _nop_(); 
   CS=0; 
    
   i=DATA;  _nop_(); 
   _nop_(); 
   RD=0; _nop_(); 
   CS=1; _nop_(); 
   _nop_(); 
} 
 
 
/* 
          //8080   series MPU 
void writecmd(uchar i) 
{   
    
   A0=0;_nop_(); 
   WR=1; 
   CS=1; 
   WR=0;CS=0; 
   _nop_(); 
    
    
   DATA=i;  
   _nop_(); 
   WR=1; 
   CS=1; 
   _nop_(); 
} 
 
 
void readcmd(uchar i) 
{   
   CS=1; 
   A0=0; 
   RD=1; 
   
   _nop_(); 
   CS=0; 
    RD=0; 
     
   i=DATA;  
   _nop_(); 
   RD=1; 
   CS=1; 
   _nop_(); 
} 
 
 
void writedat(uchar i) 
{   
   A0=1;_nop_(); 
   WR=1; 
   CS=1; 
   WR=0;CS=0; 
   _nop_(); 
    
    
   DATA=i;  
   _nop_(); 
   WR=1; 
   CS=1; 
   _nop_(); 
} 
 
 
void readdat(uchar i) 
{   
   CS=1; 
   A0=1; 
   RD=1; 
   
   _nop_(); 
   CS=0; 
    RD=0; 
     
   i=DATA;  
   _nop_(); 
   RD=1; 
   CS=1; 
   _nop_(); 
} 
*/ 
 
 
 
void init_7502(void) 
{   
 
    writecmd(0xA2);                        //(11)LCD Bias setting 
    writecmd(0xA0);                       //(9)LCD  ADC select setting 
    writecmd(0xC0);                       //(15)output status select register  setting 
    writecmd(0x27);                       //resistor ratio  setting 
    writecmd(0x81);   writecmd(0x00);     //Electronic volume control  setting  
    writecmd(0x2F);                       //power control  setting 
     
    writecmd(0x40);                       //display start line  setting 
    writecmd(0xB0);                       //page address  setting 
    writecmd(0x10);    writecmd(0x00);    // Column address  setting 
    writecmd(0xAF);                       //display ON 
     
     
    } 
 
 
 
void show88(uchar lin,uchar col,uint address)/*显示8*8点阵的字符,每行可显示16个字符*/ 
{   uchar i;  
    uint addr; 
     addr=8*address;                              /*lin:0~7;   COL:0~15*/ 
    if(col>16) return; 
    if(col<8) 
       {  writecmd(0x40|lin); 
          writecmd(0x10);writecmd(0x00|col); 
	  
	  for(i=0;i<8;i++) 
	    {  writedat(zftable[addr+i]); 
	     } 
       } 
     
     
 
 
} 
 
 
 
//lcd subprog end