📄 lcd.lst
字号:
C51 COMPILER V8.02 LCD 03/31/2008 17:24:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "hardware.h"
2 #include "beep.h"
3
4 uchar Lcdbit=0x0c;
5 uchar idata display_buffer[8]={0,0,0,0,0,0,0,0};
6
7 //液晶段码
8 #define a 0x08
9 #define b 0x04
10 #define c 0x02
11 #define d 0x01
12 #define e 0x20
13 #define f 0x80
14 #define g 0x40
15 #define h 0x10
16
17 unsigned code seg[]=
18 {
19 a+b+c+d+e+f,//0 0
20 b+c,//1 1
21 a+b+g+e+d,//2 2
22 a+b+g+c+d,//3 3
23 f+g+b+c,//4 4
24 a+f+g+c+d,//5 5
25 a+f+g+e+d+c,//6 6
26 a+b+c,//7 7
27 a+b+c+d+e+f+g,//8 8
28 a+b+c+d+g+f,//9 9
29 0,//a
30 0,//b
31 0,//c
32 0,//d
33 0,//e
34 0,//0x0f
35 0,//10
36 0,//11
37 0,//12
38 0,//13
39 0,//14
40 0,//15
41 0,//16
42 0,//17
43 0,//18
44 0,//19
45 0,//1a
46 0,//1b
47 0,//1c
48 0,//1d
49 0,//1e
50 0,//1f
51 0,//20 ' '空格
52 0,//21
53 0,//22
54 0,//23
55 0,//24
C51 COMPILER V8.02 LCD 03/31/2008 17:24:46 PAGE 2
56 0,//25
57 0,//26
58 0,//27 `
59 0,//28 (
60 0,//29 )
61 0,//2a *
62 0,//2b +
63 0,//2c ,
64 g,//2d -
65 h,//2e .
66 0,//2f /
67 a+b+c+d+e+f+h,//30 0.
68 b+c+h,//31 1.
69 a+b+g+e+d+h,//32 2.
70 a+b+g+c+d+h,//33 3.
71 f+g+b+c+h,//34 4.
72 a+f+g+c+d+h,//35 5.
73 a+f+g+e+d+c+h,//36 6.
74 a+b+c+h,//37 7.
75 a+b+c+d+e+f+g+h,//38 8.
76 a+b+c+d+g+f+h,//39 9.
77 0,//3a
78 0,//3b
79 0,//3c
80 0,//3d
81 0,//3e
82 0,//3f
83 0,//40
84 a+b+c+e+f+g,//41 A
85 0,//42 B
86 a+d+e+f,//43 C
87 0,//44 D
88 a+d+e+f+g,//45 E
89 a+e+f+g,//46 F
90 a+b+c+d+f+g,//47 G
91 b+c+e+f+g,//48 H
92 0,//49 I
93 0,//4a J
94 0,//4b K
95 d+e+f,//4c L
96 a+c+e,//4d M
97 0,//4e N
98 a+b+c+d+e+f,//4f O
99 a+b+e+f+g,//50 P
100 0,//51 Q
101 0,//52 R
102 a+c+d+f+g,//53 S
103 0,//54 T
104 b+c+d+e+f,//55 U
105 0,//56 V
106 0,//57 W
107 0,//58 X
108 0,//59 Y
109 a+b+g+e+d,//5a Z
110 0,//5b
111 0,//5c
112 0,//5d
113 0,//5e
114 0,//5f
115 0,//60
116 0,//61 a
117 c+d+e+f+g,//62 b
C51 COMPILER V8.02 LCD 03/31/2008 17:24:46 PAGE 3
118 0,//63 c
119 b+c+d+e+g,//64 d
120 0,//65 e
121 0,//66 f
122 0,//67 g
123 e+c+f+g,//68 h
124 c,//69 i
125 0,//6a j
126 0,//6b k
127 0,//6c l
128 0,//6d m
129 c+e+g,//6e n
130 c+d+e+g,//6f o
131 0,//70 p
132 0,//71 q
133 e+g,//72 r
134 0,//73 s
135 d+e+f+g,//74 t
136 c+d+e,//75 u
137 b+c+d+e,//76 v
138 0,//77 w
139 0,//78 x
140 0,//79 y
141 0,//7a z
142 d+e+f+g+h,//t.
143 0,//7c
144 0,//7d
145 0,//7e
146 0,//7f----十进制127
147 };
148
149 //定义液晶数码管地址
150 #define ADDR_SMG1 0x00
151 #define ADDR_SMG2 0x02
152 #define ADDR_SMG3 0x04
153 #define ADDR_SMG4 0x06
154 #define ADDR_SMG5 0x08
155 #define ADDR_SMG6 0x0a
156
157 //定义HT1621的命令
158 #define ComMode 0x29 //4COM,1/3bias 1000 010 1001 0
159 #define LCD_on 0x03 //打开LCD 偏压发生器1000 0000 0 11 0
160 #define LCD_off 0x02 //关闭LCD显示
161 #define Sys_en 0x01 //系统振荡器开 1000 0000 0010
162 #define RC 0x18 //片上晶振
163
164 #define Ctrl_cmd 0x80 //写控制命令
165 #define Data_cmd 0xa0 //写数据命令
166
167 void nop(void)//延时1us
168 {}
169
170 void delayus(uchar i) //延时i us
171 {while(i--);}
172
173 void delayms(uint m) //延时m ms
174 {
175 1 uint i,j;
176 1 for(i=0;i<m;i++)
177 1 for(j=0;j<65;j++)
178 1 delayus(1);
179 1 }
C51 COMPILER V8.02 LCD 03/31/2008 17:24:46 PAGE 4
180
181 //写命令
182 void LcdWriteCommand(char dat_)
183 {
184 1 unsigned char temp;
185 1 delayms(200); //ID=100
186 1 Lcs=0;
187 1 Ldata=1;
188 1 Lwr=0;
189 1 nop();
190 1 Lwr=1;
191 1 nop();
192 1 Ldata=0;
193 1 Lwr=0;
194 1 nop();
195 1 Lwr=1;
196 1 nop();
197 1 Ldata=0;
198 1 nop();
199 1 Lwr=0;
200 1 nop();
201 1 Lwr=1;
202 1 for (temp=0;temp<9;temp++)
203 1 {
204 2 dat_= dat_<< 1;
205 2 Ldata= CY;
206 2 Lwr=0;
207 2 nop();
208 2 Lwr=1;
209 2 nop();
210 2 }
211 1 Lcs=1;
212 1 }
213
214 //写数据
215 void LcdWriteData(unsigned char add_, unsigned char da_)
216 {
217 1 unsigned char temp,num;
218 1 Lcs=0;
219 1 Ldata=1; //ID=101
220 1 Lwr=0;
221 1 nop();
222 1 Lwr=1;
223 1 nop();
224 1 Ldata=0;
225 1 Lwr=0;
226 1 nop();
227 1 Lwr=1;
228 1 nop();
229 1 Ldata=1;
230 1 Lwr=0;
231 1 nop();
232 1 Lwr=1;
233 1 nop();
234 1 add_=add_<<2;//取8位的后6位
235 1 for (temp=0;temp<6;temp++)
236 1 {
237 2 add_=add_<<1;
238 2 Ldata=CY;
239 2 Lwr=0;
240 2 nop();
241 2 Lwr=1;
C51 COMPILER V8.02 LCD 03/31/2008 17:24:46 PAGE 5
242 2 nop();
243 2 }
244 1 for (num=0;num<8;num++)
245 1 {
246 2 da_ = da_<< 1;
247 2 Ldata= CY;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -