一、项目功能简介
整个设计系统由STC89C52单片机+DS1302时钟模块+LCD1602显示模块+DS18B20温度模块+24C02存储模块+L298电机驱动模块里+按键模块+蜂鸣器模块组成。
具体功能:
1、LCD1602显示日期时间、温度,计费开始显示起步价、里程价、总路程和总费用。
2、可设置时间、白天夜晚模式、白天起步价、白天里程价、夜晚起步价、夜晚里程价、电机的转速。
3、白天夜晚模式的起步价、里程价存储在24C02里面。
4、电机模拟霍尔传感器输出脉冲,计算总路程。
5、电机速度可调。
二、系统构成图
三、仿真
本次项目采用proteus8.11软件实现仿真设计。由于proteus软件版本原因,不能确保proteus其他版本软件能够正常运行,请安装好对应软件版本(版本一致或者高于这个版本都可以)
四、程序
void main()
{
LCD_Init(); //LCD的初始化
DS1302_Init(); //时间模块的初始化
Timer0_Init(); //定时器0的初始化
Timer1_Init(); //定时器1的初始化
IT_init(); //外部中断初始化
Motor_init(); //电机初始化
// DS1302_SetTime(); //用于DS1302第一次启动,写入时间
DS1302_ReadTime(); //读取时间
Temp_Buffer = Get_temp(); //读取DS18B20的值
Delay_ms(500); //等待1s等待DS18B20数据稳定。否则可能会出现85℃。
LCD_ShowString(1,1," - - "); //LCD先显示时间日期的标号
LCD_ShowString(2,1," : : ");
AT24C02_Read(0,Price_num,6); //从24C02读取单价数据
BUZZ_F(); //初始化完成,蜂鸣器响一下
while(1)
{
// Delay_ms(5); //延时
KeyNumber = Key(); //检测哪个按键被按下
ShowSet(); //进入设置
if(KeyNumber == 1 && SET_flag == 0 ) //按键1被按下 ,未进入其他界面
{
MODE++; //显示界面++
LCD_WriteCommand(0x01); //清理LCD显示屏幕
if(MODE > 2) //只有三个显示界面,0-1-2 普通界面-时间设置界面-单价设置界面
{
MODE = 0 ;
}
if(MODE == 0 ) //退出设置模式,显示时间日期,运行模式,先显示时间
{
LCD_ShowString(1,1," - - ");
LCD_ShowString(2,1," : : ");
}
if(MODE == 1 ) //设置模式1 ,进入时间设置和速度设置
{
LCD_ShowString(1,1," - - "); //LCD先显示时间日期的标号
LCD_ShowString(2,1," : : ");
}
if(MODE == 2 ) //设置模式2 ,进入单价设置,白天和晚上
{
LCD_ShowString(1,1," R/ Km R/Km D");
LCD_ShowString(2,1," R/ Km R/Km N");
}
}
switch(MODE) //显示选择模式
{
case 0: TimeShow();break; //时间日期
case 1: TimeSETShow();break; //时间设置
case 2: Price_SETShow();break; //单价设置
case 3: BD_Show();break; //计费开始
}
}
}
五、原理图
本原理图利用AD17软件设计。
六、参考论文
总共有12k字的论文,都是自己收集资料纯手打的。
论文仅限于参考,内容跟项目对应。
七、全部资料
八、资料获取
关注公众号,后台回复:51出租车