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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4608|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)公交語音報站系統(tǒng)設(shè)計 含源碼,Proteus仿真原理圖

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

電路原理圖如下:


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

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

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

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


單片機(jī)源程序如下:
  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 ;    //站臺顯示標(biāo)志位
  22. uint flag_gongjiao ;    //公交顯示標(biāo)志位
  23. /************ 延時函數(shù)  *****************/
  24. void delay_uint(uint z)
  25. {
  26. while(z--);
  27. }
  28. /********************************************************************
  29. * 名稱 : delay_1ms()
  30. * 功能 : 延時1ms函數(shù)
  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. /******************顯示時間函數(shù)***************************/
  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初始化函數(shù)*****************************/
  97. void init_18b20()
  98. {
  99. bit q;
  100. dq=1;                                //把總線拿高
  101. delay_uint(1);            //15us
  102. dq=0;                                //給復(fù)位脈沖
  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內(nèi)的數(shù)據(jù)***************/
  111. void write_18b20(uchar dat)
  112. {
  113. uchar i;
  114. for(i=0;i<8;i++)
  115. {                                         //寫數(shù)據(jù)是低位開始
  116.   dq=0;                         //把總線拿低寫時間隙開始
  117.   dq=dat&0x01; //向18b20總線寫數(shù)據(jù)了
  118.   delay_uint(5);         // 60us
  119.   dq=1;                         //釋放總線
  120.   dat>>=1;
  121. }        
  122. }

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

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

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

  160. /******************顯示時間函數(shù)***************************/
  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. /************初始化設(shè)置顯示*****************/
  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. /******************時間芯片顯示函數(shù)**********************/           
  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. /********************獨(dú)立按鍵程序*****************/
  199. uchar key_can;         //按鍵值
  200. void key()         //獨(dú)立按鍵程序
  201. {
  202. static uchar key_new;
  203. key_can=20;                   //按鍵值還原
  204. P3|=0x78;                     //對應(yīng)的按鍵IO口輸出為1
  205. if((P3&0x78)!=0x78)                //按鍵按下
  206. {
  207.   delay_1ms(1);                     //按鍵消抖動
  208.   if(((P3&0x78)!=0x78)&&(key_new==1))
  209.   {                                                //確認(rèn)是按鍵按下
  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. /**********************設(shè)置函數(shù)************************/
  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)        //設(shè)置鍵
  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)                  //設(shè)置年
  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)                  //設(shè)置月
  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)                  //設(shè)置日
  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)                  //設(shè)置時
  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)                  //設(shè)置分
  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)                  //設(shè)置秒
  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)                  //設(shè)置星期
  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)           // 光標(biāo)顯示
  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();           //把時間寫進(jìn)去
  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]);   //達(dá)
  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]);   //達(dá)
  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("列車即將出發(fā),從成都東開往西安北\r\n");      //發(fā)送字符串,結(jié)尾回車換行
  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("列車即將到達(dá)漢中站\r\n");      //發(fā)送字符串,結(jié)尾回車換行
  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]);   //點(diǎn)
  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]);   //點(diǎn)
  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]);   //點(diǎn)
  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]);   //點(diǎn)
  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;                //單片機(jī)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哪個鍵按下即設(shè)置時間的4個鍵哪個被按下
  563.   if(key_can<10)  
  564.   {
  565.    key_with();              //根據(jù)key_san的值執(zhí)行相應(yīng)程序
  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();    //時鐘顯示函數(shù),同時顯示溫度函數(shù)也在里面
  576.   }
  577. }
  578. }

  579. /*********************定時器0中斷服務(wù)程序************************/
  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. }
復(fù)制代碼
仿真用串口模擬語音播報,gps沒法仿真,Proteus版本是8.11,其他版本可能不兼容
Keil代碼與Proteus8.11仿真下載:
程序.7z (1 MB, 下載次數(shù): 81)

評分

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

查看全部評分

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

使用道具 舉報

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

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

下載.png
回復(fù)

使用道具 舉報

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

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
5#
ID:641483 發(fā)表于 2023-5-13 13:17 | 只看該作者
謝謝樓主分享 收藏慢慢學(xué)習(xí)
回復(fù)

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
国产精品二三区| 国产精品久久久久久婷婷天堂| 国产精品美乳一区二区免费 | 北岛玲一区二区| v8888av| 香蕉视频免费在线看| 人妻无码中文字幕免费视频蜜桃| 日本韩国精品一区二区| 桃花岛tv亚洲品质| 蜜桃久久久久久久| 亚洲精品福利免费在线观看| 亚洲欧美99| 四虎永久在线精品| 91破解版在线看| 色综合视频一区二区三区44| 成人性视频免费网站| 欧美一区欧美二区| 日产精品高清视频免费| 精品少妇一二三区| 在线免费av观看| 中文字幕一区二区三三| 在线一区二区视频| 精品久久久久亚洲| 成人免费淫片免费观看| 日本一卡2卡三卡4卡网站| 国产在线激情| 国产精品久久国产愉拍| 制服丝袜激情欧洲亚洲| 色一情一乱一伦一区二区三区 | 中文字幕有码在线| 视频免费一区| 日韩av久操| 色婷婷亚洲精品| 美日韩免费视频| 国产精品500部| sese一区| 欧美a级理论片| 在线观看免费高清视频97| 欧美日韩亚洲高清一区二区| 欧美精品乱码久久久久久| 精品一区二区国产| 久久久久99精品| 国产69精品久久久久9999小说| 亚洲一区av| 欧美激情一区二区三区不卡| 国产福利精品av综合导导航| 男女啪啪网站视频| 一区二区免费播放| h片在线观看视频免费| 不卡的av在线| 欧美综合在线第二页| 久久精品午夜福利| 岛国中文字幕| 日本精品在线播放| 亚洲成人1区2区| 久久中文字幕在线| 午夜精品99久久免费| 日韩精品xxx| 日日干天夜夜| 98精品视频| 日韩色视频在线观看| 日本一区午夜艳熟免费| 手机看片福利永久| 国产精品99久久免费| 国产麻豆精品一区二区| 久久av.com| 成年人的黄色片| 国产毛片视频| 国产美女精品| 久久夜色撩人精品| 女同毛片一区二区三区| 青青草免费在线观看| 波多野结衣在线播放一区| 日韩午夜在线观看| 欧美黑人性视频| 欧美网站免费观看| 亚洲欧美综合图片| 久久99国产精品久久99大师 | 精品一区二区三区毛片| 久久久久久久亚洲| 大香伊人久久| 国产精品久久久久久久久免费相片 | 亚洲7777| 五月天婷婷激情网| 乱中年女人伦av一区二区| 欧美日韩国产高清一区二区| 欧美日韩国产片| 先锋影音日韩| 天堂网在线观看视频| 一级毛片精品毛片| 欧美日韩在线不卡| 久久久一本二本三本| 成人午夜国产福到在线| 一本一道久久综合狠狠老| 亚洲网址你懂得| 日韩精品xxx| 导航福利在线| 国产一二三精品| 国产成人精品午夜| 国产一级淫片免费| 成人女同在线观看| 亚洲最新在线观看| 91久久久在线| 国产中文字字幕乱码无限| 欧美xxxx少妇| 亚洲免费视频成人| eeuss中文| 精品一区二区三区免费站| 亚洲a一区二区三区| 日韩在线中文视频| 伊人影院在线观看视频| 久热久精久品这里在线观看| 国产伦理精品不卡| 亚洲一区中文字幕在线观看| 一本色道久久综合精品婷婷| 日韩欧美高清一区二区三区| 91麻豆精品91久久久久同性| 亚洲怡红院在线| 国产三级av在线| 成人av在线播放网址| 国产精品9999久久久久仙踪林| 在线观看黄网站| 精品国产第一福利网站| 中文字幕二三区不卡| 日本一区二区久久精品| 这里都是精品| 国内成人在线| 欧美最顶级的aⅴ艳星| www.日韩一区| 中文字幕久久精品一区二区| 精品国产污污免费网站入口| 日韩综合第一页| 在线观看h片| 亚洲欧美日韩国产综合| 国产精品乱子乱xxxx| 亚洲国产精彩视频| 日韩综合精品| 欧美另类极品videosbestfree| 91九色蝌蚪porny| 大胆av不用播放器在线播放| 国产成人精品三级麻豆| 成人综合色站| 久久久久久久久综合影视网 | 高清电影一区| 6080午夜不卡| 日本免费福利视频| 丁香高清在线观看完整电影视频| 欧美日韩国产在线| 亚洲欧美自拍另类日韩| 日本私人网站在线观看| 波多野结衣在线观看一区二区| 亚洲女同精品视频| 国精产品一区一区二区三区mba| 涩涩在线视频| 亚洲精品大片www| 黄色一级片播放| 午夜激情影院| 欧美国产丝袜视频| 韩日视频在线观看| 99热在线网站| 国产精品国产精品国产专区不片| 青草青青在线视频| 高清免费观看在线| 最新高清无码专区| www.亚洲天堂网| 日韩av成人| 一区二区三区高清| 亚洲高清在线免费观看| 久久电影视频| 精品国产999| 宇都宫紫苑在线播放| 在线观看小视频| 欧美日韩日日骚| 熟女少妇一区二区三区| 国产高清不卡| 日韩成人在线视频网站| 久久精品影视大全| 中文字幕4区| 国产亚洲一区二区三区四区 | 久久综合伊人| 精品视频第一区| 九色蝌蚪在线观看| 美女在线视频一区| 欧美国产综合视频| 极品尤物av丝袜美腿在线观看| 蜜臀av一区二区在线观看| 久久久久资源| 天天草天天爽| 国产电影一区在线| 在线播放 亚洲| 原千岁中文字幕| 一区二区不卡在线播放| 女王人厕视频2ⅴk| 日韩伦理在线一区| 日韩国产精品视频| 少妇一级淫片免费放中国 | 欧美大片免费| 亚洲偷欧美偷国内偷| 高潮毛片又色又爽免费 | 成人黄色免费片| 久久精品一区二区三区资源网| 国产麻豆91精品| 999一区二区三区| 精品久久久久一区二区三区| 色综合久久久久网| 久久嫩草捆绑紧缚| 免费av一区二区三区四区| 国产99久久精品一区二区| 久久精品国产免费观看99| jiyouzz国产精品久久| 国产成人a亚洲精v品无码| 黄网页免费在线观看| 4438x成人网最大色成网站| 欧美日韩人妻精品一区二区三区| 亚洲色图丝袜| 国产精品视频免费在线观看| 国产porn在线| 国产嫩草影院久久久久| 中文字幕在线视频一区二区三区| jizz内谢中国亚洲jizz| 精品国产一区二区在线| 性无码专区无码| 欧美aaaaaaaa牛牛影院| 国产91在线视频| xx00欧美| 亚洲人成人一区二区在线观看| 国产亚洲精品成人a| 日本免费精品| 国产这里只有精品| 69国产精品视频| 欧美日韩午夜激情| 丰满少妇被猛烈进入一区二区| 欧美三级情趣内衣| 国产一区二区视频在线免费观看| 猫咪av永久| 欧美午夜寂寞影院| 毛片在线免费视频| 免费一级欧美片在线播放| 韩国黄色一级大片| 日本乱理伦在线| 欧美一区二区二区| 国产精品乱码一区二区视频| 亚洲欧美日韩在线观看a三区 | 久久久91精品国产一区二区精品 | 五月婷婷六月婷婷| 日韩黄色小视频| 男女高潮又爽又黄又无遮挡| 日韩影院在线| 97免费视频在线播放| 日日爱66.cn| 黑人巨大精品欧美一区二区| 国产亚洲小视频| 国产日韩精品视频一区二区三区| 国产成人免费高清视频| 青春草视频在线| 久久视频在线视频| 国产欧美日本亚洲精品一4区| 成人免费在线播放视频| 国产探花视频在线| 自产国语精品视频| 欧洲xxxxx| 2024短剧网剧在线观看| 日韩中文在线中文网在线观看| 国产高清免费观看| 91丝袜国产在线播放| 色噜噜狠狠一区二区| 中文字幕一区图| 成人国产精品一区二区| aaaaaaa大片免费看| 91超碰这里只有精品国产| av黄色在线播放| 久久av在线| 超碰av在线免费观看| 欧美日韩国产网站| 亚洲午夜小视频| 无国产精品白浆是免费| 欧美激情一区二区三区蜜桃视频| 老熟妇精品一区二区三区| 日韩国产专区| 日本一区二区三区免费看| 国产三级视频在线| 日韩中文字幕视频| 欧美黑人乱大交| 国产精品美女久久久久久| 国产中年熟女高潮大集合| 欧美一区电影| 成人国产在线看| 日韩电影毛片| 欧美影院久久久| 一区二区三区激情| 欧美激情一区三区| 鲁丝一区二区三区| 国产精品三级| 欧美精品久久| 18aaaa精品欧美大片h| 欧美日韩国产成人在线| 九色国产蝌蚪视频| 日韩欧美在线播放| 最新中文字幕视频| 久久裸体网站| 正在播放91九色| 都市激情国产精品| 国产日韩欧美影视| 中文资源在线网| 亚洲加勒比久久88色综合| 欧美成人久久电影香蕉| 一区二区成人在线| 中文字幕剧情在线观看一区| 国产亚洲一区二区手机在线观看| 国产a级全部精品| 女生裸体视频网站免费观看| 日韩精品极品在线观看播放免费视频 | 男人天堂网av| 依依成人精品视频| 久久精品国产亚洲AV无码麻豆| 久草这里只有精品视频| 激情久久综合网| 国产精品午夜一区二区三区| 成人在线免费高清视频| av免费在线一区| 亚洲www视频| 在线网址91| 欧洲一区二区视频| eeuss影院www免费视频| 日韩av网站电影| 日韩8x8x| 精品久久久久久中文字幕一区奶水| 天堂在线免费观看视频| 国产黄色91视频| 1024手机在线视频| 久久av资源网| 中文字幕 日本| 国产精品草草| 91看片淫黄大片91| 国产精品网站在线看| 日韩资源av在线| 国产精品99久久免费| 欧美精品一区二区三区在线看午夜 | 亚洲一区二区三区在线播放| 国产毛片欧美毛片久久久| 雨宫琴音一区二区在线| 8x8x最新地址| 天堂网在线观看国产精品| 茄子视频成人在线观看| av男人的天堂在线观看| 国产男人精品视频| 国产美女视频一区二区三区| 欧美成人午夜激情在线| 天天在线女人的天堂视频| 久久综合网hezyo| 成年人羞羞的网站| 欧美精品生活片| 日本fc2在线观看| www.亚洲成人| 污黄色在线观看| 久久久伊人欧美| 成年美女网站| 国产午夜精品视频| 公交车强行挺进岳身体| 欧美va亚洲va国产综合| 欧美肥婆xxxx欧美另类| 欧美日韩黄色一区二区| 一个人看的www免费观看视频 | 丝袜脚交一区二区| 日本一卡二卡在线播放| 老妇喷水一区二区三区| 91精品人妻一区二区三区蜜桃2| 久久午夜电影| 国产吞精囗交久久久| 亚洲性人人天天夜夜摸| 播金莲一级淫片aaaaaaa| 强制捆绑调教一区二区| 亚洲成人生活片| 99久久精品国产毛片| 国产无遮挡又黄又爽又色| 亚洲同性gay激情无套| 国产精品亚洲lv粉色| 久久精品夜色噜噜亚洲a∨| 国产精品福利电影| 亚洲成人黄色影院| 欧美老**bbbb毛片| 欧美日韩不卡一区二区| 国产成人精品视频一区| 亚洲精品动漫久久久久| wwwcom羞羞网站| 蜜臀久久99精品久久久无需会员| 日韩在线观看视频一区| 亚洲国产精品一区二区www | 久久久国产在线视频| 美女的诞生在线观看高清免费完整版中文 | 91视频免费在线观看| 日韩伦理三区| 亚洲福利av| 日韩欧美ww| 免费人成视频在线播放| 蜜芽一区二区三区| 无码人妻丰满熟妇区五十路| 亚洲综合一二三区| 男人操女人免费网站| 亚洲欧美日韩精品久久亚洲区|