基于51单片机的自行车测速里程码表设计( proteus仿真+程序+设计报告+原理图+讲解视频)

server/2025/3/26 0:58:19/

基于51单片机的自行车测速里程码表设计

  • 1. 主要功能:
  • 2. 讲解视频:
  • 3. 仿真设计
  • 4. 程序代码
  • 5. 设计报告
  • 6. 原理图
  • 7. 设计资料内容清单
    • 资料下载链接:

基于51单片机的自行车测速里程码表设计( proteus仿真+程序+设计报告+原理图+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0078

1. 主要功能:

基于51单片机的自行车测速行驶里程检测与显示设计

1、通过按键控制自行车行驶速度;

2、通过霍尔传感器测量自行车当前速度;

3、单片机实时检测自行车的行驶里程,行驶里程显示,显示精度0.01公里;

4、显示当前速度和行驶里程,可按键清零;

5、具有超速报警功能,可以设置报警值;

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

img

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

3. 仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真LCD1602显示当前速度和里程数,当前速度为0km/h,当前总里程数0km。

img

通过加减速按键调整速度,直流电机逐渐加速,直到稳定。

img

实测12.9KM/h速度运行一个班小时后累计总里程为18.249km。

img

具有超速报警功能,通过按下设置键可以调整速度报警值。

img

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

#include "reg51.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
#define DIR		26*2.54//轮胎直径66.04CM 26英寸 1 英寸=2.54 厘米
#define RUOND 	DIR*3.14//207.3656单位CM 周长(C)=π×D 其中 D 是轮胎的外径,包括胎壁和胎面的整体直径。
#define PER_RUOND RUOND/240.0 //电机一圈产生240次中断。每次中断前进约0.864023cm
sbit k1=P1^0;//按钮
sbit k2=P1^1;
sbit k3=P1^2;		 
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit out=P1^6;//输出控制
sbit beep=P2^0;//蜂鸣器float pwm=0;//占空比uchar time=0,mode=0;//系统变量
uint sudu1=0,sudu2=0,lim=150;//速度
float sum=0;//里程
uchar disp1[]="Speed:000.0km/h";
uchar disp2[]="Sum:000.000km ";
uchar disp3[]="00.0km/h ";
//主函数
void main()
{uchar i;init_1602();//设置INT0IT0=1;//跳变沿出发方式(下降沿)EX0=1;//打开INT0的中断允许。	TMOD|=0X01;//初始化定时器TH0=0X3C;TL0=0XB0;	ET0=1;//打开定时器0中断允许EA=1;//打开总中断TR0=1;//打开定时器while(1){//电机速度控制if(i<20)i++;elsei=0;if(i<pwm)out=1;elseout=0;//电机调速if(!k1)//加速{if(pwm<10)pwm+=0.5;while(!k1);}if(!k2)//减速{if(pwm>0)pwm-=0.5;while(!k2);}//设置if(!k3){mode=!mode;while(!k3);}if(!k4)//加{if(lim<999)lim++;while(!k4);}if(!k5)//减{if(lim>0)lim--;while(!k5);}if(!k6)//清零{sum=0;while(!k6);}}
}
//定时器中断
void Timer0() interrupt 1
{float i;uint j;if(time<20)//1stime++;else{time=0;sudu1 = sudu2*PER_RUOND;//厘米/秒sudu2*sudu1 = sudu1/100.0*3600/10;//单位km/h 多除以10是因为这样算下来速度太快了,多除以10合理sudu2=0;//计算里程i=sudu1;i=i/360;sum=sum+i;//一秒记录一次里程//报警if(sudu1>lim)beep=0;elsebeep=1;//显示disp1[6]=sudu1/1000+0x30;disp1[7]=sudu1%1000/100+0x30;disp1[8]=sudu1%100/10+0x30;disp1[10]=sudu1%10+0x30;j=sum*10;disp2[4]=j/100000+0x30;disp2[5]=j%100000/10000+0x30;disp2[6]=j%10000/1000+0x30;disp2[8]=j%1000/100+0x30;disp2[9]=j%100/10+0x30;disp2[10]=j%10+0x30;disp3[0]=lim/100+0x30;disp3[1]=lim%100/10+0x30;disp3[3]=lim%10+0x30;if(mode==0){write_string(1,0,disp1);write_string(2,0,disp2);}else{write_string(1,0,"set:");write_string(1,4,"             ");write_string(2,0,"    ");write_string(2,4,disp3);}}TH0=0X3C;TL0=0XB0;
}void Int0()	interrupt 0		//外部中断0的中断函数
{sudu2++;
}

5. 设计报告

6613字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

随着现代科技的快速发展,智能化技术已广泛渗透到人们的日常生活中,并在诸多领域中发挥着日益重要的作用。在倡导绿色出行、节能环保的大背景下,自行车作为一种经济、便捷且环保的交通工具,其在性能监测与智能控制方面的提升显得尤为关键。现代社会对于自行车的需求不再仅限于基础的代步功能,而是更加强调安全、高效和用户体验的全面提升。

本课程设计作业正是基于这一需求背景,致力于研发一款以51系列单片机为核心的自行车测速行驶里程检测与显示系统。该系统集成了先进的传感技术和嵌入式计算能力,旨在实现对自行车速度信息的实时获取和高精度显示,同时还能精确记录并展示骑行过程中的累计行驶里程数据。为确保用户骑行的安全性和舒适性,系统特别设计了超速报警功能,当骑行速度超过预设阈值时,能够及时发出警示信号,提醒骑行者调整速度至合理范围内,从而有效降低因高速骑行可能导致的风险。

6. 原理图

原理图使用AD绘制,可供实物参考,仿真不同于实物,需要调试经验才能做出来。

img

Proteus仿真和实物作品的区别:

1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。

2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。

电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。

3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。

4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。

7. 设计资料内容清单

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

img

0、常见使用问题及解决方法–必读!!!!

1、程序代码注释

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、原理图

8、元器件清单

9、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接:

https://docs.qq.com/doc/DS0RPUnJsZVNNUUNW


http://www.ppmy.cn/server/725.html

相关文章

微信小程序二维码

目录 前言小程序二维码不限制数量的小程序码微信小程序官方文档&#xff1a;获取不限制数量的小程序码小程序里面中接收不限制数量的小程序码传递的参数 普通链接二维码微信小程序官方文档&#xff1a;扫普通链接二维码打开小程序小程序里面中接收普通链接二维码传递的参数 前言…

springboot2集成东方通tongweb嵌入式版

由于最近项目需要国产化信创改造&#xff0c;引入东方通tongweb 联系东方通厂家 &#xff0c;将依赖导入到maven仓库&#xff0c;并获取嵌入式版license文件修改pom.xml&#xff0c;引入依赖&#xff0c;注意springboot版本&#xff0c;这里以springboot2举例 首先移除springb…

图与图搜索算法

图搜索算法是一个非常重要的概念&#xff0c;它是计算机科学中图论和算法设计的基础部分。在开始讨论图搜索算法之前&#xff0c;我们需要先理解什么是图以及图的基本结构。 什么是图&#xff1f; 图&#xff08;Graph&#xff09;是一种非线性数据结构&#xff0c;它由一组点…

基于XML配置bean(二)

文章目录 1.工厂中获取bean1.静态工厂1.MyStaticFactory.java2.beans.xml3.测试 2.实例工厂1.MyInstanceFactory.java2.beans.xml3.测试 3.FactoryBean&#xff08;重点&#xff09;1.MyFactoryBean.java2.beans.xml3.测试 2.bean配置信息重用继承抽象bean1.beans.xml2.测试 3.…

IO多路转接之epoll

目录 1. 简单认识下 epoll 相关接口 2. epoll 原理 2.1. 前置性认识 2.2. epoll 底层原理 2.2.1. 红黑树 2.2.2. 就绪队列 2.2.3. 回调机制 2.3. 红黑树和就绪队列 2.3.1. eventpoll 结构 2.3.2. epitem 结构 2.4. 总结 3. epoll 实例 3.1. epoll_event &&am…

python 文件输入输出

python 文件输入输出 一、输入输出1. 输出格式美化2. 旧式字符串格式化3. 读取键盘输入4. 读和写文件5. 文件对象的方法6. pickle 模块 二、文件操作1. File(文件) 方法2. mode 参数有&#xff1a;3. file 对象 三、 OS 文件操作1. OS 文件/目录方法 四、代码概览&#xff08;输…

Vue源码解读学习

Vue源码 观察者模式 & 发布订阅 观察者模式&#xff1a;中心一对多 系统单点间的灵活和拓展&#xff08;广播的方式&#xff09; 发布订阅&#xff1a;将注册列表遍历发布给订阅者 initInject initState initProvide他们挂载顺序为什么这样设计&#xff1f; initstate…

NAND数据恢复的方案

NAND Flash是固态硬盘&#xff08;SSD&#xff09;的核心数据存储。然而&#xff0c;NAND Flash因其物理特性和工作原理&#xff0c;存在一定的内在脆弱性&#xff0c;尤其是在数据存储的长期可靠性方面。 比特错误是指在读取NAND Flash时&#xff0c;原本存储的二进制位&#…