自行车速度表设计_第1页
自行车速度表设计_第2页
自行车速度表设计_第3页
自行车速度表设计_第4页
自行车速度表设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现在很多朋友都喜欢骑车锻炼身体,朋友们在骑行过程中可能会想到:要是也给自行车装上一个里程和速度表那该多好!一 来可以知道骑行的速度,二来可以知道骑行的路程。本人最近也刚入手了24速山地车,于是就决定给自己的车装上速度表。下面我们就进入正题。首先我们先了解速度的概念,速度就是物体在单位时间内通过的路程,通常我们以m/s为单位,相信大家从单位看出要测量自行车的速度必须要测量自行车在1s的时间内通过的路程,即车轮走过的路程。那么我们要怎么知道自行车在这1s走了多少m呢?这里涉及到车轮的转速,所谓转速就是车轮在单位时间内旋转的圈数,这里为了方便计算我们去1s钟,即车轮在1s内转过的圈数。假设1s钟内车

2、轮旋转了n圈,那么我们只要计算出在这一秒内车轮走过的米数就能知道速度,根据数学公式车轮的周长c=2x3.14xr,其中r是车轮的半径,一秒走过的米数=nxc,速度= nxc/s。理论的计算方法就是这样了,那么我们怎么测量车轮的圈数呢?这里就要涉及到传感器方面的知识了。通常会用到两种测速的硬件,一是光电测试,光电测速的优点是比较精确,但是容易受自然光线的影响。另外一种是霍尔测速,利用霍尔传感器对磁铁的感应输出低电平的原理。在这里我们采用第二种测速硬件。要处理传感器的信号,我们还需要一个中央处理器,本人选的是单片机stc89c52,另外我们还要将处理的数据显示出来,在这里采用1602液晶显示屏。下

3、面是各部分硬件: 首先是中央处理器其次是显示屏1602最后是霍尔传感器 接下来是制作和安装,这里只给出部分安装图,大家有不明白的地方再联系我1. 霍尔传感器安装碟刹上面的磁铁是220v吊扇拆出来的,一共装了5个霍尔传感器中央处理器和显示屏装在一个废旧的仪表盒里刚刚好,制作过程忘记拍照了,大家可以找合适的盒子安装。最后是车尾灯和转向灯再给出源程序供大家参考#include#include/_nop_表示空循环一个机器周期的时间#define uint unsigned int/16位无符号整型#define uchar unsigned char/8位无符号字符型typedef bit bool

4、;/定义位变量/lcdsbit lcden=p27;/lcd使能sbit rs=p26;/寄存器选择sbit rw=p25;/读写端口/温度sbit ds=p01;/定义ds18b20接口bit l=1;/uchar code table=temp;/测速uint t3,count,n1,flag=1,flag1,flag2,ds;uint r=0.33;/单车轮子半径,单位muint a,b,c,d,n,j,vm,vcm,vk;uint th,tl,gl,gy;/刹车和转向灯sbit sha1=p20;sbit sha2=p21;sbit zuo=p22;sbit you=p23;/显示ui

5、nt a1,b1,c1,d1,e1,f1;uint y1,y2,y3,y4,y5;/时钟uchar tt;/中断毫秒自加 uchar sec,min,hour;/自动计时的时分秒 uchar ms,mg,fs,fg,ss,sg;/数码管显示的时分秒位 sfr iap=0xe7; /定义下载命令 sbit p30=p30; /串口接收引脚/eeprom#define rdcommand 0x01 /定义isp的操作命令#define prgcommand 0x02#define erasecommand 0x03 #define waittime 0x02 /定义cpu的等待时间sfr isp_

6、data=0xe2; /寄存器申明sfr isp_addrh=0xe3;sfr isp_addrl=0xe4;sfr isp_cmd=0xe5;sfr isp_trig=0xe6;sfr isp_contr=0xe7;bit cun=0;/存储标志/xmsdelay(uint z) uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);/温度部分void d(uint count) /延迟函数 uint x; while(count) x=200; while(x0) x-; count-; /ds18b20初始化(复位)void dsreset() uint i;

7、 ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)i-;bit tmpreadbit() /读一位 uint i; bit dat; ds=0;i+; /小延时一下 ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return (dat);uchar tmpread() / 读一个字节 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好 /一个字节在dat里 return(dat);/将一个字节数据返回void

8、tmpwritebyte(uchar dat) /写一个字节到ds18b20里 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /写1部分 ds=0; i+;i+; ds=1; i=8;while(i0)i-; else ds=0; /写0部分 i=8;while(i0)i-; ds=1; i+;i+; /发送温度转换命令void tmpchange() dsreset(); /初始化ds18b20 d(1); /延时 tmpwritebyte(0xcc); /跳过序列号命令 tmpwritebyte(0x44); /发送温度转换命令 /获得

9、温度uint tmp() uint temp; float tt; uchar a,b; dsreset(); d(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe);/发送读取数据命令 a=tmpread(); /连续读两个字节数据 b=tmpread(); temp=b; temp 8);/* 地址赋值 */ isp_addrl = (unsigned char)(byte_addr & 0x00ff); isp_cmd = isp_cmd & 0xf8; /* 清除低3位 */ isp_cmd = isp_cmd | rdcommand; /* 写入读命

10、令 */ ispgoon(); /* 触发执行 */ isp_iap_disable(); /* 关闭isp,iap功能 */ return (isp_data); /* 返回读到的数据 */void sectorerase(unsigned int sector_addr) /* = 扇区擦除 = */ unsigned int isectoraddr; isectoraddr = (sector_addr & 0xfe00); /* 取扇区地址 */ isp_addrh = (unsigned char)(isectoraddr 8); isp_addrl = 0x00; isp_cmd

11、= isp_cmd & 0xf8; /* 清空低3位 */ isp_cmd = isp_cmd | erasecommand; /* 擦除命令3 */ ispgoon(); /* 触发执行 */ isp_iap_disable(); /* 关闭isp,iap功能 */void byte_write(unsigned int byte_addr, unsigned char original_data) /* = 字节写 = */ isp_addrh = (unsigned char)(byte_addr 8); /* 取地址 */ isp_addrl = (unsigned char)(byt

12、e_addr & 0x00ff); isp_cmd = isp_cmd & 0xf8; /* 清低3位 */ isp_cmd = isp_cmd | prgcommand; /* 写命令2 */ isp_data = original_data; /* 写入数据准备 */ ispgoon(); /* 触发执行 */ isp_iap_disable(); /* 关闭iap功能 */void baocun()/保存里程 /擦除扇区 sectorerase(0x2006); sectorerase(0x2005); sectorerase(0x2004); sectorerase(0x2003); sectorerase(0x2002); sectorerase(0x2001); sectorerase(0x2000); /重新写入数据 byte_write(0x2006,min); byte_write(0x2005,hour); byte_write(0x2004,y1); byte_write(0x2003,y2); byte_write(0x2002,y3); byte_write(0x2001,y4); byte_write(0x20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论