当前位置: 首页 > news >正文

【51单片机】【protues仿真】 基于51单片机出租车计价器系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示
2、按键修改起步价,单价​,启动,停止和清零计费
3、实时时间显示
4、电机模拟里程

二、使用步骤

基于51单片机的出租车计价器设计主要包含硬件电路搭建和软件编程两部分,核心功能是通过数码管显示里程、价格、计时信息。

三、硬件资源

1、51单片机核心模块
2、按键模块
3、DS1302模块
4、数码管驱动芯片
5、电机模块
6、数码管显示模块

四、软件设计

#include "reg51.h"
#include"ds1302.h"
sbit k1=P1^0;//调整起步价
sbit k2=P1^1;
sbit k3=P1^2;//调整单价
sbit k4=P1^3;
sbit k5=P1^4;//启动
sbit k6=P1^5;//停止
sbit k7=P1^6;//清零
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//显示0~9,有小数点

uchar qibu=10;//起步价
uchar dan=1;//单价
uint all=0;//总价
uint juli =0;//里程

uchar sec=0;//定时
uchar start=0;//启动
void delay(uint i)//延时
{
    while(i--);
}
void main()
{
    Ds1302ReadTime();
    TIME[0]=0;
    Ds1302Init();
    //设置INT0
    IT0=1;//跳变沿出发方式(下降沿)
    EX0=1;//打开INT0的中断允许。
    TMOD|=0X01;
    TH0=0X3C;
    TL0=0XB0;    
    ET0=1;//打开定时器0中断允许
    EA=1;//打开总中断
    TR0=1;//打开定时器
    while(1)
    {
        //显示
        P0=0; //时
        P2=0;
        P0=smgduan0[TIME[2]>>4];
        delay(100);
        P0=0; 
        P2=1;
        P0=smgduan1[TIME[2]&0x0f];
        delay(100);
        P0=0; //分
        P2=2;
        P0=smgduan0[TIME[1]>>4];
        delay(100);
        P0=0; 
        P2=3;
        P0=smgduan1[TIME[1]&0x0f];
        delay(100);
        P0=0; //秒
        P2=4;
        P0=smgduan0[TIME[0]>>4];
        delay(100);
        P0=0; 
        P2=5;
        P0=smgduan0[TIME[0]&0x0f];
        delay(100);

        P0=0; //起步价
        P2=6;
        P0=smgduan0[qibu/10];
        delay(100);
        P0=0; 
        P2=7;
        P0=smgduan0[qibu%10];
        delay(100);

        P0=0; //单价
        P2=8;
        P0=smgduan0[dan/10];
        delay(100);
        P0=0; 
        P2=9;
        P0=smgduan0[dan%10];
        delay(100);

        P0=0; //里程
        P2=10;
        P0=smgduan0[juli/1000];
        delay(100);
        P0=0; 
        P2=11;
        P0=smgduan0[juli%1000/100];
        delay(100);
        P0=0; 
        P2=12;
        P0=smgduan0[juli%100/10];
        delay(100);
        P0=0; 
        P2=13;
        P0=smgduan0[juli%10];
        delay(100);

        P0=0; //总价
        P2=14;
        P0=smgduan0[all/1000];
        delay(100);
        P0=0; 
        P2=15;
        P0=smgduan0[all%1000/100];
        delay(100);
        P0=0; 
        P2=16;
        P0=smgduan0[all%100/10];
        delay(100);
        P0=0; 
        P2=17;
        P0=smgduan0[all%10];
        delay(100);

        //按键检测
        if(start==0)
        {
        if(!k1)//起步价加
        {
            delay(10000);
            if(!k1)
            {
                if(qibu<99)
                    qibu++;
            }
            while(!k1);
        }
        if(!k2)//起步价减
        {
            delay(10000);
            if(!k2)
            {
                if(qibu>0)
                    qibu--;
            }
            while(!k2);
        }
        if(!k3)//单价加
        {
            delay(10000);
            if(!k3)
            {
                if(dan<99)
                    dan++;
            }
            while(!k3);
        }
        if(!k4)//单价减
        {
            delay(10000);
            if(!k4)
            {
                if(dan>0)
                    dan--;
            }
            while(!k4);
        }
        }
        if(!k5)//启动
        {
            delay(10000);
            if(!k5)
            {
                start=1;
            }
            while(!k5);
        }
        if(!k6)//停止
        {
            delay(10000);
            if(!k6)
            {
                start=0;
            }
            while(!k6);
        }
        if(!k7)//清零
        {
            delay(10000);
            if(!k7)
            {
                start=0;
                juli=0;
                all=0;
            }
            while(!k7);
        }
    }


}

五、实验现象

演示视频:

http://www.dtcms.com/a/354059.html

相关文章:

  • 三轴云台之动态性能篇
  • 数字化时代催生变革,楼宇自控系统成为建筑管理新潮流的引领者
  • ESP32S3:开发环境搭建、VSCODE 单步调试、Systemview 分析任务运行情况
  • 北斗导航|接收机自主完好性监测算法综述
  • 【C++】类和对象 --- 类中的6个默认成员函数
  • CAS 浅析
  • 视觉语言模型应用开发——Qwen 2.5 视觉语言模型的零样本学习能力在多模态内容审核中的实践研究
  • 把CentOS 7默认yum源改成腾讯云镜像
  • 阿里云——云存储与数据库服务
  • RustFS架构解密:零GC设计如何实现12μs级存储延迟?
  • 【lucene】SpanNearQuery中的slop
  • 【lucene】SpanFirstQuery的end参数
  • 【Python】包管理,弄明白import,package,module
  • 复杂网络环境实测:主流云VR产品性能对比——平行云LarkXR突破网络限制 引领云VR技术新高度
  • 记住密码管理器
  • 在Eclipse中配置Tomcat
  • 终端美化:Windows11 下 安装 WSL 并使用好看的的 zsh 主题
  • 【图论】最短路算法
  • 802.11ax上行OFDMA接入机制:技术原理与实现细节
  • 流水线用到的Dockerfile和构建脚本build.sh
  • Python电影票房预测模型研究——贝叶斯岭回归Ridge、决策树、Adaboost、KNN分析猫眼豆瓣数据
  • MYSQL---存储过程
  • 【轨物方案】“无人值守”光伏电站智能运维解决方案,赋能绿色能源高效运营
  • 正则表达式 —— 贪婪与非贪婪
  • 汽车盲点检测系统的网络安全分析和设计
  • 【Linux学习】正则表达式学习记录
  • 【鸿蒙开发001】上下翻页-翻书效果实现【可复用】
  • 写一个天气查询Mcp Server
  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day8
  • urdf文件可以使用的一些工具(urdf检查和可视化)