自行车里程表的设计_第1页
自行车里程表的设计_第2页
自行车里程表的设计_第3页
自行车里程表的设计_第4页
自行车里程表的设计_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1、学 号:1434060103毕业设计说明书GRADUATE DESIGN设计题目:基于单片机的自行车里程速度表设计与实现学生姓名:程晓锋专业班级:2014自升本1班学 院:继续教育学院指导教师:邸志刚 副教授2016年11月30日摘要摘 要随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。自行车的速度里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。本论文主要阐述一种基于霍尔元件的自行车的速度里程表的设计。以 AT89C52 单片机为核心,霍尔传感器测转数,实现对自行车里程/速度的测量统计,采用 1302 实现在系

2、统掉电的时候保存里程信息,并能将自行车的里程数及速度用LCD实时显示。文章详细介绍了自行车的速度里程表的硬件电路和软件设计。硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。软件部分用C语言进行编程,采用模块化设计思想。该系统硬件电路简单,子程序具有通用性。关键词:里程/速度;霍尔元件;单片机;LCD显示IAbstractWith the developing of peoples life, the bicycle is not only the universal tool of transportation and substitute fo

3、r walking, but becomes the first choice of entertainment and exercising. The bicycle mileage/speed can fulfill the basic need of peoples life, so that they can learn the speed and the mileage of the bicycle. In this paper, the bicycle mileage/speed design based on the Hall element is elaborated. By

4、AT89C52 as kernel, using Hall element to measure revolution, the measure and statistic are achieved. The range information is saved by when the power is off, the bicycle speed can be displayed on LCD. In this article, the hardware circuit and software design of bicycle mileage/speed instrument are i

5、ntroduced in detail. About the hardware, the pulse number is transmitted of one cycle of the bicycle into Single Chip Microcomputer system. Then the signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in assemble language; the program is designed in th

6、e mode of modules. The system has simple hardware, common sub-program.KEY WORDS: Mileage / speed; Hall element; Single chip microcomputer; LCDdisplay . 第2章自行车里程表总体方案设计前 言1第1章 绪论21.1 课题背景21.2 设计的主要内容及技术指标2第2章自行车里程表总体方案设计32.1任务分析与实现32.2自行车里程表硬件方案设计32.3自行车里程表软件方案设计4第3章 自行车里程表硬件模块设计53.1 里程表的硬件设计53.1.1 霍

7、尔传感器电路模块设计53.1.2 按键电路模块设计63.1.3 电源电路模块设计63.1.4 时钟电路模块设计73.1.5 LCD显示模块电路模块设计73.1.6 串口下载电路模块设计83.1.7 复位电路模块设计93.1.8 晶振电路模块设计10第4章 软件的设计114.1 里程表的软件设计114.1.1 里程速度功能模块实现114.1.2 日历时钟模块功能144.1.3 LCD1602液晶显示模块17第5章 软件调试215.1 程序的检测与调试215.1.1 Keil软件简介215.1.2 编制单片机应用程序的步骤和难点215.2 系统仿真调试245.2.1 程序的查错手段25第6章 结论

8、27第7章 谢辞28参考文献29附录1 硬件设计原理图30附录2 硬件电路仿真图31附录3 软件程序32译文69C语言69前 言本文介绍里程表设计以单片机和霍尔传感器为核心。霍尔传感器将到来的低电平脉冲信号输入到单片机进行控制与计算,再采用LCD模块进行显示,使得自行车的里程数据能直观的显示给使用者。自行车里程表是用于远距离连续测量自行车行驶距离的仪表。它分为电源、霍尔传感器和显示器3部分。随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。因此,人们希望自行车的功用更强大,能给人们带来更多的方便。自行车里程速度表作为自行车的一大辅助工具也正

9、是随着这个要求而迅速发展的,其功能也逐渐从单一的里程显示发展到速度、时间显示,甚至有的还具有测量骑车人的心跳、显示骑车人热量消耗等功能。本文介绍的自行车里程表是由电源稳压系统供电,AT89C52单片机为中央处理器,结合高精度的控制电路,方便地实现了智能化、高精度、高可靠性、高效率的自行车里程表的设计,并且使用方便。里程表以单片机AT89C52为核心,由系统输入、单片机部分和系统输出组成。2第3章 自行车里程表硬件模块设计第1章 绪论单片机自从推出以来,以其超小型化、结构紧凑、可靠性高、成本低等优点被人们广泛接受,从而应用于工业、电讯、数据处理、仪器仪表等多方面。自行车里程表是自行车的重要配件,

10、在自行车仪表中占重要位置,但几十年来其发展变化并不大,现在国外很多车中使用了数字里程表,但在国内还并不多见。1.1 课题背景里程表的原理很简单,车轮的圆周长是恒定不变的。由此可以计算出每走一里路车轮要转多少圈,这个数也是恒定不变的。因此只要能够自动把车轮的转数积累下来,然后除以每一里路对应的转数就可以得到行驶的里程了。这样简单的原理古人就已经发现,并且开始使用了。“记里鼓车”就是这样的装置,它是利用上述原理,再加上巧妙的机构使得车轮每转一定圈数就自动敲一下鼓,此时只要有专人把它记下了,就可以得到所走里程。此装置十分巧妙无论白天、黑夜均可使用,而且盲人也可使用,体现出了我国古代劳动人民的聪明才智

11、。不过,如果车上没有人默记鼓声数目的话,单靠记里鼓车本身还不能累计一共走了多少里。而且车停下来之后谁也不知道这车曾经走过多少里路,这是美中不足之处。从保护环境和经济条件许可等因素综合来看,自行车目前乃至今后都有着广阔的发展空间。目前市面上自行车的速度表和里程表都是机械的,看起来不够直观与方便。如果能用LCD直接显示出来里程数或速度值,就可节省用户的时间及精力处理自行车行进过程中的突发事件。1.2 设计的主要内容及技术指标单片机软件设计程序主要包括里程设计模块;存储历史里程数据设计模块;里程的显示设计模块;里程公里数的累计设计模块;里程公里数的清0设计模块。里程计数时有一盏指示灯闪烁;用LCD1

12、602进行显示公里数;用个开关实现对里程公里数的清0功能;用霍尔传感器实现对里程车轮圈数的累计功能。主要技术指标:一. 完成里程的显示功能二能存贮历史里程数据三能够清除历史数据四有一盏指示灯73第2章自行车里程表总体方案设计2.1任务分析与实现本设计的任务是:以STC89C52单片机为处理核心,用传感器将车轮的转数转换为电脉冲,进行处理后送入单片机。里程及速度的测量,是经过STC89C52测出总的脉冲数和每一秒所转的圈数,再经过单片机的计算得出,其结果通过1602LCD显示屏显示出来。本系统总体思路如下:假定车轮的周长为L,在车轮上安装m个磁钢,则测得的里程值最大误差为L/m。经综合分析,本设

13、计中取m=1。车轮每转一圈,开关型霍尔传感器就会采集到一个脉冲信号,并从引脚端输入,传感器每获取一个脉冲信号代表车轮转动一圈,即圈数qs加1,圈数qs与设置的自行车车轮的周长L的乘积即为当前所走里程。同时可以从定时器TI知道在1秒内单片机收到的脉冲个数,即车轮所转的圈数,而自行车车轮周长与车轮所转圈数的乘积即为这1秒内自行车所走的距离,距离除以1秒的时间,即为瞬时速度。平均速度的计算大体上与瞬时速度一样,从计数器T1知道在t秒内车轮所转的圈数后,与自行车车轮周长相乘得到t秒内自行车所走的距离,距离除以t即为平均速度。另一个定时器T0则可以用来实现秒表的计时。最后LCD显示屏显示内容的切换可以由

14、键盘的输入来实现,而秒表计时的开始、暂停、清零及里程的清零也可以用键盘的输入来实现。设计时,应综合考虑测速精度和系统反应时间。本设计采用的脉冲计数方法,用来计算速度具有较高的测速精度。在计算里程时取了自行车的理想状态。实际中,误差控制在几米之内,相对于整个里程来说不是很大。另外,还应尽量保证其他子模块在编程时的通用性和高效性。最终实现目标:采用单片机作控制,自行车里程表具有里程、速度与秒表计时显示功能。通过不同按键的按下切换里程、速度、秒表三者之间的显示,也可以实现秒表计时的开始、暂停、清零及里程清零的功能,方便地实现了智能化、高精度、高可靠性、高效率的自行车里程表的设计,并且使用方便。2.2

15、自行车里程表硬件方案设计根据本设计的要求,经研究和分析,硬件部分主要分为信息采集、信息处理、键盘输入和信息显示四大模块,其中的核心是信息处理,所用芯片为STC89C52单片机。系统硬件框图如图2-1所示:外部信号信息采集STC89C52显示信息键盘输入图2-1系统硬件框图2.3自行车里程表软件方案设计通过软件控制单片机的功能是单片机的主要特点和优点,程序的设计要考虑合理性和可读性,遵循模块化设计的原则,采用自顶向下的设计方法。模块化设计使程序的可读性好、修改及完善方便。软件设计包括显示子程序、数据处理子程序(分为里程子程序、速度子程序)、秒表计时子程序、脉冲接收子程序等等。显示子程序是通过编程

16、将数据处理的结果送给显示器显示。数据处理子程序是将得到的车轮所转的圈数与实际要显示值之间有一定的对应关系,经过软件编程显示所需要的值。秒表计时子程序是采用计数器T0通过编程实现秒表计时工作。脉冲接收子程序是通过编程实现脉冲的计数,即对车轮所转的圈数计数。系统软件框图如图2-2所示:外部信号脉冲接收键盘输入数据处理显示信息定时器1中断定时器0中断外部中断0图2-2系统软件框图第3章 自行车里程表硬件模块设计第3章 自行车里程表硬件模块设计3.1 里程表的硬件设计本次里程表的设计,硬件电路主要由霍尔传感器电路,按键电路,电源电路,时钟电路,LCD显示电路,串口下载电路,复位电路,晶振电路构成。3.

17、1.1 霍尔传感器电路模块设计A44E集成霍尔开关由稳压器A、霍尔电势发生器(即硅霍尔片)B、差分放大器 C、施密特触发器D和OC门输出E五个基本部分组成,如图3-1所示。(1)、(2)、(3)代表集成霍尔开关的三个引出端点。在电源端加电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场达到工作点时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,通常称这种状态

18、为开 。当施加的磁场达到释放点时,触发器输出低电压,三极管截止,使OC门输出高电压,这种状态为关 。这样两次电压变换,使霍尔开关完成了一次开关动作。工作点与释放点的差值一定,此差值称为磁滞,在此差值内,V0保持不变,因而使开关输出稳定可靠,这也就是集电成霍尔开关传感器优良特性之一。传感器主要特性是它的输出特性,即输入磁感应强度B与输出电压V0之间的关系。测量时,在1、2两端加5V直流电压,在输出端3与1之间接一个负载电阻,输出端3接单片机INT0/P3.2,如图3-2所示。图3-1 集成开关型霍尔传感器图3-2 霍尔传感电路3.1.2 按键电路模块设计键盘在单片机应用系统中,实现输入数据、传送

19、命令的功能,是人工干预的主要手段。键盘是单片机系统设计中一种主要的信息输入接口,合理的设计,不仅可以节省系统的设计成本,更可使仪器设备的操作变得更为简单、方便,很大程度上提高系统综合性能。本次设计中通过按键来更改自行车车轮半径,并控制显示自行的车里程和平均速度,s3刷屏,s1加数据,s2减数据。 图3-3 按键电路3.1.3 电源电路模块设计 为整个电路提供电源。电路由7805三端稳压集成电路、电容、LED灯、1千欧姆的电阻、开关和直流电源组成。7805三端稳压集成电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。注意事项:电源不要超过20V,3A,防止意外。 图3-

20、4 电源电路 3.1.4 时钟电路模块设计 DS1302与单片机的连接也仅需要3条线:RST引脚(高电平时启动数据传送)、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。图3-5 时钟电路3.1.5 LCD显示模块电路模块设计 LCD1602引脚介绍:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操

21、作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。图3-6 显示电路3.1.6 串口下载电路模块设计串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。单片机的串行通信可用于与计算机之间传送数据,一般采用RS232接口,但是由于TTL电平和RS232电平不兼容,所以两者对接时,必须进行电平转换,其原理图如图2-9。RS2

22、32与电平转换最常用的芯片有MC1488、MC1489和MAX232,各厂家生产的此类芯片虽然不同,但原理都一样。在本次设计选用的是美国MAXIM公司的MAX232芯片,由此构成程序下载电路,以便调试烧写程序。它是RS232双工发送器/接收器接口电路芯片,由于芯片内部有自升压的电平倍增电路,将+5V转换成-10+10V,满足RS232标准对逻辑1和逻辑0的电平要求,工作时仅需要单一的+5V电源。图3-7 串口下载电路3.1.7 复位电路模块设计上电时,刚接通电源,电容C相当于瞬间短路,+5V立即加到RET/VPD端,该高电平使89C52全机自动复位,这就是上电复位;若运行过程中需要程序从头执行

23、,只需按动按钮即可。按下按钮,则直接把+5V加到了RET/VPD端从而复位称为手动复位。电路图如图3-8所示。图3-8 复位电路3.1.8 晶振电路模块设计晶振电路用于产生单片机工作时所需的时钟控制信号。通过单片机的引脚XTAL1,XTAL2跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。时钟频率直接影响单片机的速度,晶振电路的质量也直接影响单片机系统的稳定性。晶振电路电路图如图3-9所示。图3-9 晶振电路第4章 软件的设计4.1 里程表的软件设计 本自行车里程表软件采用模块化设计方法。整个系统由初始化模块、频率测量模块、LCD显示模块、速度计算与显示模块、里程计算与与显示模块、数据

24、存储、读取模块、定时器中断服务模块、时钟模块以及其他功能模块组成。本设计的主要内容是自行车里程速度表,日历时钟为附加功能,在此进行简单介绍。4.1.1 里程速度功能模块实现里程速度功能程序流程图如图4-1所示。开始读取EEPROM数据检测按钮处理直径设置初始化设置特殊功能寄存器、置定时常数、开中断、清屏等等待中断刷新累计行驶时间刷新里程、速度存储里程数据等切换屏幕显示内容INT0INT1 图4-1 里程速度功能程序流程图程序代码如下:void main()EEPROM_LXRD(0x43,0,3,number);qs=number0;as=number1;第4章 软件的设计bs=number2

25、;init_LCD(); 初始化dispmore(1,1,"-Digital Meter-",16);for(i=0;i<25000;i+);dispmore(2,1," Welcome ",16);显示欢迎信息for(i=0;i<25000;i+);dispmore(2,1," Welcome. ",16);for(i=0;i<25000;i+);dispmore(2,1," Welcome. ",16);for(i=0;i<25000;i+);dispmore(2,1," We

26、lcome. ",16);for(i=0;i<25000;i+);dispmore(2,1," Welcome. ",16);for(i=0;i<25000;i+);dispmore(2,1," Welcome. ",16);for(i=0;i<30000;i+);W1302(0x90,0xa5);/打开充电二级管 一个二级管串联一个2K电阻 W1302(0x8e,0x80);/写保护,禁止写操作 wrcom(0x01);MODE=0;P2=0xff;qs2=0;tr1=5;tr2=5;wrcom(0x01);dispmore

27、(1,1,"Set Bike Tire L=",16);wrcom(0xc9);dispone('c');wrcom(0xca);dispone('m');P2=0xff;wrcom(0xc6);dispone(tr1+0x30);wrcom(0xc7);dispone(tr2+0x30);while(1)if(K1=0)for(i=0;i<4000;i+);if(K1=0)if(+tr1>9)tr1=0;wrcom(0xc6);dispone(tr1+0x30);for(i=0;i<32000;i+);if(K2=0)fo

28、r(i=0;i<4000;i+);if(K2=0)if(+tr2>9)tr2=0;wrcom(0xc7);dispone(tr2+0x30);for(i=0;i<32000;i+);if(K3=0)for(i=0;i<4000;i+);if(K3=0)break;tc=3.14*(10*tr1+tr2);TMOD=0x11;TH0=0x3c;置定时常数TL0=0xb0;TH1=0xb1;TL1=0xdf;IT0=1;外部中断触发方式均是边缘触发IT1=1;IE=0x9f; 开中断IP=0x02;TR0=1;和开始计时TR1=1;P33=1;IE0=0;wrcom(0x0

29、1);4.1.2 日历时钟模块功能 时钟显示模块可以通过按键来校准时间。当K3按键按下时,电子日历停止走时,此时可以进行年的校准,年调好之后,再按一下校准时间便可以调整月,同理可以对日、小时、分、秒进行设置。对应有K1、K2键,可以加与减的操作。都调整好之后就将按照新时间开始走时。具体流程图如下。开始始终开始工作是否显示时间设置键是否按下选中要修改的加键是否按下减键是否按下修改时间和日期返回是是 图4-2 校准时间流程图程序代码如下:while(1)if(ag=1)if (K1|K2)=0) /初始化Delay5Ms();if (K1|K2)=0) Set1302(inittime);if (

30、K3=0) / 设置和选择项目键Delay5Ms();if(K3=0)id+;if(id>7) id=0;while(K3=0);switch(id)case 0:sec=0;Disp_line1();Disp_line2();break;case 1:/年year=1;Disp_line1(); Disp_line2(); id_case1_key();break;case 2:/月year=0;mon=1;Disp_line1(); Disp_line2(); id_case1_key();break;case 3:/日mon=0;day=1;Disp_line1(); Disp_l

31、ine2();id_case1_key();break; case 4:/星期day=0;weekk=1;Disp_line1(); Disp_line2(); id_case1_key();4.1.3 LCD1602液晶显示模块 LCD1602液晶显示器属于字符型液晶显示器,其内部自带有字符库,所以只要向显示器输送字符的ASCII码,就可以显示该字符了。对于1602显示程序的编写最主要的是掌握好1602的读写操作的时序。1602显示器的控制端分别为RS、RW和E,当写指令时RS为低电平,RW为低电平,E首先为高电平,然后将数据送出,在延时一定时间后E变为低电平。这样就把命令写到了1602中。

32、当写数据时RS为高电平,RW为低电平,E首先为高电平,然后将数据送出,在延时一定的时间后E变为低电平。这样就把数据写到了1602中。在实际应用1602时,要先将显示器初始化,初始化的内容包括清屏、设置显示模式,首字符的位置、光标的有无和闪烁等,然后才能显示具体内容。开始进行LCD的初始化进行数据的处理调用写指令子函数调用写数据子函数显示 图4-3 LCD显示程序流程图该函数的作用是对LCD进行检测,看LCD是否处于忙的状态.当bflag=1时表示忙,此时不可以向LCD进行读写操作.而当busy=0时,表示可以向它读写数据.程序代码:void wait()P2=0xff;RW=1; RS=0;

33、doE=0;E=1;while(busy=1);void dispone(dat)写数据,并显示出来P2=dat;RW=0; RS=1; E=0; E=1; wait();void wrcom(com)向LCD写入控制字P2=com;RW=0; RS=0; E=0; E=1; wait();void init_LCD() 初始化LCDwrcom(0x01); 显示清零,数据指针清零wrcom(0x06); 写一个字后指针加一wrcom(0x38); 设置16*2显示,5*7点阵,8位数据接口wrcom(0x0c); 设置开显示,不显示光标void dispmore(line,row,uchar

34、 dat,i) /格式为dispmore(第几行,第几列,开始要显示的字符地址,显示几个字符);uchar com;s=dat;if(line=1) com=0x80+row-1; / 第一行第一列对应的RAM的地址位为0x80H wrcom(com);while(i-)!=0&&com<=0x8f) dispone(*s);com+;s+;else com=0xc0+row-1; wrcom(com);while(i-)!=0&&com<=0xcf) dispone(*s);com+;s+;第5章 软件调试第5章 软件调试5.1 程序的检测与调试5

35、.1.1 Keil软件简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以

36、执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Penti

37、um或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。5.1.2 编制单片机应用程序的步骤和难点如何编写单片机应用程序,这是一个实践性很强的题目,也是一项艰苦而细致的工作。如果按照一定的步骤并且找出难点,事先对这些难点加以处理,能够收到事半功倍

38、的效果。下面是开发中必经的几个步骤和可能遇到的难点的处理。编制步骤:1搞清功能和编写方案接到一个单片机项目设计之后,并不是马上动手编写程序,而是仔细研究技术要求或者技术说明,根据这些技术要求和技术说明,把程序应该具备的主要功能写清楚,写仔细,这是最关键的工作,否则在设计完成以后会发现有些功能由于事先没有考虑清楚再重新设计将会很麻烦,可能有些需要重新增加的功能很容易补充,而有些可能由于没有事先考虑周全而无法实现。 2编写总流程图和各功能模块流程图根据要完成的程序功能写出总流程图,根据总流程图把整个程序划分成几个主要的功能模块,每个功能模块都要写出基本流程图,这主要是为以后的程序编写起到一个指导作

39、用。当然,在实际的程序编写过程中肯定会有一些改动,一个基本的流程会指导写程序的过程中不会出现太大的偏差。 3准备编程所需的资料 这些资料主要是编程语言方面的书籍、杂志等。因为程序语言的有些资料不可能记得太清楚,如每条指令的含义,具体操作每条指令所牵涉的硬件电路等。如果资料准备得比较充分,可以放在案边,若有需要,顺手查阅。4分析编程的难点和技术解决方案为了能比较顺利地完成程序设计,应根据程序所完成的功能和程序流程对整个程序的框架分析一下,并根据自己掌握的技能定位整个程序的难点,然后找到最佳的算法。5写程序在上面的准备工作完成后,就可以着手编写程序。因为有了明确的程序流程,有了充足的资料,可能遇到

40、的难点基本上找到了解决方法。这样,事先准备得比较充分,即使在以后的程序编写过程中遇到困难,也较易解决。这样就可以节省很多时间,以便静下心来认真按照方案和流程编写程序。另外,一般写完一个功能程序就进行调试,通过后再编写另外一个功能代码,这样可以防止全部代码编写完毕后再调试可能带来的相互影响,从而可以搞清楚到底是哪部分程序有问题。 7程序调试单击Project菜单项,选择New Project项;此时弹出Create New Project对话框,选择合适的路径口,在文件名一栏中填入新工程的名字。单击保存;根据所用的器件,选择CPU的型号,单击确定;Keil51询问是否生成默认的配置文件,这个可选

41、可不选,这里选定。单击Yes,观察项目文件管理窗口的变化;在File菜单下单击New选项,新建文件。此时在代码窗口出现一“Text1”空白文档;在“Text1”中编辑完代码后,单击File菜单中的保存项,弹出保存对话框。保存名写为text.c。单击保存。注意在对文件命名时必须加扩展名; 在项目导航栏中Source Group 上单击右键,选Add File to Group Source Group 1;此时弹出Add File 对话框。选中刚才保存的text.c文件。单击Add。 此时在项目文件管理窗口中就会出现刚才所添加的文件text.c;单击快捷菜单栏中的编译按钮 ,可以编译程序;单击P

42、roject菜单项,选择Option for Target Target 1选项。 在弹出的对话框中可以对Project进行总体配置;选择Output 选项卡,单击Create HEX File ,代码输出格式应为HEX-80 ; 单击确定后,并重新编译。可以看到编译成功之后,Build 选项卡里又多了一项。这是生成的HEX 文件;单击Debug 菜单项中的Start/Stop Debug Session 命令或工具栏中的进入调试界面;单击调试界面Debug 菜单项中的Go命令或工具栏中的运行 程序,单击Stop Running 命令或结束程序。观察运行结果。图5-1 程序运行调试图5.2 系

43、统仿真调试PROTEUS系统仿真平台与开发平台是由英国Labcenter公司开发的,是目前世界上最完整的系统设计与仿真平台之一。PROTEUS可以实现数字电路、模拟电路及微控制系统与外设的混合电路系统的电路仿真、系统协同仿真和PCB设计等全部功能。PROTEUS软件能够对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原形时就可以对系统进行调试与验证。在构思好电路原理图和编好程序之后就要对其进行系统仿真,原理图的具体设计流程如图5-2所示。当完成原理图布线后,利用PROTEUS ISIS编辑环境所提供的电器规则检查命令对设计进行检查,并根据系统提供的错误检查报告修改原理图。

44、直到通过电器规则检查为止。单片机系统的仿真是PROTEUS VSM的一大特色,同时,本仿真系统将源代码的编辑和编译整合到同一设计环境中,这样使得用户可以在设计中直接编辑代码,并且很容易地查看到用户对源程序修改后对仿真结果的影响。源代码通过编译无误后,就可以进行仿真,在仿真过程中不断完善电路和程序的功能最后达到本次设计的目的。 新建设计文档设置编辑环境原理图布线放置元器件电器检查建立网络表是否合格?结束Y存盘、报表输出调整N开始 图5-2 原理图设计流程图5.2.1 程序的查错手段 单片机的应用系统均需借助对应的开发系统(或装置)进行在线仿真,对应用系统的软,硬件进行全面地检测与调试。各种开发系

45、统或装置均提供以下查错手段。(1)单步执行采用单步执行操作可对应用程序每步执行一条指令,可逐条检查这一段程序的执行过程是否符合原设计要求。可直接查出错误所在。宏单步可执行一段程序,如一步就可执行完整个循环程序段。(2)断点设置全速运行可在程序有疑虑的地方设置断点,从设置的起始地址开始,以全速或非全速方式向设定的断点处运行。如果这段程序无语法或逻辑上的错误,则连续运行到设置的断点处停止运行,返回监控状态。如果有错误,则在错误处停止运行,如果进入死循环或者程序跑飞,就会永不停止运行。全速断点运行为检查实时性及中断响应处理等提供了方便。(3)显示器窗口检查(4)实时跟踪记录除上述之外,还有以下功能:

46、l 符号化调试。在原程序中一般均以符号地址,标号等出现,通过汇编自动进行变换和调整,偏移量等均可自动换算和填入。l 程序的运行。l 自动生成目标代码和固化。调试仿真电路图见附录2第6章 结论该设计通过对设计出来的板子进行调试,验证了理论分析结果的正确性。此次课程设计经过为期一段时间的不懈努力,达到了预期的要求。通过对整个系统的调试,可得到如下结论:本系统是一个可测量自行车里程和平均速度的自行车里程表。理解了自行车里程及其平均速度的计算。里程与速度分别根据以下公式求得:里程=脉冲总数×车轮周长速度=车轮周长/车轮转一圈所用的时间通过实验证明本次设计符合设计的要求,能实现对里程、速度的显

47、示,功能性较强,具有一定的实践意义,将会在许多场合应用。不过,这个设计还是有它的不足之处。首先就是电路设计有些复杂,元器件种类有点多,它们会耗费掉一定的电力。另外就是对自行车的控制不是很全面,对测定自行车的瞬时速度等方面我们还未做到。第7章 谢辞本次毕业设计是在指导老师江老师的指导下完成的。忙碌了两个多月,我的毕业设计课题也终将告一段落。编译程序时点击运行,也基本达到预期的效果,虚荣的成就感在没人的时候也总会冒上心头。但由于能力和时间的关系,总是觉得有很多不尽人意的地方,可是,我又会有点自恋式地安慰自己:做一件事情,不必过于在乎最终的结果,可贵的是过程中的收获。以此语言来安抚我尚没平复的心。毕

48、业设计,也许是我大学生涯交上的最后一个作业了。想籍次机会感谢在校期间二年以来给我帮助的所有老师、同学,你们的友谊是我人生的财富,是我生命中不可或缺的一部分。我的毕业指导老师江老师,她不仅是我的任课老师,还是我的毕业指导教师,在课堂上教会了我很多知识,毕业设计还不厌其烦的指导,并提供了很多与该设计相关的重要信息,培养了我们对做事认真严谨,积极进取的精神。这将非常有利于我们今后的学习和工作。在此表示衷心的感谢! 本次毕业设计还得到了课题组的各位老师的大力协助,在此一并表示我们的感谢!附录2 硬件电路仿真图参考文献1张友德,赵志英,涂时亮. 单片微型机原理、应用与实验M.上海;复旦大学出版社,200

49、0.12-142勒达. 单片机应用系统开发实例导航M.北京:人民邮电出版社,2003.54-563薛钧义,张彦斌. 单片微型计算机及其应用D.西安:西安交通大学出版社,2001.104-1064田汉波.一种基于霍尔传感器的直流电机转速测量方法J.机械与电子,2007(1).31-335杨继生.霍尔传感器A44E在车轮测速中的应用研究J.电子测量技术,2009,(10).100-1026何立民.单片机应用技术选编M.北京:北京航空航天大学出版社,1996.47-487蔡美琴.MCS-51系列单片机系统及其应用M.上海:高等教育出版社, 1992.54-578苏伟斌.8051系列单片机应用手册M.

50、北京:科学出版社, 1997.76-799马家辰.MCS-51单片机原理及接口技术M.哈尔滨:哈尔滨工业大学出版社 ,1997.123-12510藏海河.单片机原理及应用M.重庆:重庆大学出版社,2004.35-3711刘文秀.单片机仿真J.中国学术期刊,2004,6(5).56-61.12杨雪梅.单片机软件的抗干扰设计J.中国学术期刊,2006,3(8).18-25.13Joseph.A method of developing 80C552 microcontroller on MCS-51 deviceJ.East China Institute of Metallurgy,1998 ,

51、14(27).101-125.14Intel.Interfacing an MCS-51 Microcontronller to an 82527 CAN ControllerJ. Iondon Macmillan PRESS LTD,1996,5(80).32-40.15Philips Semiconductors.The IC-Bus Specification Version(2.1)J.USA, 2000,17(35).71-83.附录1 硬件设计原理图附录2 硬件电路仿真图附录3 软件程序#include <reg52.h>#include <string.h>

52、;#include <intrins.h>#define uchar unsigned char#define uint unsigned int sfr ISP_DATA=0xe2; sfr ISP_ADDRH=0xe3; sfr ISP_ADDRL=0xe4; sfr ISP_CMD=0xe5; sfr ISP_TRIG=0xe6; sfr ISP_CONTR=0xe7; sbit C_sound=P34;void delay(uint z);sbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit P33=P33;sbit RS

53、=P37;sbit RW=P36;sbit E=P35;sbit busy=P27;unsigned int i,qsls;unsigned long sj,totallc,pjsd,qs2,ssji,sji,sd2,mxsd,mxsd2,tc;uchar *s,qs,as,bs,cs,gw,sw,bw,qw,ww,sww,ssj,MODE,tr1,tr2,number3=0;void EEPROM_ERASE(uchar addr_h)ISP_ADDRH=addr_h;附录3 软件程序ISP_ADDRL=0x00;EA=0;ISP_CONTR=0x81;ISP_CMD=0x03;ISP_TRIG=0x46;ISP_TRIG=0xb9;_nop_();_nop_();ISP_CONTR=0x00;ISP_CMD=0x00;ISP_TRIG=0x00;EA=1;void EEPROM_LXRD(uchar addr_h,uchar addr_l,uchar num,uchar *str)u

温馨提示

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

评论

0/150

提交评论