📄 1602-miaobiao.lst
字号:
187 * *
188 * 设定显示位置 *
189 * *
190 **********************************************************/
191
192 void lcd_pos(uchar pos)
193 {
194 1 lcd_wcmd(pos | 0x80); //数据指针=80+地址变量
195 1 }
196
197 /********************************************************
198 显示函数
199 *********************************************************/
200 void play()
201 {
202 1 uchar i;
203 1 for(i=0;i<6;i++)
204 1 {
205 2 display2[i]=display[i]+0x30;
206 2 }
207 1
208 1 display2[7]=display[6]/10+0x30; //时单位数据处理
209 1 display2[6]=display[6]%10+0x30;
210 1
211 1 lcd_pos(0x45);
212 1 lcd_wdat(display2[7]); //显示时
213 1 lcd_wdat(display2[6]);
214 1 lcd_wdat(0x3a); //显示':'
215 1
216 1 lcd_wdat(display2[5]); //显示分
217 1 lcd_wdat(display2[4]);
218 1 lcd_wdat(0x3a); //显示':'
219 1
220 1 lcd_wdat(display2[3]); //显示秒
221 1 lcd_wdat(display2[2]);
222 1 lcd_wdat(0x3a); //显示':'
223 1
224 1 lcd_wdat(display2[1]); //显示毫秒
225 1 lcd_wdat(display2[0]);
226 1 }
227
228 /********************************************************
229 主函数
230 *********************************************************/
231 main()
232 {
233 1 uchar m;
234 1
235 1 TMOD=0x01;
236 1 TH0=0xdc; TL0=0x00; //50ms定时
237 1 EA=1; ET0=1;
238 1
239 1 lcd_init();
240 1
241 1 lcd_pos(0x00); //设置显示位置为第一行
C51 COMPILER V8.02 1602_MIAOBIAO 06/29/2010 13:14:05 PAGE 5
242 1 for(m=0;m<16;m++)
243 1 lcd_wdat(cdis1[m]); //显示字符
244 1
245 1 lcd_pos(0x40); //设置显示位置为第二行
246 1 for(m=0;m<16;m++)
247 1 {
248 2 lcd_wdat(cdis2[m]); //显示字符
249 2 delay1(60);
250 2 }
251 1
252 1 delay1(1000);
253 1
254 1 lcd_pos(0x40); //设置显示位置为第二行
255 1 for(m=0;m<16;m++)
256 1 lcd_wdat(cdis3[m]);
257 1
258 1 while(1)
259 1 {
260 2 if(K3==0)
261 2 {
262 3 KeyCount++; //计数
263 3 beep();
264 3 delay1(100);
265 3
266 3 switch (KeyCount)
267 3 {
268 4 case 1:
269 4 TR0=1; //启动中断
270 4 lcd_pos(0x00);
271 4 for(m=0;m<16;m++)
272 4 lcd_wdat(cdis4[m]);
273 4 break;
274 4
275 4 case 2:
276 4 TR0=0; //停止中断
277 4 lcd_pos(0x00);
278 4 for(m=0;m<16;m++)
279 4 lcd_wdat(cdis5[m]);
280 4 break;
281 4
282 4 case 3:
283 4 TR0=1; //启动中断
284 4 lcd_pos(0x00);
285 4 for(m=0;m<16;m++)
286 4 lcd_wdat(cdis6[m]);
287 4 break;
288 4
289 4 case 4:
290 4 TR0=0; //停止中断
291 4 lcd_pos(0x00);
292 4 for(m=0;m<16;m++)
293 4 lcd_wdat(cdis7[m]);
294 4 break;
295 4
296 4 default:
297 4 TR0=0; //停止中断
298 4 break;
299 4 }
300 3 }
301 2 if(K4==0)
302 2 {
303 3 TR0=0; //停止中断
C51 COMPILER V8.02 1602_MIAOBIAO 06/29/2010 13:14:05 PAGE 6
304 3 KeyCount=0;
305 3 for(m=0;m<8;m++)
306 3 display[m]=0x00; //计时单元清零
307 3 lcd_pos(0x00); //设置显示位置为第一行
308 3 for(m=0;m<16;m++)
309 3 lcd_wdat(cdis1[m]);
310 3 beep();
311 3 delay1(100);
312 3 }
313 2
314 2 play();
315 2 }
316 1 }
317
318 /*********************************************************
319 * *
320 * Time0中断函数 *
321 * *
322 **********************************************************/
323 void Time0(void) interrupt 1 using 0
324 {
325 1 TH0=0xdc; //10ms定时
326 1 TL0=0x00;
327 1
328 1 display[0]++; //0.01S
329 1
330 1 if(display[0]==10)
331 1 {
332 2 display[0]=0;
333 2 display[1]++; //0.1S
334 2 }
335 1 if(display[1]==10)
336 1 {
337 2 display[1]=0;
338 2 display[2]++; //秒个位
339 2 }
340 1 if(display[2]==10)
341 1 {
342 2 display[2]=0;
343 2 display[3]++; //秒十位
344 2 }
345 1 if(display[3]==6)
346 1 {
347 2 display[3]=0;
348 2 display[4]++; //分个位
349 2 }
350 1 if(display[4]==10)
351 1 {
352 2 display[4]=0;
353 2 display[5]++; //分十位
354 2 }
355 1 if(display[5]==6)
356 1 {
357 2 display[5]=0;
358 2 display[6]++; //时
359 2 }
360 1 if(display[6]==24)
361 1 {
362 2 display[6]=0;
363 2 }
364 1 }
365
C51 COMPILER V8.02 1602_MIAOBIAO 06/29/2010 13:14:05 PAGE 7
366 /*********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 634 ----
CONSTANT SIZE = 136 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -