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

基于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();
	//设置INT0
	IT0=1;//跳变沿出发方式(下降沿)
	EX0=1;//打开INT0的中断允许。	
	TMOD|=0X01;//初始化定时器
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		//电机速度控制
		if(i<20)
			i++;
		else
			i=0;
		if(i<pwm)
			out=1;
		else
			out=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)//1s
		time++;
	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;
		else
			beep=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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

内网渗透-Windows内网渗透

内网渗透-Windows内网渗透 文章目录 内网渗透-Windows内网渗透前言一、信息收集 1.1、SPN1.2、端口连接1.3、配置文件1.4、用户信息1.6、会话收集1.7、凭据收集 navicat&#xff1a;SecureCRT&#xff1a;Xshell&#xff1a;WinSCP&#xff1a;VNC: 1.8、DPAPI1.9、域信任1.10、…

Linux第87步_阻塞IO实验

阻塞IO是“应用程序”对“驱动设备”进行操作&#xff0c;若不能获取到设备资源&#xff0c;则阻塞IO应用程序的线程会被“挂起”&#xff0c;直到获取到设备资源为止。 “挂起”就是让线程进入休眠&#xff0c;将CPU的资源让出来。线程进入休眠后&#xff0c;当设备文件可以操…

字节跳动大佬把Python入门知识点整理成手册了,高清PDF开放下载_字节跳动 python 自学笔记

前言 无论是学习任何一门语言&#xff0c;基础知识一定要扎实&#xff0c;基础功非常的重要&#xff0c;找一个有丰富编程经验的老师或者师兄带着你会少走很多弯路&#xff0c; 你的进步速度也会快很多&#xff0c;无论我们学习的目的是什么&#xff0c;不得不说Python真的是一…

GPT 交互式提示工程

简介&#xff1a;交互式提示工程 人工智能领域&#xff0c;尤其是 GPT&#xff08;生成式预训练变压器&#xff09;等工具&#xff0c;凸显了即时工程的关键作用。 这篇扩展文章深入探讨了如何设计有效的提示&#xff0c;以从 GPT 等 AI 模型中获得出色的响应。 了解即时工程即…

Vue3(三):生命周期、路由、自定义hooks

这里终于明白了为什么一直有这个语法报错&#xff0c;就是在提示你哪里错的地方上方注释一行/*eslint-disable*/&#xff0c;之前一直警告这个错误感谢老师&#xff01; 一、vue2和vue3生命周期 还有一个问题就是父组件和子组件哪个先挂载完毕呢&#xff1f;答案是子组件先挂…

Vulnhub靶机 DC-2渗透详细过程

VulnHub靶机 DC-2 打靶 目录 VulnHub靶机 DC-2 打靶一、将靶机导入到虚拟机当中二、攻击方式主机发现端口扫描服务探针爆破目录web渗透信息收集扫描探针登录密码爆破SSH远程登录rbash提权 一、将靶机导入到虚拟机当中 靶机地址&#xff1a; https://www.vulnhub.com/entry/dc…

2024年,国产大模型的变革与突破

在今年两会上&#xff0c;“人工智能&#xff08;AI&#xff09;”成为热议焦点。政府工作报告不仅多次提及&#xff0c;还首次提出“人工智能”创新行动&#xff0c;彰显了对科技发展的深刻洞察和前瞻性布局。 回顾历年报告&#xff0c;从“互联网”到“智能”&#xff0c;每…

Transfomer代码实现与细节理解

文章目录 0. 简单理解1. 总体架构1.1 Encoder1.2 Decoder 2. 实现代码2.1 数据预处理2.2 模型参数2.2 Positional Encoding 位置编码2.3 Pad mask 填充的掩码2.4 Subsequence Mask 解码器的自注意力掩码2.6 Scaled Dot Product Attention2.7 MultiHead Attention2.8 FeedForwar…

使用IT-Tools+Cpolar在Windows搭建自己的IT工具箱并实现远程在线使用

文章目录 1. 使用Docker本地部署it-tools2. 本地访问it-tools3. 安装cpolar内网穿透4. 固定it-tools公网地址 本篇文章将介绍如何在Windows上使用Docker本地部署IT- Tools&#xff0c;并且同样可以结合cpolar实现公网访问。 在前一篇文章中我们讲解了如何在Linux中使用Docker搭…

异地组网怎么安装?

异地组网安装是指在不同地域的多个设备之间建立网络连接&#xff0c;以便实现数据传输和协同工作的过程。在如今的数字化时代&#xff0c;异地组网安装已经成为了许多企业和组织所必需的一项技术。 天联的使用场景 在异地组网安装中&#xff0c;天联是一种常用的工具。它具有以…

北京大学快手发布统一的图文视频生成大模型Video-LaVIT

随着多模态大语言模型&#xff08;LLMs&#xff09;的新发展&#xff0c;人们越来越关注如何将它们从图像-文本数据扩展到更具信息量的真实世界视频。与静态图像相比&#xff0c;视频为有效的大规模预训练带来了独特的挑战&#xff0c;因为需要对其时空动态进行建模。 针对视频…

vs配置opencv运行时“发生生成错误,是否继续并运行上次的成功生成”BUG解决办法

vs“发生生成错误&#xff0c;是否继续并运行上次的成功生成” 新手在用vs配置opencv时遇到这个错误时&#xff0c;容易无从下手解决。博主亲身经历很有可能是release/debug模式和配置文件不符的问题。 在配置【链接器】→【输入】→【附加依赖项】环节&#xff0c;编辑查看选择…

MySQL数据库max_allowed_packet参数

如上图所示的报错&#xff0c;我在提交接口的时候出现了这个错误&#xff1a; MySqlConnector.MySqlException:Error submitting 4MB packet;ensure max_allowed_packet is greater than 4MB.在MySQL数据库中&#xff0c;有一个参数叫max_allowed_packet&#xff0c;这个参数会…

013_NaN_in_Matlab中的非数与调试方法

Matlab中的非数与调试方法 是什么&#xff1f; Matlab编程&#xff08;计算器使用&#xff09;中经常有个错误给你&#xff0c;这句话里可能包含一个关键词NaN。大部分学生都有过被 NaN 支配的痛苦记忆。 NaN 是 Not a Number 的缩写&#xff0c;表示不是一个数字。在 Matla…

Apache Zeppelin 命令执行漏洞复现(CVE-2024-31861)

0x01 产品简介 Apache Zeppelin 是一个让交互式数据分析变得可行的基于网页的开源框架&#xff0c;Zeppelin提供了数据分析、数据可视化等功能&#xff0c; 0x02 漏洞概述 Apache Zeppelin 中代码生成控制不当&#xff08;“代码注入”&#xff09;漏洞。攻击者可以使用 She…

锁策略总结

锁策略 悲观锁和乐观锁 乐观锁和悲观锁不是具体类型的锁而是指两种不同的对待加锁的态度&#xff0c;这两个锁面对锁冲突的态度是相反的。 乐观锁&#xff1a;认为不存在很多的并发操作&#xff0c;因此不需要加锁。悲观锁&#xff1a;认为存在很多并发操作&#xff0c;因此需…

python实现简单的车道线检测

描述 python实现简单的车道线检测&#xff0c;本文章将介绍两种简单的方法 颜色阈值区域掩模canny边缘检测霍夫变换 这两种方法都能实现简单的车道线检测demo&#xff0c;注意仅仅是demo 下面的图片是用到的测试图片 方法1&#xff1a;颜色阈值&#xff08;Color Selection…

jpa使用Querydsl需要规避的一些坑

在使用Spring Data JPA时&#xff0c;通常会使用Querydsl来构建类型安全的查询。在Querydsl中&#xff0c;为了区分实体类与Querydsl查询类&#xff0c;习惯上会给查询类的前缀添加一个"Q"&#xff0c;表示该类是一个查询类。这样做可以有效地避免实体类与查询类之间…

并发学习28--多线程 Fork、Join线程池

概念 使用 import java.util.concurrent.ForkJoinPool; import java.util.concurrent.RecursiveTask;public class TC51 {public static void main(String[] args) {//递归到最小不可分解单元&#xff0c;再进行计算ForkJoinPool pool new ForkJoinPool(5);pool.invoke(new My…

「 典型安全漏洞系列 」14.NoSQL注入漏洞详解

NoSQL注入是一个漏洞&#xff0c;攻击者能够干扰应用程序对NoSQL数据库进行的查询&#xff0c;本文我们将研究如何测试一般的NoSQL漏洞&#xff0c;然后重点研究如何利用MongoDB中的漏洞&#xff08;MongoDB是最流行的NoSQL数据库&#xff09;。 1. 什么是NoSQL注入 NoSQL注入…