近些年来,随着经济的飞速发展,人们对出行有了更高要求,公交车行业发展成为一个城市必不可少的交通工具,城市公交系统也开始快速发展,不仅公交车的型号不断更新换代,而且为了公司效益目前已经全部改成无人售票车,报站也由原来的由随车售票员报站改为由司机按键报站了。但是由于公交司机既要开车,又要兼顾按键报站,所以常常出现误报、漏报等现象,不能够满足公交系统的要求;另一方面,由于司机开车时为报站分散精力,也对公交的安全运行埋下了隐患。因此,对自动语音报站系统的需求也日益强烈。应用自动语音报站系统既可以节省员工开支,增强公司效益, 又可以利用报站器播报各种标准的语言站名, 使各城市间更容易交流与发展。本文所设计的公交车报站系统主要可分为五个部分:单片机控制部分、语音播报部分、液晶显示部分、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);
}
}
}
详情可百度搜索:科通毕业设计,进入店铺索要资料,了解详情,谢谢