给CSDN论坛的朋友们分享一个51单片机做的霍尔自行车里程测速仪,资料很全 程序 设计论文都有.
说明
1、单片机是通用的无论51还是52、无论stc还是at都一样,引脚功能都一样。
程序也是一样的。
2、原理图中的.ddb、.Bkp等格式是要用protelse打开的,没有软件的不要紧,
我已帮您转换成word格式和pdf格式的了。
3、程序中的.c文件可以用记事本(文本文档)打开,就是程序了。其他的是写程序是自动生成的,没什么用的。
4、可以按照正面布局,不要按照实物的背面焊接,要按照原理图焊接。

数码管脚位排布说明:
正面朝自己,秒点在下,左下为1脚,逆时针排布,左上为最后一个脚!请坛友焊接前弄清脚位排布再焊接!祝你们成功!
废话不多说,直接上实物图:




霍尔自行车测速电路原理图:


零件列表

霍尔自行车里程测速仪设计论文:

单片机霍尔自行车里程测速仪参考源程序:

//目的:学习编程
//说明1:P00—P07:a-----dp P27—P24:com1-----com4 P34切换显示 P32—INT0 一个磁钢
//说明2:此程序针对车轮周长为207cm,其他型号周长,可改变参数就行
//说明3:数码管从左至右 高------低
#include<reg51.h>
#include"juxun001.h"
//主函数=====================
void main()
{
time0_int0_init();//定时器0和外部中断0的初始化
while(!TR0) //上电一直未切割时就显示 0.0.0.0
{
init_display();
}
while(1)
{
if(!change)//按下切换按键显示里程
{
delay1m(5);
if(!change)
{
flag = ~flag;
}
while(!change);
}

    }

}

//==定时器0中断函数
void time0_interrupt()interrupt 1
{
TL0 = (65536 - 5000) % 256;// 12M晶振,5ms定时
TH0 = (65536 - 5000) / 256;
display_function();
time_counter++;
time_counter8++;
if(time_counter8 >= 1600)//大于8s没切割,车子视为停下了,速度为:0,但里程还记着
{
time_counter8 = 0;
speed = 0;//速度为 0
point1 = 0;
buf1[3] = speed%10;buf1[2] = speed/10%10;
buf1[1] = speed/100%10;buf1[0] = speed/1000%10;
}
}
//==========外部中断0中断函数=
void int0_interrupt()interrupt 0
{

external_counter++;
if(external_counter ==1 )TR0 = ~TR0;//第一次切割打开定时器0
if(external_counter == 65535)external_counter = 0;
time_counter8 = 0; //只要8秒内有切割,车子就任在运行

if(external_counter % 2 == 0)//切割2次 更新下速度
{ //*5是因为中断一次是5MS
if(flag10){speed =((ulong)(36000)*zhouchang)/(time_counter * 5);flag1=1;}
else if(flag11){speed =((ulong)(36000)2zhouchang)/(time_counter * 5);}//速度:单位为 m/h ,*1000的目的是不出现浮点数

if((speed >= 100)&&(speed < 1000)) //100 ---- 1000 3位整数
{
point1 = 1;buf1[3] = speed%10;buf1[2] = speed/10%10;
buf1[1] = speed/100%10;buf1[0] = 0;}
else if((speed >= 1000)&&(speed < 10000)) //1000 ---- 10000 4位整数
{
point1 = 1;speed = (uint)speed;
buf1[3] = speed%10;buf1[2] = speed/10%10;
buf1[1] = speed/100%10;buf1[0] = speed/1000%10;}
else if((speed >= 10000)&&(speed < 100000)) //10000 ----- 100000 5位整数
{
point1 = 2;
buf1[3] = speed/10%10;buf1[2] = speed/100%10;
buf1[1] = speed/1000%10;buf1[0] = speed/10000%10;}
else if((speed >= 100000)&&(speed < 1000000)) //100000 ------ 1000000 6位整数
{
point1 = 3;
buf1[3] = speed/100%10;buf1[2] = speed/1000%10;
buf1[1] = speed/10000%10;buf1[0] = speed/100000%10;}
time_counter = 0;
}
if(external_counter % 8 == 0)//每切割8次 更新下里程
{
s = (ulong)external_counter * zhouchang; //里程:单位为 cm
if((s >= 1000)&&(s < 10000))
{
point2 = 1; // 0.012 001212
buf2[3] = s/100%10;buf2[2] = s/1000%10;
buf2[1] = 0;buf2[0] = 0;}// 4位整数
else if((s >= 10000)&&(s < 100000))
{
point2 = 1;
buf2[3] = s/100%10;buf2[2] = s/1000%10;
buf2[1] = s/10000%10;buf2[0] = 0;}// 5位整数 0.123 012345
else if((s >= 100000)&&(s < 1000000))
{
point2 = 1;
buf2[3] = s/100%10;buf2[2] = s/1000%10;
buf2[1] = s/10000%10;buf2[0] = s/100000%10;} // 6位整数 1.234 1234 56
else if((s >= 1000000)&&(s < 10000000))
{
point2 = 2;
buf2[3] = s/1000%10;buf2[2] = s/10000%10;
buf2[1] = s/100000%10;buf2[0] = s/1000000%10;}// 7位整数 1234 567
else if((s >= 10000000)&&(s < 100000000))
{
point2 = 3;
buf2[3] = s/10000%10;buf2[2] = s/100000%10;
buf2[1] = s/1000000%10;buf2[0] = s/10000000%10;} // 8位整数 1234 5678
}
}
//==========开电源就显示的数据,初始显示速度
void init_display()
{
uchar i;
for(i = 0;i < 4;i++)
{
wei = bitcode[num - 1];
led = display1[buf1[num–]];
delay1m(4);
if(num == 0)num = 4;
}
}
//==显示函数=
void display_function()
{
if(flag == 0)//显示速度
{
switch(point1)
{
case 0:wei = bitcode[num-1];led = display1[buf1[num-1]];num–;break;//速度显示 0
case 1:if(num == 1){ wei = bitcode[num-1];led = 0x7f&display1[buf1[num-1]];num–;}
else { wei = bitcode[num-1];led = display1[buf1[num-1]];num–;}break;//最高位小数点亮

case 2:if(num == 2){ wei = bitcode[num-1];led = 0x7f&display1[buf1[num-1]];num–;}
else { wei = bitcode[num-1];led = display1[buf1[num-1]];num–;}break;//第二高位小数点亮

case 3:if(num == 3){ wei = bitcode[num-1];led = 0x7f&display1[buf1[num-1]];num–;}
else { wei = bitcode[num-1];led = display1[buf1[num-1]];num–;}break;//第三高位小数点亮
default:break;

}
if(num == 0)num = 4;
}
else if(flag == 1)//显示里程
{
switch(point2)
{
case 0:wei = bitcode[num-1];led = display1[buf2[num-1]];num–;break;//里程显示 0

case 1:if(num == 1){ wei = bitcode[num-1];led = 0x7f&display1[buf2[num-1]];num–;}
else { wei = bitcode[num-1];led = display1[buf2[num-1]];num–;}break;//最高位小数点亮

case 2:if(num == 2){ wei = bitcode[num-1];led = 0x7f&display1[buf2[num-1]];num–;}
else { wei = bitcode[num-1];led = display1[buf2[num-1]];num–;}break;//第二高位小数点亮

case 3:if(num == 3){ wei = bitcode[num-1];led = 0x7f&display1[buf2[num-1]];num–;}
else { wei = bitcode[num-1];led = display1[buf2[num-1]];num–;}break;//第三高位小数点亮
default:break;

}
if(num == 0)num = 4;
}
}
//=================定时器0和外部中断0的初始化函数=
void time0_int0_init()
{
TMOD |= 0x01;
TMOD &= 0xfd;//定时器0工作于方式1
TL0 = (65536 - 5000) % 256;//12M晶振,5ms定时
TH0 = (65536 - 5000) / 256;
IT0 = 1;//外部中断0,负跳变触发方式
TR0 = 0;
ET0 = 1;
EX0 = 1;
EA = 1;
}
//==========ms 级延时函数=
void delay1m(uchar x)
{
uchar i,j;
for(i=0;i<x;i++) //连数x次,约 x ms
for(j=0;j<120;j++); //数120 次,约1 ms
}

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,
如果需要 完整代码或设计文件,请在下方留言或者私信我,看到后会第一时间回复。

谢谢!

项目实战:51单片机霍尔自行车里程测速仪设计 论文 原理图 程序 PPT 制作详解都有相关推荐

  1. 项目实战:51单片机霍尔自行车里程测速仪设计升级版 原理图 程序 制作BOM

    给CSDN论坛的朋友们分享一个51单片机做的霍尔自行车里程测速仪,资料很全 程序 设计论文都有. 说明 1.单片机是通用的无论51还是52.无论stc还是at都一样,引脚功能都一样. 程序也是一样的. ...

  2. 单片机数码管显示自行车里程c语言,基于51单片机的自行车里程计速度计设计.doc...

    信电学院课程设计报告 题目: 基于51单片机的自行车里程计/速度计设计 学生姓名 学 号 班 级 专 业 指导教师 说 明 1. 课程设计文本材料 2. 学生根据指导教师下达的任务书.指导书完成课程设 ...

  3. 基于51单片机甲醛浓度检测系统仿真设计(仿真+程序+原理图+报告+讲解)

    文章目录 资料下载(可点击) 功能说明 仿真图 复位电路 晶振电路 程序 原理图: 设计报告: 器件清单: 基于51单片机甲醛浓度检测系统仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altiu ...

  4. 基于51单片机的霍尔自行车里程测速仪

    硬件方案 以 51 单片机为核心,A44E 霍尔传感器测转数,实现对自行车里程/速度的测量统计,采用 数码管实时显示自行车的里程数及速度.利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机 ...

  5. 练手小项目:51单片机控制的智能台灯设计(自动感应调光) 电路图,测试图,源代码全技术资料

    功能及概述 本系统组成如图一所示,主要由三部分组成: 传感器及信号处理部分:检测人体辐射红外信号及光强信号经过处理后变成可处理的数字信号 以80C51组成的中央处理单元:处理信号并发出控制命令 提醒电 ...

  6. 基于51单片机的单电源函数信号发生器设计仿真原理图方案

    系统硬件设计 系统框图如图3-1所示 原理图 仿真图 DAC0832芯片原理 这里采用DAC0832与单片机89C51的典型的单缓冲方式接口电路.ILE接高电平,/WR1和/WR2相连后接89C51的 ...

  7. 基于51单片机的16x16点阵滚动广告牌仿真原理图程序

    硬件设计 原理图: 仿真图: 左右滚动: 上下滚动: 程序设计: /****************************************************************** ...

  8. T149基于51单片机4层电梯控制器Proteus设计、keil程序、c语言、源码

    仿真演示和资料请点击这里! 电梯设置内外键,按下任一键,电梯控制系统响应: 电梯楼层和升降状态通过数码管.LED灯实时显示; 具有紧急停止和声光报警功能,保护乘客安危; 有开门和关门按键: 使用LED ...

  9. docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解

    1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创 ...

最新文章

  1. C 语言中” 与””的区别
  2. 某面试官面试一个百度T7程序员,出了一道这样的coding题!T7竟不会!被面试官嘲笑!...
  3. 还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波
  4. 转:C# Thread
  5. 高级语言程序设计用c语言描述答案,清华大学出版社-图书详情-《高级语言程序设计(C语言描述)第2版》...
  6. [react] render函数中return如果没有使用()会有什么问题?
  7. React学习(8)—— 高阶应用:不使用ES6、JSX实现React
  8. PHP之webservice调用接口
  9. 笔记本--摄像头驱动--找不到相机--浏览器打开相机失败--未检测到摄像头--剩下的标题我就不想了--太长了
  10. 安防巨头们集体造车 跳出安防已成常态
  11. 技术分享——SSM图书馆预约占座系统
  12. FFmpeg入门详解之67:Qt FFmpeg开发播放器
  13. 计算机网络八大性能指标
  14. h5py使用基础笔记
  15. 认识java安全管理器SecurityManager
  16. 没有项目经验找工作处处碰壁怎么办
  17. 微信支付调用第三方系统无返回值的问题
  18. mysql的UNIX_TIMESTAMP用法
  19. 小黄鸭坤坤(Python高还原绘图)
  20. 语言学与计算机,计算机与乔姆斯基语言学_刘俐李

热门文章

  1. EasyExcel导出excel合并表头和数据
  2. CSGO C4D -CSGO模型导入C4D进行编辑 -如何制作CSGO定制图片
  3. MySQL巧用sum,case...when...优化统计查询
  4. 浅析自主、意图与感性
  5. unityUDP广播
  6. 迄今为止最浮夸的代码编辑器插件
  7. java resizable方法,[Java教程]jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧...
  8. [原创]DEDE 织梦建站,仿站(包含5套正版建站软件)
  9. 微信小程序开发从入门到实践 测试6
  10. sklearn中svr(支持向量机回归)