C51 COMPILER V8.02 12864TUPIAN 07/01/2010 14:41:11 PAGE 1 C51 COMPILER V8.02, COMPILATION OF MODULE 12864TUPIAN OBJECT MODULE PLACED IN 12864tupian.OBJ COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE 12864tupian.c BROWSE DEBUG OBJECTEXTEND line level source 1 /****************************************************************************** 2 “天祥电子” 倾情奉献 3 www.txmcu.com 4 www.txmcu.cn 5 ************************************************************************************* 6 功能简介: 本程序驱动12864显示一副的图片。 7 ************************************************************************************/ 8 9 #include 10 #include 11 12 #define uchar unsigned char 13 #define uint unsigned int 14 /*12864端口定义*/ 15 #define LCD_data P0 //数据口 16 sbit LCD_RS = P3^5; //寄存器选择输入 17 sbit LCD_RW = P3^6; //液晶读/写控制 18 sbit LCD_EN = P3^4; //液晶使能控制 19 sbit LCD_PSB = P3^7; //串/并方式控制 20 sbit wela = P2^6; 21 sbit dula = P2^7; 22 23 unsigned char code zhu[]= //图片代码 24 { 25 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 26 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 27 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 28 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 29 0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 30 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 31 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 32 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 33 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 34 0x00,0x00,0x03,0x50,0x00,0x50,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 35 0x00,0x00,0x3C,0x04,0x00,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 36 0x00,0x00,0x40,0x01,0x0B,0x15,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 37 0x00,0x00,0x40,0x00,0x88,0x00,0x00,0x06,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 38 0x00,0x01,0x80,0x00,0x60,0x00,0x00,0x05,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 39 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x03,0x90,0x00,0x01,0xB6,0x36,0x00,0x00,0x00, 40 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x01,0xFE,0x36,0x00,0x00,0x00, 41 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x02,0x20,0x00,0x01,0xB6,0x36,0x00,0x00,0x00, 42 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0xA0,0x00,0x03,0x6F,0xFF,0x00,0x00,0x00, 43 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0x00, 44 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0xC0,0x00,0x00,0x00,0x28,0x00,0x00,0x00, 45 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00, 46 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00, 47 0x00,0x00,0x10,0x80,0x00,0x00,0x1F,0x08,0x47,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, 48 0x00,0x00,0x01,0x20,0x00,0x00,0x3D,0x13,0x0C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00, 49 0x00,0x00,0x08,0x10,0x00,0x00,0x27,0xA0,0x18,0x06,0x00,0x00,0x00,0x00,0x00,0x00, 50 0x00,0x00,0x02,0x10,0x00,0x00,0x3F,0x80,0x38,0xC7,0x00,0x00,0x00,0x00,0x00,0x00, 51 0x00,0x00,0x04,0x03,0xE0,0x00,0x33,0x90,0x3F,0xC7,0x00,0x00,0x00,0x00,0x00,0x00, 52 0x00,0x00,0x00,0x03,0xB0,0x00,0x33,0x10,0x7F,0x87,0x00,0x00,0x00,0x00,0x00,0x00, 53 0x00,0x00,0x08,0x24,0xF0,0x0C,0x0E,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00, 54 0x00,0x00,0x00,0x07,0xF0,0xC2,0x00,0x00,0xFE,0x1F,0x81,0xB3,0xE6,0xD8,0xF0,0x00, 55 0x00,0x00,0x08,0x46,0x71,0x06,0x00,0x08,0x3F,0x1F,0x01,0xF6,0x67,0xF9,0xB0,0x00, C51 COMPILER V8.02 12864TUPIAN 07/01/2010 14:41:11 PAGE 2 56 0x00,0x00,0x00,0x03,0x20,0x98,0x00,0x00,0x3F,0xFF,0x01,0xB6,0xC6,0xD9,0x80,0x00, 57 0x00,0x00,0x08,0x40,0xC0,0x24,0x00,0x04,0x3F,0x1F,0x03,0x7F,0xFD,0xBE,0xFC,0x00, 58 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x1E,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 59 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x01,0x0E,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 60 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x87,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, 61 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 62 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 63 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 64 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 65 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 66 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, 67 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x08,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, 68 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, 69 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x88,0x00,0x01,0x8C,0x00,0x00,0x00,0x00, 70 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x8E,0x00,0x00,0x00,0x00, 71 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0xB6,0x06,0xDB,0x6C,0x00, 72 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x06,0xDB,0x6C,0x00, 73 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 74 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 75 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 76 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 77 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 78 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 79 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 80 0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 81 0x00,0x00,0x00,0x00,0x94,0xA4,0x68,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 82 0x00,0x00,0x00,0x00,0x02,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 83 0x00,0x00,0x00,0x00,0x42,0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 84 0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 85 0x00,0x00,0x00,0x00,0x14,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 86 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 87 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 88 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 89 }; 90 91 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; 92 93 void delay0(uchar x); //x*0.14MS 94 void beep(); 95 void dataconv(); 96 void lcd_pos(uchar X,uchar Y); //确定显示位置 97 98 void delay(int ms) 99 { 100 1 while(ms--) 101 1 { 102 2 uchar i; 103 2 for(i=0;i<250;i++) 104 2 { 105 3 _nop_(); 106 3 _nop_(); 107 3 _nop_(); 108 3 _nop_(); 109 3 } 110 2 } 111 1 } 112 113 /*******************************************************************/ 114 /* */ 115 /*检查LCD忙状态 */ 116 /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */ 117 /* */ C51 COMPILER V8.02 12864TUPIAN 07/01/2010 14:41:11 PAGE 3 118 /*******************************************************************/ 119 bit lcd_busy() 120 { 121 1 bit result; 122 1 LCD_RS = 0; 123 1 LCD_RW = 1; 124 1 LCD_EN = 1; 125 1 delayNOP(); 126 1 result = (bit)(P0&0x80); 127 1 LCD_EN = 0; 128 1 return(result); 129 1 } 130 /*******************************************************************/ 131 /* */ 132 /*写指令数据到LCD */ 133 /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ 134 /* */ 135 /*******************************************************************/ 136 void lcd_wcmd(uchar cmd) 137 { 138 1 while(lcd_busy()); 139 1 LCD_RS = 0; 140 1 LCD_RW = 0; 141 1 LCD_EN = 0; 142 1 _nop_(); 143 1 _nop_(); 144 1 P0 = cmd; 145 1 delayNOP(); 146 1 LCD_EN = 1; 147 1 delayNOP(); 148 1 LCD_EN = 0; 149 1 } 150 /*******************************************************************/ 151 /* */ 152 /*写显示数据到LCD */ 153 /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ 154 /* */ 155 /*******************************************************************/ 156 void lcd_wdat(uchar dat) 157 { 158 1 while(lcd_busy()); 159 1 LCD_RS = 1; 160 1 LCD_RW = 0; 161 1 LCD_EN = 0; 162 1 P0 = dat; 163 1 delayNOP(); 164 1 LCD_EN = 1; 165 1 delayNOP(); 166 1 LCD_EN = 0; 167 1 } 168 /*******************************************************************/ 169 /* */ 170 /* LCD初始化设定 */ 171 /* */ 172 /*******************************************************************/ 173 void lcd_init() 174 { 175 1 176 1 LCD_PSB = 1; //并口方式 177 1 178 1 lcd_wcmd(0x34); //扩充指令操作 179 1 delay(5); C51 COMPILER V8.02 12864TUPIAN 07/01/2010 14:41:11 PAGE 4 180 1 lcd_wcmd(0x30); //基本指令操作 181 1 delay(5); 182 1 lcd_wcmd(0x0C); //显示开,关光标 183 1 delay(5); 184 1 lcd_wcmd(0x01); //清除LCD的显示内容 185 1 delay(5); 186 1 } 187 188 /******************************************* 189 函数名称:Draw_PM 190 功 能:在整个液晶屏幕上画图 191 参 数:无 192 返回值 :无 193 ********************************************/ 194 void Draw_PM(const uchar *ptr) 195 { 196 1 uchar i,j,k; 197 1 wela=0; 198 1 dula=0; 199 1 lcd_wcmd(0x34); //打开扩展指令集 200 1 i = 0x80; 201 1 for(j = 0;j < 32;j++) 202 1 { 203 2 lcd_wcmd(i++); 204 2 lcd_wcmd(0x80); 205 2 for(k = 0;k < 16;k++) 206 2 { 207 3 lcd_wdat(*ptr++); 208 3 } 209 2 } 210 1 i = 0x80; 211 1 for(j = 0;j < 32;j++) 212 1 { 213 2 lcd_wcmd(i++); 214 2 lcd_wcmd(0x88); 215 2 for(k = 0;k < 16;k++) 216 2 { 217 3 lcd_wdat(*ptr++); 218 3 } 219 2 } 220 1 lcd_wcmd(0x36); //打开绘图显示 221 1 lcd_wcmd(0x30); //回到基本指令集 222 1 } 223 224 main() 225 { 226 1 wela=0; 227 1 dula=0; 228 1 lcd_init(); //初始化LCD 229 1 Draw_PM(zhu); //显示可爱猪的图片 230 1 while(1); 231 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 274 ---- CONSTANT SIZE = 1024 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- 4 IDATA SIZE = ---- ---- BIT SIZE = ---- 1 C51 COMPILER V8.02 12864TUPIAN 07/01/2010 14:41:11 PAGE 5 END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)