📄 ts12864.lst
字号:
194
195 while(y)
196 {
197 dot<<=1;
198 y--;
199 }
200 ram ^=dot;
201 Display(x,page,ram);
202 }*/
203 /*****************************************************************
204 函数功能:显示初始化.
205 参数说明:空
206 ******************************************************************/
207 #pragma disable //加入此命令,使LcdInit()执行时,禁止中断
208 void LcdInit(void)
209 {
210 1 p_reset=0;_nop_(); _nop_();
211 1 p_reset=1;_nop_(); _nop_();
212 1 p_csa=p_csb=1; //左半边和右半边一起设定
213 1 WriteLcd(COMM,LCD_ON); //开显示
214 1 }
215 /*****************************************************************
216 函数功能:显示单个数字
217 参数说明:x,y:点阵坐标:x:0~15;y:0~3.
218 *****************************************************************/
219 void DisplayChar(unsigned char x,unsigned char y,unsigned char n,unsigned char state)
220 {
221 1 unsigned char i;
222 1 SetXY(8*x,2*y);
223 1 if(state!=LCD_BLACK)
224 1 {
225 2 for(i=0;i<8;i++)
226 2 {
227 3 Display(8*x+i,2*y,asc[(n-32)*16+i]);
228 3 Display(8*x+i,2*y+1,asc[(n-32)*16+i+8]);
229 3 }
230 2 }
231 1 else
232 1 {
233 2 for(i=0;i<8;i++)
234 2 {
235 3 Display(8*x+i,2*y,255-asc[(n-32)*16+i]);
236 3 Display(8*x+i,2*y+1,255-asc[(n-32)*16+i+8]);
237 3 }
238 2 }
239 1 }
240 /*************************************************
241 函数功能:整数变量转换成液晶显示程序
C51 COMPILER V8.02 TS12864 07/26/2008 19:16:15 PAGE 5
242 整数范围:-32768~+32767
243 参数:num:要显示的变量; y为行,x为列;均从0开始
244 显示形式:x指定的位置为该数最高位的位置,负号紧贴数字显示
245 *************************************************/
246 void DisplayInt(unsigned char x,unsigned char y,signed int num,unsigned char state)
247 {
248 1 unsigned a[6];
249 1 unsigned i=1,j;
250 1
251 1 x-=2;
252 1 if(num<0)
253 1 {
254 2 num=-num;
255 2 a[0]='-'; //负号
256 2 }
257 1 else
258 1 a[0]=' '; //什么都不显示
259 1
260 1 a[1]=num/10000;num%=10000;
261 1 a[2]=num/1000;num%=1000;
262 1 a[3]=num/100;num%=100;
263 1 a[4]=num/10;num%=10;
264 1 a[5]=num;
265 1
266 1 while(a[i]==0&&i<=5)++i;
267 1 j=i-1; //j为负号的位
268 1 while(i<=5){DisplayChar(x+i,y,a[i]+48,state);++i;}
269 1 if(j==5)DisplayChar(x+5,y,48,state); //全0的情况
270 1 if(a[0]=='-')DisplayChar(x+j,y,'-',state); //负数的情况
271 1 }
272 /*****************************************************************
273 函数功能:提取单个汉字显示
274 参数说明:x:y:点阵坐标x:0~7;y:0~3。n第n个汉字
275 ******************************************************************/
276 void DisplaySingleChinese(unsigned char x,unsigned char y,unsigned char n,
277 unsigned char code *chArray,unsigned char state)
278 {
279 1 unsigned char i;
280 1 SetXY(16*x,2*y);
281 1 if(state!=LCD_BLACK)
282 1 {
283 2 for(i=0;i<16;i++)
284 2 {
285 3 Display(16*x+i,2*y,chArray[n*32+i]);
286 3 Display(16*x+i,2*y+1,chArray[n*32+i+16]);
287 3 }
288 2 }
289 1 else
290 1 {
291 2 for(i=0;i<16;i++)
292 2 {
293 3 Display(16*x+i,2*y,255-chArray[n*32+i]);
294 3 Display(16*x+i,2*y+1,255-chArray[n*32+i+16]);
295 3 }
296 2 }
297 1 }
298 /*****************************************************************
299 函数功能:显示汉字
300 参数说明:x:y:点阵坐标x:0~8;y:0~3。n:共n个汉字
301 ******************************************************************/
302 void DisplayString(unsigned char x,unsigned char y,unsigned char n,
303 unsigned char code *chArray,unsigned char state)
C51 COMPILER V8.02 TS12864 07/26/2008 19:16:15 PAGE 6
304 {
305 1 unsigned char i;
306 1 for(i=0;i<n;i++)
307 1 {
308 2 if(x>7)
309 2 {
310 3 if(y<3)
311 3 {
312 4 x=0;
313 4 y++;
314 4 }
315 3 }
316 2 DisplaySingleChinese(x,y,i,chArray,state);
317 2 x++;
318 2 }
319 1 }
320 /*****************************************************************
321 函数功能:延时
322 参数说明:传输输入参数。具体时间需计算所用晶振频率
323 ******************************************************************/
324 void delayX10ms(unsigned char count)
325 {
326 1 unsigned char i,j,k;
327 1 for (i=0;i<count;i++)
328 1 for(j=0;j<50;j++)
329 1 for(k=0;k<80;k++);
330 1 }
331 /*****************************************************************
332 函数功能:翻屏
333 参数说明:time:翻屏时间
334 ******************************************************************/
335 /*void RollScr(unsigned time)
336 {
337 unsigned char i;
338 p_csa=p_csb=1; //左右两边一起选定
339 for(i=0;i<64;i++)
340 {
341 WriteLcd(COMM,0xc0+i); //设置起始行
342 delayX10ms(time); //延时
343 }
344 WriteLcd(COMM,0xc0); //设置起始行
345 }*/
346 /*****************************************************************
347 函数功能:显示图像
348 参数说明:*img指向图像数组;state用来取反图像颜色,一般不用。
349 ******************************************************************/
350 void DisplayImage(unsigned char *img,unsigned char state)
351 {
352 1 unsigned char i,j;
353 1
354 1 if(state==0xFF)
355 1 {
356 2
357 2 for(j=0;j<128;j++)
358 2 {
359 3 for(i=0;i<8;i++)
360 3 {
361 4 delayX10ms(1);
362 4 Display(j,i,255-img[i*128+j]);
363 4 }
364 3 }
365 2
C51 COMPILER V8.02 TS12864 07/26/2008 19:16:15 PAGE 7
366 2 }
367 1 else
368 1 {
369 2
370 2 for(j=0;j<128;j++)
371 2 {
372 3 for(i=0;i<8;i++)
373 3 {
374 4 Display(j,i,img[i*128+j]);
375 4 }
376 3 }
377 2
378 2 }
379 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1254 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 51
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 + -