📄 lcm1602.lst
字号:
C51 COMPILER V8.02 LCM1602 05/12/2008 23:46:50 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCM1602
OBJECT MODULE PLACED IN LCM1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCM1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h>
3
4 sbit RSPIN = P1^0; //数据/命令选择端
5 sbit RWPIN = P1^1; //读写控制信号
6 sbit EPIN = P1^2; //使能信号
7
8 unsigned char XPOS,YPOS;
9
10 void delay1(unsigned int t) //延时
11 { unsigned int i,j;
12 1 for(i=0;i<t;i++)
13 1 for(j=0;j<10;j++)
14 1 ;
15 1 }
16
17 void lcdwaitidle(void) //读写检测.对控制器每次进行读写操作之前,都必须进行,
18 { P0=0xff;
19 1 RSPIN=0;
20 1 RWPIN=1;
21 1 EPIN=1;
22 1 while((P0&0x80)==0x80); //确保STA7 为0
23 1 EPIN=0;
24 1 }
25
26 void lcdwcn(unsigned char c) //不判忙直接写指令
27 { RSPIN=0;
28 1 RWPIN=0;
29 1 P0=c;
30 1 EPIN=1;
31 1 _nop_();
32 1 EPIN=0;
33 1 }
34
35 void lcdwc(unsigned char c) //判忙后写指令
36 { lcdwaitidle();
37 1 lcdwcn(c);
38 1 }
39
40 void lcdwd(unsigned char d) //写数据
41 { lcdwaitidle();
42 1 RSPIN=1;
43 1 RWPIN=0;
44 1 P0=d;
45 1 EPIN=1;
46 1 _nop_();
47 1 EPIN=0;
48 1 }
49
50 void lcdpos(void) //确定当前光标位置
51 { XPOS&=0x0f;
52 1 YPOS&=0x03;
53 1 if(YPOS==0x00)
54 1 lcdwc(XPOS|0x80);
55 1 else if(YPOS==0x01)
C51 COMPILER V8.02 LCM1602 05/12/2008 23:46:50 PAGE 2
56 1 lcdwc((XPOS+0x40)|0x80);
57 1 }
58
59 void lcdreset() //LCM初始化
60 { EPIN=0;
61 1 delay1(150); lcdwcn(0x38); //写指令38H
62 1 delay1(50); lcdwcn(0x38); //写指令38H
63 1 delay1(50); lcdwcn(0x38); //写指令38H
64 1 lcdwc(0x38); //显示模式设置,设置16X2 显示,5X7 点阵,8 位数据接口
65 1 lcdwc(0x08); //显示关闭
66 1 lcdwc(0x01); //显示清屏
67 1 lcdwc(0x06); //显示光标移动设置
68 1 lcdwc(0x0c); //显示开及光标设置
69 1 }
70
71 void lcdfill(unsigned char n) //向1602写一满屏字符
72 {
73 1 for(YPOS=0;YPOS<2;YPOS++)
74 1 for(XPOS=0;XPOS<16;XPOS++)
75 1 { lcdpos();
76 2 lcdwd(n); }
77 1 }
78
79 void lcdchar(unsigned char x,unsigned char y,unsigned char ch) //在1602指定位置写一个字符
80 {
81 1 XPOS=x; YPOS=y;
82 1 lcdpos();
83 1 lcdwd(ch);
84 1 }
85
86 void lcdwda(unsigned char x,unsigned char y,unsigned char *s) //在1602指定位置写一行字符串
87 { YPOS=y;
88 1 for(XPOS=x;XPOS<16;XPOS++)
89 1 { lcdpos();
90 2 if (*s=='\0') return;
91 2 lcdwd(*s);
92 2 s++;
93 2 //delay1(5000);//(400);
94 2 }
95 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 243 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -