st7920serial.lst
来自「这是TOPWAY公司的LCD驱动程序」· LST 代码 · 共 1,211 行 · 第 1/5 页
LST
1,211 行
229 1 }
230
231 /******************************************************************************************
232 * 函数名称 :Send_byte
233 * 功能描述 :发送一个字节
234 * 参数 : 参数名称: 输入/输出? 类型 描述
235 *
236 * 返回值 :
237 * 作者 :
238 * 创建日期 :2006-12-19
239 * 全局变量 :
240 * 全局静态变量:
241 * 局部静态变量:
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 5
242 *----------------------------------------修改历史------------------------------------------
243 * 当前版本 : 修改人: 修改日期:
244 * 修改说明 :
245 ******************************************************************************************/
246 void Send_byte(unsigned char bbyte)
247 {
248 1 unsigned char i;
249 1 for(i=0;i<8;i++)
250 1 {
251 2 SID=bbyte&0x80; //取出最高位
252 2 SCLK=1;
253 2 SCLK=0;
254 2 bbyte<<=1; //左移
255 2 }
256 1 }
257
258 /******************************************************************************************
259 * 函数名称 :Delaynms
260 * 功能描述 :延时
261 * 参数 : 参数名称: 输入/输出? 类型 描述
262 *
263 * 返回值 :
264 * 作者 :
265 * 创建日期 :2006-12-19
266 * 全局变量 :
267 * 全局静态变量:
268 * 局部静态变量:
269 *----------------------------------------修改历史------------------------------------------
270 * 当前版本 : 修改人: 修改日期:
271 * 修改说明 :
272 ******************************************************************************************/
273 void Delaynms(unsigned int di)
274 {
275 1 unsigned int da,db;
276 1 for(da=0;da<di;da++)
277 1 for(db=0;db<10;db++);
278 1 }
279
280 /******************************************************************************************
281 * 函数名称 :Disp_img
282 * 功能描述 :图形方式12864显示字模221 横向取膜
283 * 参数 : 参数名称: 输入/输出? 类型 描述
284 *
285 * 返回值 :
286 * 作者 :
287 * 创建日期 :2006-12-19
288 * 全局变量 :
289 * 全局静态变量:
290 * 局部静态变量:
291 *----------------------------------------修改历史------------------------------------------
292 * 当前版本 : 修改人: 修改日期:
293 * 修改说明 :
294 ******************************************************************************************/
295 void Disp_img(unsigned char *img)
296 {
297 1 unsigned char i,j;
298 1 unsigned int k = 0;
299 1
300 1 Write_char(0,0x36); //图形方式
301 1 for(i=0;i<32;i++)
302 1 {
303 2 Write_char(0,0x80+i);
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 6
304 2 Write_char(0,0x80);
305 2 for(j=0;j<16;j++)
306 2 {
307 3 Write_char(1,img[k++]);
308 3 }
309 2 }
310 1
311 1 for(i=0;i<32;i++)
312 1 {
313 2 Write_char(0,0x80+i);
314 2 Write_char(0,0x88);
315 2 for(j=0;j<16;j++)
316 2 {
317 3 Write_char(1,img[k++]);
318 3 }
319 2 }
320 1 }
321
322 /******************************************************************************************
323 * 函数名称 :Clr_Scr
324 * 功能描述 :清屏函数
325 * 参数 : 参数名称: 输入/输出? 类型 描述
326 *
327 * 返回值 :
328 * 作者 :
329 * 创建日期 :2006-12-19
330 * 全局变量 :
331 * 全局静态变量:
332 * 局部静态变量:
333 *----------------------------------------修改历史------------------------------------------
334 * 当前版本 : 修改人: 修改日期:
335 * 修改说明 :
336 ******************************************************************************************/
337 void Clr_Scr(void)//清屏函数
338 {
339 1 Write_char(0,0x01);
340 1 }
341
342 /******************************************************************************************
343 * 函数名称 : LCD_set_xy
344 * 功能描述 :设置LCD显示的起始位置,X为行,Y为列
345 * 参数 : 参数名称: 输入/输出? 类型 描述
346 *
347 * 返回值 :
348 * 作者 :
349 * 创建日期 :2006-12-19
350 * 全局变量 :
351 * 全局静态变量:
352 * 局部静态变量:
353 *----------------------------------------修改历史------------------------------------------
354 * 当前版本 : 修改人: 修改日期:
355 * 修改说明 :
356 ******************************************************************************************/
357 void LCD_set_xy( unsigned char x, unsigned char y )
358 {
359 1 unsigned char address;
360 1 switch(x)
361 1 {
362 2 case 0:
363 2 address = 0x80 + y;
364 2 break;
365 2 case 1:
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 7
366 2 address = 0x80 + y;
367 2 break;
368 2 case 2:
369 2 address = 0x90 + y;
370 2 break;
371 2 case 3:
372 2 address = 0x88 + y;
373 2 break;
374 2 case 4:
375 2 address = 0x98 + y;
376 2 break;
377 2 default:
378 2 address = 0x80 + y;
379 2 break;
380 2 }
381 1 Write_char(0, address);
382 1 }
383
384 /******************************************************************************************
385 * 函数名称 :LCD_Write_string
386 * 功能描述 :中英文字符串显示函数
387 * 参数 : 参数名称: 输入/输出? 类型 描述
388 *
389 * 返回值 :
390 * 作者 :
391 * 创建日期 :2006-12-19
392 * 全局变量 :
393 * 全局静态变量:
394 * 局部静态变量:
395 *----------------------------------------修改历史------------------------------------------
396 * 当前版本 : 修改人: 修改日期:
397 * 修改说明 :
398 ******************************************************************************************/
399 void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
400 {
401 1 LCD_set_xy( X, Y );
402 1
403 1 while (*s)
404 1 {
405 2 Write_char( 1, *s );
406 2 s ++;
407 2 Delaynms(1);
408 2 }
409 1 }
410
411 /******************************************************************************************
412 * 函数名称 :LCD_Write_number
413 * 功能描述 :数字显示函数
414 * 参数 : 参数名称: 输入/输出? 类型 描述
415 *
416 * 返回值 :
417 * 作者 :
418 * 创建日期 :2006-12-19
419 * 全局变量 :
420 * 全局静态变量:
421 * 局部静态变量:
422 *----------------------------------------修改历史------------------------------------------
423 * 当前版本 : 修改人: 修改日期:
424 * 修改说明 :
425 ******************************************************************************************/
426 void LCD_Write_number(unsigned char s)// 数字显示函数
427 {
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 8
428 1 Write_char(1,num[s]);
429 1 Delaynms(1);
430 1 }
431
432 /******************************************************************************************
433 * 函数名称 :LCD_Write_week
434 * 功能描述 :显示星期几函数
435 * 参数 : 参数名称: 输入/输出? 类型 描述
436 *
437 * 返回值 :
438 * 作者 :
439 * 创建日期 :2006-12-19
440 * 全局变量 :
441 * 全局静态变量:
442 * 局部静态变量:
443 *----------------------------------------修改历史------------------------------------------
444 * 当前版本 : 修改人: 修改日期:
445 * 修改说明 :
446 ******************************************************************************************/
447 void LCD_Write_week(unsigned char s)
448 {
449 1 switch(s)
450 1 {
451 2 case 1:
452 2 LCD_Write_string(3,2,yi);
453 2 break;
454 2 case 2:
455 2 LCD_Write_string(3,2,er);
456 2 break;
457 2 case 3:
458 2 LCD_Write_string(3,2,san);
459 2 break;
460 2 case 4:
461 2 LCD_Write_string(3,2,si);
462 2 break;
463 2 case 5:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?