📄 lcd.lst
字号:
C51 COMPILER V6.02 LCD 12/14/2007 08:26:14 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN G:\C51\LCD.OBJ
COMPILER INVOKED BY: C:\comp51\C51.EXE G:\C51\LCD.C DB SB OE OT(0)
stmt level source
1 #include<lcd.h>
2 unsigned char col,row; //当前行号与列号
3 char code syn_57[ ]={
4 0x3E,0x51,0x49,0x45,0x3E, // 0 代码分别为 0
5 0x42,0x43,0x7F,0x40,0x40, // 1 代码分别为 1
6 0x46,0x61,0x51,0x49,0x46, // 2 代码分别为 2
7 0x22,0x49,0x49,0x49,0x36, // 3 代码分别为 3
8 0x18,0x14,0x52,0x7F,0x50, // 4 代码分别为 4
9 0x2F,0x49,0x49,0x49,0x30, // 5 代码分别为 5
10 0x3E,0x49,0x49,0x49,0x30, // 6 代码分别为 6
11 0x01,0x61,0x11,0x0D,0x03, // 7 代码分别为 7
12 0x36,0x49,0x49,0x49,0x36, // 8 代码分别为 8
13 0x06,0x49,0x49,0x29,0x16, // 9 代码分别为 9
14 0x00,0x60,0x60,0x00,0x00, // . 代码分别为 10
15 0x08,0x08,0x7E,0x08,0x08, // + 代码分别为 11
16 0x08,0x08,0x08,0x08,0x08, // - 代码分别为 12
17 0x44,0x28,0x10,0x28,0x44, // * 代码分别为 13
18 0x40,0x20,0x10,0x08,0x04 // / 代码分别为 14
19
20 };
21 //校验芯片是否就绪
22 void wait(void)
23 {
24 1 char xdata *ptr;
25 1 ptr=CS+5;
26 1 while(*ptr&0x80);
27 1 ptr=CS+6;
28 1 while(*ptr&0x80);
29 1 }
30
31 // 显示器开/关函数
32 void disp_on(void)
33 {
34 1 char xdata *ptr;
35 1 ptr=CS+1;
36 1 wait();
37 1 *ptr=0x3f;
38 1 wait();
39 1 *ptr=0xc0; //display start line
40 1 ptr=CS+2;
41 1 wait();
42 1 *ptr=0x3f;
43 1 wait();
44 1 *ptr=0xc0;
45 1 }
46
47
48
49 //清屏
50 void clr_screen(void)
51 {
52 1 char xdata *ptr;
53 1 char cl,cs;
54 1 row=0;
55 1 col=0;
C51 COMPILER V6.02 LCD 12/14/2007 08:26:14 PAGE 2
56 1
57 1 for(row=0;row<8;row++)
58 1 {
59 2 for(col=0;col<128;col++)
60 2 {
61 3 if(col<64){
62 4 cs=1;
63 4 cl=col;
64 4 }
65 3 else{
66 4 cs=2;
67 4 cl=col-64;
68 4 }
69 3
70 3 ptr=CS+cs;
71 3 wait();
72 3 *ptr=0xb8+row;
73 3 wait();
74 3 *ptr=0x40+cl;
75 3
76 3 ptr=CS+8+cs;
77 3 wait();
78 3 *ptr=0x00;
79 3
80 3 }
81 2 }
82 1
83 1 }
84
85 void put_data(char dat)
86
87 {
88 1 char xdata *ptr;
89 1 char cs,cl;
90 1 row=row%8;
91 1 col=col%128;
92 1 if(col<64){
93 2 cs=1;
94 2 cl=col;
95 2 }
96 1 else{
97 2 cs=2;
98 2 cl=col-64;
99 2 }
100 1 ptr=CS+cs;
101 1 *ptr=0xb8+row;
102 1 wait();
103 1 *ptr=0x40+cl;
104 1 ptr=CS+8+cs;
105 1 wait();
106 1 *ptr=dat;
107 1 col++;
108 1 row=(row+col/128)%8;
109 1 col=col%128;
110 1 }
111
112 //光标定位
113 void locate (char r,char c)
114 {
115 1 col=c;
116 1 row=r;
117 1 }
C51 COMPILER V6.02 LCD 12/14/2007 08:26:14 PAGE 3
118
119 //显示单个数据
120 void style_57(char c) //调用字库 c为欲显示字符的代码
121 {
122 1 int i;
123 1
124 1 for (i=0; i<5; i++)
125 1 put_data(syn_57[5*c+i]); //写入字符
126 1 put_data(0x00); //写入间隔列
127 1 }
128
129 void put_int(int n,char w) //显示一个整数
130 {
131 1 int i,m=1;
132 1 for (i=0;i<w-1;i++)
133 1 m=m*10;
134 1 for (i=0;i<w;i++)
135 1 {
136 2 style_57(n/m);
137 2 n=n%m;
138 2 m=m/10;
139 2 }
140 1 }
141
142 void put_float(float f,char w1,char w2) //显示浮点数
143 { int i,k,m=1;
144 1 k=(int)f;
145 1 put_int(k,w1);
146 1 style_57(10);
147 1 for (i=0;i<w2;i++)
148 1 m=m*10;
149 1 k=(f-k)*m;
150 1 put_int(k,w2);
151 1 }
C51 COMPILER V6.02 LCD 12/14/2007 08:26:14 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
clr_screen . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ptr. . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 2
cl . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0002H 1
cs . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0003H 1
syn_57 . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 75
_put_float . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
f. . . . . . . . . . . . . . . . . . AUTO DATA FLOAT 0000H 4
w1 . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0004H 1
w2 . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0005H 1
i. . . . . . . . . . . . . . . . . . AUTO DATA INT 0006H 2
k. . . . . . . . . . . . . . . . . . AUTO DATA INT 0008H 2
m. . . . . . . . . . . . . . . . . . AUTO DATA INT 000AH 2
wait . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ptr. . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 2
_put_data. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
dat. . . . . . . . . . . . . . . . . AUTO DATA CHAR 0000H 1
ptr. . . . . . . . . . . . . . . . . AUTO DATA PTR 0001H 2
cs . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0003H 1
cl . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0004H 1
col. . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1
row. . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0001H 1
_locate. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
r. . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0000H 1
c. . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0001H 1
_style_57. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
c. . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0000H 1
i. . . . . . . . . . . . . . . . . . AUTO DATA INT 0001H 2
_put_int . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
n. . . . . . . . . . . . . . . . . . AUTO DATA INT 0000H 2
w. . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0002H 1
i. . . . . . . . . . . . . . . . . . AUTO DATA INT 0003H 2
m. . . . . . . . . . . . . . . . . . AUTO DATA INT 0005H 2
disp_on. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ptr. . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 2
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 822 ----
CONSTANT SIZE = 75 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 39 ----
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 + -