wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4641|回復: 6
打印 上一主題 下一主題
收起左側

基于單片機公交語音報站系統設計 含源碼,Proteus仿真原理圖

[復制鏈接]
跳轉到指定樓層
樓主
系統的總體設計需要充分運用STC單片機作為主控控制芯片,完成主控控制電路的基本設計,輔助控制電路是語音控制電路、12864顯示電路、按鍵控制電路、GPS電路、LED顯示、溫度和時鐘模塊。仿真用串口模擬語音播報,gps沒法仿真

電路原理圖如下:


DS1302的引腳排列,其中VCC2為主電源,VCC1為后備電源。在主電源關閉的情況下,也能保持時鐘的連續運行。P1.0~P1.2作為控制引腳,DS1302由VCC1或VCC2兩者中的較大者供電。當VCC2大于VCC1+0.2V時,VCC2給DS1302供電。當VCC2小于VCC1時,開啟備用電源。P3.2接DS18b20的數據輸出引腳DQ,進行數據采集。
3.5  指示燈模塊
本次設計二極管兩端接電源和單片機P2.6,P2.7為低電平,采用發光二極管LED指示燈亮來提醒公交車上下行。紅燈表示上行,綠燈表示自動模式。
3.6  顯示模塊
LCD12864是一種新型的圖形點陣LCD其顯示分辨率為128×64,本次設計采用LCD12864作為顯示模塊的顯示輸出。采用LCD12864接P0的8位并行數據接口,P2.0~P2.5作為控制12864的GPIO。
3.7  按鍵模塊
報站器在正常使用的時候完全不需要人工的介入,可以正確的播報進、出站語音及相關服務用語。P3.7和P1.7分別作為站臺信息和公交車信息顯示控制按鍵。但是報站器在時間調試及切換上下行的時候需要人工介入操作,P1.3和P1.4分別作為公交上行和下行控制,會有紅綠的LED進行顯示是否切換,所以報站器需要加入按鍵控制系統,P1.5和P1.6作為手動播報的開關控制,P3.6~P3.3分別接K4~K1按鍵作為時間的調整按鍵。
3.8 軟件設計
3.8.1 主程序
主程序包括給報站控制變量賦初值、初始化單片機I/O口、初始化實時時鐘芯片、初始化定時器0、初始化12864液晶屏。然后開始檢測兩個模式按鍵是否按下包括:站臺信息顯示、公交車信息顯示兩個模式,若按鍵按下則執行相應程序,接著判斷時間設置按鍵是否按下執行時間設置程序,程序還每200ms刷新一次時間和溫度顯示數值。
3.8.2
初始化12864液晶屏,開機只顯示時間和溫度信息。如果按站臺顯示按鍵,則會顯示站臺信息,如一號站,二號站,三號站,四號站。按下公交車信息顯示按鍵,則會顯示公交車內信息。按上下行設置鍵則會顯示到達和下站,再按下手動播報鍵會接著顯示本站和下站是哪站,按下關閉播報鍵回到開機只顯示時間和溫度界面。按下K1選擇鍵會進入時間設置界面,反復按K1黑格會在年月日時分秒上跳動,再按加減鍵K2,K3進行數值調節,設置完畢按確定鍵K4回到開機顯示的界面。

元件清單:
名稱    型號    數量
單片機    STC89C52    1
顯示屏    LCD12864    1
溫度傳感器    DS18B20    1
時鐘模塊    DS1302    1
LED燈    /    2
獨立按鍵    /    10
杜邦線    /    若干

主程序包括給報站控制變量賦初值、初始化單片機I/O口、初始化實時時鐘芯片、初始化定時器0、初始化12864液晶屏。然后開始檢測兩個模式按鍵是否按下包括:站臺信息顯示、公交車信息顯示兩個模式,若按鍵按下則執行相應程序,接著判斷時間設置按鍵是否按下執行時間設置程序,程序還每200ms刷新一次時間和溫度顯示數值。

液晶顯示程序
初始化12864液晶屏,開機只顯示時間和溫度信息。如果按站臺顯示按鍵,則會顯示站臺信息,如一號站,二號站,三號站,四號站。按下公交車信息顯示按鍵,則會顯示公交車內信息。按上下行設置鍵則會顯示到達和下站,再按下手動播報鍵會接著顯示本站和下站是哪站,按下關閉播報鍵回到開機只顯示時間和溫度界面。按下K1選擇鍵會進入時間設置界面,反復按K1黑格會在年月日時分秒上跳動,再按加減鍵K2,K3進行數值調節,設置完畢按確定鍵K4回到開機顯示的界面。


單片機源程序如下:
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #include "value.h"
  5. #include <UART.h>
  6. sbit x_key=P1^3;
  7. sbit s_key=P1^4;
  8. sbit bz_key=P1^5;
  9. sbit gb_key=P1^6;
  10. sbit x_LED=P2^6;
  11. sbit s_LED=P2^7;
  12. sbit key_zhantai=P3^7;
  13. sbit key_gongjiao=P1^7;
  14. uchar x_mode,s_mode;
  15. uchar x_num,s_num;
  16. bit flag_200ms = 1;
  17. uchar flag_c_en;
  18. bit flag_100ms;
  19. sbit dq=P3^2;          //18b20 IO口的定義
  20. uint temperature ;    //溫度變量
  21. uint flag_zhantai ;    //站臺顯示標志位
  22. uint flag_gongjiao ;    //公交顯示標志位
  23. /************ 延時函數  *****************/
  24. void delay_uint(uint z)
  25. {
  26. while(z--);
  27. }
  28. /********************************************************************
  29. * 名稱 : delay_1ms()
  30. * 功能 : 延時1ms函數
  31. * 輸入 : q
  32. * 輸出 : 無
  33. ***********************************************************************/
  34. void delay_1ms(uint q)
  35. {        
  36. uint i,j;
  37. for(i=0;i<q;i++)
  38. for(j=0;j<115;j++);
  39. }
  40. uchar dis_lcd[10];
  41. #include "lcd12864bu.h"
  42. /******************顯示時間函數***************************/
  43. void dis_shijian()        //顯示時間
  44. {
  45. write_shu16(0,0*8,shi,0);
  46. write_shuzi(1,0*2,2*8,fuhao[1],0);               
  47. write_shu16(0,3*8,fen,0);        
  48. write_shuzi(1,0*2,5*8,fuhao[1],0);               
  49. write_shu16(0,6*8,miao,0);

  50. write_yhanzi(2,0,5*16,qita[6]);   //星期
  51. //write_shu16(0,14*8,week,0);
  52. if(week==0)
  53. {
  54.   write_yhanzi(1,0,7*16,xingqi[0]);
  55. }
  56. if(week==1)
  57. {
  58.   write_yhanzi(1,0,7*16,xingqi[1]);  
  59. }
  60. if(week==2)
  61. {
  62.   write_yhanzi(1,0,7*16,xingqi[2]);   
  63. }
  64. if(week==3)
  65. {
  66.   write_yhanzi(1,0,7*16,xingqi[3]);   
  67. }
  68. if(week==4)
  69. {
  70.   write_yhanzi(1,0,7*16,xingqi[4]);   
  71. }
  72. if(week==5)
  73. {
  74.   write_yhanzi(1,0,7*16,xingqi[5]);   
  75. }
  76. if(week==6)
  77. {
  78.   write_yhanzi(1,0,7*16,xingqi[6]);   
  79. }
  80. write_shu16(1*2,0*8,0x20,0);
  81. write_shu16(1*2,2*8,nian,0);
  82. write_shuzi(1,1*2,4*8,fuhao[0],0);        
  83. write_shu16(1*2,5*8,yue,0);
  84. write_shuzi(1,1*2,7*8,fuhao[0],0);        
  85. write_shu16(1*2,8*8,ri,0);

  86. write_shu18b20(1*2,12*8,temperature,0);        
  87. write_shuzi(1,1*2,14*8,dian,0);
  88. }
  89. /************初始化顯示*****************/
  90. void init_12864_dis() //初始化顯示
  91. {
  92. cs1=1; //左屏開顯示
  93. cs2=0;               
  94. dis_shijian();        //顯示時間        
  95. }
  96. /***********************18b20初始化函數*****************************/
  97. void init_18b20()
  98. {
  99. bit q;
  100. dq=1;                                //把總線拿高
  101. delay_uint(1);            //15us
  102. dq=0;                                //給復位脈沖
  103. delay_uint(80);                //750us
  104. dq=1;                                //把總線拿高 等待
  105. delay_uint(10);                //110us
  106. q=dq;                                //讀取18b20初始化信號
  107. delay_uint(20);                //200us
  108. dq=1;                                //把總線拿高 釋放總線
  109. }

  110. /*************寫18b20內的數據***************/
  111. void write_18b20(uchar dat)
  112. {
  113. uchar i;
  114. for(i=0;i<8;i++)
  115. {                                         //寫數據是低位開始
  116.   dq=0;                         //把總線拿低寫時間隙開始
  117.   dq=dat&0x01; //向18b20總線寫數據了
  118.   delay_uint(5);         // 60us
  119.   dq=1;                         //釋放總線
  120.   dat>>=1;
  121. }        
  122. }

  123. /*************讀取18b20內的數據***************/
  124. uchar read_18b20()
  125. {
  126. uchar i,value;
  127. for(i=0;i<8;i++)
  128. {
  129.   dq=0;                         //把總線拿低讀時間隙開始
  130.   value>>= 1;         //讀數據是低位開始
  131.   dq=1;                         //釋放總線
  132.   if(dq==1)                 //開始讀寫數據
  133.   value|=0x80;
  134.   delay_uint(5);         //60us        讀一個時間隙最少要保持60us的時間
  135. }
  136. return value;                 //返回數據
  137. }

  138. /*************讀取溫度的值 讀出來的是小數***************/
  139. uint read_temp()
  140. {
  141. uint value;
  142. uchar low;                           //在讀取溫度的時候如果中斷的太頻繁了,就應該把中斷給關了,否則會影響到18b20的時序
  143. init_18b20();                   //初始化18b20
  144. write_18b20(0xcc);           //跳過64位ROM
  145. write_18b20(0x44);           //啟動一次溫度轉換命令
  146. delay_uint(50);                   //500us

  147. init_18b20();                   //初始化18b20        
  148. write_18b20(0xcc);           //跳過64位ROM
  149. write_18b20(0xbe);           //發出讀取暫存器命令
  150.         
  151. EA=0;
  152. low=read_18b20();           //讀溫度低字節
  153. value=read_18b20();  //讀溫度高字節
  154. EA =1;
  155. value<<=8;                   //把溫度的高位左移8位
  156. value|=low;                   //把讀出的溫度低位放到value的低八位中
  157. value*=0.625;               //轉換到溫度值 小數
  158. return value;                   //返回讀出的溫度 帶小數
  159. }

  160. /******************顯示時間函數***************************/
  161. void dis_shijian_set()        //顯示時間
  162. {
  163. write_shu16(0*2,0*8,0x20,0);
  164. write_shu16(1*2,2*8,shi,0);
  165. write_shu16(1*2,6*8,fen,0);        
  166. write_shu16(1*2,10*8,miao,0);

  167. write_shu16(0*2,2*8,nian,0);        
  168. write_shu16(0*2,6*8,yue,0);        
  169. write_shu16(0*2,10*8,ri,0);

  170. write_yhanzi(1,4,5*16,xingqi[week]);                        
  171. }
  172. /************初始化設置顯示*****************/
  173. void init_12864_set1()
  174. {
  175. write_yhanzi(1,0,2*16,qita[0]);   //年
  176. write_yhanzi(1,0,4*16,qita[1]);   //月
  177. write_yhanzi(1,0,6*16,qita[2]);   //日

  178. write_yhanzi(1,2,2*16,qita[3]);   //時
  179. write_yhanzi(1,2,4*16,qita[4]);   //分
  180. write_yhanzi(1,2,6*16,qita[5]);   //秒
  181. write_yhanzi(2,4,3*16,qita[6]);   //星期

  182. dis_shijian_set();        //顯示時間
  183. }

  184. /******************時間芯片顯示函數**********************/           
  185. void ds1302_dis()
  186. {
  187. uchar miao_1;
  188. if(menu_1 == 0)
  189. {
  190.   read_time();
  191.   if(miao_1 != miao)
  192.   {
  193.    miao_1 = miao;
  194.    dis_shijian();        //顯示時間
  195.   }
  196. }
  197. }

  198. /********************獨立按鍵程序*****************/
  199. uchar key_can;         //按鍵值
  200. void key()         //獨立按鍵程序
  201. {
  202. static uchar key_new;
  203. key_can=20;                   //按鍵值還原
  204. P3|=0x78;                     //對應的按鍵IO口輸出為1
  205. if((P3&0x78)!=0x78)                //按鍵按下
  206. {
  207.   delay_1ms(1);                     //按鍵消抖動
  208.   if(((P3&0x78)!=0x78)&&(key_new==1))
  209.   {                                                //確認是按鍵按下
  210.    key_new=0;
  211.    switch(P3&0x78)
  212.    {
  213.                 case 0x70:key_can=1;break;         //得到按鍵值
  214.                 case 0x68:key_can=2;break;         //得到按鍵值
  215.                 case 0x58:key_can=3;break;         //得到按鍵值
  216.                 case 0x38:key_can=4;break;         //得到按鍵值
  217.    }
  218.   }                        
  219. }
  220. else
  221. key_new=1;        
  222. }

  223. /**********************設置函數************************/
  224. void key_with()
  225. {
  226. if(key_can==4)   //退出鍵
  227. {
  228.   qingling();
  229.   init_12864_dis(); //初始化顯示
  230.   flag_200ms=1;
  231.   menu_1=0;
  232. }
  233. if(key_can==1)        //設置鍵
  234. {
  235.   menu_1 ++;
  236.   flag_200ms=1;
  237.   if(menu_1==1)
  238.   {
  239.    x_num=0;
  240.    s_num=0;
  241.    x_mode=0;
  242.    s_mode=0;
  243.    qingling();
  244.    init_12864_set1();
  245.   }
  246.   if(menu_1>7)
  247.   menu_1 = 1;
  248. }
  249. if(menu_1!=0)
  250. {
  251.   if(menu_1==1)                  //設置年
  252.   {
  253.    if(key_can==2)        //加
  254.    set_ds1302time(1,&nian,0x99);               
  255.    if(key_can==3)        //減         
  256.    set_ds1302time(0,&nian,0x99);        
  257.   }
  258.   if(menu_1==2)                  //設置月
  259.   {
  260.    if(key_can==2)        //加
  261.    set_ds1302time(1,&yue,0x13);               
  262.    if(key_can==3)        //減         
  263.    set_ds1302time(0,&yue,0x13);        
  264.   }
  265.   if(menu_1==3)                  //設置日
  266.   {
  267.    if(key_can==2)        //加
  268.    set_ds1302time(1,&ri,0x32);               
  269.    if(key_can==3)        //減         
  270.    set_ds1302time(0,&ri,0x32);        
  271.   }
  272.   if(menu_1==4)                  //設置時
  273.   {
  274.    if(key_can==4)        //加
  275.    set_ds1302time(1,&shi,0x24);               
  276.    if(key_can==3)        //減         
  277.    set_ds1302time(0,&shi,0x24);        
  278.   }
  279.   if(menu_1==5)                  //設置分
  280.   {
  281.    if(key_can==2)        //加
  282.    set_ds1302time(1,&fen,0x60);               
  283.    if(key_can==3)        //減         
  284.    set_ds1302time(0,&fen,0x60);        
  285.   }
  286.   if(menu_1==6)                  //設置秒
  287.   {
  288.    if(key_can==2)        //加
  289.    set_ds1302time(1,&miao,0x60);               
  290.    if(key_can==3)        //減         
  291.    set_ds1302time(0,&miao,0x60);        
  292.   }
  293.   if(menu_1==7)                  //設置星期
  294.   {
  295.    if(key_can==2)        //加
  296.    set_ds1302time(1,&week,0x8);               
  297.    if(key_can==3)        //減         
  298.    set_ds1302time(0,&week,0x8);        
  299.   }
  300.   dis_shijian_set();        //顯示時間
  301.   switch(menu_1)           // 光標顯示
  302.   {
  303.    case 1:write_shu16(0*2,2*8,nian,1);break;
  304.    case 2:write_shu16(0*2,6*8,yue,1);break;
  305.    case 3:write_shu16(0*2,10*8,ri,1);break;
  306.    case 4:write_shu16(1*2,2*8,shi,1);break;
  307.    case 5:write_shu16(1*2,6*8,fen,1);break;
  308.    case 6:write_shu16(1*2,10*8,miao,1);break;
  309.    case 7:write_yhanzi(1,4,5*16,xingqi[week]);break;
  310.   }
  311.   write_time();           //把時間寫進去
  312. }                        
  313. }
  314. /*********************定時器0、定時器1初始化******************/
  315. void time0_init()         
  316. {                                         
  317. EA=1;                   //開總中斷
  318. TMOD=0X11;          //定時器0、定時器1工作方式1
  319. ET0=1;                  //開定時器0中斷
  320. TR0=1;                  //允許定時器0定時
  321. }

  322. void baozhan()
  323. {
  324.         if(key_zhantai==0)
  325. {
  326.   delay_1ms(20);
  327.   if(key_zhantai==0)
  328.   {
  329.    qingling();
  330.    x_mode=1;
  331.    s_mode=0;
  332.    x_num=0;
  333.    s_num=0;
  334.    x_LED=0;
  335.    s_LED=0;
  336.                
  337.         write_yhanzi(1,4,0*16,yihaozhan[0]);   //一
  338.   write_yhanzi(1,4,1*16,yihaozhan[1]);   //號
  339.   write_yhanzi(1,4,2*16,yihaozhan[2]);   //站

  340.   write_yhanzi(1,4,4*16,erhaozhan[0]);   //二
  341.   write_yhanzi(1,4,5*16,erhaozhan[1]);   //號
  342.   write_yhanzi(1,4,6*16,erhaozhan[2]);   //站
  343.         
  344.         write_yhanzi(1,6,0*16,sanhaozhan[0]);   //三
  345.   write_yhanzi(1,6,1*16,sanhaozhan[1]);   //號
  346.   write_yhanzi(1,6,2*16,sanhaozhan[2]);   //站

  347.   write_yhanzi(1,6,4*16,sinhaozhan[0]);   //四
  348.   write_yhanzi(1,6,5*16,sinhaozhan[1]);   //號
  349.   write_yhanzi(1,6,6*16,sinhaozhan[2]);   //站
  350.   }
  351.   while(!key_zhantai);
  352. }

  353. if(x_key==0 || key_gongjiao==0)
  354. {
  355.   delay_1ms(20);
  356.   if(x_key==0 || key_gongjiao==0)
  357.   {
  358.    qingling();
  359.    x_mode=1;
  360.    s_mode=0;
  361.    x_num=0;
  362.    s_num=0;
  363.    x_LED=0;
  364.    s_LED=1;
  365.    write_yhanzi(1,4,0*16,daoda[0]);   //到
  366.    write_yhanzi(1,4,1*16,daoda[1]);   //達
  367.    write_shuzi(1,2*2,4*8,fuhao[1],0);//:

  368.    write_yhanzi(1,6,0*16,xiayizhan[0]);   //下
  369.    write_yhanzi(1,6,1*16,xiayizhan[1]);   //站
  370.    write_shuzi(1,3*2,4*8,fuhao[1],0); //:
  371.   }
  372.   while((!x_key) || (!key_gongjiao));
  373. }
  374. if(s_key==0 || key_gongjiao==0)
  375. {
  376.   delay_1ms(20);
  377.   if(s_key==0 || key_gongjiao==0)
  378.   {
  379.    qingling();
  380.    x_mode=0;
  381.    s_mode=1;
  382.    x_num=0;
  383.    s_num=0;
  384.    x_LED=1;
  385.    s_LED=0;
  386.    write_yhanzi(1,4,0*16,daoda[0]);   //到
  387.    write_yhanzi(1,4,1*16,daoda[1]);   //達
  388.    write_shuzi(1,2*2,4*8,fuhao[1],0);//:

  389.    write_yhanzi(1,6,0*16,xiayizhan[0]);   //下
  390.    write_yhanzi(1,6,1*16,xiayizhan[1]);   //站
  391.    write_shuzi(1,3*2,4*8,fuhao[1],0); //:
  392.   }
  393.   while((!s_key) || (!key_gongjiao));
  394. }
  395. if((bz_key==0)&&(x_mode==1))
  396. {
  397.   delay(20);
  398.   if((bz_key==0)&&(x_mode==1))
  399.   {
  400.                 x_num++;  
  401.           x_num%=6;
  402.                 }
  403.                   while(!bz_key);
  404.   }
  405. if((bz_key==0)&&(s_mode==1))
  406. {
  407.   delay(20);
  408.         if((bz_key==0)&&(s_mode==1))
  409.   {
  410.                 s_num++;  
  411.           s_num%=6;
  412.   }
  413.   while(!bz_key);
  414. }
  415. if(gb_key==0)
  416. {
  417.   delay_1ms(20);
  418.   if(gb_key==0)
  419.   {
  420.            x_mode=0;
  421.     s_mode=0;
  422.     x_num=0;
  423.     s_num=0;
  424.         x_LED=1;
  425.     s_LED=1;
  426.         qingling();
  427.   }
  428. }
  429. }
  430. void yuyin()
  431. {
  432. /******************************下行報站顯示***********/
  433. if(x_num==1)
  434. {
  435.   write_yhanzi(1,4,3*16,yihaozhan[0]);   //一
  436.   write_yhanzi(1,4,4*16,yihaozhan[1]);   //號
  437.   write_yhanzi(1,4,5*16,yihaozhan[2]);   //站

  438.   write_yhanzi(1,6,3*16,erhaozhan[0]);   //二
  439.   write_yhanzi(1,6,4*16,erhaozhan[1]);   //號
  440.   write_yhanzi(1,6,5*16,erhaozhan[2]);   //站
  441.                  putstring("列車即將出發,從成都東開往西安北\r\n");      //發送字符串,結尾回車換行
  442.                   delay(500);
  443.         
  444. }
  445. if(x_num==2)
  446. {
  447.   write_yhanzi(1,4,3*16,erhaozhan[0]);   //二
  448.   write_yhanzi(1,4,4*16,erhaozhan[1]);   //號
  449.   write_yhanzi(1,4,5*16,erhaozhan[2]);   //站

  450.   write_yhanzi(1,6,3*16,sanhaozhan[0]);   //三
  451.   write_yhanzi(1,6,4*16,sanhaozhan[1]);   //號
  452.   write_yhanzi(1,6,5*16,sanhaozhan[2]);   //站
  453.                           putstring("列車即將到達漢中站\r\n");      //發送字符串,結尾回車換行
  454.                           delay(500);
  455.                  putstring("漢中站到了\r\n");
  456. }

  457. if(x_num==3)
  458. {
  459.   write_yhanzi(1,4,3*16,sanhaozhan[0]);   //三
  460.   write_yhanzi(1,4,4*16,sanhaozhan[1]);   //號
  461.   write_yhanzi(1,4,5*16,sanhaozhan[2]);   //站

  462.   write_yhanzi(1,6,3*16,sinhaozhan[0]);   //四
  463.   write_yhanzi(1,6,4*16,sinhaozhan[1]);   //號
  464.   write_yhanzi(1,6,5*16,sinhaozhan[2]);   //站
  465. }
  466. if(x_num==4)
  467. {
  468.   write_yhanzi(1,4,3*16,sinhaozhan[0]);   //四
  469.   write_yhanzi(1,4,4*16,sinhaozhan[1]);   //號
  470.   write_yhanzi(1,4,5*16,sinhaozhan[2]);   //站

  471.   write_yhanzi(1,6,3*16,zhongdianzhan[0]);   //終
  472.   write_yhanzi(1,6,4*16,zhongdianzhan[1]);   //點
  473.   write_yhanzi(1,6,5*16,zhongdianzhan[2]);   //站
  474. }
  475. if(x_num==5)
  476. {
  477.   write_yhanzi(1,4,3*16,zhongdianzhan[0]);   //終
  478.   write_yhanzi(1,4,4*16,zhongdianzhan[1]);   //點
  479.   write_yhanzi(1,4,5*16,zhongdianzhan[2]);   //站

  480.   write_yhanzi(1,6,0*16,ganxiechengzuo[0]);   //感
  481.   write_yhanzi(1,6,1*16,ganxiechengzuo[1]);   //謝
  482.   write_yhanzi(1,6,2*16,ganxiechengzuo[2]);   //乘
  483.   write_yhanzi(1,6,3*16,ganxiechengzuo[3]);   //坐
  484.   write_yhanzi(1,6,4*16,ganxiechengzuo[4]);   //本
  485.   write_yhanzi(1,6,5*16,ganxiechengzuo[5]);   //公
  486.   write_yhanzi(1,6,6*16,ganxiechengzuo[6]);   //車

  487. }
  488. /******************************上行報站顯示***********/
  489. if(s_num==1)
  490. {
  491.   write_yhanzi(1,4,3*16,sinhaozhan[0]);   //四
  492.   write_yhanzi(1,4,4*16,sinhaozhan[1]);   //號
  493.   write_yhanzi(1,4,5*16,sinhaozhan[2]);   //站

  494.   write_yhanzi(1,6,3*16,sanhaozhan[0]);   //三
  495.   write_yhanzi(1,6,4*16,sanhaozhan[1]);   //號
  496.   write_yhanzi(1,6,5*16,sanhaozhan[2]);   //站

  497. }
  498. if(s_num==2)
  499. {
  500.   write_yhanzi(1,4,3*16,sanhaozhan[0]);   //三
  501.   write_yhanzi(1,4,4*16,sanhaozhan[1]);   //號
  502.   write_yhanzi(1,4,5*16,sanhaozhan[2]);   //站

  503.   write_yhanzi(1,6,3*16,erhaozhan[0]);   //二
  504.   write_yhanzi(1,6,4*16,erhaozhan[1]);   //號
  505.   write_yhanzi(1,6,5*16,erhaozhan[2]);   //站
  506. }
  507. if(s_num==3)
  508. {
  509.   write_yhanzi(1,4,3*16,erhaozhan[0]);   //二
  510.   write_yhanzi(1,4,4*16,erhaozhan[1]);   //號
  511.   write_yhanzi(1,4,5*16,erhaozhan[2]);   //站

  512.   write_yhanzi(1,6,3*16,yihaozhan[0]);   //一
  513.   write_yhanzi(1,6,4*16,yihaozhan[1]);   //號
  514.   write_yhanzi(1,6,5*16,yihaozhan[2]);   //站
  515. }
  516. if(s_num==4)
  517. {
  518.   write_yhanzi(1,4,3*16,yihaozhan[0]);   //一
  519.   write_yhanzi(1,4,4*16,yihaozhan[1]);   //號
  520.   write_yhanzi(1,4,5*16,yihaozhan[2]);   //站

  521.   write_yhanzi(1,6,3*16,zhongdianzhan[0]);   //終
  522.   write_yhanzi(1,6,4*16,zhongdianzhan[1]);   //點
  523.   write_yhanzi(1,6,5*16,zhongdianzhan[2]);   //站
  524. }
  525. if(s_num==5)
  526. {
  527.   write_yhanzi(1,4,3*16,zhongdianzhan[0]);   //終
  528.   write_yhanzi(1,4,4*16,zhongdianzhan[1]);   //點
  529.   write_yhanzi(1,4,5*16,zhongdianzhan[2]);   //站

  530.   write_yhanzi(1,6,0*16,ganxiechengzuo[0]);   //感
  531.   write_yhanzi(1,6,1*16,ganxiechengzuo[1]);   //謝
  532.   write_yhanzi(1,6,2*16,ganxiechengzuo[2]);   //乘
  533.   write_yhanzi(1,6,3*16,ganxiechengzuo[3]);   //坐
  534.   write_yhanzi(1,6,4*16,ganxiechengzuo[4]);   //本
  535.   write_yhanzi(1,6,5*16,ganxiechengzuo[5]);   //公
  536.   write_yhanzi(1,6,6*16,ganxiechengzuo[6]);   //車
  537. }
  538. }

  539. void main()
  540. {
  541. x_key=1;
  542. s_key=1;
  543. bz_key=1;
  544. gb_key=1;
  545. x_LED=1;
  546. s_LED=1;
  547. P0=P1=P2=P3=0xff;                //單片機IO口初始化為1        
  548. init_ds1302();
  549. delay_1ms(5);
  550. init_lcd();
  551. delay_1ms(5);        
  552. Clr_Scr();
  553. time0_init();
  554. delay_1ms(5);
  555. init_12864_dis(); //初始化顯示
  556. delay_1ms(5);
  557.                          uart_cfg();        
  558. while(1)
  559. {
  560.   baozhan();          //顯示上站和下站字頭
  561.   yuyin();            //顯示上站和下站是哪一站
  562.   key();                    //改變key_san的值,判斷K1-K4哪個鍵按下即設置時間的4個鍵哪個被按下
  563.   if(key_can<10)  
  564.   {
  565.    key_with();              //根據key_san的值執行相應程序
  566.   }
  567.   if(flag_100ms==1)
  568.   {         
  569.    flag_100ms=0;
  570.   }
  571.   if(flag_200ms==1)    //200ms
  572.   {
  573.    flag_200ms=0;
  574.    temperature=read_temp();        //先讀出溫度的值
  575.    ds1302_dis();    //時鐘顯示函數,同時顯示溫度函數也在里面
  576.   }
  577. }
  578. }

  579. /*********************定時器0中斷服務程序************************/
  580. void time0_int() interrupt 1  
  581. {                                                   
  582. static uchar value;        //定時10ms中斷一次
  583. TH0=0x3c;
  584. TL0=0xb0;         //50ms
  585. value++;
  586. if(value%2==0)
  587. {
  588.   flag_100ms=1;                //每20ms置flag_100ms位1一次
  589. }
  590. if(value%20==0)  //每200ms置flag_200ms為1一次
  591. {
  592.   flag_200ms = 1;
  593. }
  594. }
復制代碼
仿真用串口模擬語音播報,gps沒法仿真,Proteus版本是8.11,其他版本可能不兼容
Keil代碼與Proteus8.11仿真下載:
程序.7z (1 MB, 下載次數: 81)

評分

參與人數 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:730009 發表于 2022-3-21 20:16 | 只看該作者
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

下載.png (218.18 KB, 下載次數: 104)

下載.png
回復

使用道具 舉報

板凳
ID:634028 發表于 2023-5-7 11:52 | 只看該作者
樓主,proteus仿真工程文件在哪里下載
回復

使用道具 舉報

無效樓層,該帖已經被刪除
5#
ID:641483 發表于 2023-5-13 13:17 | 只看該作者
謝謝樓主分享 收藏慢慢學習
回復

使用道具 舉報

6#
ID:1065790 發表于 2023-7-31 18:08 | 只看該作者
大佬,我想問一下,源文件里的文字用的漢字庫文件有嗎,能否分享一下
回復

使用道具 舉報

7#
ID:1147664 發表于 2025-4-10 19:27 | 只看該作者
這個東西蠻不錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日韩电影免费在线看| 成人动漫av在线| 欧美在线三区| 99re这里只有精品视频首页| 欧美日韩一区久久| 久久在线免费观看视频| 欧美日韩综合精品| 中文字幕在线免费看线人| 中文字幕一区二区三区波野结 | 免费高清在线一区| 在线观看国产一区二区| 国内揄拍国内精品少妇国语| 老女人性生活视频| 欧美最猛黑人xxxxwww| 好了av在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩电影在线观看永久视频免费网站| 国产精品日韩久久久久| 国产亚洲精品美女久久久久| 欧美一级片一区| 日韩国产欧美精品| 黑森林av导航| 欧美特级黄色片| 国产精品免费91| 高清毛片在线观看| 91超碰免费在线| 黑巨人与欧美精品一区| www怡红院| 操你啦视频在线| 国产成人夜色高潮福利影视| 国产欧美一区二区色老头| 麻豆91在线播放免费| 国产成人免费视频网站| 在线一区免费观看| 麻豆久久一区二区| 中文字幕无线精品亚洲乱码一区| 日韩视频永久免费观看| 日韩高清dvd| 日本a在线免费观看| 爽爽爽在线观看| aaaaa级少妇高潮大片免费看| 免费观看av网站| 九九热精品视频在线| 亚洲成人第一区| 再深点灬舒服灬太大了少妇| 四虎永久免费| 99re6在线视频精品免费| av免费在线一区| 国产精品亚洲а∨天堂免在线| 欧美性猛交xxxx免费看| 亚洲一品av免费观看| 久久这里只有精品视频首页| 国产精品自拍网| 欧美lavv| 精品一二三四五区| aⅴ在线免费观看| 久久黄色免费看| 97成人在线观看| xxx.xxx欧美| 99久久久国产精品免费蜜臀| 亚洲免费婷婷| 91精品国产免费| 日韩午夜小视频| 国产精品99久久久久久久久久久久| 久久久无码人妻精品一区| 97涩在线观看视频| 中文精品在线| 欧美在线观看日本一区| 午夜影院在线看| av免费在线一区| 欧美久久久久久久久| www.亚洲自拍| 亚洲欧洲成人| 中文字幕精品三区| 欧美日韩一级在线| 网站黄色在线观看| 日韩成人午夜精品| 91免费观看| 天堂网中文在线| 国产精品免费看| 韩日欧美一区| 精品少妇一区二区三区免费观看| 亚洲不卡在线播放| 外国电影一区二区| 久久久精品久久久久| 国产美女永久免费| 日日摸夜夜添夜夜添国产精品 | 就去色蜜桃综合| 国产免费不卡av| 欧美尿孔扩张虐视频| 亚洲久久久久久久久久久| 久久久精品成人| 国产精品99| 91久久久免费一区二区| 欧美一级免费在线| 成a人片在线观看www视频| 亚洲男女一区二区三区| 在线免费黄色小视频| 在线观看的av| 99re8在线精品视频免费播放| 久久久久久99| www五月天com| 日韩一级淫片| 中文字幕精品网| 五月婷婷六月色| 无码国模国产在线观看| 精品小视频在线| 蜜臀av免费观看| 国产中文字幕av| 91成人小视频| 国产伦精品一区二区三区免费迷| 在线观看国产日韩| 免费看裸体网站| 亚洲精品三区| 欧美激情精品久久久久久大尺度| 亚洲无码精品一区二区三区| 9999精品成人免费毛片在线看| 国产美女视频91| 日b视频免费观看| 岛国最新视频免费在线观看| 欧美性极品xxxx娇小| 四虎影视1304t| 国产欧美日韩| 国产精品美女主播| c++连点器| 亚洲一区二区3| 日本少妇xxxxx| 午夜精品视频一区二区三区在线看| 国产日韩欧美在线看| 桃花视频大全不卡免费观看网站| 国产成人综合精品三级| 91国视频在线| 在线成人视屏| 欧美日本亚洲视频| 欧美人善zozσ性伦交| 无遮挡在线观看| 欧美日韩国产经典色站一区二区三区| 国产成人精品免费看视频| 亚洲男人的天堂在线观看| 亚洲大片免费观看| 中文字幕成人av| 精品无码久久久久| 亚洲免费观看高清完整版在线| 国产欧美一级片| 亚洲高清在线视频| xxxx国产精品| 久久婷婷国产综合国色天香| 风韵丰满熟妇啪啪区老熟熟女| sm捆绑调教国产免费网站在线观看| 日韩h在线观看| 一个人看的www日本高清视频| 亚洲五月婷婷| 欧美与动交zoz0z| 黄视频免费在线看| 国产精品一区二区三区免费视频| 中文在线网在线中文| 欧美一区二区大片| 免费视频久久久| 久久先锋影音| 色噜噜狠狠一区二区三区| 中出福利视频| 欧美综合一区二区| 亚洲av毛片成人精品| 欧美日韩你懂得| 五月天国产视频| 午夜伦全在线观看| 婷婷国产v国产偷v亚洲高清| 香蕉视频污视频| 免费成人av| 欧美夜福利tv在线| 日韩中文字幕免费在线观看| 91免费看`日韩一区二区| 2025国产精品自拍| 26uuu亚洲婷婷狠狠天堂| 黄色一级视频在线观看| 91免费在线看| 四虎影院一区二区三区 | 国产精品视频免费一区二区三区| 九义人在线观看完整免费版电视剧| 欧美亚洲国产日韩2020| 国产日产一区二区| 精品一区二区国产| 国产精品久久久网站| 小泽玛利亚视频在线观看| 麻豆久久久久久| 免费看毛片网站| 在线观看一区不卡| a级免费观看| 日本人成精品视频在线| 国产乱妇乱子在线播视频播放网站| 免费亚洲精品视频| 国产精品99视频| 农村老熟妇乱子伦视频| 国产精品每日更新| www.91| 国产清纯白嫩初高生在线观看91| 三级影片在线看| 一区二区三区高清在线| 国产中文字幕第一页| 亚洲自拍另类欧美丝袜| 99久久久久| 99免费在线视频| 欧美美女18p| 免费看久久久| 丰满人妻一区二区三区53号| 99久久777色| h网站免费观看| 91久久精品美女| 亚洲国产一区二区三区网站| 亚洲综合欧美激情| 国产精品久久99| 精品国内一区二区三区免费视频| 色偷偷av一区二区三区乱| 91av资源在线| 色一情一乱一乱一区91| 国产mv日韩mv欧美| 亚洲国产www| 国产精品亚洲网站| 一区在线免费观看| 国产视频在线观看视频| 欧美色倩网站大全免费| 加勒比一区二区三区| 国产精品jvid在线观看蜜臀| 亚洲福利影院| 亚洲图片小说在线| 99九九99九九九视频精品| 自拍电影在线观看| 日韩一级黄色av| 麻豆视频在线| 成人福利视频网| 素人一区二区三区| 日韩三级电影| 日韩中文av| 2018国产在线| 久久一本综合| 在线永久看片免费的视频| 色偷偷888欧美精品久久久| 国模视频一区| 伊人网综合视频| 中文字幕视频一区二区三区久| 欧美片一区二区| 国产精品久久影院| 亚洲精品视频99| 亚洲这里只有精品| 日韩欧美在线免费| а√中文在线8| 国产性猛交96| 日韩视频免费观看高清完整版 | 国产91色在线|免| 久久美女视频| 老司机午夜福利视频| 国产成人精品在线| 男人的天堂成人在线| 五月天丁香在线| 亚洲视频电影| 亚洲一区二区在线播放相泽 | 亚洲欧美日韩一区二区三区在线| 永久免费精品视频| 三级网站免费观看| 亚洲女人毛片| 欧美性xxxx极品hd欧美风情| 久久野战av| 国产女人高潮时对白| 欧美精品久久久| 久久a爱视频| 九九热这里有精品视频| 国产精品999| 99久久精品久久久久久清纯| 成人看片网站| 午夜影院在线视频| 国产精欧美一区二区三区白种人| 日韩免费观看网站| 亚洲日穴在线视频| 亚洲国产视频二区| www亚洲视频| 亚洲激情 国产| 国产精品女主播一区二区三区| 天天射综合网站| 久久精品视频1| 一本色道久久99精品综合| 色婷婷综合久久久久中文| 性感美女一区二区在线观看| 国产黄网在线观看| 99理论电影网| 94色蜜桃网一区二区三区| 性xxxx丰满孕妇xxxx另类| 亚洲狠狠婷婷综合久久久| 夜夜嗨一区二区| wwwxx免费| 伊人成人222| 在线观看国产成人av片| 影视一区二区| 美女欧美视频在线观看免费| 日本成人免费在线观看| 国产精品三级美女白浆呻吟 | 右手影院亚洲欧美| 亚洲免费一在线| 试看120秒一区二区三区| 国产精品男女视频| 91精品黄色| 欧美日韩亚洲不卡| 成人激情av网| 日韩a在线看| 国产高清www| 日韩国产精品一区| 国产激情一区二区三区四区| 另类视频在线| 亚洲第一天堂网| 国产aaa一级片| 高清亚洲成在人网站天堂| 欧美三级小说| chien国产乱露脸对白| 佐佐木明希av| 色婷婷av一区二区三区gif| 久久久久久久久成人| 国产伦一区二区| 樱花www成人免费视频| 午夜精品久久久久久久99樱桃| 美女久久久久久| 最新中文字幕第一页| 美女亚洲精品| 国产精品美女久久久久av爽李琼| 秋霞在线午夜| 四虎精品免费视频| 999国内精品视频在线| 一区二区成人在线| 亚洲三级性片| 美女桃色网站| 精品无码在线视频| 欧美国产日韩一区二区在线观看| 日本一区二区高清不卡| 青青草中文字幕| 一二三在线视频| 777a∨成人精品桃花网| 精品国产91| www视频免费看| 99自拍偷拍视频| 国产又爽又黄的激情精品视频| 亚洲成人av一区| 狠狠爱综合网| av中文字幕一区二区三区| 少妇高潮惨叫久久久久| 日韩av不卡在线| 国产视频一区三区| 舔足天天操天天射| 成人午夜视频在线播放| 久久精品国产99国产精品| 国产成人精品一区二区三区在线观看| 一区二区国产视频| 蜜臀av国产精品久久久久| 久久亚洲色图| 久久午夜av| 国产女人av| 欧美成人一区二区三区片免费 | 午夜亚洲国产au精品一区二区| 国产探花一区在线观看| 国产精品国产亚洲精品| 91在线观看入口| 九九热精品视频在线| 色屁屁草草影院ccyy.com| 成都免费高清电影| 成人性生交视频免费观看| 一区二区在线播放视频| 欧美最猛性xxxxx亚洲精品| 手机在线看福利| 国产片在线观看| 欧美亚洲综合在线| av网站有哪些| 精品69视频一区二区三区| 精品夜色国产国偷在线| 99热精品免费| 免费观看久久av| 欧美性受xxxx白人性爽| 日韩一级免费视频| 日韩主播视频在线| 蜜桃999成人看片在线观看| 波多野结衣手机在线视频| 久久久久久黄色| 黄色小视频免费网站| 制服丝袜中文字幕在线| 亚洲福利视频网站| 老熟妇一区二区三区啪啪| 亚洲视频中文| 久久久www免费人成黑人精品| 免费看h的网站| 国产精品女主播av| 日韩成人av影院| 日韩欧美另类中文字幕| 性色av一区二区三区红粉影视| 四虎在线免费视频| www.欧美日韩| 亚洲精品乱码久久久久久动漫| 经典三级一区二区| 精品视频9999| 欧美xxxxbb| 国产精品久久毛片| 无码人妻精品一区二区三区温州| 日韩高清在线免费观看| 91中文字幕在线| 免费亚色电影在线观看|