自行车里程表电路设计_毕业论文设计_第1页
自行车里程表电路设计_毕业论文设计_第2页
自行车里程表电路设计_毕业论文设计_第3页
自行车里程表电路设计_毕业论文设计_第4页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

1、( 此文档为 word 格式,下载后您可任意编辑修改!)安阳师范学院本科学生毕业设计报告自行车里程表电路设计作者陈乐乐系(院)物理与电气工程学院专业电气工程及其自动化年级2009 级学号091103057指导老师刘永顺日期诚信承诺书郑重承诺:所呈交的论文是作者个人在导师指导下进行的研究工作及取得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与作者一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。作者签名:导师签名:院长签名:日期:日期:日期:论文使用授权说

2、明本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。保密论文在解密后遵守此规定。作者签名:导师签名:日期:自行车里程表电路设计陈乐乐(安阳师范学院物理与电气工程学院河南安阳 455000 )摘要: 介绍了自行车里程表研究的意义,提出了自行车里程表的设计方案,详细阐述了采用 STC89C52、霍尔传感器、 LED 数码管等设计制作自行车里程表的过程。关键词: 里程表;单片机;霍尔传感器; LED 数码管1 引言自行车由于本身低碳环保及方便等优点,成为居民喜爱的交

3、通、健身工具。在这个背景下,自行车里程表作为自行车的一大辅助工具迅速发展起来。科学、美观、合理设计自行车里程表有一定的实用价值, 它能计算出里程数 , 使运动者运动适量 , 达到健康运动与代步的最佳效果。现在汽车上都装载有里程表,但是由于成本昂贵,不太适合应用在自行车上。本里程表的设计具有结构简单,成本低廉,显示清晰,稳定可靠等优点,并且可进行扩充。2 设计要求(1)以单片机为控制核心,采用霍尔传感器检测自行车轮胎的运转情况,通过抗干扰处理和计算后,由数码管显示自行车的里程;(2)总里程 <999.9Km;(3)可扩展显示自行车速度。3 方案论证3.1方案 1(1)利用霍尔传感器产生里程

4、数的脉冲信号;(2)利用单片机自带的计数器T1 对霍尔传感器脉冲信号进行计数;(3)对数据进行处理,用LED显示里程数。实现:利用软件编程,对数据进行处理得到需要的数值。最终实现目标:自行车里程显示功能。整个设计过程包括硬件电路的搭建,软件的编程,系统的调试,调试通过后,固化程序,脱离开发系统运行。3.2方案 2总体思路与方案 1 一致,依然利用单片机自带的计数器对霍尔传感器产生里程数的脉冲信号进行计数,但是数据显示模块采用 LCD显示,更能清晰的显示里程数。3.3方案比较本设计采用方案 1,数码管低功耗,容易控制,占用 CPU资源少,价格比较便宜,比较实用。4硬件设计4.1框图本系统是由数据

5、采集,单片机控制系统,数据存储3 部分构成。其中数据的采集是由霍尔传感器来完成的,它的输出是矩形脉冲,经过RC 滤波后就向单片机系统提供转速信号。其中关键的处理由单片机系统来完成,单片机将对INT0 脚的接收的信号进行计数,信号由显示部分送 LED 进行显示,显示当前的行驶里程情况。在本次行驶过后数据存入EEPROM中,以便下次行驶时在其基础上继续计数送出显示总共的里程数,到记忆的目的。以上所述就是整个系统的总体设计思想。利用霍尔元件对里程进行测量,将霍尔元件安装在车前叉的一侧,在车圈侧面贴一个磁片,当磁片经过霍尔元件时,霍尔元件输出端的电压发生变化产生脉冲,单片机根据脉冲数来计算里程。该设计

6、能实时地将所测的累计里程数显示出来,信号送入单片机前应对其进行放大整形,然后通过单片机计算出里程,再将所得的数据存储到数据存储器,并由 LED 显示模块交替显示所测里程。 本设计的里程数的算法是一种大概的算法 (假设在一定时间内自行车是匀速行进) 。原理框图如图 1 所示。4.2电路原理图和电路原理本设计所用的霍尔传感器是一块集成芯片,它结合了采样和放大功能于一体。首先我们把磁钢放在自行车的转轴上, 而霍尔元件就放在与其水平的转轴上,当我们完成安装后,转动自行车的转轴,磁钢也就跟着一起转动,从而使霍尔传感器周围的磁场发生变化,这种变化将会导致霍尔电压变化从而产生一个方波,再通过其内部的整形和放

7、大,产生出一个适合外部电路的脉冲电压。假定轮圈的周长为L,在轮圈上安装1 个磁铁,则测得的里程值最大误差为L。当轮子每转一圈,通过开关型霍尔元件传感器采集到一个脉冲信号,并从引脚 P3.2 口中断 0 端输入,传感器每获取一个脉冲信号即对系统提供一次计数中断,每次中断代表车轮转动一圈,中断数n 轮圈的周长 L 的乘积即为里程值。电路原理如图2所示。图 2 电路原理图5 软件设计5.1软件编程实现系统软件框图本系统软件采用模块化设计方法,整个系统由初始化模块、 里程计算模块、数据转 BCD码模块、里程显示模块、数据存储、读取模块、定时器中断服务模块以及其他功能模块组成,如图 3 所示。总体程序设

8、计自行车里程表的软件设计包括上电初始化程序、中断子程序、里程调用子程序、LED显示子程序、延时子程序等部分,下面将分析其主要部分。在主程序模块中,需要完成对各接口芯片的初始化、自行车里程的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动清除标志寄存器、里程寄存器,并对它们进行初始化。然后主程序将根据各标志寄存器的内容,分别完成启动、清除、计程等不同的操作。P1.1 口用于显示里程状态,P1.7口用于设置轮圈的大小,低电平有效。中断0用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出一个低电平脉冲,将根据里程寄存器中的内容计算出行驶里程数。 中断 1用于控

9、制定时器 T1的启停,当输入为 0时关闭定时器。此控制信号是将轮子圈数的计数经二分频后形成,其程序流程如图4所示。图 4 主程序流程图5.2 中断子程序的设计定时中断是为满足定时或计数的需要而设置的。为此在单片机内部有两个定时计数器,以对其中的计数结构进行计数的方法,来实现定时或计数功能。当结构发生计数溢出时,即表明计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志,作为单片机接受中断请求的标志。这种中断请求是在单片机芯片内部发生的,因此无须在芯片上设置引入端。定时计数器控制寄存器TCON是8位寄存器,地址为 88H,可以位寻址。其高4位用于定时计数器中断控制,低4位借给外部中断

10、,用做中断标志和触发方式选择位。本设计采用定时中断,对自行车的里程进行计数。5.3里程计算子程序的设计外中断 0 服务程序用于对单片机P3.2 口输入的圈脉冲进行计数, 为十六进制计数器。60H 为低位, 62H 为高位。每次计数一次后,对里程数据进行一次存储操作。当车轮每转一圈,通过霍尔元件将脉冲数输入单片机内,通过计数器计出脉冲数,再用乘法子程序算出里程数。5.4显示子程序的设计本次设计采用动态扫描显示接口电路,动态显示接口电路是把所有显示器的8 个笔划段 a-Chen Lele(School of Physics and Electical Engineering,Anyang Norm

11、al University,Anyang,Henan 455000)Abstract: The significance of bicycle odometer is introduced, put forward the design of bicycle odometer, detailed elaborated the STC89C52, and production process of bicycle odometer.Key words: speedometer; single chip microcomputer; ;hall sensor; LED digital tube附

12、录1 元器件明细表序号名称1单片机2驱动器3D 触发器4排阻5霍尔元件6发光二极管7晶振8 共阴极四位数码管9电容10电阻11微动开关12电路板13导线型号数量STC89C521 个74LS2441 个74LS741 个1 K1 个A44E1 个LED1 个12MHz1 个SMA4205641 个33PF2 个10 F1 个10K1 个1001 个2 K1 个1 个1 块若干附录 2 PCB图附录3程序;;中断初始化;ORG0000H;程序执行开始地址LJMPSTART;跳至STARTORG0003H;外中断0 中断程序入口LJMPINTEX0;跳至INTEX0中断服务程序RETI;中断返回O

13、RG0013H;外中断1 中断入口LJMPINTEX1;跳至INTEX1中断服务程序ORGLJMPORGRETI001BHINTT10023H;定时器 T1 中断程序入口;跳至 INTT1 中断服务程序;串口中断入口地址;中断返回;;上电初始化程序;CLEARMEN:MOVTMOD,#90H;T1为 16 位外部控制定时器SETBPX0;外中断0 优先级为1SETBIT0;外中断0 用边沿触发SETBIT1;外中断1 用边沿触发CLRA;清AMOV20H,A;清内存中特定单元MOV6CH,A;MOV6DH,A;MOV70H,A;MOV71H,A;MOV72H,A;MOV73H,A;MOV60H

14、,A;MOV61H,A;MOV62H,A;MOV63H,A;清内存中特定单元DECA;A 为#0FFHMOV68H,A;内存置数据 #0FFHMOV69H,A;内存置数据 #0FFHMOV6AH,A;内存置数据 #0FFHMOV6BH,A;内存置数据 #0FFHMOVP1, A;P1 口置 1CLEAR1:JBP1.2,KEY1; 根据 P1.2,P1.3,P1.6,P1.7设置状态,;在 21H 地址单元赋自行车周长值KEY:MOV21H,#19H; 28 寸自行车周长值CLEAR2:SETBTR1; 开定时器 T1SETBEA;开中断允许SETBEX0;开外中断 0SETBET1;开定时中

15、断 T1SETBP3.1; 关报警器LCALLVIICREAD; 将 EEPROM中原里程数据调入内存RET;子程序返回;; START;START:MOVSP,#75H;堆栈在 75H 开始LCALL CLEARMEN;上电初始化START1:JBP3.0,DISPLAYS;P3.0=1,显示里程LCALLDISPLAYV; 显示速度START2:SJMPSTART1; 转 START1 循环; ;;里程计数程序,用外中断0 实现,计数用60H-62H 内存单元。; ;INTEX0:PUSHACC; 累加器堆栈保护PUSHPSW;状态字堆栈保护INC60H;圈加 1CLRA;清 ACJNEA

16、,60H,INTEX0OUT;计数没溢出转 INTEX0OUTINC61H;溢出进位( 61H 加 1)CJNEA,61H,INTEX0OUT;计数没溢出转 INTEX0OUTINC62H;溢出进位( 62H 加 1)INTEX0OUT:LCALLVIICWRITE; 里程数据存入 EEPROMSETBEX1;开外中断 1POPPSW;状态字恢复POPACC;累加器恢复RETI;中断返回;; T1 计数器中断服务程序;INTT1:PUSHPUSHINCMOVJNZACCPSW6CHA,6CHINTT11;累加器堆栈保护;状态字堆栈保护;6CH 计时 单元加;移入 A;不等于 0 转 INTT1

17、11INC6DH;进位, 6DH 单元加 1MOVA,6DH;移入 AJNZINTT11; 不等于 0 转 INTT11SETB00H;计时器溢出,置溢出标志INTT11:POPPSW; 恢复堆栈POPACC;RETI;中断返回;;里程显示控制程序;DISPLAYS:SETBP1.0;点亮 LED1 (显示里程状态)CLRP1.1;关闭速度指示灯SETBP3.7; 显示小数点(最小显示为0.1 公里)LCALLSSS;将圈数转为公里数LCALLDISPLAY;显示公里数据LJMPSTART1;跳回 START1;;归一化 EEPROM 存入程序( 12M 时钟),存入数在 50H 起单元;VI

18、ICWRITE:ACALLWMOV9MOVSLA,#SLAWMOVNUMBYT,#09HLCALLWRNBYTRETWMOV9:MOV5FH,#50HMOVR0,#MTDMOVR1,#5FHMOVR2,#09HWMOV:MOVA,R1MOVR0,AINCR0INCR1DJNZR2,WMOVRET;;归一化 EEPROM 读出程序( 12M 时钟),读出数放入 60H-67H 单元;VIICREAD:MOVMTD,#50H;MOVSLA,#SLAWMOVNUMBYT,#01HLCALLWRNBYTMOVSLA,#SLARMOVNUMBYT,#08HLCALLRDNBYTACALLRMOV8RET

19、RMOV8:MOVR0,#MRDMOVR1,#60HMOVR2,#08HRMOV:MOVA,R0MOVR1,AINCR0INCR1DJNZR2,RMOVRET;;显示程序,显示 BCD 码在 70H-73H 单元内,采用共阴 LED 数码管;DISPLAY:MOVR1,#70H;显示单元首址MOVR2,#0FEH;扫描字PLAY:MOVA,R2;扫描字入 AMOVP2,A;放到端口MOVA,R1;取显示数据ANLA,#0FH;去掉高四位(为0)MOVDPTR,#TAB;取段码表首址MOVCA,A+DPTR;查显示数据对应段码MOVP0,A;段码输出LCALLDL1MS;点亮 1 毫秒INCR1

20、;指向下一显示数据地址MOVA,R2;取扫描字JNBACC.3,ENDOUT;已扫描到第四位,转 ENDOUT 退出RLA;循环左移MOVR2,A;放回 R2AJMPPLAY;转 PLAY 循环ENDOUT:SETBP2.0;关扫描SETBP2.1;关扫描SETBP2.2;关扫描SETBP2.3;关扫描RET;扫描结束;共阴段码表(可显示0-F)TAB:DBDBDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H 7FH,6FH,77H,7CH,39H,5EH,79H,71H 00H;;里程处理程序,将自行车圈数据换算成公里数;SSS:MOVR2,61HMOVR3,60HMOVR

21、6,#00HMOVR7,21HMOVA,R3MOVB,R7MULABXCHA,R7MOVR5,BMOVB,R2MULABADDA,R5MOVR4,ACLRAADDCA,BMOVR5,AMOVA,R6MOVB,R3MULABADDA,R4XCHA,R6XCHA,BADDCA,R5MOVR5,AMOVF0,CMOVA,R2MULABADDA,R5MOVR5,ACLRAMOVACC.0,CMOVC,F0ADDCA,BMOVR4,AMOV19H,#64H;除数最高位赋值MOV18H,#00H; 除数赋值MOV17H,#00H; 除数赋值MOV16H,#00H; 除数赋值MOV11H,#00H; 被除数

22、赋值MOV12H,R4; 被除数赋值MOV13H,R5; 被除数赋值MOV14H,R6; 被除数赋值MOV15H,R7; 被除数赋值LCALLDIVST; 调除法程序LCALLBCDST; 调二进制转 BCD 码程序MOVA,25H; 结果处理,将 25H 数移入 AANLA,#0FH; 将高四位置为 0MOV70H,A; 放入 70H 单元MOVA,25H; 25H 数移入 ASWAPA; 高低四位交换ANLA,#0FH; 将高四位置为 0MOV71H,A; 放入 71H 单元MOVA,24H; 24H 数移入 AANLA,#0FH; 将高四位置为 0MOV72H,A; 放入 72H 单元MOVA,24H; 24H 数移入 ASWAPA; 高低四位交换ANLA,#0FH; 将高四位置为 0MOV73H,A; 放入 73H 单元RET;子程序返回

温馨提示

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

评论

0/150

提交评论