📄 sy.lst
字号:
189 1 Display_num(num3,3,1,16);
190 1 while(1);
191 1
192 1 }
193
194
195 /******************************************
196 功能:void check_busy( void )
197 功能:检查是否LCD忙碌的子程序
198 实参输入:void
199 返回值:void
200 ******************************************/
201 void check_busy(void)
202 {
203 1 P1 = 0xff;
204 1 RS = 0;
205 1 RW = 1;
206 1 while (1)
207 1 {
208 2 smNop();
209 2 E =1;
210 2 smNop();
211 2 if( P1 < 0x80 )
212 2 break;
213 2 smNop();
214 2 E =0;
215 2 }
216 1 E = 0;
217 1 }
218
219 /*****************************************
220 名称:void send_com( unsigned char command )
221 功能:写指令
222 实参输入:unsigned char command
223 返回值:void
224 *****************************************/
225 void send_com(const unsigned char command)
226 {
227 1 check_busy();
228 1 RS = 0;
229 1 RW = 0;
230 1 P1 = command;
231 1 E = 1;
232 1 smNop();
233 1 E = 0;
234 1 }
235
236 /********************************************************
237 名称:void send_com_init( unsigned char command_init )
238 功能:LCD初始化时的送命令
239 实参输入:unsigned char command_init
240 返回值:void
241 ********************************************************/
C51 COMPILER V7.50 SY 08/26/2007 14:45:19 PAGE 5
242 void send_com_init(const unsigned char command_init )
243 {
244 1 RS = 0;
245 1 RW = 0;
246 1 P1 = command_init;
247 1 E = 1;
248 1 smNop();
249 1 E = 0;
250 1 }
251
252 /*******************************************************
253 名称:void send_data( unsigned char data_a )
254 功能:写数据
255 实参输入:unsigned char data_a
256 返回值:void
257 *******************************************************/
258 void send_data(const unsigned char data_a)
259 {
260 1 check_busy();
261 1 RS = 1; //DB7-DB0为显示数据
262 1 RW = 0; //写入数据
263 1 P1 = data_a;
264 1 E = 1;
265 1 smNop();
266 1 E = 0; //下降沿
267 1 }
268
269 /*********************************************************
270 名称:void clear_LCD( void )
271 功能:清屏
272 实参输入:void
273 返回值:void
274 *********************************************************/
275 void clear_LCD(void)
276 {
277 1 send_com(0x01); //清除显示//
278 1 send_com(0x34); // 功能设定:扩充指令集动作 //
279 1 send_com(0x30); //功能设定:基本指令集动作//
280 1 }
281
282 /*************************************************************
283 名称:void initial_LCD( void )
284 功能:LCD初始化
285 实参输入:void
286 返回值:void
287 *************************************************************/
288 void initial_LCD(void)
289 {
290 1 PSB = 1; //并行传送
291 1 RST = 0; //复位
292 1 _nop_();
293 1 _nop_();
294 1 RST = 1; //不复位
295 1 _nop_();
296 1 delay_10us(10);
297 1 send_com_init(0x30);//30H--基本指令操作
298 1 delay_10us(4);
299 1 send_com_init(0x0c);//开显示,关光标,不闪烁。
300 1 delay_10us(10);
301 1 send_com_init(0x01);//清除显示
302 1 delay_ms(10);
303 1 send_com_init(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
C51 COMPILER V7.50 SY 08/26/2007 14:45:19 PAGE 6
304 1 }
305
306
307 /*********************************************************************
308 名称:void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
309 功能:显示字符串 2 1 6
310 参数输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length
311 返回值:void
312 *********************************************************************/
313 void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
314 {
315 1 unsigned char ddram = 0x00;
316 1 unsigned char i1;
317 1
318 1 if(line == 1)
319 1 ddram = 0x80;
320 1 if(line == 2)
321 1 ddram = 0x90;
322 1 if(line == 3)
323 1 ddram = 0x88;
324 1 if(line == 4)
325 1 ddram = 0x98;
326 1
327 1 ddram = ddram + col - 1;
328 1
329 1 send_com( ddram ); //定位显示起始地址
330 1
331 1 for( i1 = 0;i1 < length;i1 ++ )
332 1 {
333 2 send_data( ptr[i1] );//输出单个字符
334 2 }
335 1 }
336
337 /********************************************************
338 名称: void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
339 功能:显示汉字子程序
340 实参输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned length
341 返回值:void
342 ********************************************************/
343 void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
344 {
345 1
346 1 unsigned char ddram = 0x00;
347 1 unsigned char i1;
348 1 if(line == 1)
349 1 ddram = 0x80;
350 1 if(line == 2)
351 1 ddram = 0x90;
352 1 if(line == 3)
353 1 ddram = 0x88;
354 1 if(line == 4)
355 1 ddram = 0x98;
356 1
357 1 ddram = ddram + col - 1;
358 1 send_com( ddram ); //定位显示起始地址
359 1 for( i1 = 0;i1 < length;i1 ++ )
360 1 {
361 2 send_data(ptr[i1*2]);//输出单个字符
362 2 send_data(ptr[i1*2+1]);
363 2 }
364 1 }
365 /****************************************************************
C51 COMPILER V7.50 SY 08/26/2007 14:45:19 PAGE 7
366 -----------------------------------------------------------------
367 END OF MAIN.C
368 -----------------------------------------------------------------
369 ****************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 400 ----
CONSTANT SIZE = 96 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
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 + -