📄 lcm.lst
字号:
C51 COMPILER V7.50 LCM 11/15/2007 14:43:54 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCM
OBJECT MODULE PLACED IN lcm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcm.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /*----------------------------- Program Overview -------------------------------
3 Device Name: AT89S52
4 ROM: 8 K bytes
5 RAM: 512 bytes
6 Chip Basic Functions: 40pin, 32I/O, 16 bit Timer *3, 8 bit UART *1, Eight Interrupt Sources
7 4.0V to 5.5V Operating Range, OSC 11.0592 MHz (0.9216 us)
8 Complier: keil C 750
9 Simulator: keil C 750
10 Programmer:
11 File Name: lcm.c
12 File Functtion: lcm display function
13 Copyright: XIAZHAOJUN
14 First Version Finished Date: 2007.11.6
15 Others:
16 ------------------------------- Modified Note ----------------------------------
17 Old Version:
18 New Version:
19 New CheckSum:
20 Modifier:
21 Modified Date:
22 Modified Causation:
23 Modified Mean:
24 -------------------------------------------------------------------------------*/
25
26 //----------------------------- Include ----------------------------------------
27 #include <reg52.h>
28 //#include <stdio.h>
29 //#include<intrins.h>
30 #include<lcm.h>
31 #include<com.h>
32 #include<key.h>
33 //#include<cmain.h>
34
35
36
37
38 //----------------------------- SFR Definition ---------------------------------
39 /*----------------------------------------------
40 LCD1602
41 |DB0-----P1.0 | DB4-----P1.4 | RW-------P3.3 |
42 |DB1-----P1.1 | DB5-----P1.5 | RS-------P3.2 |
43 |DB2-----P1.2 | DB6-----P1.6 | E--------P3.4 |
44 |DB3-----P1.3 | DB7-----P1.7 |
45 VSS--GND
46 VDD--VCC
47 BLA--VCC
48 BLK--GND
49 VLCD接1K电阻到GND
50 ----------------------------------------------*/
51
52 sbit LCM_RW = P3^6;
53 sbit LCM_RS = P3^7;
54 sbit LCM_E = P3^4;
55
C51 COMPILER V7.50 LCM 11/15/2007 14:43:54 PAGE 2
56 //----------------------------- Macro Definition -------------------------------
57
58 #define LCM_Data P1
59
60
61 #define uchar unsigned char
62 #define uint unsigned int
63
64 //----------------------------- Constant Definition ----------------------------
65 uchar lcm_md;
66
67 //----------------------------- Variable Definition ----------------------------
68
69
70 unsigned char data dsip_ra;
71 unsigned char data dsip_rb;
72
73 unsigned char data dsip_r0;
74 unsigned char data dsip_r1;
75
76 unsigned char data dsip_r4;
77 unsigned char data dsip_r5;
78
79
80 //----------------------------- Bit Definition ---------------------------------
81
82 bit b_disp;
83
84
85 //----------------------------- Program Code -----------------------------------
86
87
88 /*----------------------------- Subroutine -------------------------------------
89 Name: lcm table
90 Function:
91 Entry:
92 Exit:
93 Caution:
94 -------------------------------------------------------------------------------*/
95 uchar code dsiptaba[14]={" XIA ZHAO JUN "};
96 uchar code dsiptabb[14]={"copyright 2007"};
97 uchar code dsiptabwait[9]={"wait... "};
98
99
100 uchar code dsp_tab_line[10][9]=
101 {
102 {"OFF Stop "}, //0
103 {"OFF Up "}, //1
104 {"OFF Down "}, //2
105 {"OFF Left "}, //3
106 {"OFF Right"}, //4
107
108 {"ON Stop "}, //5
109 {"ON Up "}, //6
110 {"ON Down "}, //7
111 {"ON Left "}, //8
112 {"ON Right"} //9
113 };
114
115 uchar code dsp_tab_send[7][9]=
116 {
117 {"Stop... "}, //0
C51 COMPILER V7.50 LCM 11/15/2007 14:43:54 PAGE 3
118 {"Up... "}, //1
119 {"Down... "}, //2
120 {"Left... "}, //3
121 {"Right... "}, //4
122
123 {"OFF... "}, //5
124 {"ON... "} //6
125
126 };
127
128
129 uchar code dsp_tab_send_OK[9]={"Send OK "}; //0
130 uchar code dsp_tab_ERR[9]= {"COM Error"}; //6
131
132
133
134 /*----------------------------- Subroutine -------------------------------------
135 Name: delay
136 Function:
137 Entry:
138 Exit:
139 Caution:
140 -------------------------------------------------------------------------------*/
141 void del_100us(void){
142 1 uchar j;
143 1 for(j=100;j>0;j--);
144 1 }
145
146 void del_1ms(void){
147 1 uchar j;
148 1 for(j=10;j>0;j--){
149 2 del_100us();
150 2 }
151 1 }
152
153 void del_10ms(void){
154 1 uchar i;
155 1 for(i=100;i>0;i--){
156 2 del_100us();
157 2 }
158 1 }
159
160
161 void del_100ms(void){
162 1 uchar i;
163 1 for(i=10;i>0;i--){
164 2 del_10ms();
165 2 }
166 1 }
167
168 static void short_delay(unsigned int i){
169 1 while (i>0) i--;
170 1 }
171
172
173 /*----------------------------- Subroutine -------------------------------------
174 Name: 1602 LCM busy
175 Function:
176 Entry:
177 Exit:
178 Caution:
179 -------------------------------------------------------------------------------*/
C51 COMPILER V7.50 LCM 11/15/2007 14:43:54 PAGE 4
180 void ReadBusyLCM(void){
181 1 bit result;
182 1 do{
183 2 LCM_RS = 0;
184 2 LCM_RW = 1;
185 2 LCM_E = 0;
186 2 LCM_E = 1;
187 2 LCM_Data=0xff;
188 2 result = (bit)(LCM_Data&0x80);
189 2 LCM_E = 0;
190 2 }while (result == 1);
191 1 del_1ms();
192 1 }
193
194 /*----------------------------- Subroutine -------------------------------------
195 Name: lcm command
196 Function:
197 Entry:
198 Exit:
199 Caution:
200 -------------------------------------------------------------------------------*/
201 void WriteCommandLCM(unsigned char WCLCM,unsigned char BusyC){ //BusyC为0时忽略忙检测
202 1 if (BusyC){
203 2 ReadBusyLCM(); //根据需要检测忙
204 2 }
205 1 LCM_E=0;
206 1 LCM_RS=0;
207 1 LCM_RW=0;
208 1 LCM_E=1;
209 1 LCM_Data=WCLCM;
210 1 LCM_E=0;
211 1 }
212
213 /*----------------------------- Subroutine -------------------------------------
214 Name: lcm write data
215 Function:
216 Entry:
217 Exit:
218 Caution:
219 -------------------------------------------------------------------------------*/
220 void WritedataLCM(unsigned char WCLM,unsigned char BuyC){
221 1 if (BuyC){
222 2 ReadBusyLCM(); //根据需要检测忙
223 2 }
224 1 LCM_E=0;
225 1 LCM_RS=1;
226 1 LCM_RW=0;
227 1 LCM_E=1;
228 1 LCM_Data=WCLM;
229 1 LCM_E=0;
230 1 }
231
232 /*----------------------------- Subroutine -------------------------------------
233 Name: lcm init
234 Function:
235 Entry:
236 Exit:
237 Caution:
238 -------------------------------------------------------------------------------*/
239 void LCMInit(void){ //LCM初始化
240 1 WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
241 1 WriteCommandLCM(0x0C,1); // 显示开及光标设置
C51 COMPILER V7.50 LCM 11/15/2007 14:43:54 PAGE 5
242 1 WriteCommandLCM(0x06,1); // 显示光标移动设置
243 1 WriteCommandLCM(0x01,1); //显示清屏
244 1 short_delay(250);
245 1 }
246
247 /*----------------------------- Subroutine -------------------------------------
248 Name: lcm write tab data
249 Function:
250 Entry:
251 Exit:
252 Caution:
253 -------------------------------------------------------------------------------*/
254 void LCMwritetab_rst(void){
255 1 unsigned char i;
256 1 WriteCommandLCM(0x01,1);
257 1 del_100ms();
258 1 for(i=0;i<9;i++)
259 1 {
260 2 WritedataLCM(dsp_tab_line[0][i],1);
261 2 }
262 1
263 1 WriteCommandLCM(0xc0,1);
264 1 for(i=0;i<9;i++) {
265 2 WritedataLCM(dsiptabwait[i],1);
266 2 }
267 1 }
268
269 void LCMwritetab(void){
270 1 unsigned char i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -