1889基于单片机的智能公交报站系统设计(仿真、程序、原理图、设计报告、清单)【毕设课设】

摘要
本文设计了一种基于STC89C52单片机的智能公交报站系统,该系统实现了公交车的自动报站功能,同时提供了丰富的信息显示和设置选项。通过初始化单片机I/O口、实时时钟芯片、定时器以及12864液晶屏等模块,系统能够准确显示时间、温度以及站台、公交车内信息等,提升了乘客的乘车体验。

关键词:STC89C52单片机;智能公交报站系统;12864液晶屏;实时时钟芯片

一、引言

随着城市化进程的加快,公共交通作为城市发展的重要组成部分,其服务水平直接关系到市民的出行体验。智能公交报站系统作为公共交通服务的重要组成部分,能够提高公交车的服务质量和效率,为乘客提供更加便捷、舒适的出行体验。本文设计了一种基于STC89C52单片机的智能公交报站系统,旨在满足现代公交服务的需求。

二、系统总体设计

本系统以STC89C52单片机为核心控制器,通过初始化各个模块,实现公交车的自动报站功能以及信息的显示和设置。系统主要包括主程序、显示模块和按键模块等部分。

三、主程序设计

主程序是系统的核心,负责初始化各个模块并控制整个系统的运行流程。在主程序中,首先给报站控制变量赋初值,然后初始化单片机的I/O口、实时时钟芯片、定时器0以及12864液晶屏等模块。接下来,系统开始检测按键输入,根据按键的不同执行相应的程序。如果检测到时间设置按键按下,则执行时间设置程序;如果检测到站台信息显示按键按下,则显示站台信息;如果检测到公交车信息显示按键按下,则显示公交车内信息。此外,主程序还负责每200ms刷新一次时间和温度显示数值,保证信息的实时性。

四、显示模块设计

显示模块采用12864液晶屏,用于实时显示时间、温度、站台以及公交车内等信息。在初始化过程中,设置液晶屏的显示参数和界面布局。开机时,液晶屏只显示时间和温度信息。当按下不同的按键时,液晶屏会切换到相应的信息显示界面,如站台信息显示界面、公交车信息显示界面等。同时,根据用户的需求,还可以设置到达站和下站信息的显示,以及手动播报功能。

五、按键模块设计

按键模块包括站台信息显示按键、公交车信息显示按键、时间设置按键、上下行设置键、手动播报键以及关闭播报键等。用户通过按下不同的按键,实现对系统的控制和信息的设置。例如,按下时间设置按键后,系统进入时间设置界面,用户可以通过按键调节年月日时分秒等数值;按下手动播报键后,系统会播报当前站和下站信息;按下关闭播报键后,系统回到开机显示界面。

六、系统测试与结果分析

经过实际测试,本系统能够准确实现公交车的自动报站功能,同时提供了丰富的信息显示和设置选项。液晶屏显示清晰,按键响应迅速,用户体验良好。在实际应用中,该系统能够有效提高公交车的服务质量和效率,提升乘客的出行体验。

七、结论

本文设计了一种基于STC89C52单片机的智能公交报站系统,通过初始化各个模块和设计合理的程序流程,实现了公交车的自动报站功能以及信息的显示和设置。该系统具有操作简便、显示直观、功能丰富等优点,为现代公交服务提供了一种有效的解决方案。

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#include "value.h"
sbit x_key=P1^3;
sbit s_key=P1^4;
sbit bz_key=P1^5;
sbit gb_key=P1^6;
sbit x_LED=P2^6;
sbit s_LED=P2^7;
sbit key_zhantai=P3^0;
sbit key_gongjiao=P3^1;
uchar x_mode,s_mode;
uchar x_num,s_num;
bit flag_200ms = 1;
uchar flag_c_en;
bit flag_100ms;
sbit dq=P3^2;	  //18b20 IO口的定义
uint temperature ;    //温度变量
uint flag_zhantai ;    //站台显示标志位
uint flag_gongjiao ;    //公交显示标志位

/************ 延时函数  *****************/
void delay_uint(uint z)
{
 while(z--);
}
/********************************************************************
* 名称 : delay_1ms()
* 功能 : 延时1ms函数
* 输入 : q
* 输出 : 无
***********************************************************************/
void delay_1ms(uint q)
{	
 uint i,j;
 for(i=0;i<q;i++)
 for(j=0;j<115;j++);
}
uchar dis_lcd[10];
#include "lcd12864bu.h"
/******************显示时间函数***************************/
void dis_shijian()	//显示时间
{
 write_shu16(0,0*8,shi,0);
 write_shuzi(1,0*2,2*8,fuhao[1],0);		
 write_shu16(0,3*8,fen,0);	
 write_shuzi(1,0*2,5*8,fuhao[1],0);		
 write_shu16(0,6*8,miao,0);

 write_yhanzi(2,0,5*16,qita[6]);   //星期
 //write_shu16(0,14*8,week,0);
 if(week==0)
 {
  write_yhanzi(1,0,7*16,xingqi[0]);
 }
 if(week==1)
 {
  write_yhanzi(1,0,7*16,xingqi[1]);  
 }
 if(week==2)
 {
  write_yhanzi(1,0,7*16,xingqi[2]);   
 }
 if(week==3)
 {
  write_yhanzi(1,0,7*16,xingqi[3]);   
 }
 if(week==4)
 {
  write_yhanzi(1,0,7*16,xingqi[4]);   
 }
 if(week==5)
 {
  write_yhanzi(1,0,7*16,xingqi[5]);   
 }
部分代码。..

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值