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