www.pudn.com > TG12864.rar > menu.c
#include#include #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define uint8 unsigned char #define DATA P0 bit flagok=0,flaginc=0,flagexit=0; code uchar num[]= //数字库 { /*-- 文字: 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, /*-- 文字: 9 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, }; code uchar mainshow1[]= ///mainshow为主菜单显示字库 { /*-- 文字: 欢 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00, 0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00, }; code uchar mainshow2[]= { /*-- 文字: 迎 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00, 0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00, }; code uchar mainshow3[]= { /*-- 文字: 使 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00, 0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00, }; code uchar mainshow4[]= { /*-- 文字: 用 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00, 0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00, }; code uchar mainshow5[]= { /*-- 文字: 本 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x08,0x08,0x04,0x02,0x05,0x04,0x04,0x7F,0x04,0x04,0x04,0x03,0x06,0x0C,0x04,0x00, 0x08,0x08,0x08,0x08,0x08,0xC8,0x38,0xFF,0x18,0x68,0x88,0x08,0x08,0x08,0x08,0x00, }; code uchar mainshow6[]= { /*-- 文字: 系 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00, 0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00, }; code uchar mainshow7[]= { /*-- 文字: 统 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x20,0x22,0x23,0x12,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x41,0x70,0x00, 0x20,0x30,0x2C,0xA3,0x60,0x10,0x84,0xC4,0xA4,0x9D,0x86,0x84,0xA4,0xC4,0x84,0x00, }; code uchar mainshow8[]= { /*-- 文字: ! --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; code uchar mainshow9[]= { /*-- 文字: 请 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x00,0x7F,0x20,0x10,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00, 0x40,0x42,0x4C,0xC4,0x00,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xAA,0x22,0x20,0x00, }; code uchar mainshow10[]= { /*-- 文字: 设 --*/ /*-- 宋体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, }; code uchar mainshow11[]= { /*-- 文字: 置 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x80,0x80,0x80,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0x80,0x80,0x80,0x00, 0x00,0x20,0x2F,0xA9,0xA9,0xAF,0xE9,0xB9,0xA9,0xAF,0xA9,0xA9,0x2F,0x20,0x00,0x00, }; code uchar mainshow12[]= { /*-- 文字: 参 --*/ /*-- 宋体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, }; code uchar mainshow13[]= { /*-- 文字: 数 --*/ /*-- 宋体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, }; code uchar dot[]= { /*-- 文字: - --*/ /*-- 隶书12; 此字体下对应的点阵为:宽x高=9x16 --*/ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00, /*-- 文字: > --*/ /*-- 隶书12; 此字体下对应的点阵为:宽x高=9x16 --*/ 0x00,0x20,0x30,0x18,0x0C,0x06,0x03,0x01,0x00,0x00,0x08,0x18,0x30,0x60,0xC0,0x80, 0x00,0x00, }; code uchar dismenu1[]= { /*-- 文字: 参 --*/ /*-- 宋体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, /*-- 文字: 数 --*/ /*-- 宋体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, /*-- 文字: 设 --*/ /*-- 宋体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, /*-- 文字: 定 --*/ /*-- 宋体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, /*-- 文字: 参 --*/ /*-- 宋体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, /*-- 文字: 数 --*/ /*-- 宋体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, /*-- 文字: 修 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x7F,0x00,0x03,0x54,0x54,0x4A,0x2B,0x25,0x15,0x12,0x0A,0x09,0x00,0x00, 0x20,0x10,0xFC,0x07,0xF2,0x20,0x98,0x8F,0x54,0xA4,0x24,0x54,0xCC,0x80,0x80,0x00, /*-- 文字: 改 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x7F,0x20,0x10,0x48,0x44,0x20,0x20,0x10,0x0B,0x0C,0x13,0x20,0x60,0x20,0x00, 0x00,0xC4,0x44,0x44,0x44,0x7C,0x80,0x40,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x10,0x00, /*-- 文字: 参 --*/ /*-- 宋体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, /*-- 文字: 数 --*/ /*-- 宋体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, /*-- 文字: 发 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x40,0x20,0x10,0x88,0x87,0x41,0x46,0x28,0x10,0x28,0x27,0x40,0xC0,0x40,0x00,0x00, 0x00,0x10,0x3E,0x10,0x10,0xF0,0x9F,0x90,0x90,0x92,0x94,0x1C,0x10,0x10,0x10,0x00, /*-- 文字: 送 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x40,0x20,0x1F,0x20,0x40,0x48,0x44,0x43,0x40,0x41,0x42,0x4C,0x40,0x40,0x40,0x00, 0x40,0x41,0xC6,0x00,0x40,0x48,0x49,0x4E,0xF8,0x4C,0x4B,0x48,0x48,0x40,0x00,0x00, /*-- 文字: 退 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x40,0x20,0x1F,0x20,0x40,0x5F,0x48,0x44,0x40,0x41,0x42,0x4D,0x58,0x40,0x40,0x00, 0x40,0x41,0xC6,0x00,0x00,0xFE,0x4A,0x4A,0xCA,0x4A,0x4A,0x7E,0x80,0x00,0x00,0x00, /*-- 文字: 出 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x7E,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x7E,0x00,0x00, 0x00,0x00,0xFC,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0xFC,0x00,0x00, /*-- 文字: 环 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x04,0x04,0x03,0x12,0x0A,0x04,0x03,0x00,0x00,0xFF,0x00,0x00,0x03,0x0E,0x00, 0x00,0x22,0x22,0xFE,0x22,0x22,0x00,0x02,0xC2,0x32,0xFE,0x42,0x82,0x02,0x02,0x00, /*-- 文字: 境 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x10,0x30,0x1F,0x08,0x08,0x00,0x80,0x4F,0x3A,0x0A,0x0A,0x7A,0x8F,0x80,0xE0,0x00, 0x20,0x20,0xFE,0x20,0x20,0x00,0x24,0xAC,0xB4,0xA5,0xA6,0xB4,0xAC,0x24,0x00,0x00, }; //管脚定义//////////////////////////////////////////////////////////////// sbit CS=P2^1; sbit A0=P1^0; sbit WR=P2^6; sbit RD=P2^7; sbit OK=P1^6; sbit INC=P1^7; sbit EXIT=P1^5; ////////变量定义///////////////////////////////////////////////////////// bit newok,oldok; bit newinc,oldinc; bit newexit,oldexit; bdata uchar showj=0; //函数列表////////////////////////////////////////////////////////////////// void wcode(uchar i); void wdata(uchar i); void lcd_busy(void); void rdata(uchar i); void init_12864(void); void startline(uchar i); void disoff(uchar o); void delay(ulong v) ; void setxy (uchar x1,uchar x2,uchar y) ; void lw(uchar x, uchar y, uchar dd) ; void dh(uchar xx, uchar yy, uchar n, uchar fb,uchar hz[]); void clear(void); void shownum (uchar xx, uchar yy, uchar n, uchar fb); void showtime(void); void showsing (uchar xx, uchar yy, uchar team[], uchar fb); void counttime (void); ////////////////////////////////////////////////////////////////////////// //检测忙信号? //A0=0;RD=0;WR=1 void lcd_busy(void) { //函数名为lcd_busy 的判LCM忙子函数 //lcd_busy函数开始 CS=1; WR=1;_nop_(); A0=0; RD=0;_nop_(); DATA=0xff;_nop_(); //选择指令寄存器,选择读方式,LCM数据口置全1 CS=0; while(1) { //while循环体,无限循环 //使能,将LCM的状态读入MCU if(DATA&0x80)break; /*若读入状态的数据小于0x80,说明最高位为0,LCM空闲,执行break语句跳出while循环体*/ //禁能 } CS=1;_nop_(); }// / while循环体结束 ///////////////////////////////////////////////////////////////////////////// //写控制命令到lcd //A0=0;RD=1;WR=0 void wcode (uchar i) { lcd_busy(); //检测忙? CS=1; RD=1;_nop_(); // delay(0x04); A0=0; WR=0;_nop_(); CS=0;_nop_(); DATA=i; //delay(0x04); // DATA=i; _nop_(); _nop_(); CS=1;_nop_(); } ////////////////////////////////////////////////////////////////////////// //写显示数据到lcd void wdata (uchar i) //A0=1;RD=1;WR=0 { lcd_busy();//检测忙? CS=1; RD=1;_nop_(); // delay(0x04); A0=1; WR=0;_nop_(); CS=0;_nop_(); DATA=i; // delay(0x04); //DATA=i; _nop_(); _nop_(); CS=1;_nop_(); } /////////////////////////////////////////////////////////////////////// //lcd读显示数据 void rdata (uchar i) //A0=1;RD=0;WR=1 { lcd_busy();//检测忙? CS=1; WR=1;_nop_(); // delay(0x04); A0=1; RD=0;_nop_(); CS=0;_nop_(); DATA=i; //delay(0x04); //DATA=i; _nop_(); _nop_(); CS=1;_nop_(); } /////////////////////////////////////////////////////////////////// //液晶屏初始化 void init_12864(void) { /*函数名为lcd_init 的LCM初始化子函数*/ disoff(0x00);//开显示屏//0x00关显示;0x01开显示////1 wcode(0xa0); //设置ADC 为正常0---64 ///8 wcode(0xa6);//设置正常的开关状态/////9 wcode(0x2f);//设置能量控制16 wcode(0x81);wcode(0x00);//Electronic volume control setting 18 wcode(0xa3);//设置lcd bias///////11 wcode(0xc0);///选择输出状态寄存器////15 wcode(0xa5);//全屏亮///10 delay(4); ////// wcode(0xa4); //正常显示////// 10 startline(0x00);//从第一行开始显示//////2 clear();//清屏 /// disoff(0x01);//开显示屏//0x00关显示;0x01开显示////1 } ////////////////////////////////////////////////////////////////////// void startline (uchar i) //设置显示起始行 { i=i+0x40; wcode(i); } /////////////////////////////////////////////////////////////////////// void setxy (uchar x1,uchar x2,uchar y) //定位x方向、y方向的子函数 { y=y+0xb0; x2=x2+0x10; x1=x1+0x00; wcode(x1); wcode(x2); wcode(y); } /////////////////////////////////////////////////////////////////////// void disoff (uchar o)//显示屏关子函数 { o=o+0xae; wcode(o); } ////////////////////////////////////////////////////////////////////// void delay (ulong v) { while(v!=0)v--; } ///////////////////////////////////////////////////////////// /*-----------------------------------写数据至LCM子函数----------------------------------*/ void lw (uchar x, uchar y, uchar dd) /*函数名为lw 的写数据至LCM子函数。定义x、y、dd为无符号 字符型局部变量*/ {uchar temp,x1,x2; //lw子函数开始 temp=x; x=x&0x0f; x1=x; x=temp; x=x&0xf0; x=x/16; x=x&0x0f; x2=x; setxy(x1,x2,y); wdata(dd); } //////////////////////////////////////////////////////////// /*-------------------------------------显示汉字子函数------------------------------------------*/ void dh (uchar xx, uchar yy,uchar n,uchar fb,uchar hz[]) /*函数名为dh的显示汉字子函数。 定义xx、yy、n、fb为无符号字符型局部变量。其中xx、yy为列、页定位值, n为汉字库中的第n个汉字,fb为反白显示选择*/ { //dh子函数开始 uchar i,dx; //定义i、dx为无符号字符型局部变量 for(i=0;i<16;i++) //for循环体,用于扫描汉字的上半部分 {dx=hz[i+n*32]; //取得第n个汉字的上半部分数据代码 if(fb)dx=255-dx; //若fb不为0,获得反白数据代码 lw(xx*8+i+2,yy+1,dx); } //将数据代码写入LCd for(i=0;i<16;i++) {dx=hz[(i+16)+n*32]; //取得第n个汉字的下半部分数据代码 if(fb)dx=255-dx; //若fb不为0,获得反白数据代码 lw(xx*8+i+2,yy,dx); //将数据代码写入LCM } //for循环体结束 } //dh子函数结束 /********************************************************/ void shownum (uchar xx, uchar yy, uchar n, uchar fb) /*函数名为shownum的显示数字的函数*/ { //shownum子函数开始 uchar i,dx; //定义i、dx为无符号字符型局部变量 for(i=0;i<8;i++) //for循环体,用于扫描汉字的上半部分 {dx=num[i+n*16]; //取得第n个数字的上半部分数据代码 if(fb)dx=255-dx; //若fb不为0,获得反白数据代码 lw(xx+i+2,yy+1,dx); } //将数据代码写入LCd for(i=0;i<8;i++) {dx=num[(i+8)+n*16]; //取得第n个数字的下半部分数据代码 if(fb)dx=255-dx; //若fb不为0,获得反白数据代码 lw(xx+i+2,yy,dx); //将数据代码写入LCM } //for循环体结束 } //shownum子函数结束 ////////////////////////////////////////////////////////// void showsing (uchar xx, uchar yy, uchar team[], uchar fb) /*函数名为showsing的显示单个汉字子函数。 定义xx、yy、n、fb为无符号字符型局部变量。其中xx、yy为列、页定位值.带数组显示*/ { //showsing子函数开始 uchar i,dx; //定义i、dx为无符号字符型局部变量 for(i=0;i<16;i++) //for循环体,用于扫描汉字的上半部分 {dx=team[i]; //取得第n个汉字的上半部分数据代码 if(fb)dx=255-dx; //若fb不为0,获得反白数据代码 lw(xx+i+2,yy+1,dx); } //将数据代码写入LCd for(i=0;i<16;i++) {dx=team[i+16]; //取得第n个汉字的下半部分数据代码 if(fb)dx=255-dx; //若fb不为0,获得反白数据代码 lw(xx+i+2,yy,dx); //将数据代码写入LCM } //for循环体结束 } //dh子函数结束 /////////////////////////////////////////////////////// /*-------------------------------------显示汉字子函数------------------------------------------*/ void clear(void) { uchar x,y; for(y=0;y<8;y++) { for(x=0;x<=131;x++) lw(x,y,0x00); } } ///////////////////////////////////////////////////////////////// void dismain(void) //主菜单显示函数 { showsing(4,2,mainshow1,0); showsing(20,2,mainshow2,0); showsing(36,2,mainshow3,0); showsing(52,2,mainshow4,0); showsing(68,2,mainshow5,0); showsing(84,2,mainshow6,0); showsing(100,2,mainshow7,0); showsing(116,2,mainshow8,0); showsing(20,4,mainshow9,0); showsing(36,4,mainshow10,0); showsing(52,4,mainshow11,0); showsing(68,4,mainshow12,0); showsing(84,4,mainshow13,0); } //////////////////////////////////////////////////////////////// void dismenuson(void) //菜单显示 { uchar loop; shownum(2,0,1,1); shownum(2,2,2,1); shownum(2,4,3,1); shownum(2,6,4,1); for(loop=0;loop<4;loop++) {dh(2*loop+36,0,loop,0,dismenu1);} for(loop=0;loop<4;loop++) {dh(2*loop+36,2,loop+4,0,dismenu1);} for(loop=0;loop<4;loop++) {dh(2*loop+36,4,loop+8,0,dismenu1);} for(loop=0;loop<4;loop++) {dh(2*loop+36,6,loop+12,0,dismenu1);} } /////////////////////////////////////////////////////////////// void dishead(uchar yy) //箭头显示 { uchar i,dx,yyx; yyx=2*yy; for(i=0;i<9;i++) {dx=dot[i]; lw(10+i+2,yy+1,dx); } for(i=0;i<9;i++) {dx=dot[i+9]; lw(10+i+2,yy,dx); } for(i=0;i<9;i++) {dx=dot[i+18]; lw(18+i+2,yy+1,dx); } for(i=0;i<9;i++) {dx=dot[i+27]; lw(18+i+2,yy,dx); } } ///////////////////////////////////////////////////////////////// void keyscanok(void)/////确认键扫描程序 { while(1) { if(OK==0) {delay(100); if(OK==0) {flagok=1; break; } } break; } } ///////////////////////////////////////////////////////////////// void keyscaninc(void) ////增加键扫描程序 { while(1) { if(INC==0) {delay(100); if(INC==0) {flaginc=1; showj++; if(showj==4) showj=0; break; } } break; } } ///////////////////////////////////////////////////////////////// void keyscanexit(void) //退出键扫描程序 { while(1) { if(EXIT==0) {delay(100); if(EXIT==0) {flagexit=1; break; } } break; } } ////////////////////////////////////////////////////////////////// /****************************主函数******************************/ void main(void) { // uchar u=0; /P0M1=0x00;P0M2=0x00; P1M1=0x0c;P1M2=0x00; P2M1=0x00;P2M2=0x00; P3M1=0x00;P3M2=0x00; wcode(0xe2); init_12864(); //LCM初始化 // delay(1); //延时一会 while(1) //无限循环 { dismain();//显示主菜单 keyscanok();//确认键扫描 if(flagok==1)//确认键标志 {clear(); dismenuson();//显示第一层菜单 dishead(showj);//显示箭头 keyscaninc();//扫描增加键 while(flaginc==1)//增加键标志 {switch(showj) {case '1': clear(); dismenuson();//显示第二层菜单 // dishead(showj);//显示箭头 if(flagexit==1) break; case '2': clear(); dishead(showj); if(flagexit==1) break; case '3': clear(); dismenuson();//显示第二层菜单 // dishead(showj);//显示箭头 if(flagexit==1) break; case '4': clear(); dishead(showj); if(flagexit==1) break; default:break; } } if(flagexit==1) break; } } delay(400000000); delay(400000000); delay(400000000); delay(400000000); }