📄 lcd.lst
字号:
C51 COMPILER V8.02 LCD 05/24/2007 12:05:39 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\新建文件夹\lcd.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND OBJECT(.\新建文件夹\lcd.obj)
line level source
1
2 #include "HARD_CENECT.H"
3 #include<intrins.h>
4 #define uchar unsigned char
5
6 #define clr 0x01 //清屏
7 #define byte unsigned char
8
9 void lcd_int(void);
10 void check_busy(void);
11 void write_command(byte cm);
12 void write_lcd_data(byte disp);
13 void write_LCD(byte shuju,bit C_or_D);
14 void change_data(void);
15 void lcd_delay(void);
16 void lcd_delay_nms(unsigned int n);
17 void printch(byte adress,byte *ch);
18
19
20 unsigned char LCD_DATA;
21
22 /****************************************
23 *涵数名:printch()
24 *涵数功能:在指的位置开始显示字符
25 *****************************************/
26 void printch(byte adress,byte *ch)
27 {
28 1 write_command(adress);
29 1 while(*ch)
30 1 {
31 2 write_lcd_data(*ch);
32 2 ch ++;
33 2 }
34 1 }
35
36 /****************************************
37 *涵数名:printc()
38 *涵数功能:在指的位置显示单个字符
39 *****************************************/
40 void printc(byte adress,byte disp_data)
41 {
42 1 write_command(adress);
43 1 write_lcd_data(disp_data);
44 1 }
45 /*************************
46 *涵数名:lcd_int()
47 *涵数功能:初始化LCD
48 **************************/
49 void lcd_int(void)
50 {
51 1 write_command(0x30);
52 1 lcd_delay_nms(5);
53 1 write_command(0x30);
54 1 lcd_delay_nms(5);
55 1 write_command(0x28);
C51 COMPILER V8.02 LCD 05/24/2007 12:05:39 PAGE 2
56 1 lcd_delay_nms(5);
57 1 write_command(0x28);
58 1 lcd_delay_nms(5);
59 1 write_command(0x28);
60 1 lcd_delay_nms(5);
61 1 write_command(0x80);
62 1 lcd_delay_nms(5);
63 1 write_command(0x01);
64 1 lcd_delay_nms(5);
65 1 write_command(0x0C);
66 1 lcd_delay_nms(5);
67 1 }
68
69 /*************************
70 *涵数名:check_busy()
71 *涵数功能:检查LCD是否为忙
72 **************************/
73 void check_busy(void)
74 {
75 1 bit i=1; //定义判断标志位
76 1 LCD_E=0; //去使能信号
77 1 RS=0; //传送命令数据
78 1 RW=1; //此时为读
79 1 DATA7=1;
80 1 LCD_E=1; //高四位移出
81 1 do{;}
82 1 while(DATA7!=0);
83 1 LCD_E=0;
84 1 }
85
86 /*************************
87 *涵数名:write_command()
88 *涵数功能:写入命令
89 **************************/
90 void write_command(byte cm)
91 {
92 1 write_LCD(cm,0); //送命令时RS=0
93 1 }
94 /*************************
95 *涵数名:write_lcd_data()
96 *涵数功能:写入显示数据
97 **************************/
98 void write_lcd_data(byte disp)
99 {
100 1 write_LCD(disp,1); //送数据时RS=1
101 1 }
102 /**************************
103 *涵数名:write_LCD()
104 *涵数功能:写数据到LCD,C_or_D
105 *表示是命令还是显示数据
106 ***************************/
107 void write_LCD(byte shuju,bit C_or_D)
108 {
109 1 unsigned char i;
110 1 check_busy();
111 1 RS=C_or_D;
112 1 RW=0;
113 1 LCD_E=0;
114 1 LCD_DATA=shuju;
115 1 for(i=0;i<2;i++)
116 1 {
117 2 change_data();
C51 COMPILER V8.02 LCD 05/24/2007 12:05:39 PAGE 3
118 2 LCD_E=1;
119 2 lcd_delay();
120 2 LCD_E=0;
121 2 }
122 1 }
123 /*************************
124 *涵数名:change_data()
125 *涵数功能:将要送入的数据转换
126 *成4BIT格式并送入4条数据线
127 *要求两次转换是连续的就不用
128 *重新装入数据
129 **************************/
130 void change_data(void)
131 {
132 1 if((LCD_DATA&0x80)==0x80)
133 1 DATA7=1;
134 1 else
135 1 DATA7=0;
136 1 LCD_DATA=LCD_DATA<<1;
137 1 if((LCD_DATA&0x80)==0x80)
138 1 DATA6=1;
139 1 else
140 1 DATA6=0;
141 1 LCD_DATA=LCD_DATA<<1;
142 1 if((LCD_DATA&0x80)==0x80)
143 1 DATA5=1;
144 1 else
145 1 DATA5=0;
146 1 LCD_DATA=LCD_DATA<<1;
147 1 if((LCD_DATA&0x80)==0x80)
148 1 DATA4=1;
149 1 else
150 1 DATA4=0;
151 1 LCD_DATA=LCD_DATA<<1;
152 1 }
153 /*********************************************************
154 *涵数名:lcd_delay_nms(unsigned int n)
155 *涵数功能:延时N MS
156 *
157 *********************************************************/
158 void lcd_delay_nms(unsigned int n)
159 {
160 1 unsigned int i=0,j=0;
161 1 for (i=n;i>0;i--)
162 1 for (j=0;j<1140;j++);
163 1 }
164 /*********************************************************
165 *涵数名:lcd_delay()
166 *涵数功能:延时N MS
167 *
168 *********************************************************/
169 void lcd_delay(void)
170 {
171 1 byte i;
172 1 for(i=0;i<40;i++);
173 1 }
174
175
176
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.02 LCD 05/24/2007 12:05:39 PAGE 4
CODE SIZE = 289 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -