0508-基于单片机的出租车计价计费系统设计

随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。

功能描述

1、采用51单片机作为主控芯片;

2、DS1302时钟芯片准确计时具有重新上电不用调时的功能;

3、采用LCD1602液晶显示;

4、采用24c02芯片掉电存储设置的计费数据,即使掉电也不会丢失设置的费用;

5、采用直流电机模拟发动机工作;

6、通过霍尔元件检测电机转速,换算后折合成实际速度,使整个设计更加逼真;

7、当无乘客时液晶可以显示时间(年月日时分秒),时间可以按键设置;

8、当有乘客时电机工作,并可以通过电位器调节电机速度,模拟汽车速度的变化,当车速低或者停车时,自动切换到低速模式,按时收费;

9、可以通过按键开始计费系统工作,收费可以修改(包括起价费、超过起价费每公里或分钟收费、白天和夜晚收费标准);

10、自动根据时间切换白天和夜晚收费标准。

0508-基于单片机的出租车计价计费系统设计_第1张图片

按键说明

K1: 在时间显示界面和计价界面之间切换;

K2: 加键,对设置参数值进行+1操作;

K3: 减键,对设置参数值进行-1操作;

K4: 进入/退出设置模式;切换设置位;

整体方案

本次出租车计价器设计可以分为六个模块,主控模块、计时模块、存储模块、显示模块、按键模块和电机驱动模块。

0508-基于单片机的出租车计价计费系统设计_第2张图片

电路设计

采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

0508-基于单片机的出租车计价计费系统设计_第3张图片

仿真设计

采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

0508-基于单片机的出租车计价计费系统设计_第4张图片

0508-基于单片机的出租车计价计费系统设计_第5张图片

主程序设计

void main()
{
	//初始化
	Ds1302_Init();
	Init_LCD();
	initeeprom();
	//SETS();
	//读取初始参数
	READS();
	//定时器初始化
	InitTimer0();
	//循环
	while(1)
	{
		//时钟模式
		if(Mode==0)
		{
			//读时间
			if(Wei==0)
			{
				Ds1302_Read_Time();
				//显示时间
				display_NYR(time_buf1,Wei,0);
			}
		}
		else if(Mode==1)
		{
			if(time_buf1[4]>=23||time_buf1[4]<7)  
			DN=1;
			else
			DN=0;
			//显示计价器信息
			
			display_S(Day,Night,DanJia,ZJ,GL/10,Time,GT,DN);
		}


		if(K4==0)
		{
			delay(100);
			//调时
			if(Mode==0)
			{
				Wei++;
				if(Wei==1)
				{
					SS=1;
				}
				//闪烁
				display_NYR(time_buf1,Wei,SS);
				if(Wei==7)
				{
					Wei=0;
					//保存时间
					Ds1302_Write_Time();
					Init_LCD();
				}
			}
			else if(Mode==1)
			{
				JGWei++;
				if(JGWei==1)
				{
					Mode=2;
					//显示计价器价格
					Init_LCD_JGTZ();
					display_D(Day,Night,DanJia,JGWei,DJ_min);
				}
			}
			else if(Mode==2)
			{	
				JGWei++;	
				display_D(Day,Night,DanJia,JGWei,DJ_min);
				if(JGWei==5)
				{
					Mode=1;
					JGWei=0;
					//参数初始化
					//保存
					SETS();
					//读初值
					READS();
	
					ZJ=0;
					GL=0;
					Time=0;
					//开启定时器
					TR0=1;
					//显示计价器
					Init_LCD_JJQ();
				}
			}
			while(K4==0);
		}

源文件获取 

关注公众号【电子开发圈】,首页发送 “出租车” 获取;

你可能感兴趣的:(MCU51系统设计,单片机,系统设计,出租车计价,单片机设计)