1、主要功能
设计要求 : ①、不同情况具有不同的收费标准。 白天,晚上,途中等待(>10min 开始收费); ②、能进行手动修改单价 ; ③、具有数据的复位功能; ④、具有启动计时开关、白天/晚上收费标准的转换开关、数据的清零开关、单价的调整(最好使用+和-按键); ⑤、数据输出:单价输出 2 位(要能输入小数),路程输出 2 位,总金额输出 3 位(有 1 位小数)。
2、仿真图
![在这里插入图片描述](https://img-blog.csdnimg.cn/d492e02826a24e0cb06dd728d8b828f7.png#pic_center)
3、实验验证
基于51单片机的出租车计价器
4、程序源码
![在这里插入图片描述](https://img-blog.csdnimg.cn/808da00c5cb149b8ae76def53928f977.png#pic_center)
/**
************************************* Copyright ******************************
File name: // 51出租车计价器
Author:Kevin
Version: //1.0
Description: // 实现出租车计价功能,可以分白天和晚上设置不同价格。
Others: // 其它内容的说明
Log: // 公众号:Kevin的学习站
******************************************************************************
*/
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit key_start =P1^0; //开始/结束计价
sbit key_wait =P1^1; //等待
sbit key_set =P1^2; //设置
sbit key_jia =P1^3; //加值
sbit key_jian =P1^4; //减值
sbit key_dn =P1^5; //控制白天晚上
sbit key_fuwei =P1^6; //复位
sbit mod=P1^7; //电机控制
/************************——变量定义***********************/
uint start_price=77; //起步价
uint white_price=66; //白天的单价 超过3公里每公里6元
uint black_price=88; //夜晚的单价 超过3公里每公里8元
uint Wait_price=100; //等待价钱
bit dnc=0; //白天晚上的转换标志
bit qiting; //起 停标志位
uint price1,price2; //总价钱、等待价钱
uint mil; //里程数
uint mil2;
uchar shi,fen,miao;
uchar moshi,moshi2,ms,set_f; //模式mos=0初始界面,=1改价页面,=2等待页面
//set_f设置标志=1设置初始价格,=2设置等待价格,=3设置晚上单价,=4设置白天单价
void delay(uchar ms) //延时函数
{
uchar j;
while(ms--)
{
for(j=0;j30)
{
price1=(white_price*((mil-30)/10));
price1=price1+start_price+price2;
}
else
price1=start_price+price2;
}
else //晚上价钱
{
if(mil>30)
{
price1=(black_price*((mil-30)/10));
price1=price1+start_price+price2;
}
else
price1=start_price+price2;
}
}
void T0_init() //定时器0初始化
{
EA=1; //开总中断
ET0=1; //定时器T0中断允许
TMOD=0x01; //使用定时器T0的模式1
TH0=(65536-50000)/256; //定时器T0的高8位赋初值
TL0=(65536-50000)%256; //定时器T0的低8位赋初值
TR0=0; //关闭定时器0
EX0=1; //外部中断0允许位
IT0=1; //下降沿触发外部中断
}
void main()
{
lcd_init(); //LCD1602初始化
T0_init(); //定时器0初始化
while(1) //死循环
{
jiaqianjisuan();
key(); //按键检测处理
xianshi();
}
}
void timer0() interrupt 1 //定时器0中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //定50ms
ms++;
if(ms>=20)
{
ms=0;
miao++;
if(moshi==0)
{
if(miao>=3)
{
moshi=2;
miao=0;
}
}
if(moshi==2)
{
if(miao>=60)
{
miao=0;
fen++;
if(fen>=60)
{
fen=0;
shi++;
}
if(moshi==2){if(fen>=1)price2=price2+(white_price/2); }
}
}
}
}
void inn0() interrupt 0 //外部中断0中断子函数
{
if(qiting==1)
{
mil2++;
if(moshi==2) moshi=0;
if(moshi==0) miao=0;
if(mil2==10)
{
mil2=0;
mil++;
}
}
}
5、资源获取
其它毕设/课设资源 基于51单片机的智能温控风扇 基于51单片机的智能水箱控制系统 基于51单片机的智能家居安防系统 基于51单片机的计算器设计 基于单片机的声光电子琴 自动浇花系统的设计 基于51单片机数字电压表的设计 基于51单片机的CO浓度报警器设计 基于51单片机的温度报警器设计 51单片机+PM2.5+温湿度 基于51单片机的智能小车 基于51单片机+超声波模块的避障小车 基于51单片机的四通道交通灯设计 项目的仿真和程序工程已经放在下面公众号里面,可以关注公众号:Kevin的学习站,输入关键字:“出租车计价器”,就可以获取啦!创作不易,但您的点赞、关注、收藏就是对我最大的鼓励! ![在这里插入图片描述](https://img-blog.csdnimg.cn/c46fa06c67744602ba799f0c4259ac9e.gif#pic_center)
|