基于单片机的公交语音自动报站器系统设计毕业设计论文word格式内容摘要:

型应用电路: 13 图 37 MIC 录音电路 [2] 图 38 SPI 接口控制电路 [2] DF 无线收发模块 [5] 无线数据传输广泛地运用在车辆监控、 遥控、遥测、小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触 RF 智能卡、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器人控制、无线 232 数据通信、无线 485/422 数据通信、数字音频、数字图像传输等领域中。 ①无线发射模块 14 图 39 R315 无线发射模块电路原理图 [ 3] 主要技术指标: :调幅 AM : 315MHZ :177。 75KHZ :≤ 500MW :≤ : 3~ 50MA : DC 3~ 12V DF 数据发射模块的工作频率为 315M,采用声表谐振器 SAW 稳频,频率稳定度极高,当环境温度在 11- 25~+ 85 度之间变化时,频飘仅为3ppm/度。 特别适合多发一收无线遥控及数据传输系统。 声表谐振器的频率稳定度仅次于晶体,而一般的 LC 振荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及振动也很难保证已调好的频点不会发 15 生偏移。 DF 发射模块未设编码集成电路,而增加了一只数据调制三极管 Q1,这种结构使得它可以方便地和其它固定编码电路、滚 动码电路及单片机接口,而不必考虑编码电路的工作电压和输出幅度信号值的大小。 比如用PT2262 等编码集成电路配接时,直接将它们的数据输出端第 17 脚接至 DF数据模块的输入端即可。 DF 数据模块具有较宽的工作电压范围 3~ 12V,当电压变化时发射频率基本不变 ,和发射模块配套的接收模块无需任何调整就能稳定地接收。 当发射电压为 3V 时,空旷地传输距离约 20~ 50 米,发射功率较小,当电压 5V 时约 100~ 200 米,当电压 9V 时约 300~ 500米,当发射电压为 12V 时,为最佳工作电压,具有较好的发射效果,发射电流约 60 毫安,空旷 地传输距离 700~ 800 米,发射功率约 500 毫瓦。 当电压大于 l2V 时功耗增大,有效发射功率不再明显提高。 这套模块的特点是发射功率比较大,传输距离比较远,比较适合恶劣条件下进行通讯。 天线最好选用 25 厘米长的导线,远距离传输时最好能够竖立起来,因为无线电信号传输时收很多因素的影响,所以一般实用距离只有标称距离的 20%甚至更少,这点需要在开发时注意考虑。 DF 数据模块采用 ASK 方式调制,以降低功耗,当数据信号停止时发射电流降为零,数据信号与 DF 发射模块输入端可以用电阻或者直接连接而不能用电容耦合,否则 DF 发射模块 将不能正常工作。 数据电平应接近DF 数据模块的实际工作电压,以获得较高的调制效果。 DF 发射发射模块最好能垂直安装在主板的边缘,应离开周围器件5mm 以上,以免受分布参数影晌。 DF 模块的传输距离与调制信号頻率及幅度,发射电压及电池容量,发射天线,接收机的灵敏度,收发环境有关。 一般在开阔区最大发射距离约 800 米,在有障碍的情况下,距离会缩短,由于无线电信号传输过程中的折射和反射会形成一些死区及不稳定区域,不同的收发环境会有不同的收发距离。 ② DF 无线接收模块 超外差式 RX3310 接收模块: 16 图 310 超外差接收模块等效原理图 [ 3] 主要技术指标: :调幅 AM : 315MHZ(声表上标注为 ) :177。 75KHZ :- 102DBM :≤ 5MA :≤ 5MA : DC 5V : TTL 电平 超外差接收机对天线的阻抗匹配要求较高,要求外接天线的阻抗必须是 50 欧姆的,否则对接收灵敏度有很大的影响,所以如果用 1/4 波长的普通导线时应为 23 厘米最佳,要尽可能减少天线根部到发射模块天线焊接处的引线长度,如果无法减小,可 以用特性阻抗 50 欧姆的射频同轴电缆连接(天线焊点右侧有一个专门的接地焊点)。 ③编解码芯片的使用 [ 5] PT2262/2272 是台湾普城公司生产的一种 CMOS 工艺制造的低功耗低价位通用编解码电路, PT2262/2272 最多可有 12 位 (A0A11)三态地址端管脚 (悬空 ,接高电平 ,接低电平 ),任意组合可提供 531441 地址码 ,PT2262 最多可有 6 位 (D0D5)数据端管脚 ,设定的地址码和数据码从 17 脚串行输出,可用于无线遥控发射电路。 17 PT2262/2272 特点: CMOS 工艺制造,低功耗,外部元器件少, RC 振荡电阻,工作电压范围宽: ~ 15v,数据最多可达 6 位,地址码最多可达 531441 种。 应用范围:车辆防盗系统、家庭防盗系统、遥控玩具、其他电器遥控。 图 311 PT2262 器件引脚 [ 5] 图 312 PT2272 器件引脚 [ 5] DF 无线数据模块和 PT2262/PT2272 等专用编解码芯片使用时,连接很简单只要直接连接即可,传输距离比较理想,一般能达到 600 米以上,如果和单片机配合使用时,会受到单片机的时钟干扰,造成传输距离明显下降,一般实用距离在 200 米以内。 编码芯片 PT2262 发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片 PT2272 接收到信号后,其地址码经过两次比较核对后, VT 脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。 当发射机没有按键按下时, PT2262 不接通电源,其 17 脚为低电平,所以 315MHz 的高频发射电路不工作,当有按键按下时, PT2262 得电工作,其第 17 脚输出经调制的串行数据信号,当 17 脚为高电平期间 315MHz 的高频发射电路起振并发射等幅高频信号,当 17 脚为低平期间 315MHz 的高频 发射电路停止振荡,所以高频发射电路完全收控于 PT2262 的 17 脚输出的数字信号,从而对高频电路完成幅度键控( ASK 调制)相当于调制度为 100%的调幅。 DF JHD162A 液晶显示模块 [4] 特性: 显示内容: 16 字符 x 2 行 字符点阵: 5 x 8 点 驱动方式: 1/16D 18 接口: 图 313 JHD162A 器件引脚说明 [ 4] 基本操作时序: 读状态: RS= L, RW= H, E= H 写指令: RS= L, RW= L, D0~D7=指令码, E=高脉冲 读数据: RS= H, E= H 写数据: RS= H, RW= L, D0~D7=数据, E=高脉冲 控制器内部带有 80 8 位( 80 字节)的 RAM 缓冲区。 对应关系如图 318。 图 314 RAM 地址映射图 [ 4] JHD162A 各种功能命令设置如下表: 表 31 显示模式指令码 19 表 32 显示开 /关及光标设置 表 33 数据指针设置 表 34 其它设置 20 第 4 章 软件设计 系统程序流程图 为满足系统 程序设计, 根据设计要求和设计思路以及各个模块设计系统流程图如下所示: 图 41 系统程序流程图 21 程序子 函数模块代码 ①按键扫描驱动 该模块为语音芯片内部集成模块。 ②无线接收端扫描函数 该函数采用 while 语句判断 P31 端口是否出现下降沿,如果出现下降沿则往下执行,如果没有则等待。 while(P31)。 //扫描 P31 端口 delay()。 //延时防止尖峰信号的干扰 ③红外发射模块(实验室演示用) void send() // 红外发送 { re=0。 TMOD=0x02。 //计数器工作模式 EA=1。 TH0=0xf3。 TL0=0xf3。 ET0=1。 }………… void ttl(void)interrupt 1//定时器 /计数器 0(TF0) { re=~re。 } 图 42 信号发射波形 22 通过设定采用定时器 /计数器 0 以方式 2 工作。 定时 /计数方式 2 是将两个 8 位计数器 THx、 TLx 分成独立的两部分,组成一个 8 位可自动再装入的定时器 /计数器。 由 TLx 作为 8 位计数器, THx 作为计数初值寄存器,设置初值时同时送 THx 和 TLx,启动后,当 TLx 计数满回 0 产生溢出,不仅置为 TFx,向主机请求中断,并且控制 THx 中的初值重新装入 TLx 中,继续下一轮计数。 通过软 件只需设置一次初值,启动后可连续无限次定时 /计数运行,上一次计数结束,立即继续下一次,中间不会丢失计数信号。 重新再装入将不影响 THx 的内容 [7]。 系统采用 12MHz 晶振,时钟周期为 1/12 us,机器周期则为 1us。 中断计数时间为( FFF3) *2*1us=12us。 如果忽略指令的执行时间,那么 re 的电平改变周期为 24us。 发射频率为 1/24us≈。 ④语音模块 该模块采用单片机端口输出负脉冲信号模拟按键信号对语音芯片进行控制。 P24=0。 //模拟负脉冲 FWD 有效,播放指针指向下一段 delay()。 P24=1。 delay()。 //给语音芯片一定的执行时间 16P25=0。 //模拟负脉冲 PLAY 有效,播放当前段 delay()。 P25=1。 本模块程序流程如图 43。 23 图 43 语音芯片运行流程 ⑤液晶显示模块 内部等待函数 LCD_Wait(void) unsigned char LCD_Wait(void) { LcdRs=0。 //读状态 LcdRw=1。 _nop_()。 LcdEn=1。 _nop_()。 while(DBPortamp。 0x80)。 //判断读写状态使能标志 LcdEn=0。 return DBPort。 } 向 LCD 写入命令或数据子函数 LCD_Write() void LCD_Write(bit style,unsigned char input) { LcdEn=0。 LcdRs=style。 LcdRw=0。 _nop_()。 DBPort=input。 _nop_()。 //注意顺序 LcdEn=1。 _nop_()。 //注意顺序给 En 一个高脉冲 24 LcdEn=0。 _nop_()。 LCD_Wait()。 } 设置显示模式子函数 LCD_SetDisplay() 该函数可以根据表 32 设置显示的开关、光标的有无、光标是否闪 动。 void LCD_SetDisplay(unsigned char DisplayMode) { LCD_Write(LCD_COMMAND,0x08|DisplayMode)。 //|算术或 } 设置输入模式子函数 LCD_SetInput() 该函数可根据表 32 设置画面是否平移以及平移的方向。 void LCD_SetInput(unsigned char InputMode) { LCD_Write(LCD_COMMAND,0x04|InputMode)。 } 初始化 LCD 子函数 LCD_Initial() void LCD_Initial() { LcdEn=0。 LCD_Write(LCD_COMMAND,0x38)。 //8 位数据 端口 ,16 2 行显示 ,5*7点阵 LCD_Write(LCD_COMMAND,0x38)。 LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR)。 //开启显示 , 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN)。 //清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE)。 //AC 递增 , 画面不动 } 显示定位子函数 GotoXY() void GotoXY(unsigned char x,unsigned char y) { if(y==0) 25 LCD_Write(LCD_COMMAND,0x80|x)。 //第一行设 数据指针地址 if(y==1) LCD_Write(LCD_COMMAND,0x80|(x0x40))。 } 显示字符子 函数 Print() void Print(unsigned char*str) { while(*str!=39。 \039。 ) { LCD_Write(LCD_DATA,*str)。 str++。 delay1()。 } } ⑥站点信息。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。