📄 lcd_function.lst
字号:
219 // unsigned right, unsigned bottom, unsigned Mode)
220 //描述:画矩形程序
221 //参数:left - 矩形的左上角横坐标,范围0到118
222 // top - 矩形的左上角纵坐标,范围0到50
223 // right - 矩形的右下角横坐标,范围1到119
224 // bottom - 矩形的右下角纵坐标,范围1到51
225 // Mode - 绘制模式,可以是下列数值之一:
226 // PAINT_HOLLOW: 矩形框(空心矩形)
227 // PAINT_SOLID: 矩形面(实心矩形)
228 //声明:xinqiang 20050521 sunnorth Mz Design
229 //注意:无
230 //***************************************************************************//
231 void LCD_Rectangle(unsigned left, unsigned top, unsigned right, unsigned bottom, unsigned Mode)
232 {
233 1 unsigned uiTemp;
234 1 /* if(left>right)
235 1 {
236 1 uiTemp = left;
237 1 left = right;
238 1 right = left;
239 1 }
240 1 if(top>bottom)
241 1 {
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 5
242 1 uiTemp = top;
243 1 top = bottom;
244 1 bottom = uiTemp;
245 1 } */
246 1 /* if(Mode==0)
247 1 {
248 1 LCD_Line(left,top,left,bottom);
249 1 LCD_Line(left,top,right,top);
250 1 LCD_Line(right,bottom,left+1,bottom);
251 1 LCD_Line(right,bottom,right,top+1);
252 1 }
253 1 else
254 1 { */
255 1 for(uiTemp=top;uiTemp<=bottom;uiTemp++)
256 1 {
257 2 LCD_Line(left,uiTemp,right,uiTemp,Mode);
258 2 }
259 1 // }
260 1 }
261 void LCD_Back_Rect(unsigned int x,unsigned char y,unsigned int e_x,unsigned char e_y,bit mode);
262 void LCD_Rect(unsigned int x,unsigned char y,unsigned int e_x,unsigned char e_y,bit Mode)
263 {
264 1 unsigned int uix_1,uix_2;
265 1 unsigned int uiTemp;
266 1 if(x>e_x)
267 1 {
268 2 uiTemp = x;
269 2 x = e_x;
270 2 e_x = uiTemp;
271 2 }
272 1 if(y>e_y)
273 1 {
274 2 uiTemp = y;
275 2 y = e_y;
276 2 e_y = uiTemp;
277 2 }
278 1 /* if(Mode==0)
279 1 {
280 1 LCD_Rectangle(x,y,e_x,e_y,0);
281 1 return;
282 1 } */
283 1 if(x&0x07)
284 1 {
285 2 uix_1 = x|0x07;
286 2 LCD_Rectangle(x,y,uix_1,e_y,Mode);
287 2 x = uix_1+0x08;
288 2 }
289 1 if(e_x&0x07)
290 1 {
291 2 uix_2 = e_x&0xFFF8;
292 2 LCD_Rectangle(uix_2,y,e_x,e_y,Mode);
293 2 // e_x = uix_2-1;
294 2 }
295 1 LCD_Back_Rect(x,y,e_x,e_y,Mode);
296 1
297 1 }
298 //===================================================//
299 //程序:void LCD_PutPixel(unsigned int Index_x,unsigned char Index_y)
300 //描述:CM320X240LCD画点子程序
301 //参数:Index_x X轴坐标(0~319) Index_y y轴坐标(0~239)
302 //返回:
303 //Note: Edit by Mz xinqiang zhang
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 6
304 //Date: 2006 07 29 beijing
305 //===================================================//
306 void LCD_Bitmap(unsigned int x,unsigned char y,unsigned char * bmp)
307 {
308 1 unsigned int Addr,index_y=0,index_x=0;
309 1 unsigned char ui_x=x>>3,s_x=x&0x07,sl_x=8-s_x;
310 1 unsigned char w_x,w_y,ucTemp1,ucTemp2;
311 1 w_x = (*bmp++)>>3;
312 1 w_y = *bmp++;
313 1 Addr = y*0x32+(x>>3)+(unsigned int)(LCD_show_Addr<<8);
314 1 while(index_y<w_y)
315 1 {
316 2 if(y>239) break;
317 2 LCD_COM_W(0x46);
318 2 LCD_Data_W((unsigned char)Addr);
319 2 LCD_Data_W((unsigned char)(Addr>>8));
320 2 LCD_COM_W(0x43);
321 2 for(index_x=0;index_x<=w_x;index_x++)
322 2 {
323 3 LCD_show_buf[index_x] = LCD_Data_R();
324 3 }
325 2 LCD_COM_W(0x46);
326 2 LCD_Data_W((unsigned char)Addr);
327 2 LCD_Data_W((unsigned char)(Addr>>8));
328 2 LCD_COM_W(0x42);
329 2 ucTemp1 = 0;
330 2 ui_x = x>>3;
331 2 for(index_x=0;index_x<w_x;index_x++)
332 2 {
333 3 ucTemp2 = *bmp;
334 3 ucTemp2 = ucTemp2>>s_x;
335 3 ucTemp2 = ucTemp2|ucTemp1;
336 3 ucTemp2 = ucTemp2|LCD_show_buf[index_x];
337 3 LCD_COM_W(0x42);
338 3 LCD_Data_W(ucTemp2);
339 3 ucTemp1 = *bmp++;
340 3 ucTemp1 = ucTemp1<<sl_x;
341 3 if(ui_x>0x27)
342 3 {
343 4 bmp = bmp+w_x-index_x-1;
344 4 index_x++;
345 4 break;
346 4 }
347 3 ui_x++;
348 3 }
349 2 ucTemp1 = ucTemp1|LCD_show_buf[index_x];
350 2 LCD_Data_W(ucTemp1);
351 2 Addr = Addr+0x32;
352 2 index_y++;
353 2 }
354 1 }
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 7
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
LCD_Initial. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
LCD_show_buf . . . . . . . . . . . . . PUBLIC DATA ARRAY 0000H 32
_LCD_Line. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
y. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0002H 2
e_x. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0004H 2
e_y. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0006H 2
mode . . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
Offset_x . . . . . . . . . . . . . . AUTO DATA INT 0008H 2
Offset_y . . . . . . . . . . . . . . AUTO DATA INT 000AH 2
Offset_k . . . . . . . . . . . . . . AUTO DATA INT 000CH 2
Err_d. . . . . . . . . . . . . . . . AUTO DATA INT 000EH 2
LCD_Clear. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
is_Clear . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
show_Data. . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
j. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
Addr_H . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0003H 1
_LCD_Rect. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
y. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
e_x. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0003H 2
e_y. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0005H 1
Mode . . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
uix_1. . . . . . . . . . . . . . . . AUTO DATA U_INT 0006H 2
uix_2. . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
uiTemp . . . . . . . . . . . . . . . AUTO DATA U_INT 0008H 2
_LCD_COM_W . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
LCD_ONOFF. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
is_ON. . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
layer. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
_LCD_Rectangle . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
left . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
top. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0004H 2
right. . . . . . . . . . . . . . . . AUTO DATA U_INT 0004H 2
bottom . . . . . . . . . . . . . . . AUTO DATA U_INT 0006H 2
Mode . . . . . . . . . . . . . . . . AUTO DATA U_INT 0008H 2
uiTemp . . . . . . . . . . . . . . . AUTO DATA U_INT 000AH 2
_LCD_Back_dot. . . . . . . . . . . . . EXTERN CODE PROC ----- -----
LCD_Reset. . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
_LCD_Data_W. . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
_LCD_PutPixel. . . . . . . . . . . . . PUBLIC CODE PROC 0008H -----
Index_x. . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
Index_y. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
mode . . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
Addr_Byte. . . . . . . . . . . . . . AUTO DATA U_INT 0002H 2
LCD_show_Addr. . . . . . . . . . . . . PUBLIC DATA U_CHAR 0020H 1
_LCD_Setlayer. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
layer. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
LCD_Data_R . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
_LCD_Bitmap. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
y. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
bmp. . . . . . . . . . . . . . . . . AUTO DATA PTR 0003H 3
Addr . . . . . . . . . . . . . . . . AUTO DATA U_INT 0006H 2
index_y. . . . . . . . . . . . . . . AUTO DATA U_INT 0008H 2
index_x. . . . . . . . . . . . . . . AUTO DATA U_INT 000AH 2
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 8
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
ui_x . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 000CH 1
s_x. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 000DH 1
sl_x . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 000EH 1
w_x. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 000FH 1
w_y. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0010H 1
ucTemp1. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0011H 1
ucTemp2. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0012H 1
_LCD_Back_Rect . . . . . . . . . . . . EXTERN CODE PROC ----- -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1416 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 66
IDATA SIZE = ---- ----
BIT SIZE = ---- 5
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -