基于51单片机的无线通讯公交报站系统

    近些年来,随着经济的飞速发展,人们对出行有了更高要求,公交车行业发展成为一个城市必不可少的交通工具,城市公交系统也开始快速发展,不仅公交车的型号不断更新换代,而且为了公司效益目前已经全部改成无人售票车,报站也由原来的由随车售票员报站改为由司机按键报站了。但是由于公交司机既要开车,又要兼顾按键报站,所以常常出现误报、漏报等现象,不能够满足公交系统的要求;另一方面,由于司机开车时为报站分散精力,也对公交的安全运行埋下了隐患。因此,对自动语音报站系统的需求也日益强烈。应用自动语音报站系统既可以节省员工开支,增强公司效益, 又可以利用报站器播报各种标准的语言站名, 使各城市间更容易交流与发展。本文所设计的公交车报站系统主要可分为五个部分:单片机控制部分、语音播报部分、液晶显示部分、nrf905无线模块和时间显示部分,采用51单片机作为主控制芯片,利用ISD4003实现语音报站,显示采用12864液晶,时间获取用DS1302,无线采用nrf905模块

    

     完成设计的基本条件:一台计算机,单片机,PROTEL软件,C51 KEIL编程软件.电路板制作工具等

设计依据:运用单片机原理,用PROTEL软件画出硬件电路图,用KEIL编写程序,熟悉ISD4003语音芯片12864液晶,DS1302时间芯片,无线通讯。


重点解决:

语音电路原理以及语音播放,掌握电路原理图和PCB图的绘制,学会手工制作电路板,提高动手能力,了解整个系统的编写思路,时间系统的设计和12864的液晶显示驱动。学会编程单片机程序和对电路的调试。

系统设计要求实现以下功能:                                        

公交车接收板:                                        

1、液晶12864显示时间,时间可设置和调整。(可以根据要求增加日历)                                

2、液晶12864显示对应的站名和下一站信息。(站点和公交线路由客户提供)                                              

3、语音芯片ISD4003播放对应的站名,模拟播放4个站。                     

4. 可以播放一些温馨提示语。                                         

5. 无线采用nrf905无线通讯模块。

6. 附加功能:应急时可以手动通过按键报站。

7.具有上行和下行功能。                                                            

   公交站发射板:                                                         

1.一个发射板实现模拟4个公交站的无线信号,公交车接收端接收到不同站的信号,播放相应的公交站信息。                                                          

2.通过按键,循环发射4个公交站的无线信号。

点击了解实物:https://shop34685796.taobao.com/

(一个发射板模拟多个公交站台)    


主要代码:

//*****************ISD4003定义**************************
#define        POWERUP 0x2000 //上电指令
#define        SETPLAY 0xe000 //设定放音地址
#define        PLAY    0xf000 //放音
#define        SETREC  0xa000 //设定录音地址
#define        REC     0xb000 //录音
#define        STOP    0x3000 //停止指令
#define        STOPWDN 0x1000 //停止并掉电 
sbit           SS = P0^5;
sbit           CLK = P0^4;
sbit           MOSI = P0^6;
sbit           MISO = P0^7;






idata unsigned char aucDisplayBuff[10]={0,0,10,11,0,0,10,11,0,0};


uchar Sum_Nom;//站数计数
uchar Wen_Nom;//提示计数
sbit Lcd_beel = P1^0;




#define uint unsigned int                     //0 ~ 255
#define uchar unsigned char
/
#define BYTE_BIT0 0x01
#define BYTE_BIT1 0x02
#define BYTE_BIT2 0x04
#define BYTE_BIT3 0x08
#define BYTE_BIT4 0x10
#define BYTE_BIT5 0x20
#define BYTE_BIT6 0x40
#define BYTE_BIT7 0x80

#define WC 0x00
#define RC 0x10
#define WTP 0x20
#define RTP 0x21
#define WTA 0x22
#define RTA 0x23
#define RRP 0x24
bdata unsigned  char DATA_BUF;
#define DATA7 ((DATA_BUF&BYTE_BIT7) != 0)
#define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
sbit flag =DATA_BUF^7;
sbit flag1 =DATA_BUF^0;
#define TxRxBuf_Len 1
unsigned char TxRxBuffer[TxRxBuf_Len];
//char temp[4];
uint count=1;
//配置口定义//
sbit TXEN=P2^4;
sbit TRX_CE=P2^3;
sbit PWR=P2^5;
sbit SO=P2^1;
sbit SI=P2^6;
sbit SCK=P2^0;
sbit CSN=P2^7;
/
sbit AM=P2^2;
sbit DR=P1^1;


无线接收数据,自动报站功能函数:

//
void Auto_Play()
{
     RX();
Delay(10);
CSN=0;  
     if(TxRxBuffer[0])
      {
if(TxRxBuffer[0]==0x11)
{
          OUT = 0;
          dispString(2,0,1,"起点站: 梧州学院");
          dispString(3,0,1,"=>氮  素  厂    ");
          Flash_Lcd();
          ISDPlay(0x95);
}

   else if(TxRxBuffer[0]==0x12)
{  
           OUT = 1;
           dispString(2,0,1,"氮  素  厂 ,到了");
           dispString(3,0,1,"=>富  民  路    ");
           Flash_Lcd();
           ISDPlay(0x155);
}
        else if(TxRxBuffer[0]==0x13)
         {
          dispString(2,0,1,"富  民  路 ,到了");
          dispString(3,0,1,"=>财  政  局    ");
          Flash_Lcd();
          ISDPlay(0x185); 
         }
        else if(TxRxBuffer[0]==0x14)
         {
          dispString(2,0,1,"财  政  局 ,到了");
          dispString(3,0,1,"=>第一中学      ");
          Flash_Lcd();
          ISDPlay(0x203);
         }
        else if(TxRxBuffer[0]==0x15)         
        {
         dispString(2,0,1,"第一中学, 到了  ");
         dispString(3,0,1,"=>梧  州  高  中");
         Flash_Lcd();
         ISDPlay(0x231);         
        }
        else if(TxRxBuffer[0]==0x16)
        {
         dispString(2,0,1,"梧州高中, 到了  ");
         dispString(3,0,1,"=>中  山  路    ");
         Flash_Lcd();
         ISDPlay(0x260);         
        }
        else if(TxRxBuffer[0]==0x17)
        {
         dispString(2,0,1,"中山路 ,终点到了");
         dispString(3,0,1,"祝乘客们旅途愉快");
         Flash_Lcd();
         ISDPlay(0x290);
        } 
      }
}

                                                        

详情可百度搜索:科通毕业设计,进入店铺索要资料,了解详情,谢谢                                   

(一个发射板模拟多个公交站台)     
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值