基于单片机的出租车计费器设计
出租车计费器设计简介及意义:
出租车计费器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4个发展阶段。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的出租车计价器。
出租车计价器计费是否准确是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。因此怎样设计出一种既能准确计价又能方便司机的计价器尤为重要。
系统设计:
本设计采用AT89S52单片机作为核心,设计了一款多功能出租车计价器。该计价器能实现按时间和里程综合计算车价能显示时间、里程、单价、总车价等相关信息显示。它比市场上的一些计价器使用更方便,功能更全,还具有系统稳定性好的优点。
系统模块图:
电源按键晶振AT89S521602 液晶蜂鸣器LED 灯AT24C02
键盘接口电路:
独立式键盘:独立式键盘中,每个按键占用一根I/O 口线,每个按键电路相对独立。I/O口通过按键与地相连,I/O 口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。I/O 口内部有上拉电阻时,外部可不接上拉电阻。本次设计用到的6个按键,分别于单片机的到相连
液晶LCD1602 显示电路:
液晶LCD1602 显示电路用于显示出租车计价器的各种信息,如时间、里程、单价、总车价等。
定时器模拟路程远近:
出租车中需要一个能准确获得车轮转动即路量信号的装置,以得到标准的脉冲信号送入单片机的定时/计数器T1,即P3.5引脚,利用单片机的T1 的计数功能完成100次的计数后产生一中断来完成路程的测量。(设车轮周长为1m,则霍尔传感器每产生100个脉冲便表示车已行行驶0.1km,为了演示方便本设计中采用按键模拟增加里程。每按一个按键增加公里的里程。如果按两次就是1公里,以此类推不断的增加来模拟车的不断前进。
软件设计:
void timer1() interrupt 3 // 定时器1 中断 20 次为 1s
{
time++;
TL1=0x00;
TH1=0x4c;
counter_time(); // 倒计时
}
void EX_INT0(void) interrupt 0 // 外部中断 0 函数
{
uchar num;
num++; // 一个计数器自增 1
IT0=1; // 边沿触发方式
if(num==10 ) // 判断是否有 10 个脉冲
{
num=0; // 清零
road += 0.1; // 每十次中断里程加
}
}
C语言实现:
C语言是编程语言中的一种,它具有强大的编程能力和灵活性,广泛应用于各种领域。该设计中使用C语言来实现出租车计费器的软件设计。
液晶显示子程序:
液晶显示子程序用于显示出租车计费器的各种信息,如时间、里程、单价、总车价等。
键盘子函数:
键盘子函数用于检测键盘输入,实现出租车计价器的键盘操作。
void keyscan(void)
{
/* 单价开始操作开始 */
if(swtich==0)
delay(20);
if(swtich==0) // 松手检测
{
Beep();
dayAndNight = ~dayAndNight;
}
}
本设计采用AT89S52单片机作为核心,设计了一款多功能出租车计价器,具有系统稳定性好的优点,可以满足出租车行业的需求。