show_window.lst
来自「此程序是GPS的定位程序」· LST 代码 · 共 679 行 · 第 1/3 页
LST
679 行
213 3 {
214 4 CleanScreen();
215 4 delay_nms(1);
216 4 show_menu_SuDu(); // 速度
217 4 show_menu_sat(); // 使用的卫星数
218 4 show_sum_sat(); // 天空中总卫星数
219 4 key= keyscan();
220 4 if(key==0x08)break;
221 4 }
222 3
223 3 break;
224 3 case 0x08: show_menu_frist();
225 3 break;
226 3 /*等待按键值为8,返回原菜单*/
227 3 default: break;
228 3 }
229 2
230 2 }
231 1
232 1
233 1
234 1 }
235
236 /*****************************************************************/
237 /* 窗口显示函数:基本信息 :第三屏 : */
238 /* 窗口模式: 00000.0000 */
239 /*
240 ----------------------- ------- --------------------------
241 /经度半球 1 'W' 或 'E' \
C51 COMPILER V8.02 SHOW_WINDOW 05/16/2008 10:44:20 PAGE 5
242 | ----------------------- ------- --------------------------
243 | 经度坐标 7 WGS84坐标系统,坐标格式ddmmmmm |
244 | 在第4位数字后省略了一个小数点 |
245 | ----------------------- ------- ---------------------------
246
247 */
248 /*****************************************************************/
249 void show_menu_JingDu()
250 {
251 1 unsigned char temp_jd=0;
252 1
253 1 temp_jd = JD_a-48; // 转换为ASCII
254 1 temp_jd = 19+temp_jd;
255 1 Display_Char(0,1,temp_jd); // 经度的方向
256 1 Display_Char(1,1,62); // :
257 1
258 1 if(buf_full|0x01)
259 1 {
260 2 for(i=0;i<5;i++)
261 2 {
262 3 Display_Char(2+i,1,JD[i]-48);
263 3 }
264 2 Display_Char(7,1,66);
265 2 for(i=1;i<5;i++)
266 2 {
267 3 Display_Char(7+i,1,JD[i+5]-48);
268 3 }
269 2 }
270 1 }
271 /*****************************************************************/
272 /* 窗口显示函数:基本信息 :第三屏 : */
273 /* 窗口模式: 0000.0000 */
274 /*
275 ----------------------- ------- --------------------------
276 /伟度半球 1 'N' 或 'S' \
277 | ----------------------- ------- --------------------------
278 | 纬度坐标 7 WGS84坐标系统,坐标格式ddmmmmm |
279 | 在第4位数字后省略了一个小数点 |
280 | ----------------------- ------- ---------------------------
281
282 */
283 /*****************************************************************/
284 void show_menu_WeiDu()
285 {
286 1
287 1
288 1 unsigned char temp_wd=0;
289 1
290 1 temp_wd = WD_a-48; // 转换为ASCII
291 1 temp_wd = 19+temp_wd;
292 1
293 1 Display_Char(0,3,temp_wd); // 纬度的方向
294 1 Display_Char(1,3,62); // :
295 1 if(buf_full|0x01)
296 1 {
297 2 for(i=0;i<4;i++)
298 2 {
299 3 Display_Char(2+i,3,WD[i]-48);
300 3 }
301 2 Display_Char(6,3,66);
302 2 for(i=0;i<4;i++)
303 2 {
C51 COMPILER V8.02 SHOW_WINDOW 05/16/2008 10:44:20 PAGE 6
304 3 Display_Char(7+i,3,WD[i+5]-48);
305 3 }
306 2 }
307 1 }
308 /*****************************************************************/
309 /* 窗口显示函数:基本信息 :第三屏 : */
310 /* 窗口模式: 000000 */
311 /*
312 ----------------------- ------- -----------------------
313 /年 2 UTC年的最后两位数字 \
314 | ----------------------- ------- ------------------------
315 | 月 2 UTC月, "01".."12" |
316 T | ----------------------- ------- ------------------------
317 i | 日 2 UTC日, "01".."31" |
318 m | ----------------------- ------- ------------------------
319 e | 时 2 UTC时, "00".."23" |
320 | ----------------------- ------- ------------------------
321 | 分 2 UTC分, "00".."59" |
322 | ----------------------- ------- ------------------------
323 \秒 2 UTC秒, "00".."59" /
324 ----------------------- ------- ------------------------
325
326
327 */
328 /*****************************************************************/
329 void show_menu_ShiJian()
330 {
331 1
332 1 unsigned char xdata dsp_count=0; //刷新次数计数器
333 1 unsigned char xdata Bhour=0,Bday=0,Bmonth=0;
334 1 unsigned int xdata Byear=0;
335 1
336 1 CleanScreen();
337 1 delay_nms(100);
338 1 Display_Char(0,3,55); // T
339 1 Display_Char(1,3,62); // :
340 1 delay_nus(100);
341 1
342 1 if(buf_full|0x08) //北京时间转换
343 1 {
344 2 if(Bhour!=((time[0]-0x30)*10+time[1]-0x30)+TIME_AREA)
345 2 {
346 3 Bhour=((time[0]-0x30)*10+time[1]-0x30)+TIME_AREA;
347 3 Bday=(date[0]-0x30)*10+date[1]-0x30;
348 3 Bmonth=(date[2]-0x30)*10+date[3]-0x30;
349 3 Byear=(date[4]-0x30)*10+date[5]-0x30+2000;
350 3 if(Bhour>=24)
351 3 { //如果小时数大于24
352 4 Bhour-=24; //小时数减24
353 4 Bday++; //日期数加1
354 4 switch(Bday)
355 4 { //判断日期
356 5 case 29: //普通年的2月份
357 5 if((!((Byear%400==0)||((Byear%4==0)&&(Byear%100!=0)))&&(Bmonth==2)))
358 5 {
359 6 Bday=1;
360 6 Bmonth++;
361 6 }
362 5 break;
363 5 case 30: //如果是闰年的2月
364 5 if(((Byear%400==0)||((Byear%4==0)&&(Byear%100!=0)))&&(Bmonth==2))
365 5 {
C51 COMPILER V8.02 SHOW_WINDOW 05/16/2008 10:44:20 PAGE 7
366 6 Bday=1;
367 6 Bmonth++;
368 6 }
369 5 break;
370 5 case 31:
371 5 if((Bmonth==4)||(Bmonth==6)||(Bmonth==9)||(Bmonth==11))
372 5 {
373 6 Bday=1;
374 6 Bmonth++;
375 6 }
376 5 break;
377 5 case 32:
378 5 Bday=1;
379 5 Bmonth++;
380 5 if(Bmonth>=13)
381 5 {
382 6 Byear++;
383 6 Bmonth=1;
384 6 }
385 5 break;
386 5 }
387 4 }
388 3 }
389 2
390 2 Display_Char(0,1,39); // D
391 2 Display_Char(1,1,62); // :
392 2
393 2 Display_Char(3,1,2); // 2
394 2 Display_Char(4,1,0); // 0
395 2 Display_Char(5,1,(Byear%100)/10);
396 2 Display_Char(6,1,Byear%10);
397 2 Display_Char(7,1,68);
398 2 Display_Char(8,1,Bmonth/10);
399 2 Display_Char(9,1,Bmonth%10);
400 2 Display_Char(10,1,68);
401 2 Display_Char(11,1,Bday/10);
402 2 Display_Char(12,1,Bday%10);
403 2
404 2 Display_Char(0,5,52); // Q
405 2 Display_Char(1,5,62); // :
406 2 Display_Character(4,5,28); // 星期
407 2 Display_Character(6,5,29);
408 2
409 2 switch(week(Byear%100,Bmonth,Bday))
410 2 {
411 3 case 0:
412 3 Display_Char(8,5,7); // 星期日
413 3 break;
414 3 case 1:
415 3 Display_Char(8,5,1); // 星期一
416 3 break;
417 3 case 2:
418 3 Display_Char(8,5,2); // 星期二
419 3 break;
420 3 case 3:
421 3 Display_Char(8,5,3); // 星期三
422 3 break;
423 3 case 4:
424 3 Display_Char(8,5,4); // 星期四
425 3 break;
426 3 case 5:
427 3 Display_Char(8,5,5); // 星期五
C51 COMPILER V8.02 SHOW_WINDOW 05/16/2008 10:44:20 PAGE 8
428 3 break;
429 3 case 6:
430 3 Display_Char(8,5,6); // 星期六
431 3 break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?