找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9047|回复: 22
打印 上一主题 下一主题
收起左侧

带语音播报的GPS系统 单片机程序 原理图和PCB都有

  [复制链接]
跳转到指定楼层
楼主
带语音播报的GPS系统,原理图和pcb文件,是用ad画的,大家可以到工厂直接去加工.


全部资料(压缩包)下载:
实例8 带语音播报的GPS系统.rar (1.65 MB, 下载次数: 269)

源程序有语音录制程序,整体程序,组合放音程序一共3个程序。

下面是部分程序预览(完整版本请下载本帖附件):
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit lcden=P3^4;                           //液晶使能端
  5. sbit lcdrs=P3^5;
  6. sbit led=P2^0;                                   //指示灯
  7. sbit key1=P2^2;                                   //按键
  8. sbit key2=P2^3;
  9. sbit key3=P2^4;
  10. sbit du=P2^5;                                   //语音发声控制端
  11. uchar flag,i=0;
  12. bit startflag;
  13. uchar shishi,shige,a,num;
  14. uchar suge,sushifen,subaifen,suqianfen;
  15. uint time,weidu,jingdu;
  16. uchar table0[45];
  17. uchar code table[]={"北京时间"};
  18. uchar code table1[]={"0123456789"};
  19. uchar code tablewei[]={"纬度:N "};
  20. uchar code tablejing[]={"经度:E  "};
  21. uchar code tabledu[]={"度"};
  22. uchar code tablesu1[]={"速度:"};
  23. uchar code tablesu2[]={"km/h"};
  24. uchar code table2[]={
  25. //宽的像素数,高的像素数,宽的字节数,参数设置可选
  26. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  29. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  31. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x20,0x00,0x00,0x00,0x00,0x18,0x00,
  32. 0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x1E,0x2C,0x78,0x00,0x00,0x00,0x00,0x78,0x00,
  33. 0x00,0x00,0x7C,0xF8,0x00,0x00,0x01,0x1F,0xFF,0xE3,0x00,0x00,0x00,0x00,0xFE,0x00,
  34. 0x00,0x07,0xFF,0xFF,0x00,0x00,0x07,0xF9,0x8C,0xF3,0xC0,0x00,0x00,0x01,0xFE,0x00,
  35. 0x00,0x1C,0x00,0x01,0x80,0x00,0x07,0xE1,0x6C,0x6E,0x00,0x00,0x00,0x01,0xFC,0x00,
  36. 0x00,0x0F,0xFF,0xFF,0x00,0x00,0x0E,0x7F,0x19,0xC6,0x00,0x00,0x00,0x03,0xFE,0x00,
  37. 0x00,0x0C,0x00,0x02,0x00,0x00,0x0E,0x33,0x19,0x8E,0x00,0x00,0x00,0x0F,0xFF,0x00,
  38. 0x00,0x07,0xFF,0xFE,0x00,0x00,0x06,0xBF,0xFF,0x7C,0x00,0x00,0x00,0x0F,0xF1,0x00,
  39. 0x00,0x0F,0xFF,0xFC,0x00,0x00,0x0E,0x3F,0xFE,0xF0,0x00,0x00,0x00,0x0F,0xF8,0x00,
  40. 0x00,0x1F,0xFD,0xEC,0x00,0x00,0x1F,0xF0,0x0F,0xFC,0x00,0x00,0x00,0x1F,0xFE,0x00,
  41. 0x00,0x0F,0xFF,0xFC,0x00,0x00,0x0F,0xFF,0xFE,0xF8,0x00,0x00,0x00,0x7F,0xFF,0x00,
  42. 0x00,0x3F,0x7F,0xF8,0x00,0x00,0x3E,0x00,0x01,0xE8,0x00,0x00,0x00,0xC3,0xC1,0x80,
  43. 0x00,0x3F,0xFB,0xD8,0x00,0x00,0x19,0xFF,0xFF,0x20,0x00,0x00,0x00,0x03,0xC0,0x00,
  44. 0x0F,0xFF,0xFF,0xFF,0x80,0x00,0xFF,0xC7,0x8D,0xF8,0x00,0x0F,0xFF,0xFF,0xFF,0x80,
  45. 0x0F,0xDE,0xFF,0xFF,0xC0,0x00,0xFC,0x80,0x1F,0xF4,0x00,0x0F,0x3F,0xFF,0xFF,0xC0,
  46. 0x1F,0xFF,0xFF,0xFF,0xC0,0x01,0xA6,0xDF,0xDF,0x3C,0x00,0x1E,0x3F,0xFF,0xFF,0xC0,
  47. 0x1F,0xFF,0xFF,0xFF,0x00,0x01,0xFF,0x9F,0x9B,0xF0,0x00,0x1F,0x00,0x3F,0xFF,0x00,
  48. 0x1F,0xFF,0xFF,0xFF,0x80,0x01,0xF1,0x1F,0xBC,0xF8,0x00,0x1F,0xE0,0x00,0x7F,0x80,
  49. 0x3F,0xFF,0xFF,0xFF,0x80,0x03,0xFF,0xB1,0xB7,0xF8,0x00,0x3F,0xFF,0xE0,0x1F,0x80,
  50. 0x3F,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0xE0,0x00,0x3F,0xFF,0xF0,0x0E,0x00,
  51. 0x3E,0x00,0x00,0x1F,0x00,0x03,0xFF,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xF0,0x0F,0x00,
  52. 0x3C,0x00,0x00,0x1F,0x00,0x07,0xFE,0xFF,0xFF,0xF0,0x00,0x7F,0xFF,0xE0,0x1F,0x00,
  53. 0x30,0x00,0x00,0x0C,0x00,0x07,0xFF,0xFF,0x7F,0xC0,0x00,0x7F,0xFF,0xC0,0x1C,0x00,
  54. 0x3F,0xFF,0xFF,0xFE,0x00,0x07,0xFF,0xFF,0xFF,0xE0,0x00,0x7F,0xFF,0x00,0x3E,0x00,
  55. 0x3F,0xFF,0xFF,0xFE,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x00,0xFF,0xF8,0x00,0xFE,0x00,
  56. 0x3F,0xFF,0xFF,0xF8,0x00,0x0F,0xFF,0xFF,0xFF,0x80,0x00,0xFF,0xC0,0x01,0xF8,0x00,
  57. 0x3F,0xFF,0xFF,0xFC,0x00,0x0F,0xFF,0xFF,0xBF,0xC0,0x00,0xFC,0x00,0x07,0xFC,0x00,
  58. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  59. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  61. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  63. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  64. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  65. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  66. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
  67. 0x00,0x07,0xF0,0x00,0x00,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,
  68. 0x00,0x0F,0xF8,0x00,0x00,0x00,0x03,0xF3,0xF0,0x00,0x00,0x00,0x3E,0x1C,0x00,0x00,
  69. 0x00,0x3F,0xFE,0x00,0x00,0x00,0x03,0xF8,0xE0,0x00,0x00,0x00,0x7B,0xD8,0x00,0x00,
  70. 0x00,0x7D,0x82,0x00,0x00,0x00,0x01,0xFE,0xE0,0x00,0x00,0x00,0x7F,0x5C,0x00,0x00,
  71. 0x00,0xCE,0x00,0x00,0x00,0x00,0x07,0xFF,0xF0,0x00,0x00,0x00,0xF7,0xB8,0x00,0x00,
  72. 0x00,0xEC,0x00,0x00,0x00,0x00,0x0F,0xFB,0xF0,0x00,0x00,0x00,0xF7,0x78,0x00,0x00,
  73. 0x01,0xF8,0x00,0x00,0x00,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,
  74. 0x01,0xB8,0x00,0x00,0x00,0x00,0x03,0xE1,0xE0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,
  75. 0x03,0xF3,0xC0,0x00,0x00,0x00,0x0F,0xFB,0xC0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,
  76. 0x03,0xC7,0xFE,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,
  77. 0x03,0xE0,0x78,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,
  78. 0x07,0x8F,0xFC,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,
  79. 0x07,0xCE,0x70,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,
  80. 0x07,0xC0,0x78,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xEF,0xC0,0x00,0x00,
  81. 0x03,0xC0,0xF0,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x07,0xFF,0x80,0x00,0x00,
  82. 0x03,0xC1,0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x04,0x6F,0x80,0x00,0x00,
  83. 0x01,0xC3,0x80,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,
  84. 0x00,0xF7,0x80,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x0E,0x3F,0x00,0x00,0x00,
  85. 0x00,0x7E,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,
  86. 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,
  87. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  88. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  89. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  90. };

  91. uchar code table3[]=
  92. {/*------------------------------------------------------------------------------
  93. ;  源文件 / 文字 : C:\Users\wzt\Desktop\制作人2.bmp字模
  94. ;  宽×高(像素): 128×64
  95. ------------------------------------------------------------------------------*/
  96. //宽的像素数,高的像素数,宽的字节数,参数设置可选
  97. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  98. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
  99. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,
  100. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x7F,0x80,0x00,0x80,0x00,0x00,0x00,
  101. 0x00,0x00,0x00,0x0E,0x00,0x00,0x1F,0xF0,0x3F,0x3F,0xC0,0x05,0xC0,0x00,0x00,0x00,
  102. 0x00,0x00,0x00,0x0F,0x0E,0x07,0xFF,0xF0,0x3F,0x38,0xC0,0x0C,0xCE,0x00,0x00,0x00,
  103. 0x00,0x00,0x00,0x07,0x7C,0x07,0xFE,0x00,0x07,0xF9,0x80,0x0E,0xEE,0x00,0x00,0x00,
  104. 0x00,0x00,0x00,0x07,0xFC,0x03,0x9C,0x00,0x7F,0xFF,0xC0,0x0E,0xEE,0x00,0x00,0x00,
  105. 0x00,0x00,0x00,0x3F,0xC0,0x00,0x1C,0x00,0x7F,0xDF,0xC0,0x7F,0xFE,0x00,0x00,0x00,
  106. 0x00,0x00,0x01,0xFF,0x1F,0x00,0x1C,0x00,0x0F,0xE0,0x00,0xFF,0xFF,0x00,0x00,0x00,
  107. 0x00,0x1C,0x01,0xE7,0xFF,0x00,0x1C,0x00,0x1F,0xFF,0xC1,0xF0,0x07,0x80,0x60,0x00,
  108. 0x00,0x3E,0x03,0x07,0xFF,0x00,0x0C,0x00,0x3E,0x7F,0xC1,0xE3,0xF7,0x80,0x60,0x00,
  109. 0x00,0x7C,0x00,0xFF,0x87,0x00,0x0C,0x00,0x7E,0x0E,0x01,0xC7,0xFB,0x80,0xF0,0x00,
  110. 0x00,0xFC,0x00,0xFE,0xE7,0x00,0x0C,0x00,0xF6,0x0E,0x00,0x1F,0xFD,0x00,0xF8,0x00,
  111. 0x01,0xDE,0x00,0xFE,0xE7,0x00,0x0C,0x0C,0xE6,0xFF,0xC0,0x03,0xFC,0x01,0x98,0x60,
  112. 0x03,0xC7,0x00,0x77,0x7F,0x00,0x0F,0xFE,0xC6,0x7F,0xC3,0xFB,0xE0,0x03,0x98,0x60,
  113. 0x07,0xBB,0x80,0x73,0xF7,0x00,0xFF,0xFE,0x06,0x0C,0x03,0xFF,0xF8,0x07,0xFE,0x60,
  114. 0xFF,0x3D,0xC0,0x77,0xE7,0x0F,0xFF,0xE0,0x0E,0x0C,0x31,0xFF,0xFE,0x07,0xDF,0xE0,
  115. 0xFF,0xFD,0xC0,0x3F,0xE7,0x0F,0xF0,0x00,0x0E,0xFF,0xF0,0x03,0xFF,0x0C,0xFF,0xE0,
  116. 0x7D,0xFE,0xE0,0x38,0xFF,0x84,0x00,0x00,0x0F,0xFF,0xF0,0x27,0x00,0x1F,0xF8,0xF0,
  117. 0x00,0xEE,0xF0,0x3B,0xFF,0x80,0x00,0x00,0x06,0x00,0x00,0x3F,0x00,0x1F,0x8E,0x78,
  118. 0x00,0xFE,0x70,0x3B,0xF7,0x80,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x38,0x0F,0xFC,
  119. 0x0F,0x7C,0x78,0x1C,0xDB,0x80,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x78,0xE7,0xFC,
  120. 0x3F,0x38,0x78,0x1C,0xD9,0x80,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xF0,0xFF,0xCC,
  121. 0x3E,0xBC,0x38,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0xE0,0x7E,0xC0,
  122. 0x01,0xCB,0xF8,0x00,0x00,0x00,0x70,0x81,0x30,0x07,0x00,0x00,0x00,0xC7,0xFE,0x40,
  123. 0x01,0xC1,0xF8,0x00,0x00,0x00,0xB0,0x83,0x60,0x07,0x00,0x00,0x00,0x7F,0xFE,0x00,
  124. 0x00,0xC0,0x00,0x00,0x00,0x01,0xFA,0x83,0x7E,0x06,0x00,0x00,0x00,0x7F,0xF8,0x00,
  125. 0x00,0xC0,0x00,0x00,0x00,0x01,0xFE,0x87,0xF0,0x06,0x00,0x00,0x00,0x00,0x70,0x00,
  126. 0x01,0xC0,0x00,0x00,0x00,0x00,0x32,0x8F,0xB0,0x06,0x00,0x00,0x00,0x00,0x63,0x00,
  127. 0x03,0xC0,0x00,0x00,0x00,0x00,0xFA,0x81,0xBE,0x06,0x00,0x00,0x00,0x00,0x77,0x00,
  128. 0x00,0x80,0x00,0x00,0x00,0x00,0xAA,0x81,0xB0,0x06,0x00,0x00,0x00,0x00,0x7E,0x00,
  129. 0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0x81,0xB0,0x07,0x00,0x00,0x00,0x00,0x3E,0x00,
  130. 0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0x81,0xBE,0x0D,0x80,0x00,0x00,0x00,0x1E,0x00,
  131. 0x00,0x00,0x00,0x00,0x00,0x00,0xB8,0x81,0xB0,0x18,0xC0,0x00,0x00,0x00,0x00,0x00,
  132. 0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x83,0xB0,0x30,0x70,0x00,0x00,0x00,0x00,0x00,
  133. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  134. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  135. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  136. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  137. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  138. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  139. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  140. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  141. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  142. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  143. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  144. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  145. 0x00,0x00,0x20,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0x00,
  146. 0x0F,0xF0,0x27,0x82,0x18,0x00,0x01,0xD6,0x03,0xF0,0x00,0x76,0xC1,0xF8,0x03,0x00,
  147. 0x01,0x80,0x24,0x03,0x7E,0x00,0x00,0x5C,0x02,0x90,0x00,0x57,0x80,0x60,0x1F,0xF0,
  148. 0x01,0x80,0xFF,0xC0,0x18,0x00,0x00,0x58,0x02,0xD0,0x00,0x7F,0x00,0x6E,0x18,0x30,
  149. 0x01,0x80,0x24,0x02,0xFF,0x00,0x01,0xD3,0x02,0xD0,0x00,0x6B,0x03,0xF8,0x0F,0xC0,
  150. 0x07,0xE0,0x37,0xC2,0x38,0x00,0x01,0x3E,0x02,0xD0,0x00,0x7F,0x80,0x60,0x03,0x00,
  151. 0x01,0x80,0x67,0x00,0xFF,0x00,0x01,0xDC,0x02,0xD0,0x00,0x57,0x80,0xF0,0x0F,0xC0,
  152. 0x01,0x80,0xA6,0xC3,0x6C,0x00,0x00,0x56,0x03,0xD0,0x00,0x6F,0xC0,0xD8,0x03,0xC0,
  153. 0x01,0x80,0x26,0xC7,0x7C,0x00,0x00,0x53,0x83,0x70,0x00,0x7B,0x61,0x8C,0x03,0x60,
  154. 0x01,0xF0,0x67,0x40,0xCC,0x00,0x01,0xDC,0x06,0x18,0x00,0x6F,0x03,0x0F,0x1F,0xF8,
  155. 0x1F,0xF0,0x2E,0x21,0x9C,0x00,0x00,0xD8,0x0C,0x0F,0x00,0x67,0x0E,0x00,0x00,0x00,
  156. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  157. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  158. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  159. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  160. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  161. };

  162. uchar code table4[]=
  163. {

  164. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  165. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  166. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  167. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  168. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  169. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  170. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  171. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  172. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  173. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  174. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  175. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  176. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  177. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  178. 0x00,0x00,0x03,0x80,0x00,0xE0,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  179. 0x00,0x03,0xE3,0xE0,0x00,0xF8,0x07,0xC0,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
  180. 0x00,0x03,0xF9,0xFC,0x06,0x7F,0x07,0xFF,0xFF,0x78,0x0F,0xC1,0xE0,0x38,0x00,0x00,
  181. 0x00,0x1F,0xFF,0xFF,0x87,0xFF,0xE0,0x1E,0x3F,0x3E,0x0F,0xC1,0xF8,0xFF,0xE0,0x00,
  182. 0x00,0x7B,0xFF,0x0F,0x87,0xC3,0xE0,0x7E,0x0F,0x1E,0x07,0xC3,0xF0,0x39,0xC0,0x00,
  183. 0x00,0xE0,0x3A,0x03,0xEE,0x80,0xF8,0x1E,0x0F,0x3E,0x01,0xC3,0x80,0x3B,0xE0,0x00,
  184. 0x01,0xC0,0x7C,0x03,0xDF,0x00,0xF0,0xFE,0x07,0x3C,0x01,0xC3,0x80,0x3B,0x80,0x00,
  185. 0x01,0xC0,0x3C,0x01,0xEF,0x00,0x78,0x1E,0x0F,0xFF,0x00,0xC3,0x80,0x38,0x00,0x00,
  186. 0x01,0xDF,0xF0,0x01,0xDC,0x00,0x70,0xFC,0x0F,0xFC,0x00,0xE3,0x00,0x38,0x7C,0x00,
  187. 0x01,0xB9,0xF8,0x01,0xFE,0x00,0x7C,0x7C,0x07,0x0F,0x00,0xE7,0x00,0x7F,0xFC,0x00,
  188. 0x01,0xF0,0xFC,0x01,0xC7,0x00,0x70,0xFC,0x0F,0x1F,0xC0,0x77,0x00,0x38,0x00,0x00,
  189. 0x01,0xFF,0xFC,0x03,0xCF,0x00,0xF0,0xFC,0x0F,0x0F,0x00,0x7F,0x00,0x38,0x00,0x00,
  190. 0x01,0xEE,0x7C,0x03,0xEF,0x00,0xF8,0x3C,0x0F,0x1F,0x00,0x3F,0x00,0x39,0xF0,0x00,
  191. 0x01,0xFF,0xDC,0x07,0xEF,0x01,0xF8,0xFC,0x1F,0x3F,0xC0,0x3F,0x00,0x39,0xF0,0x00,
  192. 0x00,0xFF,0xEF,0x9F,0x83,0xE7,0xE0,0x1C,0x3F,0x1C,0x00,0x3C,0x00,0x39,0xF0,0x00,
  193. 0x00,0x7F,0xC3,0xFE,0x00,0xFF,0x80,0x3D,0xF7,0xF8,0x00,0x3E,0x00,0xFF,0xF8,0x00,
  194. 0x00,0x00,0x03,0xFC,0x00,0xFF,0x01,0xFF,0xC0,0x00,0x00,0xFE,0x00,0xF8,0x00,0x00,
  195. 0x00,0x00,0x00,0x78,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  196. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  197. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  198. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  199. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  200. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  201. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  202. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  203. 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x71,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  204. 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x71,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  205. 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x71,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  206. 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xE3,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  207. 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x71,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  208. 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x71,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  209. 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC3,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  210. 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC3,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  211. 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x71,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  212. 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC3,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  213. 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xE3,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  214. 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xE3,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  215. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  216. 0x00,0x00,0x00,0x00,0x00,0x00,0x7D,0xF7,0xDF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  217. 0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE7,0x9E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  218. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  219. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  220. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  221. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  222. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  223. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  224. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  225. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  226. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  227. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  228. };

  229. uchar table5[30];
  230. uchar code tableshuzi[]=                           //数字发音对照
  231. {
  232. 84,                //零
  233. 44,                //一
  234. 48,                //二
  235. 52,                //三
  236. 56,                //四
  237. 60,                //五
  238. 64,                //六
  239. 68,                //七
  240. 72,                //八
  241. 76,                //九
  242. 80,                //十
  243. 88,                //百
  244. };
  245. void yuyin();
  246. void shijian(uint x)                         //一毫秒延时
  247. {
  248.         uint a,j;
  249.         for(a=x;a>0;a--)
  250.                 for(j=110;j>0;j--);
  251. }
  252. void writecom(uchar com)                 //液晶写命令
  253. {
  254.         lcdrs=0;
  255.         lcden=0;
  256.         P1=com;
  257.         shijian(1);
  258.         lcden=1;
  259.         shijian(1);
  260.         lcden=0;
  261. }
  262. void writedate(uchar date)                  //液晶写数据
  263. {
  264.         lcdrs=1;
  265.         lcden=0;
  266.         P1=date;
  267.         shijian(1);
  268.         lcden=1;
  269.         shijian(1);
  270.         lcden=0;
  271. }
  272. void pitcure(uchar *p)                           //液晶画图
  273. {
  274.         uchar a,j;
  275.         writecom(0x36);                                //打开画图指令
  276.         for(a=0;a<32;a++)                        //写上半屏
  277.         {
  278.                 writecom(0x80+a);                //写纵坐标
  279.                 writecom(0x80);                        //写横坐标
  280.                 for(j=0;j<16;j++)
  281.                 {
  282.                         writedate(*p++);
  283.                 }
  284.         }
  285.         for(i=0;i<32;i++)                        //写下半屏
  286.         {
  287.                 writecom(0x80+i);                //写纵坐标
  288.                 writecom(0x88);                        //写横坐标
  289.                 for(j=0;j<16;j++)
  290.                 {
  291.                         writedate(*p++);
  292.                 }
  293.         }
  294. //        writecom(0x36);
  295.         writecom(0x30);                                //恢复正常书写指令
  296. }
  297. void init()                                                //初始化
  298. {
  299.         TMOD=0x20;                                        //定时器1决定串口波特率
  300.         TH1=0XFD;
  301.         TL1=0XFD;
  302.         TR1=1;
  303.         SM0=0;                                                //设定串口中断方式
  304.         SM1=1;
  305.         REN=1;                                                //打开允许接收
  306.         EA=1;                                                //打开总中断
  307.         ES=0;                                                //打开外部中断

  308.         P0=0xff;
  309.         writecom(0x30);                                 //液晶的初始化
  310.         writecom(0x0c);
  311.         writecom(0x01);
  312.         pitcure(table2);                         //写入第一幅开机画面
  313.         shijian(1500);
  314.         pitcure(table3);                         //写入第二幅开机画面
  315.         startflag=1;                                 //将开机标志位置一
  316.         ES=1;                                                 //打开串口中断

  317. }
  318. void display()
  319. {
  320.         uchar j;
  321.         writecom(0x80);                                  //
  322. //**********写第一行时间显示内容
  323.         for(j=0;j<8;j++)
  324.         {
  325.                 writedate(table[j]);
  326.         }
  327.         writedate(table1[shishi]);
  328.         writedate(table1[shige]);
  329.         writedate(':');
  330.         writedate(table0[9]);
  331.         writedate(table0[10]);
  332.         writedate(':');
  333.         writedate(table0[11]);
  334.         writedate(table0[12]);
  335.        

  336. //*********写第二行纬度显示内容
  337.         writecom(0x90);
  338.         for(j=0;j<7;j++)
  339.         {
  340.                 writedate(tablewei[j]);
  341.         }
  342.         writedate(table0[19]);
  343.         writedate(table0[20]);
  344.         writedate('.');
  345.         writedate(table0[21]);
  346.         writedate(table0[22]);
  347.         for(j=0;j<2;j++)
  348.         {
  349.                 writedate(tabledu[j]);
  350.         }
  351. //**************写第三行经度显示内容
  352.         writecom(0x88);
  353.         for(j=0;j<8;j++)
  354.         {
  355.                 writedate(tablejing[j]);
  356.         }
  357.         writedate(table0[32]);
  358.         writedate(table0[33]);
  359.         writedate(table0[34]);
  360.         writedate('.');
  361.         writedate(table0[35]);
  362.         writedate(table0[36]);
  363.         for(j=0;j<2;j++)
  364.         {
  365.                 writedate(tabledu[j]);
  366.         }
  367. //*************第四行显示速度
  368.         writecom(0x98);
  369.         for(j=0;j<5;j++)
  370.         {
  371.                 writedate(tablesu1[j]);
  372.         }
  373.         writedate(table1[suge]);
  374.         writedate('.');
  375.         writedate(table1[sushifen]);
  376.         writedate(table1[subaifen]);
  377.         writedate(table1[suqianfen]);
  378.         for(j=0;j<4;j++)
  379.         {
  380.                 writedate(tablesu2[j]);
  381.         }
  382. }
  383. void keyscan()                                                //键盘扫描
  384. {

  385.         if(key3==0)
  386.         {
  387.                 shijian(10);
  388.                 if(key3==0)
  389.                 {
  390.                         num++;
  391.                         if(num==2)
  392.                         num=0;
  393.                         while(key3==0);                        //松手检测
  394.                         if(num==0)                                //如过等于0开机
  395.                         {
  396.                                 led=1;                                //指示灯灭
  397.                                 init();                                //进行初始化
  398.                        
  399.                         }
  400.                         if(num==1)                                //如果等于1关机
  401.                         {
  402.                                 ES=0;                                //串口中断关闭
  403.                                 EA=0;                                //总中断关闭
  404.                                 led=0;                                //指示灯打开
  405.                                 writecom(0x01);                //清屏
  406.                                 pitcure(table4);        //显示关机画面
  407.                                 writecom(0x01);                //清屏
  408.                         }
  409.                 }
  410.         }
  411.         if(key2==0)                                                //key2按下实现语音播报
  412.         {
  413.                 EX0=1;                                                //打开外部中断
  414.                 IT0=1;                                                //外部中断工作在下降沿触发
  415.                 yuyin();                                        //进入语音播报程序
  416.         }
  417. }
  418. void deal()                                                        //数据处理函数
  419. {
  420.                 uchar temp1,temp2,temp3,temp4,temp5,temp6,shi;
  421.                 float v=1.852;                                //速度转换
  422.                 uint su;
  423.             if(flag==1)
  424.             {   
  425.                   
  426.                if(table0[4]=='M')//确定是否收到"GPRMC"这一帧数据
  427.                {   
  428.                                         switch(table0[7])                //分离出小时的十位
  429.                                         {
  430.                                                  case '0':  temp1=0;
  431.                                  break;                     
  432.                                                  case '1':        temp1=1;
  433.                              break;                    
  434.                                                  case '2':        temp1=2;
  435.                              break;                     
  436.                  
  437.                                         }
  438.                                         switch(table0[8])                //分离出小时的个位
  439.                                         {
  440.                                                  case '0':        temp2=0;
  441.                              break;            
  442.                                                  case '1':        temp2=1;
  443.                              break;                    
  444.                                                  case '2':        temp2=2;                    
  445.                                                  break;
  446.                                                  case '3':        temp2=3;         
  447.                                                  break;
  448.                              case '4':  temp2=4;                  
  449.                              break;                     
  450.                                                  case '5':        temp2=5;
  451.                              break;                     
  452.                              case '6':  temp2=6;                  
  453.                                                   break;                                       
  454.                                                  case '7':        temp2=7;
  455.                              break;                    
  456.                              case '8':  temp2=8;                 
  457.                                                  break;
  458.                              case '9':  temp2=9;                  
  459.                                                  break;
  460.                                         }
  461.            //*************速度海里/小时和 公里/小时的转换

  462. //***************世界时间和北京时间的转换                                       
  463.                                         shi=temp1*10+temp2;
  464.                                         if(shi>=16)
  465.                                         {
  466.                                                 shi=shi-16;
  467.                                         }
  468.                                         else
  469.                                         shi=shi+8;                                //北京时间快8小时
  470.                                         shishi=shi/10;
  471.                                         shige=shi%10;
  472.                                         switch(table0[46])                //分离出速度个位
  473.                                         {
  474.                                                  case '0':  temp3=0;
  475.                                  break;                     
  476.                                                  case '1':        temp3=1;
  477.                              break;                    
  478.                                                  case '2':        temp3=2;
  479.                              break;
  480.                                                  case '3':        temp3=3;
  481.                              break;
  482.                                                                       
  483.                                         }
  484.                                         switch(table0[48])                //分离出速度十分位
  485.                                         {
  486.                                                  case '0':        temp4=0;
  487.                              break;            
  488.                                                  case '1':        temp4=1;
  489.                              break;                    
  490.                                                  case '2':        temp4=2;                    
  491.                                                  break;
  492.                                                  case '3':        temp4=3;         
  493.                                                  break;
  494.                              case '4':  temp4=4;                  
  495.                              break;                     
  496.                                                  case '5':        temp4=5;
  497.                              break;                     
  498.                              case '6':  temp4=6;                  
  499.                                                   break;                                       
  500.                                                  case '7':        temp4=7;
  501.                              break;                    
  502.                              case '8':  temp4=8;                 
  503.                                                  break;
  504.                              case '9':  temp4=9;                  
  505.                                                  break;
  506.                                         }
  507.                                         switch(table0[49])                //分离出速度百分位
  508.                                         {
  509.                                                  case '0':        temp5=0;
  510.                              break;            
  511.                                                  case '1':        temp5=1;
  512.                              break;                    
  513.                                                  case '2':        temp5=2;                    
  514.                                                  break;
  515.                                                  case '3':        temp5=3;         
  516.                                                  break;
  517.                              case '4':  temp5=4;                  
  518.                              break;                     
  519.                                                  case '5':        temp5=5;
  520.                              break;                     
  521.                              case '6':  temp5=6;                  
  522.                                                   break;                                       
  523.                                                  case '7':        temp5=7;
  524.                              break;                    
  525.                              case '8':  temp5=8;                 
  526.                                                  break;
  527.                              case '9':  temp5=9;                  
  528.                                                  break;
  529.                                         }
  530.                                         switch(table0[50])                //分离出速度千分位
  531.                                         {
  532.                                                  case '0':        temp6=0;
  533.                              break;            
  534.                                                  case '1':        temp6=1;
  535.                              break;                    
  536.                                                  case '2':        temp6=2;                    
  537.                                                  break;
  538.                                                  case '3':        temp6=3;         
  539.                                                  break;
  540.                              case '4':  temp6=4;                  
  541.                              break;                     
  542.                                                  case '5':        temp6=5;
  543.                              break;                     
  544.                              case '6':  temp6=6;                  
  545.                                                   break;                                       
  546.                                                  case '7':        temp6=7;
  547.                              break;                    
  548.                              case '8':  temp6=8;                 
  549.                                                  break;
  550.                              case '9':  temp6=9;                  
  551.                                                  break;
  552.                                         }
  553. //******************把数扩大十倍方便下面分离出各个位
  554.                                         su=temp3*1000+temp4*100+temp5*10+temp6;
  555.                                         su=su*v;
  556.                                         suge=su/1000;
  557.                                         sushifen=su%1000/100;
  558.                                         subaifen=su%100/10;
  559.                                         suqianfen=su%10;
  560.                                 if(startflag==1)                          //开始标志位置一
  561.                                 {
  562.                                         startflag=0;                          //清零
  563.                                         writecom(0x01);                          //清屏
  564.                                 }
  565.                                 display();                                          //屏显刷新数据
  566.                                 flag=0;
  567.                                 ES=1;                                                 //打开串口中断
  568.                    }
  569.                    else                                                //如果接受数据不对
  570.                    {                                         //标志位清零,并将串口中断打开
  571.                            flag=0;
  572.                         ES=1;
  573.                    }
  574.                    led=1;                          //关闭led起到闪烁指示信号效果
  575.                 }
  576. }
  577. void yuyin()                                  //语音播报函数
  578. {
  579.         uchar a,b,c,d,e,f,g,h,k,l,m,n,o,shi;

  580.         switch(table0[7])                //分离出小时的十位
  581.         {
  582.                  case '0':  a=0;
  583.                  break;                     
  584.                  case '1':        a=1;
  585.          break;                    
  586.                  case '2':        a=2;
  587.          break;                     

  588.         }
  589.         switch(table0[8])                //分离出小时的个位
  590.         {
  591.                  case '0':        b=0;
  592.          break;            
  593.                  case '1':        b=1;
  594.          break;                    
  595.                  case '2':        b=2;                    
  596.                  break;
  597.                  case '3':        b=3;         
  598.                  break;
  599.          case '4':  b=4;                  
  600.          break;                     
  601.                  case '5':        b=5;
  602.          break;                     
  603.          case '6':  b=6;                  
  604.                  break;                                       
  605.                  case '7':        b=7;
  606.          break;                    
  607.          case '8':  b=8;                 
  608.                  break;
  609.          case '9':  b=9;                  
  610.                  break;
  611.         }
  612.                 switch(table0[9])                //分离出分的十位
  613.         {
  614.                  case '0':        c=0;
  615.          break;            
  616.                  case '1':        c=1;
  617.          break;                    
  618.                  case '2':        c=2;                    
  619.                  break;
  620.                  case '3':        c=3;         
  621.                  break;
  622.          case '4':  c=4;                  
  623.          break;                     
  624.                  case '5':        c=5;
  625.          break;                     
  626.          case '6':  c=6;                  
  627.                  break;                                       
  628.                  case '7':        c=7;
  629.          break;                    
  630.          case '8':  c=8;                 
  631.                  break;
  632.          case '9':  c=9;                  
  633.                  break;
  634.         }
  635.                 switch(table0[9])                //分离出分的个位
  636.         {
  637.                  case '0':        c=0;
  638.          break;            
  639.                  case '1':        d=1;
  640.          break;                    
  641.                  case '2':        d=2;                    
  642.                  break;
  643.                  case '3':        d=3;         
  644.                  break;
  645.          case '4':  d=4;                  
  646.          break;                     
  647.                  case '5':        d=5;
  648.          break;                     
  649.          case '6':  d=6;                  
  650.                  break;                                       
  651.                  case '7':        d=7;
  652.          break;                    
  653.          case '8':  d=8;                 
  654.                  break;
  655.          case '9':  d=9;                  
  656.                  break;
  657.         }


  658. //***************世界时间和北京时间的转换                                       
  659.         shi=a*10+b;
  660.         if(shi>=16)
  661.         {
  662.                 shi=shi-16;
  663.         }
  664.         else
  665.         shi=shi+8;
  666.         time=shi*100+c*10+d;

  667. //***************分离纬度
  668.         switch(table0[19])                           //分离纬度的十位
  669.         {
  670.                  case '0':        e=0;
  671.          break;            
  672.                  case '1':        e=1;
  673.          break;                    
  674.                  case '2':        e=2;                    
  675.                  break;
  676.                  case '3':        e=3;         
  677.                  break;               
  678.          case '4':  e=4;                  
  679.          break;                     
  680.                  case '5':        e=5;
  681.          break;                     
  682.          case '6':  e=6;                  
  683.                  break;                                       
  684.                  case '7':        e=7;
  685.          break;                    
  686.          case '8':  e=8;                 
  687.                  break;
  688.          case '9':  e=9;                  
  689.                  break;
  690.         }
  691.         switch(table0[20])                          //分离纬度的个位
  692.         {
  693.                  case '0':        f=0;
  694.          break;            
  695.                  case '1':        f=1;
  696.          break;                    
  697.                  case '2':        f=2;                    
  698.                  break;
  699.                  case '3':        f=3;         
  700.                  break;
  701.          case '4':  f=4;                  
  702.          break;                     
  703.                  case '5':        f=5;
  704.          break;                     
  705.          case '6':  f=6;                  
  706.                  break;                                       
  707.                  case '7':        f=7;
  708.          break;                    
  709.          case '8':  f=8;                 
  710.                  break;
  711.          case '9':  f=9;                  
  712.                  break;
  713.         }
  714.         switch(table0[21])                          //分离纬度的十分位
  715.         {
  716.                  case '0':        g=0;
  717.          break;            
  718.                  case '1':        g=1;
  719.          break;                    
  720.                  case '2':        g=2;                    
  721.                  break;
  722.                  case '3':        g=3;         
  723.                  break;
  724.          case '4':  g=4;                  
  725.          break;                     
  726.                  case '5':        g=5;
  727.          break;                     
  728.          case '6':  g=6;                  
  729.                  break;                                       
  730.                  case '7':        g=7;
  731.          break;                    
  732.          case '8':  g=8;                 
  733.                  break;
  734.          case '9':  g=9;                  
  735.                  break;
  736.         }
  737.         switch(table0[22])                          //分离纬度的百分位
  738.         {
  739.                  case '0':        h=0;
  740.          break;            
  741.                  case '1':        h=1;
  742.          break;                    
  743.                  case '2':        h=2;                    
  744.                  break;
  745.                  case '3':        h=3;         
  746.                  break;
  747.          case '4':  h=4;                  
  748.          break;                     
  749.                  case '5':        h=5;
  750.          break;                     
  751.          case '6':  h=6;                  
  752.                  break;                                       
  753.                  case '7':        h=7;
  754.          break;                    
  755.          case '8':  h=8;                 
  756.                  break;
  757.          case '9':  h=9;                  
  758.                  break;
  759.         }
  760.         weidu=e*1000+f*100+g*10+h;

  761. //****************分离经度
  762.         switch(table0[32])                           //分离经度的百位
  763.         {
  764.                  case '0':        k=0;
  765.          break;            
  766.                  case '1':        k=1;
  767.          break;                    
  768.                  case '2':        k=2;                    
  769.                  break;
  770.                  case '3':        k=3;         
  771.                  break;
  772.          case '4':  k=4;                  
  773.          break;                     
  774.                  case '5':        k=5;
  775.          break;                     
  776.          case '6':  k=6;                  
  777.                  break;                                       
  778.                  case '7':        k=7;
  779.          break;                    
  780.          case '8':  k=8;                 
  781.                  break;
  782.          case '9':  k=9;                  
  783.                  break;
  784.         }
  785.         switch(table0[33])                                 //分离经度的十位
  786.         {
  787.                  case '0':        l=0;
  788.          break;            
  789.                  case '1':        l=1;
  790.          break;                    
  791.                  case '2':        l=2;                    
  792.                  break;
  793.                  case '3':        l=3;         
  794.                  break;
  795.          case '4':  l=4;                  
  796.          break;                     
  797.                  case '5':        l=5;
  798.          break;                     
  799.          case '6':  l=6;                  
  800.                  break;                                       
  801.                  case '7':        l=7;
  802.          break;                    
  803.          case '8':  l=8;                 
  804.                  break;
  805.          case '9':  l=9;                  
  806.                  break;
  807.         }
  808.         switch(table0[34])                         //分离经度的个位
  809.         {
  810.                  case '0':        m=0;
  811.          break;            
  812.                  case '1':        m=1;
  813.          break;                    
  814.                  case '2':        m=2;                    
  815.                  break;
  816.                  case '3':        m=3;         
  817.                  break;
  818.          case '4':  m=4;                  
  819.          break;                     
  820.                  case '5':        m=5;
  821.          break;                     
  822.          case '6':  m=6;                  
  823.                  break;                                       
  824.                  case '7':        m=7;
  825.          break;                    
  826.          case '8':  m=8;                 
  827.                  break;
  828.          case '9':  m=9;                  
  829.                  break;
  830.         }
  831.         switch(table0[35])                          //分离经度的十分位
  832.         {
  833.                  case '0':        n=0;
  834.          break;            
  835.                  case '1':        n=1;
  836.          break;                    
  837.                  case '2':        n=2;                    
  838.                  break;
  839.                  case '3':        n=3;         
  840.                  break;
  841.          case '4':  n=4;                  
  842.          break;                     
  843.                  case '5':        n=5;
  844.          break;                     
  845.          case '6':  n=6;                  
  846.                  break;                                       
  847.                  case '7':        n=7;
  848.          break;                    
  849.          case '8':  n=8;                 
  850.                  break;
  851.          case '9':  n=9;                  
  852.                  break;
  853.         }
  854.         switch(table0[36])                                   //分离经度的百分位
  855.         {
  856.                  case '0':        o=0;
  857.          break;            
  858.                  case '1':        o=1;
  859.          break;                    
  860.                  case '2':        o=2;                    
  861.                  break;
  862.                  case '3':        o=3;         
  863.                  break;
  864.          case '4':  o=4;                  
  865.          break;                     
  866.                  case '5':        o=5;
  867.          break;                     
  868.          case '6':  o=6;                  
  869.                  break;                                       
  870.                  case '7':        o=7;
  871.          break;                    
  872.          case '8':  o=8;                 
  873.                  break;
  874.          case '9':  o=9;                  
  875.                  break;
  876.         }
  877.         jingdu=k*10000+l*1000+m*100+n*10+o;          //将经度合成一个数

  878. /**************纬度语音地址编码*********************/
  879.         table5[0]=0;
  880.         table5[1]=24;
  881.         table5[2]=tableshuzi[weidu/1000];
  882.         table5[3]=tableshuzi[10];
  883.         table5[4]=tableshuzi[weidu%1000/100];
  884.         table5[5]=32;
  885.         table5[6]=tableshuzi[weidu%100/10];
  886.         table5[7]=tableshuzi[weidu%10];
  887.         table5[8]=92;
  888. /*****************经度语音地址编码************************/
  889.         table5[9]=28;
  890.         table5[10]=tableshuzi[jingdu/10000];
  891.         table5[11]=tableshuzi[11];                             //百

  892.         table5[12]=tableshuzi[jingdu%10000/1000];
  893.         table5[13]=tableshuzi[10];                             //十

  894.         table5[14]=tableshuzi[jingdu%1000/100];
  895.         table5[15]=32;                                                         //点
  896.                  
  897.         table5[16]=tableshuzi[jingdu%100/10];
  898.         table5[17]=tableshuzi[jingdu%10];

  899.         table5[18]=92;                                                        //度

  900. /**********作为发音引导,主要在外部中断中处理*************/
  901.                 P0=table5[0];
  902.                 du=1;
  903.                 ES=0;
  904.                 shijian(50);
  905.                 du=0;                                 //第一段结束后将自动产生外部中断
  906.                 a=1;
  907. }
  908. void main()                                         //主函数
  909. {
  910.         init();                                         //初始化
  911.         while(1)
  912.         {         
  913.                  deal();                         //处理数据
  914.                  keyscan();                         //键盘扫描
  915.         }
  916. }
  917. void zhongduan() interrupt 4        //串口中断
  918. {
  919.        RI=0;                                     //接收标志清零
  920.        table0[i]=SBUF;                        //将接收数据存入table0中
  921.            i++;
  922.               if(table0[0]=='

  923. )                //第一个字符为$时接收下面数据
  924.            {
  925.                            if(i==4)                        //加这条语句可以增加数据纠错能力
  926.                         {
  927.                                 if(table0[3]!='R')
  928.                                 i=0;
  929.                         }
  930.                           if(i==62)                        //如果接收够62个则进入
  931.                         {
  932.                                 i=0;
  933.                                 led=0;                        //指示灯亮,处理完后灭
  934.                                 flag=1;                        //标志位置一
  935.                                 ES=0;                        //关闭串口中断等待数据处理
  936.                         }
  937.                
  938.        }
  939.            else                                                //如果接收错误重新接收
  940.            i=0;
  941. }
  942. void INIT0() interrupt 0                //外部中断
  943. {
  944.         EX0=0;                                                //关闭外部中断
  945.         du=1;                                                //关闭发音控制,准备第二次发音
  946.         a=1;
  947.         for(a;a<19;a++)                                //进入循环,播报经纬度
  948.         {
  949.                 P0=table5[a];                        //地址逐步加1
  950.                 du=1;
  951.                 shijian(20);                  //读音打开需要下降沿触发
  952.                 du=0;
  953.                 shijian(450);                 //适当调整可以调整语速
  954.         }
  955.         a=1;
  956.         du=1;
  957.         EX0=0;                                         //发音结束关闭外部中断
  958.         ES=1;                                         //打开串口中断
  959.         EA=1;                                         //发音结束后打开中断准备下次发音
  960. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:117823 发表于 2016-5-1 18:39 | 只看该作者
学习下。
回复

使用道具 举报

板凳
ID:122434 发表于 2016-6-2 20:12 | 只看该作者

 谢谢楼主,太实用了
回复

使用道具 举报

地板
ID:79544 发表于 2016-6-9 12:52 | 只看该作者
楼主牛人,太强大啦,学习学习
回复

使用道具 举报

5#
ID:79544 发表于 2016-6-9 12:54 | 只看该作者
楼主用的什么语音模块?
回复

使用道具 举报

6#
ID:130538 发表于 2016-8-18 10:42 | 只看该作者
谢谢楼主,太实用了
回复

使用道具 举报

7#
ID:130538 发表于 2016-8-18 10:43 | 只看该作者
谢谢楼主,太实用了
回复

使用道具 举报

8#
ID:36173 发表于 2016-8-18 15:22 | 只看该作者
不知附件中三个程序都怎么用,都能独立使用?
回复

使用道具 举报

9#
ID:110780 发表于 2016-8-19 10:33 | 只看该作者
楼主,有仿真图吗?
回复

使用道具 举报

10#
ID:113123 发表于 2016-8-29 22:54 | 只看该作者
赞一下。。。。
回复

使用道具 举报

11#
ID:140906 发表于 2016-9-29 19:22 来自手机 | 只看该作者
叼叼。。。。
回复

使用道具 举报

12#
ID:79034 发表于 2016-10-12 08:32 | 只看该作者
我想用彩屏弄一个试试。但是还不会,烦躁啊。
回复

使用道具 举报

13#
ID:143706 发表于 2016-11-5 11:42 | 只看该作者
GPS是什么模块?文件里没找到程序
回复

使用道具 举报

14#
ID:143706 发表于 2016-11-5 11:45 | 只看该作者
嗨,您好,请问您用的GPS是什么模块?我在文件里没找到程序,程序放在哪个文件夹了?最近在做一个项目,遇到了问题希望帮助您百忙之中能回复我一下,O(∩_∩)O谢谢
回复

使用道具 举报

15#
ID:151780 发表于 2016-12-3 21:54 | 只看该作者
学习一下
回复

使用道具 举报

16#
ID:158622 发表于 2017-4-7 21:38 | 只看该作者
谢谢楼主,太实用了
回复

使用道具 举报

17#
ID:158622 发表于 2017-4-8 08:58 | 只看该作者
楼主牛人,太强大啦,学习学习
回复

使用道具 举报

18#
ID:145007 发表于 2018-4-8 21:10 | 只看该作者
请问楼主这个录音是怎么录得?是不是只能发音是普通话的?还是可以自定义的?
回复

使用道具 举报

19#
ID:48413 发表于 2018-4-9 11:18 | 只看该作者
学习一下
回复

使用道具 举报

20#
ID:305463 发表于 2018-4-17 18:43 | 只看该作者
好帖 ,学习学习!
回复

使用道具 举报

21#
ID:245836 发表于 2018-5-7 18:58 | 只看该作者

好帖 ,学习学习!
回复

使用道具 举报

22#
ID:325768 发表于 2018-5-17 09:42 | 只看该作者
楼主,问一下能支持位置信息实时上传么
回复

使用道具 举报

23#
ID:673612 发表于 2021-11-5 14:29 | 只看该作者
这代码,如大海涛涛不绝。厉害了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表