📄 1602lcd_yd.lst
字号:
C51 COMPILER V8.05a 1602LCD_YD 11/23/2006 15:18:20 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 1602LCD_YD
OBJECT MODULE PLACED IN 1602LCD_YD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602LCD_YD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 /*
3 /*ME300B单片机开发系统演示程序 - LCD1602 移动显示C
4 /*
5 /* 显示内容: CHINESE
6 /* NEW YEAR
7 /*
8 /* 显示方式:
9 /* 1、LCD第一行显示: CHINESE
10 /* LCD第二行显示: NEW YEAR
11 /* 2、先将两行字符写入DDRAM中,然后从右至左逐字移出显示。
12 /* 3、在指定位置停留1.6秒后,闪烁2次,清屏。
13 /* 4、反复循环上述显示方式。
14 /*
15 /* 版本: V1.0 (2006/11/20)
16 /* 作者: gguoqing (Email: gguoqing@willar.com)
17 /* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界)
18 /* 时间: 2006/01/23
19 /*
20 /*【版权】COPYRIGHT(C)伟纳电子 www.willar.com ALL RIGHTS RESERVED
21 /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
22 /*
23 /*******************************************************************/
24
25 #include <reg51.h>
26 #include <intrins.h>
27
28 #define uchar unsigned char
29 #define uint unsigned int
30
31 sbit LCD_RS = P2^0;
32 sbit LCD_RW = P2^1;
33 sbit LCD_EN = P2^2;
34
35 uchar code dis1[] = {" CHINESE "};
36 uchar code dis2[] = {" NEW YEAR "};
37
38
39 /*******************************************************************/
40 /*
41 /* 延时子程序
42 /*
43 /*******************************************************************/
44
45 void delay(int ms)
46 {
47 1 int i;
48 1 while(ms--)
49 1 {
50 2 for(i = 0; i< 250; i++)
51 2 {
52 3 _nop_();
53 3 _nop_();
54 3 _nop_();
55 3 _nop_();
C51 COMPILER V8.05a 1602LCD_YD 11/23/2006 15:18:20 PAGE 2
56 3 }
57 2 }
58 1 }
59
60 /*******************************************************************/
61 /*
62 /*检查LCD忙状态
63 /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。
64 /*
65 /*******************************************************************/
66
67 bit lcd_busy()
68 {
69 1 bit result;
70 1 LCD_RS = 0;
71 1 LCD_RW = 1;
72 1 LCD_EN = 1;
73 1 _nop_();
74 1 _nop_();
75 1 _nop_();
76 1 _nop_();
77 1 result = (bit)(P0&0x80);
78 1 LCD_EN = 0;
79 1 return result;
80 1 }
81
82 /*******************************************************************/
83 /*
84 /*写指令数据到LCD
85 /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
86 /*
87 /*******************************************************************/
88
89 void lcd_wcmd(uchar cmd)
90 {
91 1 while(lcd_busy());
92 1 LCD_RS = 0;
93 1 LCD_RW = 0;
94 1 LCD_EN = 0;
95 1 _nop_();
96 1 _nop_();
97 1 P0 = cmd;
98 1 _nop_();
99 1 _nop_();
100 1 _nop_();
101 1 _nop_();
102 1 LCD_EN = 1;
103 1 _nop_();
104 1 _nop_();
105 1 _nop_();
106 1 _nop_();
107 1 LCD_EN = 0;
108 1 }
109
110 /*******************************************************************/
111 /*
112 /*写显示数据到LCD
113 /*RS=H,RW=L,E=高脉冲,D0-D7=数据。
114 /*
115 /*******************************************************************/
116
117 void lcd_wdat(uchar dat)
C51 COMPILER V8.05a 1602LCD_YD 11/23/2006 15:18:20 PAGE 3
118 {
119 1 while(lcd_busy());
120 1 LCD_RS = 1;
121 1 LCD_RW = 0;
122 1 LCD_EN = 0;
123 1 P0 = dat;
124 1 _nop_();
125 1 _nop_();
126 1 _nop_();
127 1 _nop_();
128 1 LCD_EN = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -