目录
具体实现功能
系统由AT89C52单片机+霍尔传感器模块+LCD1602液晶屏+DS1302时钟模块+AT24C02掉电存储模块+直流电机+按键模块+电源构成。
具体功能:
1、无乘客模式:显示当前时间;
2、切换到乘客模式:可以显示起步价(三公里内)、单价(三公里后)、总价(元)、里程和乘车时间,可以按照里程或计时两种模式收费;
3、里程模式收费:在高速情况下,按照起步价和里程单价收费
4、计时收费模式:在低速情况下,按照计时时间和时间单价收费
5、按清零键,计价器可清除计价。
6、可以设置白天和夜晚的起步价、单价,可以设置计时模式的单价;
7、根据当前时间,白天和夜晚的收费不同。
液晶显示的字母:
D------白天起步价
P------里程单价
PT-----时间单价
N-----夜晚起步价
按键:设置键、增加键、减小键、切换键(切换时间/乘客模式)
设计介绍
51单片机简介
51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
51系列单片机具有以下标准功能:
8k字节Flash,512字节RAM,
32位I/O口线,看门狗定时器,
内置4KB EEPROM,
MAX810复位电路,
三个16位定时器/计数器,
一个6向量2级中断结构,
全双工串行口。
另外, 51系列在空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机停止工作,直到下一个中断或硬件复位为止。本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。
设计思路
文献研究法:搜集整理相关研究资料,阅读文献,为研究做准备;
调查研究法:通过调查、分析、具体实验等方法,发现相关存在问题和解决办法;
比较分析法:比较不同设计的具体原理,以及同一类传感器性能的区别,分析系统的研究现状与发展前景;
软硬件设计法:通过软硬件设计实现硬件,最后测试各项功能是否满足要求。
设计内容
原理图(AD19)
本系统原理图设计采用Altium Designer19,具体如图。
程序(Keil5)
本设计利用KEIL5软件实现程序设计,主函数如下:
//主函数
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;
else
DN=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);
}
}
}
代码运行截图:
仿真实现(protues8.7)
本设计利用protues8.7软件实现仿真设计。
全部资料
全部资料包括程序(注释)、AD原理图、protues仿真、参考论文、程序讲解、仿真讲解、仿真视频、原理图讲解、资料使用介绍等,全网最全!!!
资料获取:
https://docs.qq.com/doc/DSWVmZVBOUGlkT01i