单片机STC12C5A60S2_RFID_RC522_OLED_门禁系统_菜单设计

Tanisha ·
更新时间:2024-09-21
· 660 次阅读

门禁系统

视频演示
Keil源代码包

系统流程图

系统框图
30 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93 //0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94=126-32 0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,/*"箭头(替换~)",95*/ }; //一个128*64的LOGO图片 uchar code BMP1[]={ 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x80,0xC0,0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x60, 0x60,0x20,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x07,0x03,0x03,0x01,0x00,0x00,0x00, 0x80,0xC0,0xF0,0xFC,0x7E,0x3E,0x1F,0x0F,0x07,0x07,0x03,0x03,0x03,0x01,0x01,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, 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,0x00,0x00,0x00,0x00,0xC0,0xF8,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x7F,0x1F,0x07,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x80,0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xF8,0xFC,0xFE, 0xFF,0x7F,0x07,0x01,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xC0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0xE0,0xF0,0xF8,0xF8, 0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x0F,0x07,0x07,0x03,0x01,0x01,0x01,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, 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x03,0x07,0x07,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F,0x07,0x07,0x03,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0xC0,0xE0,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0x40,0x80, 0x80,0x00,0x00,0x00,0x00,0xE0,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x00,0x00,0x00,0xE0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0, 0xE0,0x00,0x00,0x00,0x80,0xC0,0xC0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x40,0xC0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xE0,0xE0,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1F,0x3F,0x7F,0xC0,0x80,0x80,0x9C,0x9C,0x84,0x84,0x84,0x84,0x8C,0xFC, 0xFC,0x00,0x00,0x00,0x00,0xFF,0xFF,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86, 0x86,0x00,0x00,0x00,0xFF,0xFF,0x00,0x01,0x03,0x06,0x06,0x0C,0x18,0x30,0x60,0xFF, 0xFF,0x00,0x00,0x0E,0x1F,0x3F,0x40,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x40,0x30,0x00,0x00,0x00,0xFF,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, 0x04,0x04,0xFF,0xFF,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"D:\_USER_FILE\桌面\1.BMP",0*/ }; /********************************************** //IIC Start **********************************************/ void IIC_Start() { SCL = high; SDA = high; SDA = low; SCL = low; } /********************************************** //IIC Stop **********************************************/ void IIC_Stop() { SCL = low; SDA = low; SCL = high; SDA = high; } /********************************************** // 通过I2C总线写一个字节 **********************************************/ void Write_IIC_Byte(unsigned char IIC_Byte) { unsigned char i; for(i=0;i<8;i++) { if(IIC_Byte & 0x80) SDA=high; else SDA=low; SCL=high; SCL=low; IIC_Byte<>4)|0x10); OLED_WrCmd((x&0x0f)|0x01); } /*********************OLED全屏************************************/ void OLED_Fill(unsigned char bmp_dat) { unsigned char y,x; for(y=0;y<8;y++) { OLED_WrCmd(0xb0+y); OLED_WrCmd(0x01); OLED_WrCmd(0x10); for(x=0;x<X_WIDTH;x++) OLED_WrDat(bmp_dat); } } /*********************OLED复位************************************/ void OLED_CLS(void) { unsigned char y,x; for(y=0;y<8;y++) { OLED_WrCmd(0xb0+y); OLED_WrCmd(0x01); OLED_WrCmd(0x10); for(x=0;x120){x=0;y++;} OLED_Set_Pos(x,y); for(i=0;i<8;i++) OLED_WrDat(F8X16[c*16+i]); OLED_Set_Pos(x,y+1); for(i=0;i<8;i++) OLED_WrDat(F8X16[c*16+i+8]); x+=8; j++; } } /*****************功能描述:显示16*16点阵 显示的坐标(x,y),y为页范围0~7****************************/ void OLED_P16x16Ch(uchar x, uchar y, uchar N) { unsigned char wm=0; unsigned char adder=32*N; OLED_Set_Pos(x , y); for(wm = 0;wm < 16;wm++) { OLED_WrDat(F16x16[adder]); adder += 1; } OLED_Set_Pos(x,y + 1); for(wm = 0;wm < 16;wm++) { OLED_WrDat(F16x16[adder]); adder += 1; } } /***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/ void Draw_BMP(unsigned char x0, y0,x1, y1,unsigned char BMP[]) { unsigned int j=0; unsigned char x,y; if(y1%8==0) y=y1/8; else y=y1/8+1; for(y=y0;y<y1;y++) { OLED_Set_Pos(x0,y); for(x=x0;x126){x=0;y++;} OLED_Set_Pos(x,y); for(i=0;i<6;i++) OLED_WrDat(F6x8[c][i]); x+=6; j++; } } #endif Tips code status[5]= { {"OK."}, {"Error,Retry."}, {"1"} }; /************************************************** * * 菜单库 * ***************************************************/ uchar func_index = 0; // Tips code line[4]={{"Selection 1 "},{"Selection 2 "},{"Selection 3 "},{"Selection 4 "},}; Tips code line[4]={ // (" ADD "); {"Modify U PWD "}, {" S50 CARDs "}, {"LOG MESSEGES "}, {" Home "},}; // Tips code lines[4]={{"Selection 1~ "},{"Selection 2~ "},{"Selection 3~ "},{"Selection 4~ "}}; Tips code lines[4]={ // (" ADD "); {"Modify U PWD ~"}, {" S50 CARDs ~"}, {"LOG MESSEGES ~"}, {" Home ~"} }; /************** * 以下函数func0~func14都是菜单功能的循环 * 包含结构体和函数指针的知识,详情请见解析 * https://zhidao.baidu.com/question/447214291.html *********************/ void func0() //OLED显示:菜单模式 func_index = 0; { EA = 0; OLED_CLS(); OLED_P16x16Ch(23,3,0); OLED_P16x16Ch(40,3,1); OLED_P16x16Ch(57,3,2); OLED_P16x16Ch(74,3,3); EA = 1; } void func1() //OLED显示:Modify User Passwd { EA = 0; OLED_P8x16Str(0,6,line[3].messege); OLED_P8x16Str(0,4,line[2].messege); OLED_P8x16Str(0,2,line[1].messege); OLED_P8x16Str(0,0,lines[0].messege); EA = 1; } void func2() //OLED显示:ADD S50 Cards { EA = 0; OLED_P8x16Str(0,0,line[0].messege); OLED_P8x16Str(0,2,lines[1].messege); OLED_P8x16Str(0,4,line[2].messege); OLED_P8x16Str(0,6,line[3].messege); EA = 1; } void func3() //OLED显示:LOG MESSEGES { EA = 0; OLED_P8x16Str(0,0,line[0].messege); OLED_P8x16Str(0,2,line[1].messege); OLED_P8x16Str(0,4,lines[2].messege); OLED_P8x16Str(0,6,line[3].messege); EA = 1; } void func4() //OLED显示:HOME { EA = 0; OLED_P8x16Str(0,0,line[0].messege); OLED_P8x16Str(0,2,line[1].messege); OLED_P8x16Str(0,4,line[2].messege); OLED_P8x16Str(0,6,lines[3].messege); EA = 1; } void func5() //修改用户密码,执行完毕,func_index = 7(欢迎回家) { EA = 0; OLED_CLS(); OLED_P8x16Str(40,0,"Input"); OLED_P8x16Str(15,2,"Super Passwd"); OLED_P8x16Str(100,4,"..."); EA = 1; if(modify()) {EA = 0; OLED_CLS();OLED_P8x16Str(30,3,"Successful!");Delay500ms();EA=1;} else {EA=0;OLED_CLS();OLED_P8x16Str(40,4,"Retry!");Delay500ms();EA =1;} func_index = 7; OUT = 1; EA = 1; } void func6()// 第四行的Home返回到欢迎界面 { OUT = 1; TEMP = 0; func_index = 7; EA = 0; OLED_CLS(); OLED_P8x16Str(3,4,"BACKING HOME!"); Delay500ms(); // OLED_P16x16Ch(23,3,1); // OLED_P16x16Ch(40,3,2); // OLED_P16x16Ch(57,3,3); // OLED_P16x16Ch(74,3,4); EA = 1; } void func7()//OLED显示:“欢迎回家”,内含返回while循环的关键函数 { EA = 0; OLED_CLS(); OLED_P16x16Ch(23,3,4); OLED_P16x16Ch(40,3,5); OLED_P16x16Ch(57,3,6); OLED_P16x16Ch(74,3,7); OUT = 1; TEMP = 0; EA = 1; } void func8()//版本信息 { EA = 0; OLED_CLS(); OLED_P8x16Str(0,0,"Version Messege"); OLED_P8x16Str(40,2,"V3.99"); OLED_P8x16Str(30,4,"By LAH"); OLED_P8x16Str(5,6," 2020421 Update"); EA = 1; } void func9(){ EA = 0; OLED_CLS(); OLED_P8x16Str(0,3,"Door Is Opening."); EA = 1; Delay500ms(); MotroOpenDoor(); func_index = 7; OUT = 1; TEMP = 0; } void func10(){ bit Cards_OUT = 0; EA = 0; OLED_CLS(); OLED_P8x16Str(40,0,"Input"); OLED_P8x16Str(15,2,"Super Passwd"); OLED_P8x16Str(100,4,"..."); EA = 1; if(verif_admin_passwd()) { EA = 0; OLED_CLS(); OLED_P8x16Str(30,3,"Successful!");Delay500ms(); OLED_CLS(); OLED_P8x16Str(30,3,"Show Card!"); EA=1; while(!Cards_OUT){ if(PcdRequest(0x52,Temp_S50) == MI_OK) { if(PcdAnticoll(UID_S50)== MI_OK ) { save_UID_In_EEPROM(UID_S50); Delay200ms(); Cards_OUT = 1; } } } EA = 0; OLED_CLS(); OLED_P8x16Str(30,2,"Successful!"); OLED_P8x16Str(30,4,"Updating..."); Delay500ms(); read_UID_From_EEPROM(G); OLED_CLS(); EA=1; } else {EA=0;OLED_CLS();OLED_P8x16Str(40,4,"Retry!");Delay500ms();EA =1;func_index = 7; OUT = 1;TEMP = 0;return;} OUT = 1; TEMP = 0; func_index = 7; } void func11(){ EA = 0; OLED_CLS(); OLED_P8x16Str(0,0,"Warning!"); OLED_P8x16Str(40,3,"CLEAN"); OLED_P8x16Str(40,3,"ALl"); OLED_P8x16Str(40,3,"UID"); EA = 1; clearAll(); OUT = 1; TEMP = 0; func_index = 7; } void func12(){ EA = 0; OLED_P8x16Str(0,0," ADD~"); OLED_P8x16Str(0,2," DEL UID "); OLED_P8x16Str(0,4," Back "); OLED_P8x16Str(0,6," "); EA = 1; } void func13(){ EA = 0; //"Modify U PWD " OLED_P8x16Str(0,0," ADD "); OLED_P8x16Str(0,2," DEL UID~"); OLED_P8x16Str(0,4," Back "); OLED_P8x16Str(0,6," "); EA = 1; } void func14(){ EA = 0; OLED_P8x16Str(0,0," ADD "); OLED_P8x16Str(0,2," DEL UID "); OLED_P8x16Str(0,4," Back~"); OLED_P8x16Str(0,6," "); EA = 1; } key_table code table[20] = { // {current,up,down,enter,(*current_operation)}, {0,4,1,0,(*func0)}, {1,4,2,5,(*func1)},//第一行"Modify User Passwd",确认键进入函数5(修改用户密码), {2,1,3,12,(*func2)},//第二行 S50 Cards {3,2,4,8,(*func3)},//第三行“LOG Messeges” {4,3,1,6,(*func4)},//第四行“HOME” {5,0,0,0,(*func5)},//功能函数:修改密码函数 {6,2,0,7,(*func6)},//功能函数:Home返回键,提示“Backing HOME!”,执行完func6,赋值func_index为7,退出后执行函数7,提示“欢迎回家”,之后重回到while大循环中 {7,7,7,7,(*func7)},//功能函数:OLED显示:“欢迎回家”,内含返回while循环的关键函数 {8,7,7,7,(*func8)},//功能函数:显示版本等信息,按任意功能键返回HOME {9,9,9,9,(*func9)}, //Null {10,7,7,7,(*func10)}, //添加新S50功能函数 {11,7,7,7,(*func11)}, //清除全部UID函数 {12,14,13,10,(*func12)}, //显示 ADD {13,12,14,11,(*func13)}, //显示DEL跳转func11清除UID函数 {14,13,12,7,(*func14)}, //显示Back }; void enterMenu() { EA = 0; Draw_BMP(0,0,128,8,BMP1); Delay1000ms(); EA = 1; } uchar getDir()// 获取函数下标func_index { uchar temp = 0; key_flag = 0; temp = key_num; if(temp == 3){ func_index = table[func_index].up; key_num = 99; key_flag = 1;return temp; } //上 else if(temp == 15){ func_index = table[func_index].down; key_num = 99; key_flag = 1; return temp; } //下 else if(temp == 14){ func_index = table[func_index].enter; key_num = 99; key_flag = 1; return temp;} //确定键 else return 0; } 超薄奥利奥 原创文章 5获赞 5访问量 479 关注 私信 展开阅读全文
作者:超薄奥利奥



rfid rc522 oled 菜单 系统

需要 登录 后方可回复, 如果你还没有账号请 注册新账号