您的位置:首页 > 教育 > 锐评 > 单片机设计_自行车码表(AT89C51, LCD1602, DS1302,霍尔传感器)

单片机设计_自行车码表(AT89C51, LCD1602, DS1302,霍尔传感器)

2024/10/6 12:34:47 来源:https://blog.csdn.net/qq_38393591/article/details/140477750  浏览:    关键词:单片机设计_自行车码表(AT89C51, LCD1602, DS1302,霍尔传感器)
想要更多项目私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.62          15.81.9   15.0************/
}