- 收藏
- 加入书签
基于单片机的智能公交系统的设计
摘要:在城市公共交通日益发展的背景下,如何提升公交系统的智能化水平,以更高效的方式满足乘客需求,成为当前智能交通领域亟待解决的问题。传统公交系统往往依赖固定时刻表和人工报站,难以适应实时变化的出行环境,导致乘客体验不佳,甚至影响运营效率。面对这一挑战,是否可以设计一种基于单片机的智能公交系统,以低成本、高集成度的方式,实现自动报站、信息显示、时钟同步等多功能协同。
关键词:单片机控制;智能交通;嵌入式系统;公交报站
Abstrac:Against the backdrop of the continuous development of urban public transportation, how to enhance the intelligence level of the bus system and meet passengers’ demands in a more efficient way has become an urgent issue to be addressed in the field of intelligent transportation. Traditional bus systems often rely on fixed schedules and manual announcements, which are difficult to adapt to the real-time changing travel environment, resulting in poor passenger experience and even affecting operational efficiency. In response to this challenge, can a smart bus system based on single-chip microcontrollers be designed to achieve multi-functional collaboration such as automatic announcements, information display, and clock synchronization in a low-cost and highly integrated manner.
Keywords: Single-chip microcontroller control, intelligent transportation, embedded system, bus announcement
一、绪 论
1.1选题背景
随着城市化进程的加快,公共交通系统在缓解道路拥堵、降低碳排放以及提高出行效率方面扮演着不可替代的角色。然而,传统公交系统在信息交互、精准调度以及乘客体验等方面仍然存在诸多不足。近年来,智能交通技术的兴起为公交系统的优化提供了全新思路。利用GPS定位、单片机控制、数据存储及语音播报等技术,可以构建更加智能化的公交调度与信息服务系统,使公交运营更加精准、高效。
然而,现有市场上的智能公交系统往往依赖大型智能终端或云计算中心,成本较高且维护复杂,中小城市及部分城郊线路难以普及。基于此,一个低成本、易部署、具备自动报站、精准计时和信息交互功能的智能公交系统,便成为了研究和开发的重要方向。
从未来发展趋势来看,公交系统的智能化程度将不断提升,特别是在物联网、AI调度优化等技术加持下,公交服务的响应速度、精准度以及用户体验都将迎来新的突破。在实际应用中,如何在保证系统稳定性的同时降低成本,并兼顾可扩展性和兼容性,是智能公交系统设计过程中必须考量的核心问题。本研究围绕这一需求展开,尝试通过单片机控制技术与相关外围模块的集成,探索一种既经济实用又功能丰富的智能公交系统方案。那么,这样的设计是否能够有效解决传统公交系统的痛点,并在不同环境下保持稳定运行?这正是本文试图解答的问题。
1.2国内外研究现状
1.2.1国内研究现状
近年来,国内智能公交系统的研究取得了显著进展,相关技术正逐步从传统单一功能向集成化、智能化方向演进。目前,许多城市已开始推广基于GPS与单片机技术的智能报站系统,以提高公共交通的运行效率。然而,大多数现有方案仍然依赖固定站点数据库和单向触发机制,难以适应复杂的公交线路变化。由于部分系统采用无线网络传输数据,受信号覆盖范围影响,稳定性仍有待提升。
在优化方向上,一些研究团队尝试将单片机与嵌入式存储结合,使系统能够本地存储公交站点信息,并通过GPS匹配当前车辆位置,从而在网络不稳定的情况下依旧可以正常工作。针对人工报站可能导致的信息滞后问题,不少方案引入了自动语音播报技术,并结合驾驶员操作优化交互方式,使报站模式在手动与自动之间灵活切换,以适应不同的运营需求。
1.2.2国外研究现状
在国际范围内,智能公交系统的研究已经进入较为成熟的阶段,特别是在欧美及日韩等国家,依托物联网、大数据以及人工智能技术,不少城市已构建起高度智能化的公共交通管理体系。例如,美国的部分智能公交项目已将云计算与GPS系统相结合,实现了基于实时路况的公交调度优化。这种模式在提升运营效率的也使公交到站时间预测更加精准。然而,受限于数据依赖性较强,该类系统在复杂天气条件下或网络环境受限时,可能会出现延迟或数据误差,影响其可靠性。
相比之下,日本与德国的研究方向更偏向于智能硬件的优化设计,部分城市公交系统已采用高精度的GNSS(全球导航卫星系统)以及短程无线通信技术,使车辆定位精度达到亚米级别,并能够与智能交通信号系统联动,以优化行车路径。不过,这类高精度设备的成本较高,对硬件的要求比较严格,使得推广应用的经济性成为限制因素。一些研究也指出,过度依赖外部基础设施可能会导致系统维护成本上升,并在硬件升级时面临兼容性问题。
1.3需求分析
本课题的研究核心在于构建一套基于单片机的智能公交系统,使其具备自动报站、时间同步、站点信息显示及行车方向指示等功能,同时保证系统的低成本与高稳定性。考虑到公交运行环境的复杂性,该系统不仅需要实现GPS自动报站,还应支持手动模式切换,以适应特殊情况。为了提升用户体验,系统应当具备直观的信息显示界面,使乘客能够实时获取站点与时间信息,同时保证操作方式的简便性,使驾驶员能够轻松完成必要的参数调整。
在具体实现上,本设计采用STC89C52单片机作为控制核心,结合LCD12864液晶屏、GPS模块、MY1680语音播报模块以及DS1302时钟芯片等硬件,以实现站点信息管理、语音播报及时间同步等关键功能。系统还将利用AT24C02存储芯片记录站点与经纬度数据,使公交车辆即使在无网络环境下也能完成自动报站。通过按键交互机制,用户可以手动调整系统参数,实现公交上行、下行方向的快速切换,并结合LED指示灯提供视觉反馈。
二、总体方案设计
2.1方案选型
2.1.1主控芯片的选择
STC89C52是一款基于8051架构的8位单片机,具有低成本、稳定性强、开发简单的特点。该芯片集成了丰富的I/O端口,可直接驱动LCD、GPS模块等外设,并且支持串口通信,便于数据交互。相较于STM32,该芯片的运行速度虽然较低,但对于公交报站系统而言,其任务主要集中在逻辑控制和串口通信上,并不涉及大量复杂运算,因此其性能完全可以满足需求。STC89C52的开发环境相对友好,开发人员无需额外学习复杂的ARM架构指令,大幅降低了开发和维护成本。STC89C52在满足功能需求的前提下,能够显著降低开发难度和成本,因此本方案选择STC89C52作为主控芯片。
2.1.2显示器件的选择
LCD12864是一款常见的液晶点阵显示屏,支持128×64像素的单色显示模式,能够通过外部控制器实现字符与图形的混合显示。相比于OLED屏幕,该模块虽然需要额外的背光支持,但其显示面积较大,信息承载能力更强。LCD12864在稳定性和耐用性方面表现出色,能够在长时间运行情况下保持良好的显示效果,而不会像OLED那样受到老化问题的影响。考虑到公交报站系统对耐用性的要求,LCD12864在整体适用性上更具优势。本方案选择LCD12864液晶显示屏,以确保信息显示的清晰度和长期稳定性。
2.1.3GPS定位模块的选择
ATGM336H是一款高灵敏度的GPS模块,具有较快的冷启动和热启动响应时间,能够在较短时间内完成卫星信号捕获。该模块采用了多通道卫星信号接收技术,提高了抗干扰能力,使其在城市高楼环境下仍然能够提供相对稳定的定位数据。更重要的是,ATGM336H的功耗较低,对于公交系统这样长时间工作的应用场景而言,更有助于降低整体功耗,提升系统的运行稳定性。ATGM336H在信号捕获速度、抗干扰能力和功耗控制方面表现表现优异,因此本设计选择ATGM336H GPS模块作为定位单元。
2.1.4数据存储芯片的选择
AT24C02是一款I2C接口的EEPROM存储芯片,存储容量为2Kb(256字节),虽然存储空间较小,但对于公交报站系统而言,它完全可以满足存储站点信息、GPS经纬度数据及少量配置信息的需求。相比24LC256,AT24C02的存储管理更加简洁,数据寻址范围较小,使得单片机的读写控制更为高效,同时降低了程序开发和调试的复杂性。该芯片功耗低,通信时序稳定,能够在恶劣环境下长期稳定工作,进一步提升了系统的可靠性。AT24C02凭借其容量适中、低功耗、操作简便的特点,能够充分满足系统需求,并有效降低系统复杂度,因此本方案选择AT24C02作为存储芯片。
2.1.5语音芯片的选择
MY1680是一款高集成度的语音播报模块,具有音频存储、播放控制、音量调节等功能,可通过简单的串口指令控制语音播放。相比WT588D,该模块的控制指令更加简洁,开发难度较低,便于单片机进行指令交互。MY1680的抗干扰能力较强,能够在复杂环境下保持稳定的播放效果,并且无需额外烧录语音数据,减少了开发和维护成本。MY1680模块凭借其易用性和稳定性,使得系统能够更加高效、可靠地进行语音播报,因此本方案选择MY1680作为语音播报模块。
2.2系统总体方案
本智能公交系统的硬件设计围绕STC89C52单片机展开,采用模块化架构,以确保系统功能的稳定性和可扩展性。整个系统由主控单元、显示单元、定位单元、语音播报单元、存储单元、时钟单元、输入控制单元以及状态指示单元等多个功能模块组成,各模块通过串行通信、I/O接口及I2C总线协同工作,实现公交信息的动态显示、精准定位、自动报站及用户交互功能。
在硬件实现方面,LCD12864液晶显示屏负责实时展示公交站点信息、当前时间以及行车方向,确保乘客能够一目了然地获取关键信息。GPS模块ATGM336H提供精确的经纬度数据,结合系统预设的站点坐标,实现公交车的自动报站功能。而MY1680语音播报模块的加入,使得系统不仅能在视觉上提供信息反馈,还能通过语音播报增强乘客体验,确保盲人或视力受限乘客同样能够便捷获取站点信息。
DS1302时钟芯片保证系统时间的精准管理,支持手动调整和GPS一键校时功能,避免因电源断电或误操作导致时间误差。AT24C02存储芯片用于存储站点信息及其对应的GPS坐标,使系统在重启后仍能保持重要数据不丢失。输入控制单元由多个按键组成,允许驾驶员在手动报站与自动报站模式之间自由切换,并可更改上下行方向,而LED指示灯则为驾驶员提供清晰的状态反馈,减少误操作的可能性。
通过上述硬件模块的协同工作,本系统能够满足公交报站、行车状态指示及信息存储等核心需求,并且在低成本、低功耗的前提下,确保系统运行的稳定性和可靠性。系统框图如下:
三、系统硬件电路设计
3.1硬件总电路设计
本智能公交系统的硬件电路围绕STC89C52单片机构建,采用模块化设计思路,使各功能单元既能独立运行,又能通过通信接口实现协同工作,以满足公交信息显示、语音播报、GPS定位、时间管理及用户交互等核心需求。整个系统的电路由主控单元、显示单元、定位单元、语音播报单元、存储单元、时钟单元、输入控制单元以及状态指示单元组成,各部分通过I2C总线、串行通信及GPIO接口进行互联,以确保数据传输的稳定性和响应的实时性。
在硬件结构上,主控单元采用STC89C52单片机作为核心处理器,其内部集成8位CPU和多个I/O端口,能够满足公交系统对数据处理与外设控制的需求。单片机的I/O端口连接至LCD12864液晶显示屏,用于实时显示当前站点、行车方向及时间信息;串口通信方式用于对接GPS模块ATGM336H,实时获取经纬度数据,以确定公交车辆的位置并触发自动报站功能。MY1680语音播报模块通过单片机的串口控制指令,实现站点信息的语音输出,从而提升乘客的出行体验。
在辅助功能电路方面,DS1302时钟芯片用于提供精准的时间管理功能,其串行通信接口与单片机连接,使系统能够进行时间读取和调整,并支持GPS自动校时功能,以确保时间信息的准确性。AT24C02存储芯片通过I2C总线连接至单片机,存储站点信息及GPS坐标,即便系统断电重启,仍能保持重要数据的完整性。而输入控制单元由多个按键组成,允许驾驶员手动切换报站模式、调整行车方向并进行时钟校准,确保系统的灵活性和可操作性。LED指示灯作为状态指示单元,提供公交行驶方向和系统运行状态的直观反馈,使驾驶员能够快速确认系统的当前模式。
通过这种模块化设计,整个智能公交系统不仅实现了核心功能,还保证了各功能模块的独立性与协同性,确保了系统的稳定性和可扩展性。总原理图如3-1所示,下面对主要的电路设计做详细介绍。
3.2STC89C52单片机系统设计
STC89C52是一款基于8051架构的增强型8位单片机,因其稳定性高、功耗低、扩展性强,在嵌入式系统设计中得到广泛应用。该单片机内置8K字节Flash存储器,支持ISP(在线编程)和IAP(应用程序内编程),使开发者能够在无需外部编程器的情况下进行固件升级。STC89C52的系统时钟最高可达40MHz,并集成了256字节RAM,提供丰富的I/O接口和多种外设控制功能,使其在智能公交系统中能有效执行各类数据处理与外设管理任务。
该单片机还支持中断处理机制,提供了六级优先级可编程中断,包括外部中断、定时器中断及串口中断等。这种设计保证了系统在执行多个任务时的实时响应能力,使其能够在自动报站、时间校准、手动模式切换等功能间高效切换,而不会出现任务阻塞的情况。STC89C52具备低功耗工作模式,使其在公交系统长期运行的情况下,有助于降低整体功耗,提高系统稳定性和耐用性。
在实际应用中,本系统将STC89C52作为核心处理单元,负责控制LCD12864液晶屏的数据显示,以实时呈现公交站点、行车方向及当前时间;与此它通过串口通信与GPS模块ATGM336H交互,解析经纬度数据,并结合站点坐标信息判断公交车辆是否到站,进而触发语音播报模块MY1680播放相应的站点信息。该单片机通过IC接口与AT24C02存储芯片进行数据交互,确保公交站点信息可长期存储,即便系统断电重启也不会丢失数据。
除了外部通信,STC89C52还需管理多个输入输出信号,例如通过按键检测驾驶员对系统模式的切换指令,包括“手动报站”与“GPS自动报站”模式的转换,或是上下行方向的切换。相应的系统状态变化则由LED指示灯进行反馈,确保驾驶员在操作过程中可以清晰获知当前系统运行状态。单片机内部的定时器用于配合DS1302时钟芯片,完成时间同步和定时触发操作,而这一设计能够保障报站信息的时效性,提高系统的可靠性。
STC89C52单片机凭借其稳定的性能、丰富的接口以及强大的外设控制能力,完美匹配智能公交系统的需求,使整个系统能够实现数据处理、状态管理及实时控制的有机结合,确保公交信息交互的准确性和稳定性。单片机原理图如下所示。
3.3LCD12864液晶显示电路设计
本系统采用LCD12864液晶显示屏作为信息显示单元,旨在提供清晰、直观的公交运行信息,包括当前站点、行车方向、时间日期以及系统模式等关键内容。相较于传统的字符型液晶屏,LCD12864支持图形与字符混合显示,能够在有限的屏幕面积上呈现更丰富的信息,同时其内置控制器简化了数据传输流程,使得单片机能够更高效地完成显示任务。
在实际应用中,液晶屏的数据显示由单片机控制,采用指令驱动模式,利用LCD12864内部的CGROM(字符点阵存储)和GDRAM(图形显示存储)完成信息渲染。公交站点信息、时间日期等内容以字符形式存储,并通过单片机定时刷新,而公交线路图或特殊符号则通过GDRAM自定义字符方式加载,以增强系统的可读性。为了防止显示数据因单片机复位而丢失,程序设计中实现了数据缓存机制,使屏幕在短时间掉电恢复后仍能快速恢复显示内容,提高了系统的可靠性。
该显示电路不仅实现了公交信息的高效可视化呈现,同时结合按键交互,可动态切换不同的显示模式,以适应多变的公交运行环境。该电路图如下所示。
3.4GPS模块的设计
本系统采用ATGM336H GPS模块作为定位单元,以实现公交车辆的实时定位与自动报站功能。该模块支持多星座卫星导航系统,包括GPS、北斗(BDS)和GLONASS,能够在复杂环境下提供较高的定位精度。它具备较短的冷启动时间,使系统能够在上电后迅速获取位置信息,为公交车辆的精准报站提供技术保障。
在功能实现方面,GPS模块定期向单片机发送标准NMEA(National Marine Electronics Association)协议格式的数据,其中包含经纬度、速度、时间等信息。系统通过解析 GPRMC(Recommended Minimum Specific GPS/Transit Data)和 GPGGA(Global Positioning System Fix Data)语句,提取当前经纬度数据,并与公交站点的预设坐标进行比对。当检测到车辆进入特定站点的阈值范围内,单片机立即触发 MY1680 语音播报模块,完成自动报站。该数据还可用于时钟同步,确保公交系统的时间精度保持在较高水平。
为了提升系统在复杂环境下的稳定性,GPS模块的天线选择至关重要。本设计采用无源陶瓷天线,其尺寸小、功耗低,适合公交车内部环境。但考虑到城市高楼密集区可能会影响信号接收,在硬件预留设计上,GPS模块的天线接口支持外部有源天线扩展,以在特殊环境下增强信号强度。
ATGM336H GPS 模块在定位精度、功耗控制及通信稳定性方面表现优异,能够满足公交自动报站系统的核心需求,并保证系统的长时间稳定运行。该电路图如下所示。
3.5MY1680语音模块的设计
本系统采用MY1680语音播放模块作为公交报站的音频输出单元,以确保站点信息能够通过清晰、稳定的语音形式播报给乘客。该模块内部集成语音存储、数字信号处理及功率放大电路,能够直接驱动扬声器,无需额外的音频处理芯片。MY1680支持串口通信控制方式,使单片机能够通过发送特定指令实现音频播放、暂停及音量调节等功能,从而提升系统的灵活性和可控性。
在实际应用中,该模块的主要功能是根据公交车的 GPS 位置变化,自动触发报站语音。当 ATGM336H GPS 模块向单片机发送当前位置数据后,系统会解析经纬度信息,并与预设站点坐标进行比对。一旦检测到公交车辆到达指定站点范围内,单片机会向 MY1680 发送播放指令,播报对应的站点信息。在“手动报站”模式下,驾驶员也可以通过按键控制语音模块,实现手动触发语音播放,从而满足特殊情况下的播报需求。
MY1680 模块的集成度高、功耗低、控制方式简便,能够满足公交报站系统对于语音播报的需求,同时确保音频输出的清晰度和稳定性。该电路图如下所示。
3.6DS1302时钟电路设计
本系统采用DS1302实时时钟(RTC)芯片,用于提供精准的时间管理功能,以确保公交站点信息的报站时序和显示内容保持准确同步。该芯片内置秒、分、时、日、月、年等完整的时间信息存储单元,并支持自动闰年调整,使其能够长期稳定地运行,而无需频繁的手动校准。DS1302具备低功耗特性,并支持外部备用电池供电,即便系统断电,时间数据依然能够保持不丢失,确保公交系统的时间精准度不受意外断电的影响。
在实际应用中,DS1302不仅能够提供精准的时间显示,还支持与GPS模块(ATGM336H)联动,实现一键时间校准。当系统检测到GPS数据可用时,单片机会从GPS信号中提取标准时间信息,并将其写入DS1302的寄存器,以同步系统时钟。驾驶员还可以通过按键对时间进行手动调整,以适应特定场景的需求,使系统在无GPS信号的情况下依然能够保持时间管理的灵活性。
DS1302凭借其低功耗、掉电保持功能以及SPI串行通信接口,使其在公交智能系统中能够高效、稳定地提供实时时钟管理,确保站点信息的时间同步性和准确性。该电路图如下所示。
3.7独立按键电路的设计
本系统的按键设置电路采用独立式按键输入设计,以满足公交报站模式切换、上下行方向调整、时间校准及GPS站点绑定等核心交互需求。整个按键电路由多组按键组成,每个按键均独立连接至STC89C52单片机的I/O端口,通过高低电平变化触发相应功能,使系统能够在不同的工作模式下进行灵活切换。由于本设计未使用硬件去抖,所有按键的去抖处理均通过程序实现,以简化硬件结构并减少元器件使用。
在电路实现上,每个按键采用单端接地方式,一端连接单片机的GPIO输入端口,另一端接至系统地。当用户按下按键时,相应端口由高电平拉低至低电平,单片机检测到电平变化后触发中断或轮询处理逻辑,以执行特定的功能指令。例如,手动报站模式下,驾驶员可通过按键依次手动切换站点,而在GPS自动报站模式下,按键可用于调整当前站点信息绑定,以确保报站数据的准确性。公交行驶方向的切换也通过独立按键实现,每次按下都会改变系统的上/下行状态,并通过LED指示灯和液晶屏同步反馈当前方向信息。
考虑到实际应用环境,按键电路设计时预留了额外的I/O扩展接口,以支持未来的功能拓展,例如增加快捷模式切换键或额外的参数调整功能。该按键电路以简单可靠的方式实现了核心交互功能,使系统在低成本设计的基础上仍能保持较高的操作灵活性和用户体验。该电路图如下所示。
3.8电源电路
本系统的电源设计采用直流5V供电方案,确保整体电路的稳定运行,同时兼顾移动供电的灵活性,以适应公交车环境下的实际应用需求。系统主要通过DC电源座输入电源,支持使用充电宝或电池盒进行供电,无需额外适配器和稳压芯片,从而简化电源管理电路,提升系统的适应性与可靠性。
本设计在电源输入端增加了DC电源座,以适应不同的供电方式。用户可以通过标准USB转DC线缆连接充电宝,实现便捷的移动供电,亦可使用电池盒供电,使系统在离线环境下仍然能够稳定运行。相比传统适配器供电方式,该方案不仅增强了系统的便携性,也降低了对固定电源接口的依赖,使设备可以适应多种复杂应用场景。
该电源电路方案充分考虑了公交报站系统的实际需求,既保证了供电的稳定性,又提升了系统的灵活性和耐用性,为整个系统的高效运行奠定了可靠的基础。该电路图如下所示。
3.9小结
本章围绕智能公交系统的硬件设计展开,详细介绍了各个核心模块的选型、功能实现及电路连接方式,以确保系统能够高效稳定地运行,并满足公交报站、信息显示及用户交互等需求。通过合理的硬件架构设计,本系统在保持低功耗和高可靠性的确保了各个功能模块的协同工作,为后续的软件设计与系统集成奠定了坚实的基础。
在主控单元部分,系统选用了STC89C52单片机作为核心控制器,其丰富的I/O接口、串行通信能力及稳定的8位处理能力,使其能够高效管理各个外设模块,并通过定时器、中断等机制确保系统在多任务运行时仍能保持良好的实时性。LCD12864液晶显示模块的引入,使得公交站点信息、时间日期及行车方向能够清晰直观地展现,结合LED指示灯的状态反馈,提升了驾驶员和乘客的信息获取效率。
为了实现自动报站功能,系统集成了ATGM336H GPS模块,利用其高精度定位能力,与存储在AT24C02 EEPROM芯片中的站点数据进行匹配,从而精准判断公交车的位置,并触发MY1680语音播报模块进行语音提醒。DS1302实时时钟芯片的加入,不仅确保了时间显示的准确性,还支持GPS一键校时和手动调整功能,以满足不同场景下的使用需求。
在供电及控制部分,系统采用5V直流供电方案,通过DC电源座及六角按键自锁开关提供灵活的电源管理方式,使得设备既可以通过充电宝供电,也可以使用电池盒支持长时间独立运行。合理布置的按键输入电路,使驾驶员能够轻松切换公交的行车方向、报站模式,并进行站点信息调整,确保系统的交互体验与操作便捷性。
本章的硬件设计内容涵盖了从主控芯片到外设接口、从供电电路到交互控制的完整体系,各功能模块在独立工作的通过合理的电路设计实现了高效的数据交互和稳定运行。这样的设计不仅满足了智能公交系统的基本需求,还具备良好的扩展性,为后续的软件优化及系统调试提供了充足的空间。
四、系统软件部分设计
4.1软件开发环境的介绍
本系统的软件设计采用 Keil C51 开发环境,结合 C 语言 进行代码编写,以实现公交报站系统的核心功能,包括数据处理、外设控制及交互逻辑。Keil C51 作为专门针对 8051 架构单片机 设计的开发工具,提供了高效的代码编译与调试能力,使得 STC89C52 单片机的软件开发能够更加便捷,同时借助其集成的 μVision IDE,开发人员可以进行代码编写、项目管理、仿真调试以及程序下载等全流程操作,大幅提升了开发效率。
在程序编写方面,本系统采用 C 语言 进行逻辑实现,借助其结构化编程方式,使代码逻辑更加清晰,并便于后期维护与优化。C 语言在嵌入式系统中的应用十分广泛,不仅支持位操作、指针运算等底层优化手段,还能通过库函数提高开发效率,特别是在处理GPS 串口数据解析、LCD 显示刷新、语音播报控制等任务时,能够高效完成数据计算与传输控制。由于 C 语言具备较好的可移植性,使得代码能够在不同的 8051 系列单片机上进行复用,确保了系统的可扩展性。
4.2系统重要程序的介绍
4.2.1主程序的设计
本系统的软件设计采用模块化编程思路,使各功能单元既能独立运行,又能通过数据交互协同工作,以确保公交报站、信息显示、语音播报及用户操作的实时性和准确性。主程序负责管理各模块的初始化、数据采集、逻辑处理及状态更新,并通过循环轮询和中断机制,保证系统在不同场景下均能保持高效响应。
在主程序的设计流程中,系统首先进行硬件初始化,包括LCD12864 液晶显示、GPS 模块、DS1302 实时时钟、MY1680 语音播报模块以及按键输入等核心单元。在完成初始化后,系统进入主循环,开始持续检测GPS 数据,并解析经纬度信息,以判断公交车当前所处的位置。与此同时,系统从AT24C02 EEPROM 读取站点信息,并将 GPS 解析出的坐标与存储的站点数据进行比对,以决定是否触发报站逻辑。
当系统检测到车辆进入设定的站点范围后,单片机立即向 MY1680 语音模块 发送指令,播放对应的站点信息,并同步更新 LCD12864 的显示内容,使乘客能够同时通过视觉与听觉获取公交运行信息。系统还支持手动模式,当驾驶员按下手动报站按键时,单片机会直接触发语音播放,确保在 GPS 信号异常的情况下仍能正常报站。
在时间管理方面,主程序定时从DS1302 读取当前时间,并在 LCD 屏幕上显示,以提供精准的时间参考。系统具备GPS 校时功能,当 GPS 数据稳定后,主程序会自动将 GPS 时间同步到 DS1302,以确保公交系统的时间始终精准。用户也可以通过按键手动调整时间,并将修改后的数据写入 DS1302,以满足不同环境下的需求。
程序还包含按键检测子程序,用于捕捉驾驶员的输入指令,如上下行方向切换、报站模式选择、站点信息调整等。当系统检测到按键按下后,立即进入相应的处理逻辑,并更新 LCD 显示及 LED 指示灯状态,使操作更加直观。
本系统的软件框架采用循环检测与中断处理相结合的方式,确保公交报站、信息更新及用户交互的高效执行,从而提高系统的稳定性与可靠性。下图为单片机设计主程序流程图:
4.2.2LCD12864显示程序的设计
本系统的LCD12864 显示程序负责将公交运行的核心信息直观地呈现给乘客,包括当前站点、行车方向、时间信息以及系统模式等内容。由于 LCD12864 支持字符和图形混合显示,本程序采用指令驱动模式,通过单片机的 GPIO 端口向液晶屏发送命令和数据,实现信息的动态更新和切换。
在程序执行流程中,系统首先调用 LCD 初始化子程序,向液晶屏发送初始化指令,配置显示模式,并清屏确保数据不会残留。随后,主程序定时调用 数据更新函数,根据当前系统状态,调整显示内容。例如,当公交车辆进入新站点,系统会调用 站点信息刷新子程序,从 AT24C02 EEPROM 读取当前站点名称,并将其转换为 LCD12864 可识别的格式后显示在屏幕指定区域。
同时,时间显示更新子程序 通过 DS1302 实时时钟模块 读取当前时间,并格式化为 “HH:MM:SS” 形式显示在屏幕上。系统每隔一秒钟刷新一次时间数据,确保乘客获取的时间信息始终准确。方向指示模块 通过 LED 状态及 LCD 文本显示当前公交车的行驶方向,如“上行”或“下行”,驾驶员可以通过按键调整,系统将在检测到输入信号后,立即修改液晶屏显示内容。
为了防止屏幕刷新带来的闪烁问题,程序采用 双缓冲机制,即在数据更新前,先在缓存区完成数据处理,待所有数据准备就绪后,再一次性写入 LCD 显示缓冲区,以保证屏幕内容的平滑过渡。为了提升交互体验,系统提供了动态显示模式,在不同运行状态下调整界面布局,使乘客能够快速识别关键信息,提高系统的可用性和便捷性。
综合来看,该显示程序实现了公交信息的实时、稳定、可视化呈现,确保乘客能够清晰获取公交运行状态,并通过智能交互逻辑,使系统在不同场景下均能高效响应。下图为该程序设计流程图:
4.2.3GPS数据读取子程序的设计
本系统的GPS数据读取子程序负责解析ATGM336H GPS模块发送的标准NMEA(National Marine Electronics Association)协议数据,并提取关键信息,如经纬度、时间信息、速度及卫星状态等,以实现公交车辆的精准定位和自动报站功能。该程序基于串口通信方式,通过单片机的UART 接口接收 GPS 模块的连续数据流,并按照既定规则进行解析、存储及后续应用处理。
在程序执行过程中,系统首先初始化 UART 串口模块,配置波特率、数据格式及中断模式,使单片机能够稳定接收 GPS 模块发送的实时定位数据。随后,程序进入 数据接收与缓存处理阶段,其中单片机会不断监听 GPS 串口数据流,并存储至缓冲区。当检测到完整的 NMEA 语句(如 $GPRMC 或 $GPGGA)时,系统触发数据解析子程序,按照 NMEA 格式的分隔符提取经纬度、UTC 时间及卫星信号质量等参数,并将解析出的有效数据存入全局变量,以便其他功能模块调用。
在解析完成后,主程序会进一步调用 经纬度比对子程序,将 GPS 获取的当前位置与EEPROM 预存的公交站点坐标进行匹配,并根据设定的距离阈值判断车辆是否到达特定站点。如果当前经纬度落入设定范围,系统便会向语音播报模块发送播放指令,同时更新 LCD12864 显示屏,确保乘客能够同步获取站点信息。程序还会检测 GPS时间数据,并在需要时触发时间同步子程序,实现 DS1302 实时时钟芯片的自动校时,以提高系统的时间精确度。
该子程序实现了 GPS 数据的高效采集、解析及应用,使公交报站系统能够精准、实时地完成定位任务,并确保数据处理的稳定性和准确性。下图为该程序设计流程图:
4.2.4DS1302读时程序的设计
本系统的DS1302读时子程序用于从DS1302实时时钟芯片中读取当前时间,并将其转换为可用格式,以便在LCD12864显示屏上实时显示,同时供其他功能模块调用。DS1302采用串行通信方式,通过I/O、SCLK、RST 三个引脚与单片机进行数据交互,因此程序在设计时需严格按照通信时序,确保数据传输的稳定性和准确性。
在程序执行过程中,单片机首先调用DS1302初始化子程序,配置通信接口并确认芯片正常工作。随后,主程序定时触发读时操作,启动读取命令发送子程序,向DS1302写入时间读取指令,激活数据输出模式。接着,程序进入数据接收阶段,按照秒→分→时→日→月→年的顺序,从DS1302依次读取时间寄存器数据,并暂存至全局变量中。
为了保证数据的正确性,程序在接收时间数据后,调用BCD码转换子程序,将DS1302采用的BCD格式转换为十进制格式,便于在LCD上显示和供其他模块调用。同时,为了防止数据读取过程中因电源波动或干扰导致时间错乱,程序还会对读取到的时间数据进行逻辑校验,如检测秒值是否超出60,若发现异常,则自动重新读取。
系统支持GPS自动校时功能,当检测到GPS提供的时间数据时,程序会比对当前系统时间,并在误差超过设定阈值时,调用DS1302写时子程序进行时间校正,以确保整个系统时间的精准同步,避免报站信息因时钟误差而产生偏差。
该程序实现了对DS1302的精准时间读取,并通过数据转换与校验机制,确保公交报站系统的时间显示与时间同步功能的高效运行。下图为该程序设计流程图:
4.2.5AT24C02读/写程序的设计
本系统的AT24C02 读/写子程序用于在 EEPROM 中存储和读取公交站点信息及其对应的 GPS 经纬度坐标,以确保系统在断电后仍能保留重要数据。由于 AT24C02 采用 I2C 通信协议,其数据交互需要严格遵循 I2C 时序,因此本程序基于 SCL(时钟线) 和 SDA(数据线) 进行读写控制,并通过软件模拟 I2C 时序,以适应 STC89C52 单片机 的操作需求。
在数据写入流程中,单片机首先调用 EEPROM 初始化子程序,配置 I2C 总线的通信参数,并确保存储芯片处于空闲状态。随后,程序进入 数据写入阶段,先向 AT24C02 发送起始信号,然后写入目标存储地址,再依次发送要存储的站点信息和 GPS 坐标数据。由于 AT24C02 采用页写方式,单次最多能写 8 个字节,因此程序在数据量较大时,会自动拆分数据并进行分页写入,确保数据完整性。数据写入完成后,系统发送 停止信号,并进入短暂的 写入完成等待状态,以确保存储过程稳定可靠。
在数据读取流程中,系统首先调用 EEPROM 地址定位子程序,向 AT24C02 发送目标存储地址,并等待芯片响应。随后,程序进入 数据接收阶段,单片机通过 I2C 读取存储的站点名称及 GPS 经纬度信息,并存入全局变量,以便 GPS 比对子程序 进行站点匹配。同时,为了防止数据读取错误,程序在每次接收字节后,都会进行 数据校验,若检测到数据异常,则重新发送读取指令,确保系统能够准确获取存储信息。
该子程序实现了对 AT24C02 的稳定读写,使公交系统能够在断电重启后继续使用已存储的站点数据,提高了系统的可靠性和长期运行能力。下图为该程序设计流程图:
4.3小结
本章围绕智能公交系统的软件设计展开,详细介绍了各个功能模块的程序逻辑及其相互协作方式,以确保系统在公交报站、信息显示、时间管理以及数据存储等方面均能实现高效、稳定的运行。通过模块化的软件架构,系统不仅能够精准解析 GPS 定位数据,实现自动报站,还支持用户交互操作,使公交运行信息得以清晰呈现,提升了整体的可靠性与灵活性。
在主程序框架中,系统采用循环检测与中断响应相结合的设计思路,使单片机能够持续监听 GPS 数据流、定时刷新 LCD 显示内容,并在必要时触发语音播报功能。结合 DS1302 实时时钟模块,系统具备自动时间同步与手动校准功能,确保站点播报的时间精准无误。EEPROM 存储模块的加入,使公交站点信息得以长期保存,即便设备断电重启,也能恢复关键数据,保证报站功能的连续性。
在具体的软件实现方面,系统采用 Keil C51 开发环境 进行代码编写,并借助 C 语言的结构化编程方式,使各个子程序逻辑清晰、便于维护。例如,LCD12864 显示程序能够动态更新站点、时间、行车方向等信息,而 GPS 解析程序则负责实时提取经纬度坐标,并与 EEPROM 存储的站点数据进行匹配,以决定是否触发语音播报。与此按键交互程序 允许驾驶员通过物理按键切换上下行模式、手动报站或调整时间,使系统在自动化的基础上依然保留一定的手动操作空间,以适应特殊场景需求。
五、系统调试
本系统的硬件焊接与调试环节涉及多个功能模块的集成,包括STC89C52单片机、LCD12864显示模块、ATGM336H GPS模块、MY1680语音播报模块、DS1302时钟芯片、AT24C02存储芯片、按键控制电路以及电源管理单元等。为了确保各模块之间的信号传输稳定,焊接过程中不仅要保证焊点牢固,同时也需要注意电路的布局,以减少干扰和信号损耗。
在整个调试过程中,按键输入模块的灵敏度也是一个关键问题。最初的测试中,由于按键未加去抖电路,导致单片机在检测按键状态时产生误触发现象。为了解决这个问题,在软件中引入了软件去抖算法,并在硬件端增加RC 滤波电路,从而确保按键输入的稳定性。在公交方向切换指示的 LED 灯调试过程中,发现部分 LED 亮度异常,经过检查后发现是限流电阻值过大导致电流不足,调整至合适阻值后,LED 指示效果恢复正常。
在焊接与功能调试过程中,通过优化硬件连接、调整信号匹配、增加滤波电路及优化软件处理逻辑,使得整个系统的各个模块能够稳定运行,并最终实现公交信息显示、GPS 自动报站、语音播报、时间管理及用户交互等功能。
六、总结
本设计围绕基于单片机的智能公交系统展开,从硬件电路搭建到软件功能实现,逐步构建了一套能够满足公交信息显示、GPS 自动报站、语音播报、时间同步及用户交互的综合解决方案。在整个开发过程中,软硬件的协同设计不仅提升了系统的稳定性,同时也确保了各模块之间的高效配合,使系统在运行过程中能够准确处理数据,并及时响应用户操作需求。
参考文献:
[1]北京航空航天大学. 单片机与嵌入式系统应用[J]. 单片机与嵌入式系统应用, 2020, 20(12):4.
[2]宋雪. 中等职业学校《单片机原理与应用》课程教学案例设计[D]. 长春师范大学, 2020.
[3]方杰, 胡春雷. 基于51单片机的可视可听公交车自动报站系统的设计与实现[J]. 电脑知识与技术, 2019, 015(002):221-223.
[4]戈皓月, 张梁山, 姜文虎,等. 基于单片机的公交车智能报站系统设计[J]. 电子制作, 2019(13):3.
[5]郭辉豪. 公交车报站系统设计[J]. 电子乐园, 2019(21):1.
[6]陈林, 王庐山. 智能公交报站系统电路分析与调试[J]. 电子技术(上海), 2020(2):2.
[7]李洪波, 李国良. 基于STC89C52和WT588D的公交车自动报站系统设计[J]. 科教导刊:电子版, 2020(30):2.
[8]高宏岩, 王闻阳. 基于单片机的公交自动报站实验系统设计[J]. 实验室科学, 2018, 21(1):4.
[9]熊家慧. 基于公交车自动报站系统的分析与设计[J]. 仪表技术, 2018(10):4.
[10]邱婧, 江柴露. 智能公交系统设计探讨[J]. 南方农机, 2019, 50(9):1.
[11]Manikanth B . Bus Announcement and Display System using Wireless Communication. 2019.
项目名称:智能公交系统的研究
项目编号:5202210666504
作者简介:肖金鹏(2002.09.10),性别:男,民族:土家,籍贯:贵州思南,学历:本科,兴义民族师范学院 物理与工程技术学院,职称:兴义民族师范学院2025届本科生














京公网安备 11011302003690号