📄 lcdcon.lst
字号:
-x04,0x40,0x02,0x40,0x01,0x80,0x06,0x60,0x18,0x1C,0x60,0x08,
145 "车",0x02,0x00,0x02,0x00,0x7F,0xFC,0x04,0x00,0x04,0x80,0x08,0x80,0x10,0x80,0x3F,0xFC,0x00,0x80,0x00,0x80,0
-xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
146 "状",0x10,0xA0,0x10,0x90,0x10,0x98,0x90,0x88,0x50,0x80,0x5F,0xFE,0x10,0xA0,0x10,0xA0,0x31,0x20,0x51,0x20,0
-x91,0x10,0x12,0x10,0x12,0x08,0x14,0x0E,0x18,0x04,0x10,0x00,
147 "态",0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x02,0x80,0x02,0x40,0x05,0x20,0x08,0x98,0x30,0x06,0x01,0x00,0
-x04,0x88,0x24,0x84,0x24,0x12,0x64,0x12,0x43,0xF0,0x00,0x00,
148 "待",0x10,0x40,0x18,0x40,0x13,0xFC,0x28,0x40,0x4C,0x40,0x88,0x40,0x17,0xFE,0x10,0x10,0x30,0x10,0x57,0xFE,0
-x10,0x10,0x11,0x10,0x11,0x10,0x10,0x10,0x10,0x50,0x10,0x20,
C51 COMPILER V8.01 LCDCON 10/03/2008 08:28:26 PAGE 4
149 "命",0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x18,0x2F,0xEE,0xC0,0x04,0x3E,0xF8,0x22,0x88,0x22,0x88,0
-x22,0x88,0x3E,0x88,0x22,0xB8,0x20,0x90,0x00,0x80,0x00,0x80,
150 "确",0x00,0x80,0x00,0xFC,0x7C,0x88,0x11,0x10,0x13,0xFC,0x21,0x24,0x3D,0x24,0x65,0xFC,0xA5,0x24,0x25,0x24,0
-x25,0xFC,0x3D,0x24,0x22,0x24,0x22,0x24,0x04,0x14,0x08,0x08,
151 "定",0x02,0x00,0x01,0x00,0x3F,0xFE,0x20,0x04,0x40,0x08,0x1F,0xF0,0x01,0x00,0x11,0x00,0x11,0x00,0x11,0xF0,0
-x11,0x00,0x29,0x00,0x25,0x00,0x43,0x00,0x81,0xFC,0x00,0x00,
152 "返",0x00,0x08,0x43,0xFC,0x22,0x00,0x32,0x00,0x23,0xF8,0x02,0x08,0xE3,0x08,0x22,0x90,0x22,0x50,0x24,0x20,0
-x24,0x50,0x28,0x88,0x23,0x04,0x50,0x00,0x8F,0xFC,0x00,0x00,
153 "回",0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x4F,0xE4,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0
-x4F,0xE4,0x40,0x04,0x40,0x04,0x40,0x04,0x7F,0xFC,0x00,0x00,
154 };
155
156 uchar gCurRow;
157 uchar gCurCol; // 图形当前行、列存储,行高16点,列宽8点
158 uchar tCurRow;
159 uchar tCurCol; // 文本当前行、列存储,行高8点 ,列宽8点
160 uchar ShowModeSW; // 当前显示模式
161 uint txthome;
162 uint grhome;
163
164 uchar InitLcd(); //液晶显示器初始化
165 uchar TestSta(uchar sta); //状态位检测
166 uchar WriteDoubParm(uchar cmd, uchar parm1, uchar parm2); //写双参数指令
167 uchar WriteSigParm(uchar cmd, uchar parm); //写单参数指令
168 uchar WriteCom(uchar cmd); //写无参数指令
169 uchar WriteData(uchar Data); //写数据
170 //uchar ReadData();//读数据
171 void SetPos(uchar row, uchar col);//设置当前地址
172 //void at(unsigned char x,unsigned char y);//设置文本X,Y 值
173 void cls(); //清屏
174 uchar dprintf(uchar x,uchar y,char *string,uchar mod);//ASCII(8*16)与汉字(16*16)显示
175 //void SetShowMode(uchar ShowMod);//设置显示模式
176 //void Line(uchar x1,uchar y1,uchar x2,uchar y2,bit mod);//画线函数
177 //void Pixel(uchar PointX,uchar PointY,bit mod);//画点函数
178
179 uchar TestSta(uchar sta)
180 {
181 1 uchar i;
182 1 uchar RightSta;
183 1
184 1 if(sta==1)
185 1 RightSta=0x03;
186 1 else if(sta==2)
187 1 RightSta=0x04;
188 1 else if(sta==3)
189 1 RightSta=0x08;
190 1 else if(sta==6)
191 1 RightSta=0x40;
192 1 else
193 1 RightSta=0;
194 1
195 1 for(i=10;i>0;i--)
196 1 {
197 2 if((LCDCOMADR & RightSta) == RightSta)
198 2 break;
199 2 }
200 1 return i; //若返回0值,LCD不在正常状态
201 1 }
202
203 uchar WriteDoubParm(uchar cmd, uchar parm1, uchar parm2) //写双参数指令
204 {
205 1 if(TestSta(1)==0)
C51 COMPILER V8.01 LCDCON 10/03/2008 08:28:26 PAGE 5
206 1 return 1;
207 1 LCDDATADR=parm1;
208 1 if(TestSta(1)==0)
209 1 return 2;
210 1 LCDDATADR=parm2;
211 1 if(TestSta(1)==0)
212 1 return 3;
213 1 LCDCOMADR=cmd;
214 1
215 1 return 0;
216 1 }
217
218 uchar WriteSigParm(uchar cmd, uchar parm) //写单参数指令
219 {
220 1 if(TestSta(1)==0)
221 1 return 1;
222 1 LCDDATADR=parm;
223 1 if(TestSta(1)==0)
224 1 return 2;
225 1 LCDCOMADR=cmd;
226 1
227 1 return 0;
228 1 }
229
230 uchar WriteCom(uchar cmd) //写无参数指令
231 {
232 1 if(TestSta(1)==0)
233 1 return 1;
234 1 LCDCOMADR=cmd;
235 1
236 1 return 0;
237 1 }
238
239 uchar WriteData(uchar Data) //写数据
240 {
241 1 if(TestSta(3)==0)
242 1 return 1;
243 1 LCDDATADR = Data;
244 1
245 1 return 0;
246 1 }
247 /*
248 uchar ReadData() //读数据
249 {
250 if(TestSta(1)==0)
251 return 1;
252 return LCDDATADR;
253 }
254 */
255 void SetPos(uchar row, uchar col)//设置当前地址
256 {
257 1 uint iPos;
258 1
259 1 iPos = row * 20 + col;
260 1 WriteDoubParm(LC_ADD_POS,iPos & 0xFF,iPos / 256);
261 1 gCurRow = row;
262 1 gCurCol = col;
263 1 }
264
265 /*
266 void at(unsigned char x,unsigned char y)//设定文本x,y 值
267 {
C51 COMPILER V8.01 LCDCON 10/03/2008 08:28:26 PAGE 6
268 uint iPos; //地址
269
270 iPos = x + y* 20;
271 WriteDoubParm(LC_ADD_POS,iPos&0xff,iPos/256);
272 tCurRow = x;
273 tCurCol = y;
274 }
275 */
276 // 清屏
277 void cls(void)
278 {
279 1 uint i;
280 1
281 1 WriteDoubParm(LC_ADD_POS,0x00,0x00); // 置地址指针
282 1 WriteCom(LC_AUT_WR); // 自动写
283 1 for(i=0;i<0x0F00;i++)
284 1 {
285 2 TestSta(3);
286 2 WriteData(0x00); // 写数据
287 2 }
288 1 WriteCom(LC_AUT_OVR); // 自动写结束
289 1 WriteDoubParm(LC_ADD_POS,0x00,0x00); // 重置地址指针
290 1 gCurRow = 0; // 置地址指针存储变量
291 1 gCurCol = 0;
292 1 }
293
294 uchar InitLcd()
295 {
296 1 P1_0=0;
297 1 P1_0=1;
298 1 WriteDoubParm(LC_TXT_STP,0x00,0x00); //文本显示区首地址
299 1 WriteDoubParm(LC_TXT_WID,0x14,0x00); //文本显示区宽度
300 1 WriteDoubParm(LC_GRH_STP,0x00,0x00); //图形显示区首地址
301 1 WriteDoubParm(LC_GRH_WID,0x14,0x00); //图形显示区宽度
302 1 WriteSigParm(LC_CGR_POS,CGRAMSTART >> 11); //设置便宜寄存器
303 1 WriteCom(LC_CUR_SHP | 0x07); //光标形状
304 1 WriteCom(LC_MOD_OR); //显示模式
305 1 WriteCom(LC_DIS_SW |0x08); //显示开关
306 1 grhome = GRSTART;
307 1 txthome = TXTSTART;
308 1
309 1 return 0;
310 1 }
311
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -