想要更多项目私wo!!!
一、电路设计
系统采用51单片机+LCD1602液晶+DS1302时钟模块+霍尔传感器+电机+按键模块+蜂鸣器报警模块设计而成。
产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(给单片机提供时钟周期)。
LCD1602可以显示当前的速度,里程,时间。
可以设置轮子直径。
具有超速报警功能,可以设置报警速度并具有保存功能,当实际的速度大于当前的速度时就会由蜂鸣器产生报警。
可以查看总路程。
可以按键修改当前的时间。
采用进口时钟芯片DS1302,走时非常精确。板载3V纽扣电池,断电重新上电无需重新设置时间。
二、运行结果
三、部分代码
#include <reg52.h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
#include "eeprom52.h"
/******************主程序**********************/
void main()
{
beep = 0;
delay_1ms(200) ;
P0 = P1 = P2 = P3 = 0xff; //IO口初始为电平
init_ds1302_io();
init_ds1302();
init_1602(); //1602初始化
init_int0();
time_init(); //定时器0初始化程序
init_eeprom(); //开机初始化保存的数据*
while(1)
{ // shudu = 11;
key(); //按键程序
if(key_can < 10)
{
key_with();
}
if(flag_200ms == 1)
{
flag_200ms = 0;
read_time(); //读时间
if(menu_1 == 0)
init_1602_ds1302(); //显示时钟
menu_dis(); //计算速度函数
clock_h_l(); //报警函数
}
}
}
/*********************外部中断0中断服务程序************************/
void int0() interrupt 0
{
static uchar value;
switch(value)
{
case 0:
t1_num = 0; //第一次就把变量清零
TH1 = 0;
TL1 = 0;
break;
case 1:
t2_num = t1_num; //保存
TH11 = TH1;
TL11 = TL1;
flag_en = 1;
break;
}
value ++;
if(value >= 2)
value =0;
/************
2.1 16.6
2 15.8
1.9 15.0
************/
}