📄 lcd.lst
字号:
181 1 Set_xyPos_LCD(61, H << 1 ); //set col address lsb
182 1 for( i = 0;i < 2;i++ )
183 1 {
184 2 for( j = 0;j < 61;j++ )
185 2 LCD_Write_Data( 0x00,1 );
186 2 Set_xyPos_LCD(61, (H << 1) + 1); //set col address lsb
187 2 }
188 1 }
189
190
191 /*---------------------------------------------------------------------------------
192 //延时1MS子程序
193 ---------------------------------------------------------------------------------*/
194 void Delay_xMs(unsigned int xMs)
195 {
196 1 unsigned int i,j;
197 1 for(i=0;i<xMs;i++)
198 1 {
199 2 for(j=0;j<500;j++)
200 2 ;
201 2 }
202 1 }
203
204 /*---------------------------------------------------------------------------------
205 //在X,Y处显示一个16*8的西文sData (0---d)
206 ---------------------------------------------------------------------------------*/
207 void Show_XW_LCD(unsigned char xPos,unsigned char yPos,unsigned char sData)
208 {
209 1 bit F;
210 1 unsigned int nTmp;
211 1 unsigned char j,x,y;
212 1 x = xPos;
213 1 y = yPos;
214 1 nTmp = sData * 16;
215 1 for ( j = 0;j < 16;j+=2 )
216 1 {
217 2 Set_xyPos_LCD(x,y);
218 2 F = 0;
219 2 if ( x > 60 )
220 2 F = 1;
221 2 LCD_Write_Data(Large_DianZen[nTmp + j],F);
222 2 x++;
223 2 }
224 1
225 1 y++;
226 1 x = xPos;
227 1 for ( j = 1;j < 16;j+=2 )
228 1 {
229 2 Set_xyPos_LCD(x,y);
230 2 F = 0;
231 2 if ( x > 60 )
232 2 F = 1;
233 2 LCD_Write_Data(Large_DianZen[nTmp + j],F);
234 2 x++;
235 2 }
236 1 }
237
238 /*---------------------------------------------------------------------------------
239 //在X,Y处显示一个16*16的汉字
240 ---------------------------------------------------------------------------------*/
C51 COMPILER V8.08 LCD 03/01/2008 06:32:25 PAGE 5
241 void Show_HZ_LCD ( unsigned char xPos, unsigned char yPos,unsigned char sData )
242 {
243 1 bit F;
244 1 unsigned int nTmp;
245 1 unsigned char j,x,y;
246 1 x = xPos;
247 1 y = yPos;
248 1 nTmp = sData * 32;
249 1 for ( j = 0;j < 32;j+=2 )
250 1 {
251 2 Set_xyPos_LCD(x,y);
252 2 F = 0;
253 2 if ( x > 60 )
254 2 F = 1;
255 2 LCD_Write_Data(HanZi[nTmp + j],F);
256 2 x++;
257 2 }
258 1
259 1 y++;
260 1 x = xPos;
261 1 for ( j = 1;j < 32;j+=2 )
262 1 {
263 2 Set_xyPos_LCD(x,y);
264 2 F = 0;
265 2 if ( x > 60 )
266 2 F = 1;
267 2 LCD_Write_Data(HanZi[nTmp + j],F);
268 2 x++;
269 2 }
270 1 }
271
272 /*-------------------------------------------------------------------------------------
273 预先定义内容表为LCD_Show_Tab[]
274 汉字表为HanZi[]
275 大西文表为Large_DianZen[]
276 与90H的分界碰到90H则是汉字,否则是西文
277 --------------------------------------------------------------------------------------*/
278 void Print_LCD ( unsigned char xPos, unsigned char yPos,int nSentenceID )
279 {
280 1 unsigned char i,j=0;
281 1 unsigned char Temp; //存放要显示的数据
282 1
283 1 for(i=0;i<16;i++)
284 1 {
285 2 Temp=LCD_Show_Tab[nSentenceID*16+i]; //128 16个西文
286 2 if(Temp==0x90) //汉字
287 2 {
288 3 i++;
289 3 Temp=LCD_Show_Tab[nSentenceID*16+i];
290 3 Show_HZ_LCD(xPos+j,yPos,Temp); //write 1个汉字子程序
291 3 j+=16;
292 3 }
293 2 else //西文
294 2 {
295 3 Temp= LCD_Show_Tab[nSentenceID*16+i];
296 3 Show_XW_LCD(xPos+j,yPos,Temp); //write 1个西文子程序
297 3 j+=8;
298 3 }
299 2 }
300 1 }
301
302
C51 COMPILER V8.08 LCD 03/01/2008 06:32:25 PAGE 6
303 /*-----------------------------------------------
304 LCD初始化子程序:注意12232有两片0713点阵驱动器
305 ------------------------------------------------*/
306 void LCD_Init( void )
307 {
308 1 LCD_ENA1 = 0;
309 1 LCD_ENA2 = 0;
310 1 // LCD_Write_Set( 0x00,0 );
311 1 LCD_Write_Set( 0xE2,0 );// 0713复位
312 1 // LCD_Write_Set( 0xAE,0 );
313 1 LCD_Write_Set( 0xC0,0 );// 设置第0行为开始行
314 1 LCD_Write_Set( 0xB8,0 );//设置第0页为开始页
315 1 LCD_Write_Set( 0xA0,0 );
316 1 LCD_Write_Set( 0xA4,0 );//关静态驱动模式设置
317 1 LCD_Write_Set( 0xA9,0 );//选择1/32DUTY
318 1 LCD_Write_Set( 0xEE,0 );//设置END指令
319 1
320 1 LCD_Write_Set( 0xE2,1);
321 1 // LCD_Write_Set( 0xAE,1 );
322 1 LCD_Write_Set( 0xC0,1 );
323 1 LCD_Write_Set( 0xB8,1 );
324 1 LCD_Write_Set( 0xA0,1 );
325 1 LCD_Write_Set( 0xA4,1 );
326 1 LCD_Write_Set( 0xA9,1 );
327 1 LCD_Write_Set( 0xEE,1 );
328 1 LCD_Write_Set( 0xAF,0 );
329 1 LCD_Write_Set( 0xAF,1 );
330 1 Delay_xMs( 10 );
331 1 }
332
333
334 /*----------------------------------------------
335 主程序
336 功能:循环显示"电子工作室 现在是: "
337 ------------------------------------------------*/
338 /*
339 void main()
340 {
341 unsigned char i;
342 LCD_Init();
343 Clear_H_LCD( 0 );
344 Clear_H_LCD( 1 );
345 while(1)
346 {
347 for( i = 0;i < 5 ;i+=2 )
348 {
349 Print_LCD ( 0,0,i );
350 Print_LCD ( 0,2,i+1 );
351 Delay_xMs(500);
352 }
353 }
354 }
355 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 724 ----
CONSTANT SIZE = 752 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
IDATA SIZE = ---- ----
C51 COMPILER V8.08 LCD 03/01/2008 06:32:25 PAGE 7
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -