自行车里程速度计的设计.docx
- 文档编号:16335908
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:33
- 大小:75.02KB
自行车里程速度计的设计.docx
《自行车里程速度计的设计.docx》由会员分享,可在线阅读,更多相关《自行车里程速度计的设计.docx(33页珍藏版)》请在冰点文库上搜索。
自行车里程速度计的设计
参考文献18
1引言传感器,英文名字为Sensor或Transducer,亦称换能器、变换器。
在科技迅速发展的今天,传感器越来倍受重视。
在日常生活、航天、航空,常规武器、交通运输,机械制造、化工、生物医学工程、自动化检测工程及计量等各项领域都被广泛应用。
目前,传感器已向新材料开发,集成化、智能化、数字化、新工艺,高精度化及高稳定、高可靠化等技术发展。
特别是霍尔传感器,鉴于它的价廉、易于使用,使它广泛运用于里程计、速度计等。
单片微型计算机简称单片机,又称微控制器,特别适用于控制领域。
通常单片机由单块集成电路构成,内部包含有计算机的基本部件:
CPU(中央处理器),存储器和I/O接口电路等。
因此,单片机只需要与适当的软件及外部设备相结合,便可以成为一个单片机控制系统。
目前,场上销售的单片机有4位、8、16位、32位,并且单片机朝着高性能多种方向发展,尤其是8位单片机以经成为当前单片机的主流,主要体现在CPU功能增强、内部资源增多、引脚的功能化、低电压和低功好耗化上。
单片机因为其体积小、功能强,可靠性高,灵活方便等优点,所以可以用于各个领域,对各行各业的技术改造和产品更新换代起到重要的推动作用。
本人经过学习,用AT89C52设计了一个自行车里程/速度计。
本设计可轮流显示自行车行使的里程和速度,采用TC4024芯片作为计数器以及2C401存储数据,3个单级共阴数码管作为显示系统。
本系统具有超速信响提醒功能,里程数据自动记忆,也可应用于电动自行车、摩托车、汽车等机动车仪表上。
2AT89C52单片机
2.1AT89C52单片机简介
本设计选用AT89C52单片机,AT89C52是一种低功耗、高性能CMOS8位微控制器。
使用Atmel 公司高密度非易失性存储器技术制造,可与工业AT89C51 产品指令和引脚完全兼容。
2.2AT89C52的管脚及其含义
AT89C52的管脚及各管脚含义如下:
图2.289C52管脚图
各引脚功能说明:
VCC——电源电压;
GND——接地;
P0口——P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用;
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻;
在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻;
P1口——P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输出口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流;
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX);
FLASH编程和程序校验期间,P1接收低8位地址;
P1.0和P1.1的第二功能:
P1.0T2(定时/计数器2外部计数脉冲输入),时钟输出;
P1.1T2EX(定时/计数2捕获/重装载触发和方向控制);
P2口——P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流;
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容;
FLASH编程或校验时,P2亦接收高位地址和一些控制信号;
P3口——P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流;
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号;
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位;
ALE/PROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲;
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG);
EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
3TC4024
本程序采用TC4024芯片,它是一个7位的计数器,计数器具有分频的作用,它包含有14个管脚,其7脚接地,14脚接+5V,1脚接AT89C52的INT0,即12脚,在系统中此芯片起到了二分频的作用。
424C01芯片
4.124C01简介
24C01是一个1K位串行CMOSEEPROM,内部含有128个8位字节,CATALYST的先进CMOS技术实际上减少了器件的功耗,24C01是一个8位字节页写缓冲器,该器件通过I2C总线接口进行操作,即此芯片采用I2C协议进行读写数据。
有一个专门的写保护功能。
24C01是I2C接口的,但标准51是不带I2C接口的,串口方式0是不行的,需要用IO模拟,所以随便接两个IO都可以,而且都要接上拉电阻,大概几K就行了,因为不是总线方式,所以不能用MOV指令,也不能用SBUF,要判断是否为满,可以在程序里设个变量。
在这里要注意E2P芯片的寿命(一般是读写100万次,足够了)。
存储数据的时候,可以对操作数和存储的数据进行比较,不相等则存储,这样可以增加使用寿命,比有些每隔1秒钟进行存储的会好多了。
以下是24C01的管脚图:
图4.1管脚图
表4.124C01的管脚描述
管脚名称
A0、A1、A2
功能
器件地址选择
SDA
SCL
WP
VCC
VSS
串行数据/地址
串行时钟
写保护
+1.8V—6.0V工作电压
接地
4.224C01的特性:
24C01芯片具有以下特性:
1.与400KHZ的I2C总线兼容;
2.+1.8-6.0V工作电压范围;
3.低功耗CMOS技术;
4.写保护功能:
当WP为高电平时进入写保护状态;
5.页写缓冲器;
6.自定时擦写周期;
7.1,000,000编程擦除/周期;
8.可保存数据100年;
9.8脚DIP、SOIC、TSSOP封装;
10温度范围:
商业级、工业级和汽车级。
5硬件电路的设计
5.1系统硬件电路
自行车里程/速度计能自动显示自行车行驶的总里程数及行车速度,具有超速信响提醒功能,里程数据自动记忆,也可应用于电动自行车、摩托车、汽车等机动车仪表上。
其硬件电路原理图如下图。
图5.1系统原理图
5.2系统的工作原理
本设计能实时地将所测的速度与累计里程数显示出来,主要是将24C01传感器输入到单片机的脉冲信号,将频率实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到TC4024芯片中,通过AT89C52单片机计算出来的速度和里程的数据,必须通过BCD码的转换才能输出给数码管。
最后由共阴数码管显示所测速度与里程。
自行车里程/速度计采用AT89C52单片机作控制,速度及里程传感器采用霍尔元件,其电器原理图如上图所示。
P0口和P2口用于七段LED显示器的段码及扫描输出,在显示里程时,第三位小数点用17脚P3.7口控制点亮。
P1.0和P1.1口分别用于显示里程状态和速度状态。
P1.2、P1.3、P1.6和P1.7口分别用于设置轮圈的大小。
P3.0口的开关用于确定显示的方式,当开关闭合时,显示速度;打开时显示里程。
第12脚外中断0用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出一个地电平脉冲。
第13脚外中断1用于控制定时器T1的启停,当输入为0时关闭定时器。
此控制信号是将轮子圈数的计数脉冲经二分频后形成,这样,每次定时器T1的开启时间刚好为转一圈的时间。
根据轮子的周长就可以计算出自行车的速度。
P1.4和P1.5口用于EEPROM存储器24C01的存取控制。
11脚输出用于速度超速时的报警。
6软件设计
6.1系统内存的规划
由于本系统处理功能较多,因而一部分内存单元用于特定的用处。
其主
要内存单元用处如下:
50H:
EEPROM器件寻址字节存放单元;
51H:
EEPROM传送字节数存放单元;
30H:
EEPROM发送数据缓冲单元;
40H:
EEPROM读出数据存放单元;
0A0H:
EEPROM寻址字节字节写;
0A1H:
EEPROM寻址字节字节读;
62H:
DPTR计数器扩展高8位;
6CH:
定时器T1计数器扩展高8位;
6DH:
定时器T1计数器扩展高8—16位;
60H、61H、62H:
里程计数单元;
68H、69H、6AH、6BH:
存放自行车每圈时间数;
70H、71H、72H、73H:
显示BCD码数据存放用;
11H—15H:
存放被除数;
16H—19H:
存放除数。
6.2系统的主要程序设计
1.初始化程序
在本系统初始化程序中,主要完成以下工作:
将T1设为外部控制定时器方式;外中断0及外中断1设为边沿触发方式;将部分内存单元清零;设置轮子周长值;开中断及定时器;将EEPROM中的数据调入内存等。
2.轮圈设置出错处理程序
P1.2、P1.3、P1.6、P1.7端口的开关用于设定轮子的周长,当没有设定时(至少让一个开关闭合),能从P3.1口输出一个周期为0.5S的方波信号,用作发光管闪烁及信响器提醒。
3.里程计数程序(外中断0服务程序)
外中断0服务程序用于对12脚输入的圈脉冲进行计数,为十六进制计数器。
60H为低位,62H为高位。
每计数一次后,对里程数据进行一次存储操作。
4.外中断1服务程序
外中断1服务程序用于处理轮子转动一圈后计时数据。
当标志位(00H)为1时,说明计数器溢出,放入最大时间值(为#0FFH);当标志位为0时,将计数单元(TL1、TH1、6CH、6DH)的值放入68H—6BH单元。
5.EEPROM存取程序
本系统使用归一化I2C串口存取子程序,使用一条数据线和时钟线,采用ATMEL公司的24C01串口存储器,应用简单方便。
6.显示子程序
当显示里程时,先要将圈数计数器中的数据进行运算,求出总里程。
当要
显示速度时,要将轮子的这周长和转一圈的时间数相除,然后换算成Km/h单位。
最后放入70H—73H,进行数据显示
7调试
7.1硬件调试
硬件的焊接是一个比较繁琐的过程,线路较多,在焊接时要特别的细心。
在插入芯片时要特别注意不能把芯片插反,否则就会把芯片烧掉;也要
注意极性电容的方向,长的脚为正,短的为负,不能把负的接+5V,正的接地;在焊接三极管时也要注意其三个管脚的排布,还有为保护三极管不被烧换,所以3个三极管要各自接一个限流电阻(这里为4.7K)。
7.2软件调试
软件调试是调试的重点,同时也是出错最多的地方;在整个软件调试调试过程中我采取先部分后整体的调试方法。
在整个程序的编写调试过程中我首先调试的是数码管显示系统,为此我编写了以下一段程序用于数码管显示调试,要求数码管显示0、1、2。
ORG0000H
MAIN:
MOVP2,#0FFH
MOVP0,0C0H
MOVP2,#0FEH
ACALLDELAY1
MOVP2,#0FFH
MOVP0,0F9H
MOVP2,#0FDH
ACALLDELAY1
MOVP2,#0FFH
MOVP0,0A4H
MOVP2,#OFBH
MOVP2,#0FFH
AJMPMAIN
DELAY1:
MOVR6,#02H
AGAIN:
MOVR7,#8FH
DELAY:
DJNZR7,DELAY
DJNZR6,AGAIN
RET
END
参考文献
[1]李玉峰、倪虹霞.MCS-51系列单片机原理与接口技术.第一版.北京:
人民邮电出版社.2004
[2]周兴华.手把手教你学单片机.第一版.北京:
北京航空航天大学出版社.2005
[3]曾一江.单片微机原理与接口技术.第一版.北京:
科学出版社.2006
[4]张俊谟.单片机中级教程—原理与应用.第二版.北京:
北京航空航天大学出版社.2006.P1-11
[5]张友德、赵志英、涂时亮.单片机微型机原理、应用与实验.第五版.上海:
复旦大学出版社.2006.P24-27
[6]吕泉.现代传感器原理及应用.第一版.北京:
清华大学出版社.2006.
P1-5
[7]张毅刚、彭喜元.单片机原理与应用设计.第一版.哈尔滨:
哈尔滨工业大学.
[8]谢自美.电子线路设计.实验.测试[M].武汉:
华中科技大学出版社,2000
[9]曲家骇,王季秩,伺服控制系统中的传感器
[10]邬宽民.单片机外围器件实用手册,数据传输接口器件分册.北京.北京航空航天大学出版社.2001:
189-195
[11]王贵悦,新编传感器实用手册.水利电力出版社.2002:
67-89
[12]《自行车电子里程表的初步设计》刁文兴南京工业职业技术学院 后勤总公司 江苏 南京
[13]《数字式汽车里程表的设计》 诸德宏,潘天红,朱湘临江苏大学电气信息工程学院,江苏镇江
[14]《电子车速里程表的单片机实现方案》王锁弘,威海双丰电子传感有限公司山东威海
[15]张福学。
传感器使用电路150例.中国技术出版社[M].1992年
[16]《EmbeddedMicrocontrollersandProcessorDesign》,嵌入式微控制器与处理器设计,GregOsborn,机械工业出版社
[17]AltiumDesigner(Protel),机械工业出版社
[18]Programming8-bitPICMicrocontrollersinCwithInteractiveHardwareSimulation,8位单片机C语言编程:
基于PIC16,MartinP.Bates,人民邮电出版社
附录源程序:
以下是控制系统完整源程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;SPEED/MILEORIKEPROGRAM;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;60H,61H,62H作里程计数单元,6CH,6DH作T1计数扩充单元,
;68H,69H,6AH,6BH存放自行车每圈时间数,70H,71H,72H,73H
;作显示BCD码存放数用,11H—15H存放被除数,16H-19H存放除数;
;定义
VSDAEQUP1.5;EEPROM数据传送口
VSCLEQUP1.4;EEPROM时钟传送口
SLAEQU50H;EEPROM器件寻址字节元
NUMBYTEQU51H;EEPROM传送字节数单元
MTDEQU30H;EEPROM发送数据缓冲单元
MRDEQU40H;EEPROM读出数据存放单元
SLAWEQU0A0H;EEPROM寻址字节写
SLAREQU0A1H;EEPROM寻址字节读
DPHHEQU62H;DPTR计数扩展高8位
TH1HEQU6CH;定时器T1扩展高8位
TH1HHEQU6DH;定时器T1扩展高8-16位;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;PROGRAMINPUT;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0000H;程序执行开始地址
LJMPSTART;跳至START
ORG0003H;外中断0中断程序入口
LJMPINTEX0;跳至INTEX0中断服务程序
ORG000BH;定时器T0中断程序入口
RETI;中断返回
ORG0013H;外中断1中断入口
LJMPINTEX1;跳至INTEX1中断服务程序
ORG001BH;定时器T1中断程序入口
LJMPINTT1;跳至INTT1中断服务程序
ORG0023H;串口中断入口地址
RETI;中断返回
ORG002BH;定时器T2中断入口地址
RETI;中断返回;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;PROGRAMCLEAR;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;上电初始化程序
CLEARMEN:
MOVTMOD,#90H;T1为16位外部控制定时器
MOVSP,#75H;堆栈在75H开始
SETBPX0;外中断0优先级为1
SETBIT0;外中断0用边沿触发
SETBIT1;外中断1用边沿触发
MOV20H,A;清内存中特定单元
MOV6CH,A;
MOV6DH,A;
MOV70H,A;
MOV71H,A;
MOV72H,A;
MOV73H,A;
MOV60H,A;
MOV61H,A;
MOV62H,A;
MOV63H,A;清内存中特定单元
DECA;A为#0FFH
MOV68H,A;内存置数据#0FFH
MOV69H,A;内存置数据#0FFH
MOV6AH,A;内存置数据#0FFH
MOV6BH,A;内存置数据#0FFH
MOVP1,A;P1口置1
CLEAR1:
JBP1.2,KEY1;根据P1.2,P1.3,P1.6,P1.7设置状态
;在21地址单元赋自行车周长值
MOV21H,#0FH;22寸自行车周长值
LJMPCLEAR2;转CLEAR2
KEY1:
JBP1.3,KEY2;
MOV21H,#12H;24寸自行车周长值
LJMPCLEAR2;CLEAR2
KEY2:
JBP1.6,KEY3;
MOV21H,#14H;26寸自行车周长值
LJMPCLEAR2;转CLEAR2
KEY3:
JBP1.7,ERR;四个开关都没合上,转出错处理
MOV21H,#19H;28寸自行车周长值
CLEAR2:
SETBTR1;开定时器T1
SETBEA;开中断允许
SETBEX0;开外中断0
SETBET1;开定时中断T1
SETBP3.1;关报警器
LCALLVIICREAD;将EEPROM中原里程数据调入
内存
RET;子程序返回
ERR:
CPLP3.1;轮周长设置出错,LED灯闪提醒
ALLDL5S;延时
LJMPCLEAR1;重新初始化,等待轮周长设置开关合上
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;PROGRAMSTART;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
START:
LCALLCLEARMEN;上电初始化
START1:
JBP3.0,DISPLAYS;P3.0=1,显示里程
LCALLDISPLAYV;显示速度
START2:
SJMPSTART1;转START1循环
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;INTEX0PROGRAM;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;里程计数程序,用外中断0实现,计数用60H-62H内存单元。
INTEX0:
PUSHACC;累加器堆栈保护
PUSHPSW;状态字堆栈保护
INC60H;圈加1
CLRA;清A
CJNEA,60H,INTEX0OUT;计数没溢出转INTEX0OUT
INC61H;溢出进位(61H加1)
CJNEA,61H,INTEX0OUT;计数没溢出转INTEX0OUT
INC62H;溢出进位(62H加1)
INTEX0OUT:
LCALLVIICWRITE;里程数据存入EEPROM
SETBEX1;开外中断1
POPPSW;状态字恢复
POPACC;累加器恢复
RETI;中断返回
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;INTEX1PROGRAM;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;每转1圈时间计数处理程序,每圈时间放在68H-6BH单元中。
INTEX1:
PUSHACC;堆栈保护
PUSHPSW;
CLREX1;关外中断1
JNB00H,INTEX11;溢出标志为0转INTEX11
MOVTL1,#0FFH;溢出时计时单元赋#0FFH(显示速度为零)
MOVTH1,#0FFH;
MOV6CH,#0FFH;
MOV6DH,#0FFH;
INTEX11:
MOV68H,TL1;将时间计数值移入暂存单元68H-6BH
MOV69H,TH1;
MOV6AH,6CH;
MOV6BH,6DH;
CLRA;清A
MOVTL1,A;计时单元置0
MOVTH1,A;
MOV6CH,A;
MOV6DH,A;
CLR00H;清溢出标志
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自行车 里程 速度计 设计