📄 lcd_dis.lst
字号:
207 // 版本:
208 // 2007/07/19 First version
209 // 2007/07/24 V1.2 for MCS51 Keil C
210 //========================================================================
211 void PutChar_cn(unsigned char x,unsigned char y,unsigned short * GB)
212 {
213 1 //显示ASCII字符
214 1 SPI_SSSet(0); //SS置低电平
215 1 SPI_Send(8); //传送指令0x08
216 1 SPI_Send(x); //要显示字符的左上角的X轴位置
217 1 SPI_Send(y); //要显示字符的左上角的Y轴位置
218 1
219 1 SPI_Send((*GB>>8)&0x00ff); //传送二级字库中汉字GB码的高八位值
220 1 SPI_Send(*GB&0x00ff); //传送二级字库中汉字GB码的低八位值
221 1 SPI_SSSet(1); //完成操作置SS高电平
222 1 }
223 //========================================================================
224 // 函数: void PutString_cn(unsigned char x,unsigned char y,unsigned short *p)
225 // 描述: 在x、y为起始坐标处写入一串汉字字符
226 // 参数: x X轴坐标 y Y轴坐标
227 // p 要显示的字符串
228 // 返回: 无
229 // 备注: 同PutChar_cn中的解释
230 // 版本:
231 // 2007/07/19 First version
232 // 2007/07/24 V1.2 for MCS51 Keil C
233 //========================================================================
234 void PutString_cn(unsigned char x,unsigned char y,unsigned short *p)
235 {
236 1 while((*p>>8)!=0)
237 1 {
238 2 PutChar_cn(x,y,p);
239 2 x += X_Witch_cn;
240 2 if((x + X_Witch_cn) > Dis_X_MAX)
241 2 {
C51 COMPILER V8.02 LCD_DIS 07/24/2007 00:38:41 PAGE 5
242 3 x = Dis_Zero;
243 3 if((Dis_Y_MAX - y) < Y_Witch_cn) break;
244 3 else y += Y_Witch_cn;
245 3 }
246 2 p++;
247 2 }
248 1 }
249 //========================================================================
250 // 函数: void SetPaintMode(unsigned char Mode,unsigned char Color)
251 // 描述: 绘图模式设置
252 // 参数: Mode 绘图模式 Color 像素点的颜色,相当于前景色
253 // 返回: 无
254 // 备注: Mode无效
255 // 版本:
256 // 2007/07/19 First version
257 //========================================================================
258 void SetPaintMode(unsigned char Mode,unsigned char Color)
259 {
260 1 unsigned char ucTemp=0;
261 1 ucTemp = (Mode<<4)|Color;
262 1 //设置绘图模式
263 1 SPI_SSSet(0); //SS置低电平
264 1 SPI_Send(0x83); //传送指令0x83
265 1 SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色
266 1 SPI_SSSet(1); //完成操作置SS高电平
267 1 }
268 //========================================================================
269 // 函数: void PutPixel(unsigned char x,unsigned char y)
270 // 描述: 在x、y点上绘制一个前景色的点
271 // 参数: x X轴坐标 y Y轴坐标
272 // 返回: 无
273 // 备注: 使用前景色
274 // 版本:
275 // 2007/07/19 First version
276 //========================================================================
277 void PutPixel(unsigned char x,unsigned char y)
278 {
279 1 //绘点操作
280 1 SPI_SSSet(0); //SS置低电平
281 1 SPI_Send(1); //送指令0x01
282 1 SPI_Send(x); //送第一个数据,即设置点的X轴位置
283 1 SPI_Send(y); //点的Y轴位置
284 1 SPI_SSSet(1); //完成操作置SS高电平
285 1 }
286 //========================================================================
287 // 函数: void Line(unsigned char s_x,unsigned char s_y,
288 // unsigned char e_x,unsigned char e_y)
289 // 描述: 在s_x、s_y为起始坐标,e_x、e_y为结束坐标绘制一条直线
290 // 参数: x X轴坐标 y Y轴坐标
291 // 返回: 无
292 // 备注: 使用前景色
293 // 版本:
294 // 2007/07/19 First version
295 //========================================================================
296 void Line(unsigned char s_x,unsigned char s_y,unsigned char e_x,unsigned char e_y)
297 {
298 1 //绘制直线
299 1 SPI_SSSet(0); //SS置低电平
300 1 SPI_Send(2); //送指令0x02
301 1 SPI_Send(s_x); //起点X轴坐标
302 1 SPI_Send(s_y); //起点Y轴坐标
303 1 SPI_Send(e_x); //终点X轴坐标
C51 COMPILER V8.02 LCD_DIS 07/24/2007 00:38:41 PAGE 6
304 1 SPI_Send(e_y); //终点Y轴坐标
305 1 SPI_SSSet(1); //完成操作置SS高电平
306 1 }
307 //========================================================================
308 // 函数: void Circle(unsigned char x,unsigned char y,
309 // unsigned char r,unsigned char mode)
310 // 描述: 以x,y为圆心R为半径画一个圆(mode = 0) or 圆面(mode = 1)
311 // 参数:
312 // 返回: 无
313 // 备注: 画圆函数执行较慢,如果MCU有看门狗,请作好清狗的操作
314 // 版本:
315 // 2007/07/19 First version
316 //========================================================================
317 void Circle(unsigned char x,unsigned char y,unsigned char r,unsigned char mode)
318 {
319 1 SPI_SSSet(0);
320 1 if(mode)
321 1 SPI_Send(6);
322 1 else
323 1 SPI_Send(5);
324 1 SPI_Send(x);
325 1 SPI_Send(y);
326 1 SPI_Send(r);
327 1 SPI_SSSet(1);
328 1 }
329 //========================================================================
330 // 函数: void Rectangle(unsigned char left, unsigned char top, unsigned char right,
331 // unsigned char bottom, unsigned char mode)
332 // 描述: 以x,y为圆心R为半径画一个圆(mode = 0) or 圆面(mode = 1)
333 // 参数: left - 矩形的左上角横坐标,范围0到126
334 // top - 矩形的左上角纵坐标,范围0到62
335 // right - 矩形的右下角横坐标,范围1到127
336 // bottom - 矩形的右下角纵坐标,范围1到63
337 // Mode - 绘制模式,可以是下列数值之一:
338 // 0: 矩形框(空心矩形)
339 // 1: 矩形面(实心矩形)
340 // 返回: 无
341 // 备注: 画圆函数执行较慢,如果MCU有看门狗,请作好清狗的操作
342 // 版本:
343 // 2007/07/19 First version
344 //========================================================================
345 void Rectangle(unsigned char left, unsigned char top, unsigned char right,
346 unsigned char bottom, unsigned char mode)
347 {
348 1 SPI_SSSet(0);
349 1 if(mode)
350 1 SPI_Send(4);
351 1 else
352 1 SPI_Send(3);
353 1 SPI_Send(left);
354 1 SPI_Send(top);
355 1 SPI_Send(right);
356 1 SPI_Send(bottom);
357 1 SPI_SSSet(1);
358 1 }
359 //========================================================================
360 // 函数: void ClrScreen(void)
361 // 描述: 清屏函数,执行全屏幕清除或填充前景色
362 // 参数:
363 // 返回: 无
364 // 备注:
365 // 版本:
C51 COMPILER V8.02 LCD_DIS 07/24/2007 00:38:41 PAGE 7
366 // 2007/07/19 First version
367 //========================================================================
368 void ClrScreen(void)
369 {
370 1 //清屏操作
371 1 SPI_SSSet(0); //SS置低电平
372 1 SPI_Send(0x80); //送指令0x80
373 1 SPI_Send(0); //指令数据
374 1 SPI_SSSet(1); //完成操作置SS高电平
375 1 }
376 //========================================================================
377 // 函数: void fill_s(unsigned char x,unsigned char y,
378 // unsigned char * String,unsigned char Number)
379 // 描述: 在Y轴y位置上对应的page页的x位置开始填充Number个byte的数据,用于用户
380 // 自取的图像/文字字模在LCD当中显示
381 // 参数: x 填充起点的X轴位置
382 // y 填充起点于哪一页, 该数据低三位无效,如y=10时,表示要填充的是page1,
383 // y=6时表示page0,注意,这里是指页而不是指哪一行~
384 // page = y>>3
385 // *String 要填充的数据序列
386 // Number 要填充的数据个数
387 // 返回: 无
388 // 备注:
389 // 版本:
390 // 2007/07/23 First version
391 //========================================================================
392 void fill_s(unsigned char x,unsigned char y,unsigned char * String,unsigned char Number)
393 {
394 1 //清屏操作
395 1 SPI_SSSet(0); //SS置低电平
396 1 SPI_Send(0x09); //送指令0x09
397 1 SPI_Send(x); //指令数据
398 1 SPI_Send(y); //指令数据
399 1 TimeDelay(1); //稍稍延一点时间
400 1 while(Number!=0)
401 1 {
402 2 SPI_Send(*(String++)); //指令数据
403 2 Number--;
404 2 }
405 1 SPI_SSSet(1); //完成操作置SS高电平
406 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 692 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 31
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -