删除
近些年来,随着经济的飞速发展,人们对出行有了更高要求,公交车行业发展成为一个城市必不可少的交通工具,城市公交系统也开始快速发展,不仅公交车的型号不断更新换代,而且为了公司效益目前已经全部改成无人售票车,报站也由原来的由随车售票员报站改为由司机按键报站了。但是由于公交司机既要开车,又要兼顾按键报站,所以常常出现误报、漏报等现象,不能够满足公交系统的要求;另一方面,由于司机开车时为报站分散精力,也对公交的安全运行埋下了隐患。因此,对自动语音报站系统的需求也日益强烈。应用自动语音报站系统既可以节省员工开支,
增强公司效益, 又可以利用报站器播报各种标准的语言站名, 使各城市间更容易交流与发展。本文所设计的公交车报站系统主要可分为五个部分:单片机控制部分、语音播报部分、液晶显示部分、GPS模块和时间显示部分,采用51单片机作为主控制芯片,利用ISD4003实现语音报站,显示采用12864液晶,时间获取用DS1302,定位采用GPS模块
完成设计的基本条件:一台计算机,单片机,PROTEL软件,C51 KEIL编程软件.电路板制作工具等
设计依据:运用单片机原理,用PROTEL软件画出硬件电路图,用KEIL编写程序,熟悉ISD4003语音芯片12864液晶,DS1302时间芯片,GPS定位。
重点解决:
语音电路原理以及语音播放,掌握电路原理图和PCB图的绘制,学会手工制作电路板,提高动手能力,了解整个系统的编写思路,时间系统的设计和12864的液晶显示驱动。学会编程单片机程序和对电路的调试。
系统设计要求实现以下功能: (交报告时红色字体要删除)
1、液晶12864显示时间,时间可设置和调整。(可以根据客户要求增加显示日历)
2、液晶12864显示对应的站名和下一站信息。 (站点和公交线路由客户提供)
3、语音芯片ISD4003播放对应的站名,模拟播放4个站。
4. 可以播放一些温馨提示语。
5. GPS自动定位报站。(和站点位置比较,接近时自动报站,有演示视频感兴趣者可以向客服索取)
6、公交站点GPS位置可以自行设定,方便根据客户实际演示。
7、可以查看已设置的公交站点GPS位置信息。
8. 附加功能:应急时可以手动通过按键模拟报站。
9.具有上行和下行切换功能。
一、在确定课题后,全面搜集相关资料,包括整个系统的流程和框架的处理.
二、GPS模块原理学习
三、单片机原理巩固,硬件电路图学习
四、制作电路板和C51编程,进行整体调试
五、根据课题要求撰写毕业设计报告
六、答辩
点击了解实物: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
GPS接收数据,自动报站功能函数:
//////////////////////////////////////////////////////////////////////////////
void Auto_Play()
{
unsigned int a,b;
uchar i;
if(Flag_GPS_OK == 1 && RX_Buffer[4] == 'L' && RX_Buffer[6] == ',' && RX_Buffer[11] == '.')//确定是否收到"GPGLL"这一帧数据
{
ES=0;//关串口中断
for(i=0; i < 28; i++)
{
RX_Buffer_D[i] = RX_Buffer[i+6];
}
get_real_station();
if((a <= 1000) && (b <= 1000))//经验测试,同一调试地点,多次测得最大误差n:3064 e:3640
{
onemore_flag++;
if(onemore_flag == 2)
{
onemore_flag = 0;
if(Up_Down_Flag == 0)
{
switch(station_num)
{
case 0:
if(!station_1_flag)
{
station_1_flag = 1;
dispString(2,0,1," 韶关学院丁香苑");
dispString(3,0,1,"=>韶关学院南门 ");
Flash_Lcd();
ISDPlay(0x45);
}
break;
case 1:
if(!station_2_flag)
{
station_2_flag = 1;
dispString(2,0,1,"韶关学院南门到了");
dispString(3,0,1,"=>韶关学院北门 ");
Flash_Lcd();
ISDPlay(0x95);
}
break;
case 2:
if(!station_3_flag)
{
station_3_flag = 1;
dispString(2,0,1,"韶关学院北门到了");
dispString(3,0,1,"=> 信 工 楼 ");
Flash_Lcd();
ISDPlay(0x130);
}
break;
case 3:
if(!station_4_flag)
{
station_4_flag = 1;
dispString(2,0,1,"信工楼,终点站 ");
dispString(3,0,1,"祝乘客们旅途愉快");
Flash_Lcd();
ISDPlay(0x165);
}
break;
default:break;
}
}
if(Up_Down_Flag == 1)
{
switch(station_num)
{
case 0:
if(!station_1_flag)
{
station_1_flag = 1;
dispString(2,0,1,"起点站:信工楼 ");
dispString(3,0,1,"=>韶关学院北门 ");
Flash_Lcd();
ISDPlay(0x205);
}
break;
case 1:
if(!station_2_flag)
{
station_2_flag = 1;
dispString(2,0,1,"韶关学院北门到了");
dispString(3,0,1,"=>韶关学院南门 ");
Flash_Lcd();
ISDPlay(0x255);
}
break;
case 2:
if(!station_3_flag)
{
station_3_flag = 1;
dispString(2,0,1,"韶关学院南门到了");
dispString(3,0,1,"=>韶关学院丁香苑");
Flash_Lcd();
ISDPlay(0x295);
}
break;
case 3:
if(!station_4_flag)
{
station_4_flag = 1;
dispString(2,0,1,"韶关学院丁香苑!");
dispString(3,0,1,"祝乘客们旅途愉快");
Flash_Lcd();
ISDPlay(0x310);
}
break;
default:break;
}
}
station_num++;
if(station_num == 4)
station_num = 0;
}
}
ES=1;//开串口中断,再次接收
}
}
详情可百度搜索:科通毕业设计,进入店铺索要资料,了解详情,谢谢
评论
查看更多