初始化设置 是否前导码? NY准备接收 串口接收中断是否到? NY取出数据 串口接收中断是否到? NY取出校验数 两次数据是否相等? NY与上一站数据是否相NY播音 显示
图10 车载系统
10
3.2系统的程序
具体程序部分,见附录。
4 总结与展望
无线自动报站系统具有它本身无可比拟的优势,它成本不过百元,却能够很好的完成站点的自动识别、显示与语音报站等功能,避免了手动按键式报站的种种弊端。它维护简单,无需专业人员操作,完全可以代替GPS等昂贵且操作复杂的报站系统,可扩展性很强,很适合各大中小城市推广使用。
公交车自动报站设计是采用单片机对每一个车站进行软件编码,然后通过无线数据发射模块在一定空间范围内发射该编码数据。当汽车进入接收范围时,车载系统收到数据,进行软件编码,然后根据解码后的数据确定车辆所到的站点,启动语音报站系统报出相应的站名并进行站点显示。采用这种方,系统功能齐全,性能可靠。此外,本设计仍然存在很多不足之处,比如在报站时刻上达不到十分精确,存在一定的误差。这些问题都需要在今后的工作中加以改进,使系统更完善,更好的利用到现实中。
在科技高速发展的今天,公交车在城市交通事业中占有举足轻重的位置,它给人们外出提供了方便快捷的服务,而报站器直接影响到公交车的服务质量,因此,我认为在不久之后,自动报站器将完全取代传统的人工报站,普遍使用于各大中小城市。
11
致 谢
本课题在我的指导老师吴老师的悉心指导指导下完成,老师从开题报告到论文的完成,都离不开老师的严格要求,渊博的知识、严谨的学风和实事求是的科学态度,使我受益匪浅。。并且在毕业课题的设计上给于我很多的指导,使我的设计最终能顺利完成,在此,向关心和培养我的尊师表示最诚恳的谢意。
同时,论文的顺利完成,离不开其它各位老师、同学和朋友的关心和帮助。在整个的论文写作中,各位老师、同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见,在他们的帮助下,论文得以不断的完善,最终帮助我完整的写完了整个论文。
最后要感谢我的父母,他们对我的悉心照料使我能安心完成自己的学业。
参 考 文 献
[1]徐伟,沈建良.单片机快速入门 [M].北京:北京航空航天大学出版社,2008
[2]孙育才,王荣兴,孙华芳.ATMEL新型AT89S52系列单片机及其应用 [M].北京:清华大学出版社,2004
[3]高卫东,辛友顺,韩彦征.51单片机原理及实践 [M].北京:北京航空航天大学出版社,2007
[4]张鑫,陈书谦.单片机原理及应用 [M].北京:电子工业出版社,2005 [5]唐继贤.51单片机工程应用实例 [M].北京:北京航空航天大学出版社,2008
[6]张义和,王敏男,许宏昌.例说51单片机(C语言版) [M].北京:人民邮电出版社,2008 [7]朱兆优,林刚勇,马善农.电子电路设计技术 [M].北京:国防工业出版社,2006 [8]鲍卫兵,顾涵铮,张小英.通信原理[M].浙江:浙江大学出版社,2006 [9]刘修文 .实用电子电路图集 [M]. 北京:中国电力出版社,2005 [10]强世锦,荣健 .数字通信原理 [M]. 北京:清华大学出版社,2007
[11]何书森,何华斌 .实用电子线路设计速成 [M].福建:福建科学技术出版社,2004
12
附录1:系统程序
//ISD4004Lib.h #ifndef ISD4004_H #define ISD4004_H #undef uchar #undef uint #define uchar unsigned char #define uint unsigned int #define POWERUP #define SEIPLAY #define PLAY #define SETREC #define REC #define SETMIC #define MIC #define STOP #define STOPPWRDN #define RINT
typedef enum{ LOW, HIGH }Level;
typedef uchar(*ISDSendByte)(uchar byte); typedef void(*SSLevel)(level level); void ISD4004_FunInit(ISDSendByte isb,SSLevel sl);
void ISD4004_Play(unit addr); void ISD4004_Record(uint addr);
void ISD4004_Stop(void); void ISD4004_Rint(void);
13
#endif //ISD4004Lib.c
#include\
ISDSendByte Isb; SSLevel Sl;
static void DelayMs(uint n) {
uint i,j;
for(j=0;j for(i=0;j<3000;i++); } } static uint SendCmd(uint cmd,uint addr) { uchar tmpL,tmpH; uint tmp=cmd+addr; S1(LOW); tmpL=Isb(tmp-((tmp>>8)<<8)); tmpL=Isb(tmp>>8); S1(HIGH); return((((uint)tmpH)<<8)+tmpL); } void ISD4004_FunInit(ISDSendByte isb,SSLevel sl) { Isb=isb; S1=s1; SendCmd(STOPPWRDN,0); SendCmd(POWERUP,0); DelayMs(25); } 14