📄 main.lst
字号:
194 /************************/
195 void Displaytext(uchar O_X,uchar O_Y,uchar code_1)
196 {
197 1 uchar xdata count1,a;
198 1 uint xdata i,j;
199 1 j = 40 * O_Y + O_X; //计算光标地址
200 1 Writecode( 0x4f ); //CSRDIR 代码(下移)
201 1 for(i = 0; i < 2;i++)
202 1 {
203 2 Writecode( 0x46 ); //CSRW代码,设置光标地址
204 2 a = j % 256;
205 2 Writedata( a ); //设置光标地址CSR,低地址
206 2 a = j / 256 + 0x40;
207 2 Writedata( a ); //高地址
208 2 Writecode( 0x42 ); //MWRITE代码,连续显示数据
209 2 for(count1 = i*16;count1 < 16*(i+1);count1++)
210 2 {
211 3 Writedata(CGTAB[code_1][count1]); //写入数据
212 3 }
213 2 j = j + 1;
214 2 }
215 1 }
216 //显示图象函数
217 /*
218 void Diplaypic()
219 {
220 uchar SAVEPAGESFR=SFRPAGE;
221 uchar xdata a,i;
222 uint xdata j,count1;
223 j=0; //计算光标地址
224 Writecode(0x4f); //CSRDIR 代码(下移)
225 for(i=0;i<40;i++)
226 {
227 Writecode(0x46); //CSRW代码,设置光标地址
228 a=j%256;
229 Writedata(a); //设置光标地址CSR,低地址
230 a=j/256+0x40;
231 Writedata(a); //高地址
232 Writecode(0x42); //MWRITE代码,连续显示数据
233 for(count1=i*240;count1<240*(i+1);count1++)
234 {
235 Writedata(InterFaceTAB[count1]); //写入数据
236 }
237 j=j+1;
238 }
239 SFRPAGE=SAVEPAGESFR;
240 }
241 */
C51 COMPILER V8.02 MAIN 09/25/2008 09:34:57 PAGE 5
242
243 /************************/
244 /* 西文函数 */
245 /************************/
246 void Displaydata(uchar O_X,uchar O_Y,uchar datacode)
247 {
248 1 uint j;
249 1 j=40*O_Y+O_X;
250 1 Writecode(0x46); //CSRW 代码
251 1 Writedata(j%256); //设置光标地址CSR
252 1 Writedata(j/256);
253 1 Writecode(0x4c); //CSRDIR代码,光标地址自动左移
254 1 Writecode(0x42); //MWRITE代码,连续写
255 1 Writedata(datacode); //写入数据
256 1 }
257 /***********************/
258 /* 绘点函数 */
259 /***********************/
260 void Displaydot(uint O_X,uint O_Y)
261 {
262 1 uint i,k;
263 1 uchar dat;
264 1 i=O_X%8; //计算显示单元地址(X坐标),低位点坐标
265 1 O_X=O_X/8; //高位,字节坐标,以8的整数为单位
266 1 k=40*O_Y+O_X; //指针地址
267 1 Writecode(0x4f);
268 1 Writecode(0x46); //设置光标地址
269 1 Writedata(k%256); //计算光标地址
270 1 Writedata(k/256+0x40);
271 1 if(i==0) //如果=0,则是第8位(第一点),即把第8位置1
272 1 O_Y=0x80;
273 1 else
274 1 {
275 2 O_Y=1;
276 2 for(;i<7;i++) //计算显示位,最高位为1位
277 2 {
278 3 O_Y=O_Y*2; //左移1位
279 3 }
280 2 }
281 1 Writecode(0x43); //MREAD代码
282 1 dat=Readdata(); //读取当前显示数据,同时光标指针根据设置方式自动修改
283 1 Writecode(0x46); //重新设置光标地址
284 1 Writedata(k%256); //计算光标地址
285 1 Writedata(k/256+0x40);
286 1 Writecode(0x42); //MWRITE 代码
287 1 Writedata(dat|O_Y); //写入合成数据,或合成显示点
288 1 }
289 //*******横线*******//
290 void H_line(uint x,uchar y,uint lenth)
291 {
292 1 uint i;
293 1 for(i=x;i<lenth;i++) //横线
294 1 Displaydot(i,y);
295 1 }
296 //*******竖线******//
297 void L_line(uint x,uchar y,uint lenth)
298 {
299 1 uint i;
300 1 for(i=y;i<lenth;i++) //竖线
301 1 Displaydot(x,i);
302 1 }
303
C51 COMPILER V8.02 MAIN 09/25/2008 09:34:57 PAGE 6
304 //*********画矩形框********//
305 void Rect_line(uint x,uchar y,uint lenthx,uchar lenthy)
306 {
307 1 uint i;
308 1 for(i=x;i<lenthx;i++) //横线
309 1 Displaydot(i,y);
310 1 for(i=x;i<lenthx;i++) //横线
311 1 Displaydot(i,y+lenthy);
312 1 for(i=y;i<lenthy;i++) //竖线
313 1 Displaydot(x,i);
314 1 for(i=y;i<lenthy;i++) //竖线
315 1 Displaydot(x+lenthx,i);
316 1 }
317
318 //**********显示连续显示n个汉字函数**********//
319 //**坐标,p为汉字库里的首个显示汉字的偏移量**//
320 void DisplayStrC(uchar x,uchar y,uchar code_1,uchar lenth)
321 {
322 1 uchar xdata count1,a,k;
323 1 uint xdata i,j;
324 1 j=40*y+x; //计算光标地址
325 1 Writecode(0x4f); //CSRDIR 代码(下移)
326 1
327 1 for(k=0;k<lenth;k++)
328 1 {
329 2 for(i=0;i<2;i++)
330 2 {
331 3 Writecode(0x46); //CSRW代码,设置光标地址
332 3 a=j%256;
333 3 Writedata(a); //设置光标地址CSR,低地址
334 3 a=j/256+0x40;
335 3 Writedata(a); //高地址
336 3 Writecode(0x42); //MWRITE代码,连续显示数据
337 3 for(count1=i*16;count1<16*(i+1);count1++)
338 3 Writedata(CGTAB[code_1][count1]); //写入数据
339 3 j=j+1;
340 3 }
341 2 code_1=code_1+1; //指向下一个字
342 2 }
343 1 }
344
345 //**********显示字符串函数**********//
346 void DisplayStr(uchar x,uchar y,uchar *p,uchar lenth)
347 {
348 1 uchar i;
349 1 uint j;
350 1 j=40*y+x;
351 1 Writecode(0x46); //CSRW 代码
352 1 Writedata(j%256); //设置光标地址CSR
353 1 Writedata(j/256);
354 1 Writecode(0x4c); //CSRDIR代码,光标地址自动左移
355 1 Writecode(0x42); //MWRITE代码,连续写
356 1 for(i=0;i<lenth;i++)
357 1 Writedata(*(p+i)); //写入数据
358 1 }
359 void Delay(uchar x)
360 {
361 1 uint i=655;
362 1 while(x--)
363 1 while(i--);
364 1 }
365 main()
C51 COMPILER V8.02 MAIN 09/25/2008 09:34:57 PAGE 7
366 {
367 1 Delay(2);
368 1 Init_LCD();
369 1 Writecode(0x42); //MWRITE 代码
370 1 Rect_line(0,0,319,239);
371 1 DisplayStrC(1,3,0,2); //文件
372 1 H_line(0,21,319);
373 1 H_line(0,20,300);
374 1 H_line(0,50,300);
375 1 H_line(0,30,300);
376 1 H_line(0,60,300);
377 1 while(1);
378 1 }
*** WARNING C316 IN LINE 378 OF main.c: unterminated conditionals
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1395 ----
CONSTANT SIZE = 370 ----
XDATA SIZE = ---- 13
PDATA SIZE = ---- ----
DATA SIZE = 3 33
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -