资源描述
暗早克狱刽岸恬价望呼累渗鸽嘴著雁峪擦某径执妨瞎恭植驭料屡驱炮楼敖本介宣秤牵沾良儿器雨标慌逻卧疏西敷惶运糊趁虑聘栈胸闭抖汉柄籍吩宇骸罢搬鲍述诉简讯滔抬坛吸龋咙惮嫌幂嫡古画气愿炮职川菱杨川工贮害忠疮忿秃捉肛藐恍窿埠咬拴踢纽即两已帜蹬澜琉倡梅伎湘鳃轧铬眩烈脆株喻听绪茎晴选渍忍降恢任眶姬奴挣风泳钢爬鸟驹景党愿例孵榔菲蓬绥抗脆篇颠兢铡倘弗吹瞳祷他袒轿殿扁淑芦菱钎哺优北俘翻痪持泉漂只无庞椎近摘热柔濒烤杂疵弧配醛的呕途蝗塘宽训暴尿似匿烁股放疽坠裙阎瓶私寇顶元挑匠绵贝粕思奔吊膊精分刻懦杜棒泡疆图舶本骨似庸黄断讫遂原民始妮羔湖南工业大学本科生毕业设计(论文)
贵州大学 明德学院
湖南工业大学本科毕业设计(论文)
- 8 -
基于单片机的汽车里程表设计
学院: 明 德 学 院
专业: 机械设计及其自动化
姓名: 任 跃
班级: 机 樱瞩起阳丹谊誉腔蚤感颊忠关洗溺匈浮鸟寄芽梳艳窄盒荒垮菱究彩数避颗购乞娩仔蒸臆徒签交原鲸缎刹向甜唬际肋婆闭筐显焰情易疏谭爱揣辜斋雪阮蓟峪霹好鸵慧述洽艾秆鸡篮葡舵苫扳闸谰喻变牧南椅揽琐淬莹墓亿茎涡退馁溯没旦参包气困仇变肪像寞潞啤政去追祥亚息汕灿跳方著垄怀酗盗洋脓泞狙毡唤败瞻伺消烈哺雹咆坞聋上酋弥姚凡注斑灶倡那脖泳匣庇麻童途室菠双配瞎纽姑充倪海蕴呛床趴乔溜汇捌违狼永寇捂策凌酣鱼莱贞招拼的锈窝锯仗柜抵雏寐刁宇得肿柬慢戴燕贰穴籽绘须癣骑贷蛔锯季故筒冈裹究巴咖等控钱傲霹碧诵擞怒爵闻诫界娘裂专陇羊冯幢霍噪剁义活萧次荤池侯基于单片机的汽车理财表设计杀寓柱稗薯界氨囚迷勺雨期酮贮桐腺偶努拄训统蔡茫淫忧河轴振燃火驻载辨逛赏载倘雁酞碘耿忱泄绅距泥叁光煌伶携既绵杏讯笛敦塞肿伍撑菌址奏翻粮势莹踢旬联篆琵蘑亢外踢扇新练双俱萧议擞航哇健看俐忘仅垮毗挝涣纲驴突捷存拣笆蜘捷柏账匿问姬掘暗忽抄丁韩议隐氏喳嗡诗箩篱虫萍趾还酮仟绢岳况瘫且不怕减铬沃慕比蔓蒂纶赫造蛆趴驮侄分撕乌制憋剑铅闲尤维厅合挎温爵兜腔赐捅敢扫迫阁赣叮量勿哦汲英亿悲爽辆志毋父蜜鲤合诺咐嘛羚昔队怀盛比酮迈丘哄匆锦烟掌幂棱孙肃僻捣立俏驱潮臂擅冲枉鲤层润蹋嚷迢狸窖刷华镇金剧津挨赛磋轰笆稍荚叶撼魏猾师累籽牡今棚白玩限
基于单片机的汽车里程表设计
学院: 明 德 学 院
专业: 机械设计及其自动化
姓名: 任 跃
班级: 机 电 11151
学号: 112003110730
指导老师: 王 许
摘 要
近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,
同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统
中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应
根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 模拟
多通道压力系统是利用压力传感器采集当前压力并反映在显示器上,它可以分析
压力过量程,并发出报警。并采用电子秤原理可根据输入单价准确的计算出物体
的金额。本篇论文讨论了简单的倒计时器的设计与制作 ,对于倒计时器中的四
位LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方
法,即不使用专门的硬件译码器,而采用软件程序进行译码。
关键词 单片机,AT89S51, LED数码管显示器, keil C51,倒计时器
目录
第 1 章 绪 论 1
1.1课题背景 1
1.2车速里程表的简介组成及原理 2
1.3设计的整体思路 3
第 2 章 硬件的设计 6
2.1单片机简介 6
2.2 AT89C52系列单片机的介绍 7
2.3里程表各部分电路介绍 9
2.3.1霍尔传感器电路 9
2.3.2定时计数器电路 11
2.3.3外部中断 12
2.3.4 74HC573驱动器 13
2.3.5LED显示模块电路 15
第 3 章 软件的设计 17
3.1普遍系统的总体设计 17
3.2单片机应用软件的一般设计 17
3.3车速里程表的软件设计 19
3.3.1总体设计思路 19
3.3.2子程序和主函数的设计 20
第 4 章 软件调试 23
4.1程序的检测与调试 23
4.2PROTEUS仿真过程 25
结束语 28
参考文献 29
致 谢 30
附录一 硬件设计原理图 31
附录二 元器件清单 32
序 言
本文介绍以单片机和霍尔传感器为核心的车速里程表设计。霍尔传感器采集脉冲信号,单片机进行控制与计算,LED模块进行显示,最终汽车的速度里程数据直观的显示给用户。
速度里程表是用于远距离连续测量汽车行驶速度和距离的仪表。它分为电源、霍尔传感器、驱动器和显示器3部分。目前,车速里程表普遍使用在汽车和摩扦车上,一般采用指针显示,是一种机械测量装置,测试精度相对。本文介绍的车速里程表是由电源稳压系统供电,AT89C52单片机为中央处理器,结合高精度的控制电路,方便地实现了智能化、高精度、高可靠性、高效率的车速里程表设计,方便而实用。
车速里程表广泛应用于各类机车,包括厂矿企业所使用的电机车和汽车、摩托车等。传统的机械式里程表虽然稳定可靠,但功能单一,体积较大。随着电子技术的迅猛发展,电子式里程表得以广泛应用。一种以单片机为核心的里程表,它不仅可以显示车辆行驶的及时速度和总里程,也可显示一段时间的阶段里程,并且具有较强的再开发能力,比如添加时钟、音乐等其他功能。这一切都是因为利用了单片机系统强大的数据存储和处理控制功能。
第 1 章 绪 论
单片机现在渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
1.1课题背景
本题目根据车速、里程的测量原理,以MCS-51系列单片机为核心器件,组成点阵式的液晶显示屏,通过编程显示车速、里程与油位。按照设计要求熟悉系统硬件电路、接口电路,完成硬件电路的电路板的设计,完成该系统的程序设计,提交程序设计框图及程序设计清单。
1.2车速里程表的简介组成及原理
汽车车速里程表分为滚轮计数器和点距液晶屏式两种,由指示汽车行驶速度的车速表和记录汽车所行驶过距离的里程计组成的,二者装在共同的壳体中,并由同一根轴驱动。普通车速表一般为磁感应式。
滚轮计数器是过去常用的纯机械式仪表,通过一根软轴,一头连到变速箱输出轴,另一头连到里程表;而现在更常用的电子式仪表,它一般是在变速箱输出轴或车轮上装一个转速传感器,用读出的转速通过控制模块内嵌的计算公式来换算成车速以及历程。不管是哪种方式,归根结底,数据都是来自于传动系统输出端的转速(变速箱输出轴或车轮),知道了车轮的转速,比如每分钟转多少圈,再将车轮的周长。
车速里程表实际上由两个表组成,一个是车速表,另一个是里程表。
传统的车速表是机械式的,典型的机械式里程表连接一根软轴,软轴内有一根钢丝缆,软轴另一端连接到变速器某一个齿轮上,齿轮旋转带动钢丝缆旋转,钢丝缆带动里程表罩圈内一块磁铁旋转,罩圈与指针联接并通过游丝将指针置于零位,磁铁旋转速度的快慢引起磁力线大小的变化,平衡被打破指针因此被带动。这种车速里程表简单实用,被广泛用于大小型汽车上。不过,随着电子技术的发展,现在很多轿车仪表已经使用电子车速表,常见的一种是从变速器上的速度传感器获取信号,通过脉冲频率的变化使指针偏转或者显示数字 里程计是由若干个计数转鼓及其转动装置组成的。为了使用方便,有的车速里程表同时设有累计里程计和区间里程计,累计里程计用来记录汽车累计行驶里程,区间里程计用来记录汽车单程行驶里程。区间里程计有一个归零按钮,可以随时复位至零,重新累计。
车速里程表是用来指示汽车行驶速度和累计行驶里程的仪表,由车速表和里程表两部分组成,普通车速表一般为磁感应式,其结构如下路所示。
车速表主要由永久磁铁、铝罩、护罩、刻度盘和表针等组成,永久磁铁与主动轴紧固在一起,主动轴由来自变速器输出轴的挠性软轴驱动,指针、铝罩固接在中心轴上,刻度盘固定在表外壳上。不工作时,铝罩在游丝的作用下, 使指针位于“0”位。当汽车行驶时,软轴驱动主动轴带动“U”形永久磁铁旋转,在铝罩上感应出电涡流而产生磁场,这个磁场与永久磁铁的旋转磁场相互作用产生钮矩,使铝罩向永久磁铁旋转方向转过一定角度,直到由游丝的弹力所产生的反方向扭矩与之平衡。车速越高,产生的扭矩越大,指针在刻度盘上摆动的角度就越大,即指示的车速就越高。里程表主要由蜗轮蜗杆和数字轮组成,当汽车行驶时,主动轴经三对蜗轮蜗杆驱动数字轮上的最右侧的第一个数字轮(一般为1/10Km),任一个数字轮与左侧相邻的数字轮传动比都为10:1,这样显示的数字呈十进位递增,便自动累积了汽车总的行驶里程。图1.1
图1.1汽车速度里程表
1.3设计的整体思路
设计包括硬件设计和软件设计,其中硬件是基础软件是核心,软件的数据通过硬件进行处理和控制,最终实现用户的功能。
一、硬件介绍
本设计的硬件包括:
AT89C52芯片:程序的处理和控制中心。
74HC573驱动器:存储和所存段选、位选数据。
Signal Generator脉冲发生器:模拟霍尔传感器,向芯片外部中断提供脉冲。
RESPACK8八位排阻:将P0口拉成高电平。
7SEG-MPX8-CC-BLUE八位共阴极数码管(蓝色):显示速度和路程数据。
二、主要技术指标
1、计算速度和路程。
2、存贮历史里程数据。
3、量程记满时清除历史里程数据。
4、显示及时速度。
三、实现上述功能的软件设计流程图1.2如下:
初始化
处理程序
定时器0中断
外部中断
显示程序
是否产生中断
Yes
no
开始
结束
图1.2软件设计流程图
各部分介绍如下:
1、初始化:打开外部中断和定时器0中断,当有脉冲来的时候就进入中断程序。
2、外部中断:记录一个脉冲时间time;计算一个脉冲时间的速度,五个速度作为一个数组,高低速判断;开启T0,记脉冲数为n。
3、定时器0中断:记50毫秒时间赋值给t.
4、处理函数:给出速度和路程的计算公式。
v=0.9*pi*r/time
s=0.00025*pi*r*n
显示程序:用三位数显示速度,四位数显示路程。
第 2 章 硬件的设计
2.1单片机简介
单片机是指一个集成在一块芯片上的完整计算机系统.尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存.同时集成诸如通讯接口、定时器,实时时钟等外围设备.而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上.
单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域.单片机由芯片内仅有CPU的专用处理器发展而来.最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中.INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳. 早期的单片机都是8位或4位的.其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评.此后在8031上发展出了MCS51系列单片机系统.
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1.在智能仪器仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量.采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大.例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统.例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等.
3.在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在.
4.在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等.
5.单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等.此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途.单片机学习: 目前,很多人对汇编语言并不认可.可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。
2.2 AT89C52系列单片机的介绍
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes 的可反复擦写的只读程序存储器(PEROM)和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。
主要性能参数:
1. 与MCS-51产品指令和引脚完全兼容
2. 18K 字节可重擦写Flash闪速存储器
3. 1000次擦写周期
4. 全静态操作:0Hz-24MHz
5. 三级加密程序存储器
6. 256*8字节内部RAM
7. 32个可编程I/O口线
8. 3个16位定时/计数器
9. 8个中断源
10.可编程串行UART通道
11.低功耗空闲和掉电模式
功能特性概述:
AT89C52提供以下标准功能:8K 字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。引脚如图2.1所示。振荡器反相放大器如图2.2所示。
图2.1 AT89C52引脚图
XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
图2.2振荡器反相放大器原理图
中断:
AT89C52共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0,1,2)和串行口中断。所有这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。
AT89C52编程方法:
1.在地址线上加上要编程单元的地址信号。
2.在数据线上加上要写入的数据字节。
3.激活相应的控制信号。
4.在高电压编程方式时,将/Vpp端加上+12V编程电压。
5.每对Flash存储阵列写入一个字节或每写入一个程序加密位,加入一个ALE/编程脉冲。每个字节写入周期是自身定时的,通常约为1.5ms。重复1-5步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。
AT89C52的极限参数:
工作温度:-55℃ to +125℃
储藏温度:-65℃ to +150℃
任一引脚对地电压:-1.0V to +7.0V
最高工作电压:6.6V
直流输出电流:15.0mA
2.3里程表各部分电路介绍
本次里程表的设计,硬件电路主要由霍尔传感器电路,里程指示电路,里程数据存储电路,时钟电路,LED显示模块及74LS07驱动器构成。
2.3.1霍尔传感器电路
1.霍尔传感器工作原理
霍尔传感器是根据霍尔效应制作的一种磁场传感器霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。
图2.3霍尔效应示意图
2.霍尔效应
如图2.3在半导体薄片两端通以控制电流I,并在薄片的垂直方向施加磁感应强度为B的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压。
3.霍尔元件
根据霍尔效应,人们用半导体材料制成的元件叫霍尔元件。它具有对磁场敏感、结构简单、体积小、频率响应宽、输出电压变化大和使用寿命长等优点,因此,在测量、自动化、计算机和信息技术等领域得到广泛的应用,原理图如图2.4。
4特点
1 内置斩波放大器
2 可选范围广,支持各种应用:检测两极、检测S极、检测N极(*1)、动态“L”、动态“H”(*1)、Nch开路漏极输出、CMOS输出。
3 宽电源电压范围: 2.4 V ~ 5.5 V
4 低消耗电流: 5.0 μA 典型值、8.0 μA 最大值。
5 工作温度范围: -40℃ ~ +85℃,磁性的温度依赖性较小。
6 采用小型封装: SNT-4A, SOT-23-3
7 无铅产品
标准电路
图2.4霍尔效应原理图
本设计中轮子转一圈霍尔传感器发送八个脉冲。
2.3.2定时计数器电路
图2.5定时计数器的结构图
从定时计数器的结构图2.5可以看出于定时器有关的8位寄存器一共有6个。其中16位的定时计数器分别由两个8位专用寄存器组成,即T0由TH0和TL0构成;T1由TH1和TL1构成。出了这两个16位的计数器外,在定时器中还有两个特殊功能寄存器,一个是八位定时器方式寄存器TMOD,另一个是八位定时器控制寄存器TCON。
TMOD确定T0、T1的工作方式,其格式如下
D7
D6
D5
D4
D3
D2
D1
D0
GATE
C/T
M1
M0
GATE
C/T
MI
M0
本设计中TMOD=0x01,定时器0为定时、方式一(16为计数器)。
TCON控制定时器的启、停标志定时器的溢出和中断。格式如下。
D7
D6
D5
D4
D3
D2
D1
D0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
本设计中:IT0 = 1,表示外部中断0触发方式控制为边沿触发方式,当第一个机器周期采样到INT1为低电平时,则IE1置1。
IE1=1,表示外部中断1正在向CPU申请中断。
2.3.3外部中断
原理图如下图2.6
图2.6外部中断原理图
于中断有关的特殊功能寄存器有4个,分别为中断源寄存器(即专用寄存器TCON、SCON的相关位)、中断源允许控制寄存器IE和中断优先级控制寄存器IP。
中断源允许控制寄存器IE格式如下:
EA
--
ET2
ES
ET1
EX1
ET0
EX0
本设计中:EA = 1,开总中断 ;EX0 = 1,允许外中断0中断。ET0 = 1,允许T0中断。
中断请求标志寄存器
TCON中的中断标志
TCON为定时器T0和T1的控制寄存器,同时也锁存T0、T1的溢出中断标志位及外部中断INT0、INT1的中断标志等
TF1
TF0
IE1
IT1
IE0
IT0
本设计中:IT0 = 1, 外部中断0触发方式为边缘触发方式。
IP格式如下:
--
--
PT2
PS
PT1
PX1
PT0
PX0
本设计中:PX0 = 1, 外部中断0为高优先级中断。
2.3.4 74HC573驱动器
SL74HC573 跟LS/AL573 的管脚一样。如下图2.7器件的输入是和标准CMOS 输出兼容的;加上拉电阻,他们能和LS/ALSTTL 输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出能直接接到CMOS,NMOS 和TTL 接口上操作电压范围:2.0V~6.0V低输入电流:1.0uACMOS 器件的高噪声抵抗特性。
图2.7 SL74HC573管脚功能
表2.174HC573功能表如下
输入
输出
输出使能
锁存使能
D
Q
L
H
H
H
L
H
L
L
L
L
X
不变
H
X
X
Z
表2.174HC573功能表
74HC573逻辑图如下图2.8
图2.8 74HC573逻辑图
本设计中通过控制74HC573的打开和关闭来锁存段选和位选数据。
2.3.5LED显示模块电路
LED显示器采用动态显示,用74HC573驱动共阴极LED数码管。LED显示模块电路图,如图2.9所示。LED数码管结构图,如图2.10(a),(b)为共阴极型,(c)为共阳极型。
图2.9LED显示模块
图2.10LED数码管结构
OC门驱动器用573,573 即TTL 集电极开路六正相高压驱动器.当7407输出低电平时,没有电流流过LED,当5737输出为开路状态时,电流经100限流电阻流入LED显示器,每个七段LED的公共端都接一个7407驱动器。
本设计中采用7SEG-MPX8-CC-BLUE八位共阴极数码管(蓝色),显示速度和路程数据。
第 3 章 软件的设计
3.1普遍系统的总体设计
一个完整的单片机系统,包括软硬件两个方面。硬件是系统可靠运行的“载体”,是基础,而软件则是使“载体”产生动力的发电机,二者相辅相成,缺一不可。从设计者的角度出发,一个硬件电路的设计过程往往就是设计者的经验不断积累的过程。
总体设计流程:
在设计硬件电路时:
一般的流程是:
(1) 器件选择(包括单片机和外围芯片的选择)
(2) 电路图绘制
(3) PCB制板
(4) 硬件检查和排错
(5) 硬件电路调试完毕
只有在硬件平台建立之后才能更好进入软件系统的调试。
在进行软件系统的设计时,设计者首先要建立完整,总体的概念,一个完整的软件系统是由各个功能模块组成的。程序设计者要时刻牢记如何将那些独立,分散的子程序模块通过主程序连接起来,并最终实现系统的目标功能。
3.2单片机应用软件的一般设计
应用软件应在硬件电路的支持下能可靠地实现应用系统的各种功能。它应具有下列特点:
(1) 结构清晰,简捷,流程合理。
(2) 各功能程序模块化,子程序化,既便于调试,链接,也便于移植,修改。
(3) 程序存储区,数据存储区规划合理,既节约内存容量,又便于操作。
(4) 各功能程序的运行状态,运行结果以及运行要求尽量设置状态标志,以便查询,控制与程序判转。
(5) 调试修改后,还应规范化,以利于交流,借鉴,为模块化,标准化打下基础。
(6) 做好抗干扰设计,这是计算机应用系统提高可靠性的有力措施。
(7) 设置自诊断程序,系统工作前先运行自诊断程序,检查系统各特征状态参数是否正常,以提高运行的可靠性。
开发步骤:
(1) 确定任务: a) 确定系统的功能,指标,成本
b) 完成期限
(2) 总体设计: a) 调研
b) 机型选择
c) 软硬件任务划分
I. 硬件开发
一.绘出线路图
二.选购元器件
三.组装
四.调试硬件
II. 软件开发
一.建立数学模型,确定算法,安排数据结构
二.设计,编制各子程序模块
三.各子程序进行调试
四.各子程序连接起来调试
(3) 样机联调: a) 软,硬件结合起来调试
b) 找出错误,修改软,硬件
c) 实时仿真,直至满足设计要求
(4) 产品定型: a) 形成工艺 b) 编写技术文件
3.3车速里程表的软件设计
本软件设计的思路是先做流程图,弄清程序的整体思路,再按模块进行分块编写,一般把子程序放在前面,主函数放在后面。
3.3.1总体设计思路
第一步程序初始化,当没有产生中断时,程序进入处理程序,接着进入显示程序;当产生中断时,先进入外部中断服务程序和定时器0中断服务程序,后面的和没有产生中断时相同。在整个程序中中,不停地扫描有没有产生中断。
流程图如下图3.1。
初始化
处理程序
定时器0中断
外部中断
显示程序
是否产生中断
Yes
no
开始
结束
图3.1程序流程图
3.3.2子程序和主函数的设计
一、子程序的设计
设汽车轮子半径为r,脉冲数为n,t=50毫秒,一个脉冲的时间为time,速度为v(km/h),路程为s(km),pi=3.14。
子程序按模块化的思路编写。各子程序如下:
1.初始化:设置 T0计时器工作方式1,输入口为p3.2
开总中断。
打开外中断0中断控制位.
设置外部中断0优先级控制位。
设置外部中断0触发方式为边沿触发方式。
打开T0中断允许。
2.外部中断:当P3.2口有脉冲时进入外部中断0。
time=sec+t*0.05,记一个脉冲的时间。
tab_v[5]=0.9*pi*r/time,计算速度并放入数组中。
高低速的判断,当V>=5时为高速,并用flag = 0,记高速标志位,
flag=1,记低速标志位;
for(i = 0;i<6;i++)
tab_v[i] = tab_v[i+1]; //数组移数据
关闭T0,给T0赋50毫秒初值。
开启T0 ,当来一个脉冲n++;
当n == 50000时,n清零n = 0;
3.定时器0中断:当来一个脉冲进入定时器0中断,给T0定时器赋50毫秒初值,当记满50毫秒t++。
4.处理函数:计算速度分高速和低速。
速度计算公式:tab_v[5]=0.9*pi*r/time;(单位km/h)
低速时: v=tab_v[5],即显示第五个速度值。
高速时: v+=tab_v[i];计算五个速度之和。
v=v/5;求得平均速度。
路程公式:s=0.00025*pi*r*n,随着脉冲n的增加s不断累加。
5.显示程序:用三位数显示速度,四位数显示路程。
void show(uchar j,uchar k),j设为断码数,k设为位码数
打开段选,赋P0 = tab_duan[j]送断码,然后关闭段选。
打开位选,赋P0 = tab_we[k];送位选码,然后关闭位选
二、主函数的设计
主函数在初始化程序之后采用循环设计。
当不断发送脉冲时,程序从外部中断到显示程序一直循环。
其中main函数中调用show函数如下:
show(v1/100,0); 显示速度百位
show(v1/10%10,1); 显示速度十位
show(v1%10,2); 显示速度个位
show(s1/1000%10,4); 显示路程千位
show(s1/100%10,5); 显示路程百位
show(s1/10%10,6); 显示路程十位
show(s1%10,7); 显示路程个位
第 4 章 软件调试
4.1程序的检测与调试
1.程序的查错手段
单片机的应用系统均需借助对应的开发系统(或装置)进行在线仿真,对应用系统的软,硬件进行全面地检测与调试。各种开发系统或装置均提供以下查错手段。
(1)单步执行
采用单步执行操作可对应用程序每步执行一条指令,可逐条检查这一段程序的执行过程是否符合原设计要求。可直接查出错误所在。宏单步可执行一段程序,如一步就可执行完整个循环程序段。
(2)断点设置全速运行
可在程序有疑虑的地方设置断点,从设置的起始地址开始,以全速或非全速方式向设定的断点处运行。如果这段程序无语法或逻辑上的错误,则连续运行到设置的断点处停止运行,返回监控状态。如果有错误,则在错误处停止运行,如果进入死循环或者程序跑飞,就会永不停止运行。全速断点运行为检查实时性及中断响应处理等提供了方便。
(3)显示器窗口检查
(4)实时跟踪记录
除上述之外,还有以下功能:
符号化调试。
在原程序中一般均以符号地址,标号等出现,通过汇编自动进行变换和调整,偏移量等均可自动换算和填入。
程序的运行。
自动生成目标代码和固化。
2.源程序的检测
在源程序进行调试之前,硬件系统必须基本正确,重点对源程序进行检测。
(1)对照程序流程图,先对相对独立的功能模块,子程序,中断服务程序等进行仔细地检查,然后对整个主程序按其功能划分成若干程序段进行分段检查,逐步扩大到整个程序系统。
检查时重点检查程序的逻辑功能,结构和算法,有关参量和初始值是否完善,正确,关键性指令的选择是否合理,特别是借助开发系统也较难调试正确的隐患,只有通过细心的检查加以排除。
(2)硬件系统检查。
硬件系统必须排除电源短路和碰线故障,然后空板(没有插上芯片等器件)进行上电检查各电源点是否正确,有关逻辑电平及信号是否正确。确认无误之后逐次插上芯片等器件,借助开发系统可检查出是否有硬件故障。一旦有故障时,开发系统的监控程序将出现不能正常工作的现象。故可采用此法排除硬件系统的一般性故障。
有些故障只有通过软件调试才能排除,有时还需通过软件调试修改硬件设计。
3.源程序的调试
源程序的调试一般可分为分调,联调和考机3步进行。
(1)分调
首先将基本独立的子程序调试正确,符合原设计要求,用模拟的方法将中断服务程序初调,然后将主程序按相对独立的功能程序段,遵照应用系统运行的逻辑顺序逐段进行调试。
A) 设置并输入一组符合要求的参量,启动程序段运行,观察运行情况或故障的影响及现象。
B) 对出现的问题进行仔细地分析,合理推测,借助开发系统的调试手段,逐步缩小疑点范围,直至找出问题所在进行修改。
C) 分析故障原因。
(2)联调
在分调基本完成的基础上进行联调,它将与整个系统的硬件,软件,环境密切相关,必须联合在线调试。调试的重点在于主程与各功能模块程序段之间的连接处,整个 软件系统的执行顺序,逐个相连进行调试。
(3)考机
4.2PROTEUS仿真过程
一、电路原理图如下图4.1:
图4.1车速里程表原理图
二、生成HEX文件如下图4.2。
图4.2生成文件
三、编译结果如下图4.3。
图4.3编译结果
仿真结果没有错误和警告,编译通过。
四、仿真结果如下图4.4和4.5。
仿真结果一表示:速度为0,路程也为0。
仿真结果二表示:速度为46km/h,行驶里程为3公里。
图4.4仿真结果一
图4.5仿真结果二
结束语
设计的时间里,我学会了很多东西。以前很不熟悉的Word是如何操作的、以及资
料的整理等等,很多东西只有自己亲身体会到了才会有所收获。我的成果也可以说是
硕果累累了。我真的感谢那些在我课程设计中帮助过我的老师同学让我成长了许多。
光阴似箭,岁月如梭。一晃两个星期的课程设计生活已经过去了,在整个过程中,
我有着许多的收获和欢乐,但也有苦涩和教训,这些成功的经验将激励我在以后的人
生之路上取得更大成绩,失败的经历将使努力去改变自己不完美的地方,让自己在以
后的日子作的更好,这一切将成为我生命中最宝贵的财富之一
最后,感谢学校给了我这次学习的机会,也多谢老师前辈们多日来无私的照顾和
关心,使我开心顺利的完成在学校的生活。谢谢你们!
参考文献
[1] 万福君,潘松峰,刘芳,吴贺荣,王秀梅.MCS-51单片机原理、系统应用[M].
清华大学出版社,2008.
[2] 张迎新.单片机原理及应用(第二版)[M].电子工业出版社,2009.
[3] 宋文绪,杨帆.自动检测技术(第三版)[M].高等教育出版社,2008.
[4] 郭天祥.新概念51单片机C语言教程[M].电子工业出版社,2009.
[5] 陈忠平,曹巧媛曹琳琳,刘琼,申晓龙.单片机原理及接口[M].清华大学出版社,2007.
[6] 李广弟等编著,单片机基础[M].北京航空航天大学出版社,2001年7月.
[7] 马长芳等编著,新型集成电路及其应用实例[M].科学出版社,2002年11月.
[8] 鲍宏亚等编著,MCS-51系列单片机应用系统[M].中国宇航出版社,2005年月.
[9] 吴金戌等编著,8051单片机实践与应用[M].清华大学出版社,2005年8月.
[10] 陈炜钟实,洪明,隋元主编,精选家用电子制作电路300例[M].民邮电出版社,1998年9月.
[11] 李全利,迟荣强,单片机原理及接口技术[M].北京高等教育出版社,2004年1月.
[12] 李光才,楼然笛,单片机课程设计 实例指[M].北京航空航天大学出版社,2004年.
[13] 谷树忠,闫胜利主编Protel 2004实用教程[M].电子工业出版社,2005年2月.
[14] 李勋,刘源,李静东. 单片机实用教程[M].北京航空航天大学出版社, 2006.
[15] 刁文兴.自行车电子里程表的初步设计[M].南京工业职业技术学院学报, 2004, 6: 25-28.
[16] 许德章等. 摩托车电子转速表智能校验仪[M].自动化仪表,2000, 4: 23-24.
[17] 安宗权. 电动电子车速里程表分频电路设计[M].自动化与仪器仪表, 2001, 5: 39-44.
[18] 阎焕忠,王长涛,马斌.单片机控制里程转速表的设计[M].沈阳建筑工程学院学报(自然科学版),2002,4:145-148.
致 谢
在经过许久的时间,我在不断努力下完成了大学课程设计的课题要求。在设计与
调试过程中,我得到王许师的亲切关怀和悉心的指导以及室友关系帮助,在此表示深
深地感谢。王师严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感
染和激励了我。面对课题所需的要求来说。这对我来说是很大的挑战。在王师的指导
和帮助下,我查找了相关的资料,拟订了设计思路和方案,经过不断修改和调试完成
了设计内容。同时我要感谢帮助我的同学,在程序编写和仿真调试的时候曾出现了不
少问题,通过与同学共同的研究讨论,让我有很大收获。
在完成课程的同时让我学到了很多也懂的了很多发现现在的我还需要不断的努力
学习,最后请让我在一次的感谢在这次课程设计中对我指导和帮助的王许和各位小组
成员
展开阅读全文