📄 lcd.lst
字号:
199 /* 字符库为hzk02[]*/
200 void lcd_disp1616(uint x,uint y,uchar n) //在某一位置处显示显示一个16*16汉字 n表该字符在数组中的序号
201 { //显示汉字 上下行间间隔16,左右间间隔2
202 1 uchar i; uint j;
203 1 for(i=0;i<16;i++)
204 1 {
205 2 lcd_set_graph(x,y+i);
206 2 j=n*32+i*2;
207 2 lcd_disp8(hzk02[j]);
208 2 lcd_disp8(hzk02[j+1]);
209 2 }
210 1 }
211
212 void lcd_disp3232(uint x,uint y,uchar n) //左右间间隔32/8=4,上下间间隔32.
213 {
214 1 uchar i;uint j;
215 1 for(i=0;i<32;i++)
216 1 {
217 2 lcd_set_graph(x,y+i);
218 2 j=n*128+i*4;
219 2 lcd_disp8(hzk03[j]);
220 2 lcd_disp8(hzk03[j+1]);
221 2 lcd_disp8(hzk03[j+2]);
222 2 lcd_disp8(hzk03[j+3]);
223 2 }
224 1 }
225
226
227 /* 显示16x24图形点阵的子程序*/
228 /* 字符库为hzk00[]*/
229
230 /*void lcd_disp1624(uint x,uint y,uchar n)
231 {
232 uchar i; uint j;
233 for(i=0;i<24;i++)
234 {
235 lcd_set_graph(x,y+i);
236 j=n*48+i*2;
237 lcd_disp8(hzk00[j]);
238 lcd_disp8(hzk00[j+1]);
239 }
240 }*/
241
C51 COMPILER V7.06 LCD 09/06/2007 21:49:07 PAGE 5
242 /* 显示16x24图形点阵的子程序*/
243 /*display 24x24 dots */
244 /* 字符库为hzk01[]*/
245
246 /*void lcd_disp2424(uint x,uint y,uchar n) //左右间间隔24/8=3,上下间间隔24.
247 {
248 uchar i;uint j;
249 for(i=0;i<24;i++)
250 {
251 lcd_set_graph(x,y+i);
252 j=n*72+i*3;
253 lcd_disp8(hzk01[j]);
254 lcd_disp8(hzk01[j+1]);
255 lcd_disp8(hzk01[j+2]);
256 }
257 }*/
258
259
260 /////////////////////////////////////////
261
262 /* 以下几个函数为文本特征下*/
263 /*set graph x and y */
264 /* 0------------->x */
265 /* | */
266 /* | */
267 /* | */
268 /*\|/ */
269 /* y */
270 /* 如果是采用清华蓬远T240128图形点阵液晶 */
271 /* 下面这个函数lcd_set_graph()中第二条语句*/
272 /* y应该乘以30(240/30)其他型号依此类推*/
273
274 /*set text x and y*/
275 void lcd_set_text(uint x,uint y) //将文本地址转化为内存里的地址
276 {
277 1 uint xy;
278 1 xy=y*16+x+16*256;lcd_write(xy&0xff);
279 1 xy=xy/256;lcd_write(xy);lcd_ctrl(0x24);
280 1 }
281
282 //x为行字节数,y为列字节数
283 void lcd_disp_text(uchar x,uchar y,uchar ccode) //在某一指定位置显示一个字符,ccode是该字符在ROM表中的位置
284 { //故要显示字母或数字时 ccode=字母或数字+0X10;
285 1 lcd_set_text(x,y);
286 1 lcd_write(ccode);lcd_ctrl(0xc4);
287 1 }
288
289
290 void lcd_disp_char(uchar x,uchar y,uchar ccode){ //在某一指定位置显示一个字符 ccode 是该字符的ASC码值
291 1 lcd_set_text(x,y);
292 1 lcd_write(ccode-0x20);lcd_ctrl(0xc0);
293 1 }
294
295 void lcd_disp_string(uchar x,uchar y,uchar ccode[],uchar length){//在某一指定位置显示一个字符串 ccode是;
-
296 1 uchar i; //用双引号引起的字符串
297 1 for(i=0;i<length;i++){
298 2 lcd_disp_char(x+i,y,ccode[i]);
299 2 }
300 1 }
301
302
C51 COMPILER V7.06 LCD 09/06/2007 21:49:07 PAGE 6
303
304 /* first write a text letter on graph zone,then write char-attribe
305 /* on graph zone.NOTE: address must be the same. */
306 /*void lcd_text_attr(uchar x,uchar y,uchar cattr)
307 {
308 lcd_set_graph(x,y);
309 lcd_write(cattr);lcd_ctrl(0xc0);//char-attr write on graph zone accordingly.
310 }*/
311
312
313 /* 建立自定义字库1,字符库为hzk1[]*/
314
315 /*void lcd_set_cgram1(void)
316 {
317 uint i;
318 lcd_write(0x03);//1800-1fffh
319 lcd_write(0x00);lcd_ctrl(0x22);
320 lcd_write(0x00);lcd_write(0x1c);
321 lcd_ctrl(0x24);lcd_ctrl(0xb0);
322 for(i=0;i<0x400;i++)//1k
323 {
324 lcd_autowrite(hzk1[i]);
325 }
326 lcd_ctrl(0xb2);
327 }
328 /* 建立自定义字库2,字符库为hzk2[]*/
329
330 /*void lcd_set_cgram2(void)
331 {
332 uint i;
333 lcd_write(0x03);//1800-1fffh
334 lcd_write(0x00);lcd_ctrl(0x22);
335 lcd_write(0x00);lcd_write(0x18);
336 lcd_ctrl(0x24);lcd_ctrl(0xb0);
337 for(i=0;i<0x800;i++)//2k
338 {
339 lcd_autowrite(hzk2[i]);
340 }
341 lcd_ctrl(0xb2);
342 }
343
344 /* 建立自定义字库3,字符库为hzk3[]*/
345
346 /*void lcd_set_cgram3(void)
347 {
348 uint i;
349 lcd_write(0x03);//1800-1fffh
350 lcd_write(0x00);lcd_ctrl(0x22);
351 lcd_write(0x00);lcd_write(0x1c);
352 lcd_ctrl(0x24);lcd_ctrl(0xb0);
353 for(i=0;i<0x400;i++)//1k
354 {
355 lcd_autowrite(hzk3[i]);
356 }
357 lcd_ctrl(0xb2);
358 }
359
360 /* 显示一个汉字,16x16*/
361 /* x为行字节数,y为列字节数*/
362
363 /*void lcd_disp_hz(uchar x,uchar y,uchar ccode)
364 {
C51 COMPILER V7.06 LCD 09/06/2007 21:49:07 PAGE 7
365 lcd_set_text(x,y);
366 lcd_write(ccode); lcd_ctrl(0xc4);// left-up
367 lcd_set_text(x,y+1); lcd_write(ccode+1);
368 lcd_ctrl(0xc4);//left-down
369 lcd_set_text(x+1,y);lcd_write(ccode+2);
370 lcd_ctrl(0xc4);//right-up
371 lcd_set_text(x+1,y+1);lcd_write(ccode+3);
372 lcd_ctrl(0xc4);//rignt-dowm
373 }
374
375 /*设置汉字属性*/
376 /* x为行字节数,y为列字节数*/
377
378 /*void lcd_hz_attr(uchar x,uchar y,uchar cattr)
379 {
380 lcd_text_attr(x,y,cattr);
381 lcd_text_attr(x+1,y,cattr);
382 lcd_text_attr(x,y+1,cattr);
383 lcd_text_attr(x+1,y+1,cattr);
384 }*/
385 void Delay(uchar x){
386 1 for(;x>0;x--){
387 2 _nop_();
388 2 }
389 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1834 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 83 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -