📄 lcd.lst
字号:
C51 COMPILER V7.09 LCD 12/06/2008 18:59:39 PAGE 4
180 5 break;
181 5 case 0xb0:
182 5 // key=11;
183 5 break;
184 5 case 0x70:
185 5 // key=12;
186 5 break;
187 5 }
188 4 while(temp!=0xf0)
189 4 {
190 5 temp=P1;
191 5 temp=temp & 0xf0;
192 5 }
193 4 DisplayFailure ();
194 4 }
195 3 }
196 2 P1=0xf7; //扫描第四行
197 2 temp=P1;
198 2 temp=temp & 0xf0;
199 2 if (temp!=0xf0)
200 2 {
201 3 delay(5);
202 3 temp=P1;
203 3 temp=temp & 0xf0;
204 3 if (temp!=0xf0)
205 3 {
206 4 switch(temp)
207 4 {
208 5 case 0xe0:
209 5 // key=13;
210 5 break;
211 5 case 0xd0:
212 5 // key=14;
213 5 break;
214 5 case 0xb0:
215 5 // key=15;
216 5 break;
217 5 case 0x70:
218 5 // key=16;
219 5 break;
220 5 }
221 4 while(temp!=0xf0)
222 4 {
223 5 temp=P1;
224 5 temp=temp & 0xf0;
225 5 }
226 4 DisplayFailure ();
227 4 }
228 3 }
229 2 }
230 1 }
231
232 void write_com(uchar com) //向LCD写命令
233 {
234 1 lcdrs=0;
235 1 pa=com;
236 1 delay(5);
237 1 lcden=1;
238 1 delay(5);
239 1 lcden=0;
240 1 }
241
C51 COMPILER V7.09 LCD 12/06/2008 18:59:39 PAGE 5
242 void write_data(uchar date) //向LCD写数据
243 {
244 1 lcdrs=1;
245 1 pa=date;
246 1 delay(5);
247 1 lcden=1;
248 1 delay(5);
249 1 lcden=0;
250 1 }
251 void DisplayMusicIfo (uchar *table) //显示当前播放的音乐信息,名字幅值与时间
252 {
253 1 uchar n ;
254 1 for(n=0;n<11;n++)
255 1 {
256 2 delay(20);
257 2 write_data(table[n]);
258 2 }
259 1 write_com(0x80+0x40);
260 1 for(n=11;n<27;n++)
261 1 {
262 2 write_data(table[n]);
263 2 }
264 1 }
265 void DisplayFailure () //未定义键,显示错误提示
266 {
267 1 uchar n ;
268 1 write_com(0x01);
269 1 for(n=0;n<8;n++)
270 1 {
271 2 delay(20);
272 2 write_data(tableFailure[n]);
273 2 }
274 1 write_com(0x80+0x40);
275 1 for(n=8;n<20;n++)
276 1 {
277 2 write_data(tableFailure[n]);
278 2 }
279 1 }
280 void Timer0(void) interrupt 1 //定时器0中断函数
281 {
282 1
283 1 daccs=0;
284 1 dacwr=0;
285 1 if(music123==1) //DAC显示波形
286 1 { pb= Music1[musicnum];
287 2
288 2 }
289 1 if(music123==2)
290 1 { pb= Music2[musicnum];
291 2
292 2 }
293 1 if(music123==3)
294 1 { pb= Music3[musicnum];
295 2
296 2 }
297 1 musicnum++;
298 1 if(musicnum==193) //显示歌曲信息,关定时器停止显示
299 1 {
300 2 musicnum=0;
301 2 if(music123==1)
302 2 {
303 3 lcden=0;
C51 COMPILER V7.09 LCD 12/06/2008 18:59:39 PAGE 6
304 3 write_com(0x01);
305 3 DisplayMusicIfo(table1);
306 3
307 3 }
308 2 if(music123==2)
309 2 {
310 3 lcden=0;
311 3 write_com(0x01);
312 3 DisplayMusicIfo(table2);
313 3
314 3 }
315 2 if(music123==3)
316 2 {
317 3 lcden=0;
318 3 write_com(0x01);
319 3 DisplayMusicIfo(table3);
320 3
321 3 }
322 2 TR0 = 0;
323 2 }
324 1
325 1
326 1 }
327 void init() //系统初始化,8255,LCD
328 {
329 1 control8255=0x80;
330 1 lcden=0;
331 1 write_com(0x38);
332 1 write_com(0x0f);
333 1 write_com(0x06);
334 1 write_com(0x01);
335 1 write_com(0x80);
336 1 }
337
338 void main()
339 {
340 1 init();
341 1 TH0=131;
342 1 TL0=131;
343 1 //T0=65536-125;
344 1 TMOD = 0x02;
345 1 EA = 1;
346 1 ET0 = 1;
347 1 TR0 = 1;
348 1 keyscan();
349 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 653 ----
CONSTANT SIZE = 684 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 7
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 + -