标题:
基于51单片机的出租车计价器Proteus仿真程序
[打印本页]
作者:
fgdfgdfgd
时间:
2021-11-13 11:57
标题:
基于51单片机的出租车计价器Proteus仿真程序
设计功能:
(1): 显示器显示当前单价,当前里程,当前费用
(2): 分时计费( 白天,晚上标准不同,等待时间计费 )
(3): 定时器编程产生脉冲用于模拟车辆行走,一个脉冲代表两米
(4): 使用按键控制计费开始和计费结束( 计费结束保持显示车费等信息 )
小白不知道怎么发送图片,但本人亲测可用!
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif
(86 KB, 下载次数: 34)
下载附件
2021-11-14 03:20 上传
2个单片机实现 一个芯片发脉冲 一个芯片统计
单片机源程序如下:
//--- 头文件 ---//
#include "LCD1602.H"
#include "Single_Key.h"
#include "INT.H"
#include "T0.H"
//--- 引脚声明 ---//
sbit Wait = P2^3; //等待时间引脚
//--- 变量定义 ---//
uchar Price = 0; //汽车单公里价格
//--- 声明 ---//
void main()
{
/************************ 程序初始化 *****************************/
LcdInit(); //LCD显示屏初始化
Inint_T0; //定时器初始化
INT0_Falling;
EX0 = 0; //关闭外部计数中断
/************************ 主程序循环 *****************************/
while(1)
{
KeyTest_1();KeyTest_2(); //检测是白天还是夜晚
KeyTest_3();KeyTest_4(); //是否开始计数
FirstLine_ClearOFF_Char(Price:,0 );
LcdIDisplay_Num ( First_Line , Clear_OFF,6,Price); //单价
if( Price == 5 )
LcdIDisplay_Char ( First_Line , Clear_OFF, 7, " " ); //防止显示溢出
FirstLine_ClearOFF_Char( km:,10 ); //公里
LcdIDisplay_Num ( First_Line , Clear_OFF,13, KM );
SecondLine_ClearOFF_Char(NOW Price:,0 );
LcdIDisplay_Num ( Second_Line , Clear_OFF,10, Price * KM + Wait_Count ); //总价
if( Single_KEY_Flag_1 == 1 )
{
Single_KEY_Flag_1 = 0;
Price = 5;
}
if( Single_KEY_Flag_2 == 1 )
{
Single_KEY_Flag_2 = 0;
Price = 10;
}
if( Single_KEY_Flag_3 == 1 )
{
Single_KEY_Flag_3 = 0;
EX0 = 1; //开启外部计数中断
KM_COUNT = 0; KM = 0;
Price = 5;
}
if( Single_KEY_Flag_4 == 1 )
{
Single_KEY_Flag_4 = 0;
EX0 = 0; //关闭外部计数中断
Price = 5;
}
if( Wait == 0 )
{
Enable_T0; //开启定时器
}
else
{
DisEnable_T0; //关闭定时器
Inint_T0; //初始化定时器
}
}
}
复制代码
仿真代码51hei附件下载:
出租车计价器仿真.7z
(95.35 KB, 下载次数: 77)
2021-11-14 03:34 上传
点击文件名下载附件
全部资料
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1