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

news2025/1/19 23:13:59

基于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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RUOYI 若依 横向菜单

保留移动端适配 小屏适配 菜单权限等 可轻松进行深度自定义菜单样式 以及分布 仅支持横向布局 如需源码 教程等 ➕ wx 技术支持 wx : 17339827025

数据结构(双链表

目录 1. 讲解&#xff1a;2. C代码实现&#xff1a;小结&#xff1a; 1. 讲解&#xff1a; 2. C代码实现&#xff1a; #include <stdlib.h> #include <iostream> #include <stdio.h>using namespace std;#define ElemType inttypedef struct DLNode {ElemTy…

【MySQL】表的基本约束

文章目录 1、约束类型1.1NOT NULL约束1.2UNIQUE&#xff1a;唯一约束1.3DEFAULT&#xff1a;默认值约束1.4PRIMARY KEY&#xff1a;主键约束1.5FOREIGN KEY&#xff1a;外键约束 2、表的设计2.1一对一2.2一对多2.3多对多 1、约束类型 关键字解释NOT NULL指示某列不能存储NULL值…

【2024-04-19亲测有效】Markdown Pad2 激活

下载地址 链接 密码: 8trb 点击下载好的文件直接安装&#xff0c;安装过程按照提示就好。 安装后打开&#xff0c;会提示输入license 上面的填邮箱地址&#xff1a;Soar360live.com 下面的填密钥&#xff08;注意要鼠标拖动全部复制&#xff0c;双击只能选中部分&#xff09;…

webpack-babel

babel Babel 是一个 JavaScript 编译器&#xff0c;主要用于将高版本的 JavaScript 代码转换为低版本的 JavaScript 代码&#xff0c;从而确保代码在不同浏览器和环境中的兼容性。它可以将 ES6/ES7/ES8 等新特性转换为 ES5 等旧版本的 JavaScript 代码&#xff0c;使得开发人员…

在线编辑器 CodeMirror

如何优雅的在网页显示代码 如果开发在线编辑器 引入资源&#xff1a; <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.60.0/codemirror.min.css"><script src"https://cdnjs.cloudflare.com/ajax/libs/c…

​面试经典150题——从前序与中序遍历序列构造二叉树

​ 1. 题目描述 2. 题目分析与解析 二叉树的前序、中序和后序遍历 二叉树的前序、中序和后序遍历是树的三种基本遍历方式&#xff0c;它们是通过不同的顺序来访问树中的节点的。 前序遍历&#xff08;Pre-order traversal&#xff09;&#xff1a; 访问根节点 前序遍历左子树…

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似&#xff0c;表是由行&#xff08;记录&#xff09;组成的集合。因此&#xff0c;SQL 支持基于数据行的各种集合运算&#xff0c;包括并集运算&#xff08;Union&#xff09;、交集运算&#xff08;Intersect&#xff09;和差集运算&a…

本地项目如何设置https——2024-04-19

问题&#xff1a;由于项目引用了html5-qrcode插件&#xff0c;但是该插件在本地移动端调试时只能使用https访问&#xff0c;所有原本的本地地址是http&#xff0c;就需要改成https以方便调试。 解决方法&#xff1a;使用本地https证书 1&#xff09;从项目文件下打开cmd逐步输…

AOP基础

一、AOP概述 AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程、面向方面编程&#xff09;&#xff0c;其实就是面向特定方法编程。 使用场景&#xff1a;①记录操作日志&#xff1b;②权限控制&#xff1b;③事务管理等。 优势&#xff1a;①代码无侵入…

SRS服务接入华为云CDN

一、srs配置 正常的标准配置即可&#xff0c;需打开hls推流即可&#xff0c;一般配置中默认打开 二、华为云cdn配置 1.登录华为云&#xff0c;找内容分发网络cdn 2.点击域名管理&#xff0c;点击添加域名 3.配置加速域名 4.选择点播加速 5.添加源站 配置源站地址&#xf…

2024年【G1工业锅炉司炉】考试及G1工业锅炉司炉考试内容

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【G1工业锅炉司炉】考试及G1工业锅炉司炉考试内容&#xff0c;包含G1工业锅炉司炉考试答案和解析及G1工业锅炉司炉考试内容练习。安全生产模拟考试一点通结合国家G1工业锅炉司炉考试最新大纲及G1工业锅炉司炉考…

删除顺序表中所有值为X的元素(顺序表,单链表)

目录 时间复杂度为O(1)(顺序表)&#xff1a;代码实现&#xff1a; 运行结果&#xff1a; 时间复杂度为O(n)(顺序表)&#xff1a;代码实现&#xff1a; 运行结果&#xff1a; 单链表&#xff1a;时间复杂度o&#xff08;n&#xff09;:代码实现&#xff1a; 时间复杂度为O(1…

20240415,构造函数和析构函数,拷贝构造函数调用时机规则

目录 二&#xff0c;对象的初始化和清理 2.1 构造函数和析构函数 2.2 函数分类及调用 2.3 拷贝构造函数调用时机 2.4 构造函数调用规则 二&#xff0c;对象的初始化和清理 2.1 构造函数和析构函数 解决初始化和清理问题&#xff0c;编译器自动调用&#xff0c;如果不提…

探索异常传播:深入剖析Python中的错误处理机制

文章目录 1. 异常传播的基本原理2. 复杂的异常传播场景3. 再次抛出异常的意义是什么&#xff1f;4. 最佳实践与异常处理策略 理解异常传播&#xff08;也称为异常冒泡&#xff09;的过程是至关重要的。这一机制确保当在程序执行中发生错误时&#xff0c;错误能被有效地捕获和处…

CentOS7下安装mysql8或者mysql5.7

mysql8 1、下载 访问mysql官网下载mysql8软件包 https://dev.mysql.com/downloads/mysql/ 选择相应的版本如&#xff1a;RPM Bundle mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar RPM Bundle 8.0.33 下载地址&#xff1a;https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.…

springboot结合vue实现文件上传下载功能

紧接着上一次的博客&#xff0c;这次来实现一下文件(主要是图片)的上传和下载功能&#xff0c;上一次的博客如下所示&#xff1a; Springboot集成JWT token实现权限验证-CSDN博客 其实文件的上传和下载功能(后端的部分)&#xff0c;在我之前的博客就已经有写了&#xff0c;所以…

【学习】关于测试技术的重要性和挑战有哪些

随着信息技术的飞速发展&#xff0c;软件产品已成为现代社会不可或缺的一部分。在软件研发过程中&#xff0c;测试技术的重要性日益凸显。它不仅是确保软件质量的关键环节&#xff0c;也是降低软件故障风险、提高用户体验的重要手段。然而&#xff0c;测试技术也面临着诸多挑战…

【触想智能】如何选购到一款合适的工业电脑一体机

工业电脑一体机是专为工业环境而设计的一种工业计算机。工业电脑一体机和普通的计算机不一样&#xff0c;它对产品的参数性能要求很高&#xff0c;因为它们通常会运行在高低温、电磁干扰、高粉尘、湿度大的恶劣环境中&#xff0c;所以相应的要求工业电脑一体机必须具备良好的宽…

Qt日志使用

QsLog使用 这篇讲qt的日志还是比较好的&#xff0c;可以在自己的函数里面配置这个日志框架实现自己所需的功能。 我接触的项目里面&#xff0c;假如有个函数功能执行错误了&#xff0c;我希望可以快速定位到这个错误&#xff0c;这个时候就需要到了日志&#xff0c;我咨询了有经…