车轮速度与里程计算课程设计doc资料Word文档格式.docx
- 文档编号:17451663
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:11
- 大小:131.84KB
车轮速度与里程计算课程设计doc资料Word文档格式.docx
《车轮速度与里程计算课程设计doc资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《车轮速度与里程计算课程设计doc资料Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
因此,人们希望自行车的功用更强大,能给人们带来更多的方便。
自行车里程速度表作为自行车的一大辅助工具也正是随着这个要求而迅速发展的,其功能也逐渐从单一的里程显示发展到速度、时间显示,甚至有的还具有测量骑车人的心跳、显示骑车人热量消耗等功能。
本设计采用了MCS-51系列单片机设计一种体积小、操作简单的便携式自行车的速度里程表,它能自动地显示当前自行车行走的距离及运行的速度。
1.2课题的主要任务及内容:
使用51系列单片机,制作一个自行车速度里程能测量表,要求能够记录自行车的实时速度和里程。
硬件电路包括AT89C52单片机的外围电路以及LED显示电路等。
软件设计包括:
芯片的初始化程序、定时中断采样子程序、显示子程序等,软件采用C语言编写,软件设计的思想主要是自顶向下,模块化设计,各个子模块逐一设计。
1.3开发软件及硬件简介:
1.3.1PROTEUS简介
Proteus是英国Labcenter公司开发的电路分析与仿真软件。
该软件的特点是:
①集原理图设计、仿真和PCB设计于一体,真正实现从概念到产品的完整电子设计工具,②具有模拟电路、数字电路、单片机应用系统、嵌入式系统(不高于ARM7)设计与仿真功能,③具有全速、单步、设置断点等多种形式的调试功能,④具有各种信号源和电路分析所需的虚拟仪表,⑤支持KeilC51uVision2、MPLAB等第三方的软件编译和调试环境,⑥具有强大的原理图到PCB板设计功能,可以输出多种格式的电路设计报表。
拥有PROTEUS电子设计工具,就相当于拥有了一个电子设计和分析平台。
Proteus软件自1989年问世至今,经历了近20年的发展历史,功能得到了不断的完善,性能越来越好,全球的用户也越来越多。
PROTEUS之所以在全球得到应用,原因是它具有自身的特点和结构。
PROTEUS电子设计软件由原理图输入模块(简称ISIS)、混合模型仿真器、动态器件库、高级图形分析模块、处理器仿真模型及PCB板设计编辑(简称ARES)六部分组成。
1.3.2Keil简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
2009年2月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
1.3.3AT89C52简介;
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52为8位通用微处理器,采用工业标
PDIP封装的AT89C52引脚图准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),
参见表1。
Flash编程和程序校验期间,P1接收低8位地址。
表.P1.0和P1.1的第二功能
引脚号
功能特性
P1.0
T2,时钟输出
P1.1
T2EX(定时/计数器2)
P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1振荡器反相放大器及内部时钟发生器的输入端。
XTAL2振荡器反相放大器的输出端。
2.1设计原理:
检测传感器由永久磁铁和开关型霍尔集成电路UGN3020组成。
UGN3020由霍尔元件、放大器、整形电路及集电极开路输出等部分组成,其功能是把磁信号转换成电信号。
检测传感器的工作原理如下,车轮每转动一周,磁铁就经过UGN3020一次,从而其3脚就输出一个脉冲信号。
UGN3020输出的脉冲信号作为单片机集成电路AT89C2051的外部中断信号,从P3.2口输入。
由单片机测量脉冲信号的个数和脉冲周期。
测量脉冲信号的个数可计算出里程,测量脉冲信号的周期可计算出速度,当然这此计算都是由单片机完成的,我们看到的是数码管上的显示结果。
按钮开关S1用来对显示里程和速度进行切换,电路的初始状态为显示速度。
数码管DS1~DS3、VT1~VT3、R4~R13等组成数码显示电路。
本机采用动态扫描显示的方式,使用共阳数码管,P3.3-P3.5口作三个数码管的动态扫描位驱动码输出,通过三极管驱动数码管。
P1.0-P1.6口作数码显示七段笔划字形码的输出。
仿真原理图
程序设计
程序用C语言编写,由主程序、外部中断0服务程序、定时器T0中断服务程序、延时子程序等模块组成。
主程序主要完成程序的初始化和键盘处理,外部中断0服务程序由测量、计算、读数等部分组成,定时器T0中断服务程序由计时、动态扫描显示、自行车停车判断等部分组成。
从P3.2口输入的脉搏脉冲信号作为外部中断0的请求中断信号,外部中断采用边沿触发的方式。
在测量速度时,由于车轮转动脉冲信号的频率很低,因此不适宜使用计数的方法测量,而是采用测脉冲周期的方法进行测量,用脉冲信号系统来控制计时信号,通过计时数计算出脉冲周期,把车轮的周长除以周期即可得到自行车的行驶速度;
在测量行驶里程时,通过对脉冲信号个数的计数,用计数值乘以车轮的周长即可获得行驶里程。
需要说明的是:
测量脉冲信号周期和个数是同时进行的,我们要做的事情只是用按钮开关切换显示不同的量。
3.1仿真结果:
速度7m/s里程30m
速度6m/s里程48m
速度9m/s里程18m
当速度确定之后,没发出一个脉冲,里程就会相应的增加。
例如当前速度为6m/s里程为54m,当下一个脉冲来临时里程将会变为60m。
4.1设计总结:
通过这次课程的设计,我了解了proteus以及Kiel软件的强大,同时也对这个专业有了不一样的认识。
以前认为C语言是一种实用性不太强,而且无用的程序设计语言,所以平时也就没怎么学,直到这次做这次课程才发现C怨言的作用如此之大。
同时也后悔自己开始小看他没有好好学,导致现在C语言基础如此差,在与AT89C52单片机编程试验中总是遇到错误。
这次设计中更是错误百出。
通过这次设计我发现这个专业还是很有趣的,今后我会好好的将C语言的基本知识补习补习,争取可以自己做出一些比较有意思的设计。
5.1参考文献:
王烈军,《单片机原理与应用》,西安交通大学出版社
冯博琴,《微型计算机原理与接口技术》,清华大学出版社
附录:
源程序代码:
#include<
reg52.h>
#defineucharunsignedchar
#defineunitunsignedchar
#definepi3
ucharcodenumcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unitspeed=0;
unitquan=0;
unitdistance=0;
unitr=1;
unittime=0;
unita=0;
voiddelay()
{inti;
for(i=0;
i<
20;
i++);
}
voidplaycount()
{
P1=0xfe;
P0=numcode[speed%10];
delay();
P1=0xfd;
P0=numcode[speed%100/10];
P1=0xfb;
P0=numcode[speed/100];
P1=0xf7|0x80;
P0=numcode[distance%10];
P1=0xef;
P0=numcode[distance%100/10];
P1=0xdf;
P0=numcode[distance/100];
voidmain()
EA=1;
ET1=1;
TH1=15536/256;
TL1=15536%256;
TR1=1;
while
(1)
distance=2*3*r*time;
speed=distance/quan;
playcount();
voidint_3()interrupt3
{a++;
if(a==20)
{time++;
TMOD=0x05;
TH0=65534/256;
TL0=65534%256;
TR0=1;
if(TF0==1)
quan++;
TF0=0;
TF1=1;
}
TH1=15536/256;
新疆大学课程论文(设计)、学年论文评分表
题目
车轮速度与里程设计
作者
陈轲
专业年级
通信11-1
指导教师
冯龛
指导教师评语及
评分建议
年月日
院
(部)
或
教
研
室
意
见
学院或教研室主任:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车轮 速度 里程 计算 课程设计 doc 资料