📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 04/07/2006 23:20:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN Lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "52init.h"
2 #include "distable.h"
3 sbit LcdDI=P1^0;
4 sbit LcdRW=P1^1;
5 sbit LcdEN=P1^2;
6 sbit LcdCS1=P1^4;
7 sbit LcdCS2=P1^5;
8 sfr DatBus=0x80;
9 uchar xdata PicBuf[64];
10
11
12 uchar code EchoMenu[]={"Echo Cancel "};
13 uchar code EqMenu[] ={"Equilizer "};
14 uchar code FFTMenu[] ={"FFT Analyse "};
15 uchar code LMSMenu[] ={"LMS Analyse "};
16
17 void lcddelay(uchar delay_num) //22.1184 the loop time is 0.543us
18 {
19 1 uchar i,k; //delay_num 0.1ms/num
20 1 for(i=delay_num;i>0;i--)
21 1 {
22 2 for(k=100;k>0;k--)
23 2 {;}
24 2 }
25 1 }
26 void LcdChkBusy(void)
27 {
28 1 uchar CheckTmp;
29 1 DatBus=0xff;
30 1 LcdEN=1;
31 1 CheckTmp=DatBus;
32 1 CheckTmp&=0x80;
33 1 LcdEN=0;
34 1 lcddelay(1);
35 1 /*
36 1 while(CheckTmp==0x80)
37 1 {
38 1 DatBus=0xff;
39 1 LcdEN=1;
40 1 CheckTmp=DatBus;
41 1 CheckTmp&=0x80;
42 1 LcdEN=0;
43 1 }
44 1 */
45 1 }
46 void LcdCmdWr(bit DispArea,uchar CmdP)
47 {
48 1 if(DispArea==0)
49 1 {
50 2 LcdCS1=1;
51 2 LcdCS2=0;
52 2 }
53 1 else
54 1 {
55 2 LcdCS1=0;
C51 COMPILER V7.50 LCD 04/07/2006 23:20:56 PAGE 2
56 2 LcdCS2=1;
57 2 }
58 1 LcdDI=0;
59 1 LcdRW=1;
60 1 LcdChkBusy();
61 1 LcdRW=0;
62 1 DatBus=CmdP;
63 1 LcdEN=1;
64 1 LcdEN=0;
65 1 }
66 void LcdDatWr(bit DispArea,uchar DatP)
67 {
68 1 if(DispArea==0)
69 1 {
70 2 LcdCS1=1;
71 2 LcdCS2=0;
72 2 }
73 1 else
74 1 {
75 2 LcdCS1=0;
76 2 LcdCS2=1;
77 2 }
78 1 LcdDI=0;
79 1 LcdRW=1;
80 1 LcdChkBusy();
81 1 LcdDI=1;
82 1 LcdRW=0;
83 1 DatBus=DatP;
84 1 LcdEN=1;
85 1 LcdEN=0;
86 1 }
87 uchar LcdDatRd(bit DispArea)
88 {
89 1 uchar BufDatTmp;
90 1 if(DispArea==0)
91 1 {
92 2 LcdCS1=1;
93 2 LcdCS2=0;
94 2 }
95 1 else
96 1 {
97 2 LcdCS1=0;
98 2 LcdCS2=1;
99 2 }
100 1 LcdDI=0;
101 1 LcdRW=1;
102 1 LcdChkBusy();
103 1 LcdDI=1;
104 1 DatBus=0xff;
105 1 LcdEN=1;
106 1 BufDatTmp=DatBus;
107 1 LcdEN=0;
108 1 return(BufDatTmp);
109 1 }
110 void LcdInit(void)
111 {
112 1 LcdCmdWr(0,0xc0);
113 1 LcdCmdWr(1,0xc0);
114 1 LcdCmdWr(0,0x3f);
115 1 LcdCmdWr(1,0x3f);
116 1 }
117 void LcdClear(void)
C51 COMPILER V7.50 LCD 04/07/2006 23:20:56 PAGE 3
118 {
119 1 uchar PageTmp,ColumnTmp,CmdTmp;
120 1 for(PageTmp=0;PageTmp<8;PageTmp++)
121 1 {
122 2 CmdTmp=PageTmp|0xb8;
123 2 LcdCmdWr(0,CmdTmp);
124 2 LcdCmdWr(1,CmdTmp);
125 2 LcdCmdWr(0,0x40);
126 2 LcdCmdWr(1,0x40);
127 2 for(ColumnTmp=0x0;ColumnTmp<0x40;ColumnTmp++)
128 2 {
129 3 LcdDatWr(0,0x00);
130 3 LcdDatWr(1,0x00);
131 3 }
132 2 }
133 1 }
134 void DisMod(uchar ColP,uchar ModP)
135 {
136 1 LcdCmdWr(0,0x40+ColP);
137 1 switch(ModP)
138 1 {
139 2 case 0:
140 2 LcdDatWr(0,0x00);
141 2 break;
142 2 case 1:
143 2 LcdDatWr(0,0x80);
144 2 break;
145 2 case 2:
146 2 LcdDatWr(0,0xc0);
147 2 break;
148 2 case 3:
149 2 LcdDatWr(0,0xe0);
150 2 break;
151 2 case 4:
152 2 LcdDatWr(0,0xf0);
153 2 break;
154 2 case 5:
155 2 LcdDatWr(0,0xf8);
156 2 break;
157 2 case 6:
158 2 LcdDatWr(0,0xfc);
159 2 break;
160 2 case 7:
161 2 LcdDatWr(0,0xfe);
162 2 break;
163 2 }
164 1 }
165 void PicFft(void)
166 {
167 1 uchar i,ii;
168 1 uchar ByteNum,ByteMod,RowTmp,CmdTmp;
169 1 for(i=0;i<64;i++)
170 1 {
171 2 ByteNum=PicBuf[i]>>3;
172 2 ByteMod=PicBuf[i]%8;
173 2 for(RowTmp=0;RowTmp<ByteNum;RowTmp++)
174 2 {
175 3 CmdTmp=(7-RowTmp)|0xb8;
176 3 LcdCmdWr(0,CmdTmp);
177 3 LcdCmdWr(0,0x40+i);
178 3 LcdDatWr(0,0xff);
179 3 }
C51 COMPILER V7.50 LCD 04/07/2006 23:20:56 PAGE 4
180 2 if(ByteMod!=0)
181 2 {
182 3 CmdTmp=(7-ByteNum)|0xb8;
183 3 LcdCmdWr(0,CmdTmp);
184 3 DisMod(i,ByteMod);
185 3 }
186 2 else
187 2 {
188 3 if(ByteNum==0)
189 3 {CmdTmp=0xc0;}
190 3 }
191 2 for(ii=0xb8;ii<CmdTmp;ii++)
192 2 {
193 3 LcdCmdWr(0,ii);
194 3 LcdCmdWr(0,0x40+i);
195 3 LcdDatWr(0,0x00);
196 3 }
197 2 }
198 1 }
199
200 void DisChar(uchar PageAddrP,uchar RowAddrP,uint DisDatP)
201 {
202 1 uchar cc,PageTmp,RowTmp;
203 1 uint TabTmp;
204 1 PageTmp=PageAddrP|0xb8;
205 1 RowTmp =RowAddrP+0x40;
206 1 TabTmp =DisDatP-0x20;
207 1 TabTmp*=5;
208 1 LcdCmdWr(1,PageTmp);
209 1 LcdCmdWr(1,RowTmp);
210 1 for(cc=0;cc<5;cc++)
211 1 {
212 2 LcdDatWr(1,ziku[TabTmp+cc]);
213 2 }
214 1 }
215
216 void DisEcho(void)
217 {
218 1 uchar i,OffSetTmp;
219 1 for(i=0;i<12;i++)
220 1 {
221 2 OffSetTmp=i*5;
222 2 DisChar(0,OffSetTmp,EchoMenu[i]);
223 2 }
224 1 }
225 void DisEq(void)
226 {
227 1 uchar i,OffSetTmp;
228 1 for(i=0;i<12;i++)
229 1 {
230 2 OffSetTmp=i*5;
231 2 DisChar(2,OffSetTmp,EqMenu[i]);
232 2 }
233 1 }
234
235 void DisFFT(void)
236 {
237 1 uchar i,OffSetTmp;
238 1 for(i=0;i<12;i++)
239 1 {
240 2 OffSetTmp=i*5;
241 2 DisChar(4,OffSetTmp,FFTMenu[i]);
C51 COMPILER V7.50 LCD 04/07/2006 23:20:56 PAGE 5
242 2 }
243 1 }
244 void DisLMS(void)
245 {
246 1 uchar i,OffSetTmp;
247 1 for(i=0;i<12;i++)
248 1 {
249 2 OffSetTmp=i*5;
250 2 DisChar(6,OffSetTmp,LMSMenu[i]);
251 2 }
252 1 }
253
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 654 ----
CONSTANT SIZE = 532 ----
XDATA SIZE = 64 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -