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