基于51单片机出租车计费设计(proteus仿真+程序+原理图+设计说明书)
出租车计费设计
- 基于51单片机出租车计费仿真设计(proteus仿真+程序+原理图+设计说明书)
- 功能说明
- 仿真图
- 程序
- 原理图
- 设计说明书
- 摘要
- 设计清单(提供资料清单所有文件)
- 资料下载
基于51单片机出租车计费仿真设计(proteus仿真+程序+原理图+设计说明书)
仿真图proteus 7.8
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:C0050
功能说明
51单片机 + 1302时钟芯片准确计时 + LCD1602液晶显示 + 24c02芯片可以掉电存储数据 + 3v直流电机模拟发动机工作。
1、当无乘客时液晶可以显示时间(年月日时分秒),时间可以按键设置,此时电机不工作;
2、当有乘客时电机工作,可以通过按键开始计费系统工作,有清零键,收费可以修改(包括起价费、超过起价费每公里或分钟收费、白天和夜晚收费标准);
3、可以切换白天和夜晚收费标准,可以按照分钟或公里收费切换。
仿真图
程序
//出租车计价器
//宏定义
#define uchar unsigned char
#define uint unsigned int //头函数声明
#include <reg52.h>
#include "Lcd.h"
#include "Data.h"
#include "DS1302.h"
#include "AT24C02.h"//键盘定义
sbit K1=P3^4; //模式切换
sbit K2=P3^6; //减按键
sbit K3=P3^5; //加按键
sbit K4=P3^7; //万年历模式时:设置时间信息。计价器模式时:设置单价//模式0时钟 1时钟调整
uchar Mode=0;
//时钟屏幕调整
uchar Wei=0;
uchar SS=0;
//价格调整
uchar JGWei=0;//计价器参数
uint Day=0;
uint Night=0;
uint DanJia=0;
uint DJ_min=0;
uint ZJ=0;
unsigned long GL=0;
uint Time=0;
uint count=0;
uchar m=0;
//白天/晚上
uchar DN=0;
//公里/时间
uchar GT=0;//初始化函数
void InitTimer0();
//写初值
void SETS();
//读初值
void READS();//主函数
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;elseDN=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);}//+if(K3==0){delay(100);//调时if(Mode==0){//年if(Wei==1){time_buf1[1]++;if(time_buf1[1]>=100)time_buf1[1]=0;}//月else if(Wei==2){time_buf1[2]++;if(time_buf1[2]>=13)time_buf1[2]=1;}//日else if(Wei==3){time_buf1[3]++;if(time_buf1[3]>=YDay(time_buf1[1],time_buf1[2])+1)time_buf1[3]=1;} //时else if(Wei==4){time_buf1[4]++;if(time_buf1[4]>=24)time_buf1[4]=0;} //分else if(Wei==5){time_buf1[5]++;if(time_buf1[5]>=60)time_buf1[5]=0;}//秒else if(Wei==6){time_buf1[6]++;if(time_buf1[6]>=60)time_buf1[6]=0;}//显示if(Wei!=0)display_NYR(time_buf1,Wei,SS); }//调价else if(Mode==2){//单价if(JGWei==1){DanJia++;if(DanJia>999){DanJia=1;}}//等待时间单价else if(JGWei==2){DJ_min++;if(DJ_min>999){DJ_min=1;}}//夜间else if(JGWei==3){Night++;if(Night>999){Night=1;}}//白天else if(JGWei==4){Day++;if(Day>999){Day=1;}}display_D(Day,Night,DanJia,JGWei,DJ_min);}while(K3==0);}//-if(K2==0){delay(100);//调时if(Mode==0){//年if(Wei==1){time_buf1[1]--;if(time_buf1[1]<0)time_buf1[1]=99;}//月else if(Wei==2){time_buf1[2]--;if(time_buf1[2]<=0)time_buf1[2]=12;}//日else if(Wei==3){time_buf1[3]--;if(time_buf1[3]<=0)time_buf1[3]=YDay(time_buf1[1],time_buf1[2]);} //时else if(Wei==4){time_buf1[4]--;if(time_buf1[4]<0)time_buf1[4]=23;} //分else if(Wei==5){time_buf1[5]--;if(time_buf1[5]<0)time_buf1[5]=59;}//秒else if(Wei==6){time_buf1[6]--;if(time_buf1[6]<0)time_buf1[6]=59;}//显示if(Wei!=0)display_NYR(time_buf1,Wei,SS); }//调价else if(Mode==2){//单价if(JGWei==1){DanJia--;if(DanJia==0){DanJia=999;}}//等待时间单价else if(JGWei==2){DJ_min--;if(DJ_min==0){DJ_min=999;}}//夜间else if(JGWei==3){Night--;if(Night==0){Night=999;}}//白天else if(JGWei==4){Day--;if(Day==0){Day=999;}}display_D(Day,Night,DanJia,JGWei,DJ_min);}while(K2==0);} //切换if(K1==0){delay(100);//计价器模式if(Mode==1){Mode=0;ZJ=0;GL=0;Time=0;//开启定时器TR0=0;EX0=0;//显示计价器Init_LCD();}else if(Mode==0){Mode=1;//参数初始化//读初值READS();ZJ=0;GL=0;Time=0;//开启定时器m=0;TR0=1;EX0=1;//显示计价器Init_LCD_JJQ();}while(K1==0);}}
}//初始化函数
void InitTimer0(void)
{TMOD = 0x01;TH0 = 0x3C;TL0 = 0xB0; //10msEA = 1;ET0 = 1;TR0 = 1;IT0=1; //INT0负跳变触发EX0=0;//开外部INTO中断
}//定时器0中断10ms
void Timer0Interrupt(void) interrupt 1
{TH0 = 0x3C;TL0 = 0xB0; //赋初值m++;if(m>=20){m=0;if(count>=60){GT=0;GL=GL+count/10;count=0;}else{count=0;GT=1;Time++; //时间++}}//计算钱数//公里数小于3if(GL<=300){if(DN==0){if(Time>60)ZJ=Day+Time/60*DJ_min;elseZJ=Day;} else{if(Time>60)ZJ=Night+Time/60*DJ_min;elseZJ=Night;}}else{if(DN==0){if(Time>60)ZJ=Day+(GL/10-20)/10*DanJia+Time/60*DJ_min;elseZJ=Day+(GL/10-20)/10*DanJia;} else{if(Time>60)ZJ=Night+(GL/10-20)/10*DanJia+Time/60*DJ_min;elseZJ=Night+(GL/10-20)/10*DanJia;}}
}
void EXINT0() interrupt 0
{count++;
}//读初值
void READS()
{uchar SH=0,SL=0;uint temp=0;delay(10);SL=read_add(0x01);delay(10);SH=read_add(0x02);temp=SH;temp=temp<<8;temp=temp+SL;Day=temp;delay(10);SL=read_add(0x03);delay(10);SH=read_add(0x04);temp=SH;temp=temp<<8;temp=temp+SL;Night=temp;delay(10);SL=read_add(0x05);delay(10);SH=read_add(0x06);temp=SH;temp=temp<<8;temp=temp+SL;DanJia=temp;delay(10);SL=read_add(0x07);delay(10);SH=read_add(0x08);temp=SH;temp=temp<<8;temp=temp+SL;DJ_min=temp;
}//写初值
void SETS()
{uchar SH=0,SL=0;uint temp=0;temp=Day;SL=temp&0x00ff;SH=temp>>8;delay(10);write_add(0x01,SL);delay(10);write_add(0x02,SH);temp=Night;SL=temp&0x00ff;SH=temp>>8;delay(10);write_add(0x03,SL);delay(10);write_add(0x04,SH); temp=DanJia;SL=temp&0x00ff;SH=temp>>8;delay(10);write_add(0x05,SL);delay(10);write_add(0x06,SH);temp=DJ_min;SL=temp&0x00ff;SH=temp>>8;delay(10);write_add(0x07,SL);delay(10);write_add(0x08,SH);
}
原理图
设计说明书
摘要
出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器中有90%为台湾所生产。现在各个城市出租车行业都已普及,因此出租车计价器的技术已经成熟,但是出租车计价器的市场还具有广阔的前景。随着城市建设的日益完善,关乎城市面貌的出租车行业也将迅速发展,出租车计价器的的大批量需求也是毫无疑问的,所以未来出租车计价器的市场还是有相当大的潜力。
本次出租车计价器设计可以分为六个模块,主控模块、计时模块、存储模块、显示模块、按键模块和电机驱动模块。本设计采用STC89C52单片机作为主控模块的主控芯片,结合单片机的外围电路实现对整个系统的控制,DS1302时钟芯片准确计时具有重新上电不用调时的功能,显示部分采用LCD1602液晶显示,24c02芯片可以掉电存储设置的计费数据,即使掉电也不会丢失设置的费用,3v直流电机模拟发动机工作,使整个设计更加逼真,当无乘客时液晶可以显示时间(年月日时分秒),时间可以按键设置,此时电机不工作;当有乘客时电机工作,可以通过按键开始计费系统工作,有清零键,收费可以修改(包括起价费、超过起价费每公里或分钟收费、白天和夜晚收费标准),可以切换白天和夜晚收费标准,可以按照分钟或公里收费切换。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是有一定的应用价值的。
设计清单(提供资料清单所有文件)
资料下载
基于51单片机出租车计费设计(proteus仿真+程序+原理图+设计说明书)相关推荐
- 【008】【毕业设计】基于51单片机的烟雾报警系统proteus仿真与实物设计
一.压缩包资料内容(私信获取) (1).基于51单片机的烟雾报警系统proteus仿真设计一份: (2).基于51单片机的烟雾报警系统proteus仿真设计keli源代码一份: (3).基于51单片 ...
- 【020】基于51单片机智能路灯系统Proteus仿真与实物设计
一.资料内容 (1).基于51单片机的智能路灯系统proteus仿真设计一份: (2).基于51单片机的智能路灯系统proteus仿真设计keli源代码一份: (3).基于51单片机的智能路灯系统pr ...
- 【013】【毕业设计】基于51单片机的节能路灯proteus仿真设计
一.资料内容(私信) (1).基于51单片机的节能路灯proteus仿真设计一份: (2).基于51单片机的节能路灯proteus仿真设计keli源代码一份: (3).基于51单片机的节能路灯pro ...
- 【019】基于51单片机的交通灯Proteus仿真设计
一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...
- 【034】基于51单片机的HX711电子秤Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...
- 基于51单片机的烟雾火灾报警器proteus仿真设计
基于51单片机的烟雾火灾报警器proteus仿真设计 1 开发环境 仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0004 代码讲解+仿真讲解+仿真演示 ...
- 【002】基于51单片机的电子万年历proteus仿真设计
一.资料内容(私信获取) (1).基于51单片机的电子万年历proteus仿真设计一份: (2).基于51单片机的电子万年历proteus仿真设计keli源代码一份: (3).基于51单片机的电子万年 ...
- 【039】基于51单片机的简易门铃Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的简易门铃proteus仿真设计一份: (2).基于51单片机的简易门铃proteus仿真设计keli源代码一份: (3).基于51单片机的简易门铃prote ...
- 基于51单片机多路温度检测proteus仿真 ds18b20
本设计是基于51单片机多路温度检测proteus仿真_ds18b20(仿真+程序+原理图) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0042 ...
- 基于51单片机智能路灯控制系统Proteus仿真
资料编号:182 下面是仿真功能视频演示: 182-基于51单片机智能路灯控制系统Proteus仿真 功能讲解: 采用51单片机作为控制CPU,可以通过设置开灯和关灯时间开自动控制路灯的打开和关 ...
最新文章
- 如何运用NLP向个性类型客户介绍产品
- 如果当前没有拿得出手的简历,也别慌,努力的话最多两年情况就能改变
- 全国大学生智能车竞赛组委会秘书处与Mathworks初步讨论竞赛合作事宜
- P3870 [TJOI2009]开关 线段树 异或
- java几点钟_实现 Java 本地缓存,该从这几点开始
- Java读取Excel文件转换成JSON并转成List——(七)
- 全系统动态污点分析-概要
- Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则
- Hadoop 环境准备
- 董明珠给格力员工加薪 10 亿;张小龙回应微信 7.0 界面变丑;库克怒怼高通 | 极客头条...
- mysql进程线程_MySQL 内核线程简要分析
- 软件测试总结--02缺陷报告
- JavaScript 代码收集
- GNS3 思科交换机配置三层转发
- php alt什么意思,img标签的alt属性是什么意思?
- 福利福利!!!!!!!!往这看!!!!!
- 企业公众号运营见效难,如何突围?
- 一张图读懂系列|什么是量子?
- 《Java NIO》书籍下载
- 【MacOS】Mac下的gVim - MacVim