历史上的今天
今天是:2024年10月12日(星期六)
2021年10月12日 | 基于51单片机的出租车计价器
2021-10-12 来源:eefocus
一.硬件方案
本设计基于STC89C52单片机、1302时钟芯片准确计时、LCD1602液晶显示、24c02芯片可以掉电存储数据、3v直流电机模拟发动机工作。当无乘客时液晶可以显示时间(年月日时分秒),时间可以按键设置,此时电机不工作;当有乘客时电机工作,可以通过按键开始计费系统工作,有清零键,收费可以修改(包括起价费、超过起价费每公里或分钟收费、白天和夜晚收费标准),可以切换白天和夜晚收费标准,可以按照分钟或公里收费切换。
主要由51单片机最小系统、DS1302时钟芯片准确计时、LCD1602液晶显示、24c02芯片可以掉电存储数据、3v直流电机模拟发动机工作;如图:

二.设计功能
(1)当无乘客时液晶可以显示时间(年月日时分秒),时间可以按键设置,此时电机不工作;当有乘客时电机工作,可以通过按键开始计费系统工作;
(2)有清零键,收费可以修改(包括起价费、超过起价费每公里或分钟收费、白天和夜晚收费标准);
(3)可以切换白天和夜晚收费标准;
(4)可以按照分钟或公里收费切换。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计
主程序源码
//初始化函数
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)
{
//显示计价器信息
display_S(Day,Night,DanJia,ZJ,GL,Time,GT,DN);
}
//时间调整
if(K8==0)
{
delay(20);
//调时
if(K8==0)
{
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)
{
if(DN==0)
{
DN=1;
}
else
{
DN=0;
}
}
while(K8==0);
}
}
.........
}
}
下一篇:基于51单片机的语音万年历设计
史海拾趣
|
在做一个实验项目 其中要用507kHz的无线通信 可是信号发生一直不好 本来是用反相器,波形有点三角,频率配的还不错 可是一进模拟开关就萎了 所以再求一个电路能发生507kHz阿 学长说用锁相环+晶振呐,能这样最好啊。。 本人模电学的很烂很烂 ...… 查看全部问答> |
|
怎样用MSP430F149/169控制ADS900进行电压采样? 我是新手,只会用内部的AD,不知道外部的AD究竟该怎么控制,能不能给我一些可供参考的程序或者程序思路。 就是做一个测3M~8MHz交流的峰峰值的程序,ADS接了50MHz的有源晶振。采来的数据需要存放在FLASH里吗?这也算是高速采集了吧,不知道采样频率 ...… 查看全部问答> |




