毕业设计基于单片机超速报警器的设计.doc

上传人:文库蛋蛋多 文档编号:3975352 上传时间:2023-03-30 格式:DOC 页数:38 大小:449.50KB
返回 下载 相关 举报
毕业设计基于单片机超速报警器的设计.doc_第1页
第1页 / 共38页
毕业设计基于单片机超速报警器的设计.doc_第2页
第2页 / 共38页
毕业设计基于单片机超速报警器的设计.doc_第3页
第3页 / 共38页
毕业设计基于单片机超速报警器的设计.doc_第4页
第4页 / 共38页
毕业设计基于单片机超速报警器的设计.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《毕业设计基于单片机超速报警器的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于单片机超速报警器的设计.doc(38页珍藏版)》请在三一办公上搜索。

1、 毕业设计(论文)题目: 基于单片机超速报警器的设计院 (系): 机电工程学院 专 业: 电气自动化ZK1001 姓 名: 牛富 学 号: 58020220100139 指导教师: 刘静 二一 二 年 12 月 24 日摘 要本设计从驾驶员自身安全角度出发,设计了一种检测车辆超速的报警系统。该报警系统允许驾驶员通过自带键盘设置本车辆安全行驶的最高速度,当车辆处于行驶状态中,该系统通过速度传感器时刻监测机动车辆速度。当发现车辆速度超过驾驶员设置的最高值时,蜂鸣器开始报警,提醒驾驶员减速。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。此设计就是一种利用51单片机对机动

2、车超速行驶情况进行蜂鸣报警和灯光报警的系统。该系统结构简单,可靠性高,操作方便,可广泛应用于摩托车、汽车等机动车辆。该设计详细介绍了系统的总体设计方案,给出了界面模块与89C51接口电路,系统硬件电路及外围设计电路,最后介绍了软件设计方法度程序流程图。通过LED显示出来。关键词:单片机 汽车超 传感器 报警 LED显示AbstractThis design is a microprocessor controlled speed alarm system. Alarm systems to detect speeding vehicles from the drivers own safety

3、 point of view. The alarm system allows the driver to set the maximum speed of this vehicle safe driving when the vehicle is in running state use keyboard. When the vehicle speed exceeds the highest value set by the driver, the buzzer alarm to alert the driver to slow to achieve the purpose of proac

4、tive. In real-time detection and automatic control of microcomputer application system, the micro-controller is often used as a core component to. This design is a 51 MCU motor vehicle speeding alarm buzzer and light alarm system. The system is simple structure, high reliability, easy operation, can

5、 be widely used in motorcycles, cars and other motor vehicles. The design describes the overall design of the system, given the 89C51 MCU interface module and interface circuit, the system hardware circuit and the external design of the circuit, and finally introduced the program flow chart of the s

6、oftware design methods. It can be display by LED.KEY WORD: speed measurement cycle measurement safety alarm automobile driving LED display目录第一章 引 言1第二章 设计方案的选择2第一节 设计要求2第二节 方法选择2第三章 测速传感器的确立4第一节 测速传感器的选择4第二节 测速传感器的工作原理5第四章 系统硬件设计8第一节 系统总体方框图8第二节 电路的连接10第五章 系统软件设计14第一节 系统流程图14第二节 主程序15第三节 初始化程序15第四节

7、按键扫描程序16结论17致谢18参考文献19附 录20第一章 引 言随着汽车工业和高速公路建设的发展,每年由各种交通事故造成的人员伤亡数目相当惊人,同时也造成了巨大的经济损失。据统计,造成各种交通事故的主要原因是车辆的超载和超速行驶,而后者随机性很大,纠章困难,而且由于中国公路条件复杂,不同等级的公路允许的最高速度不同,现有的限速装置难以适应这种情况。 针对这种状况,开发具有智能决策模块的汽车速度报警控制系统对自动驾驶显得极为重要。因此,大力研究开发如汽车防撞装置等主动式汽车辅助安全装置,减少驾驶员的负担和判断错误,对于提高交通安全将起到重要作用。设计限速路段超速自动提示和报警系统主要是为了防

8、止司机在一些繁华人多车多路段超速驾驶。交通事故往往发生在一些人流动大,车多的地方,司机有意无意的超速是引发交通事故的最大因素。装有本系统的汽车能够有效地在装有无线发射装置的限速路段,防止以下几种原因所造成交通事故的。首先车主不知道该路段的最高限制速度,而开车过快所造成的交通事故;其次车主醉酒驾驶无意超速所引起的交通事故;最后车主有意开快车所造成交通事故。我们设计的限速路段超速自动提示和报警系统与安全气囊等设施相比,更为主动有效,将可能产生的交通事故防患于未燃,它与警察用的雷达测速等防止司机超速装置相比,显得实用有效,交警可以在不同路段根据不同情况设定不同的最高限速值,主动有效地限制车速。使用车

9、速报警器可以减少财产损失,甚至是生命损失。汽车报警器具有实用性,易操做性,便于维修的优点,因此被广泛采用与应用。我们本着主动性的思路,实现设定最高速度可以随时修改,声光报警等特点,在车辆行驶过程中,该系统通过速度传感器时刻监测机动车辆,并通过LED显示车辆的实际车速和用户设置的安全参数。当车辆速度超过驾驶员设置的最高速度时,蜂鸣器开始报警,警告灯点亮,提醒驾驶员减速。该系统结构简单,可靠性高,操作方便,可广泛应用于摩托车、汽车等机动车辆。第二章 设计方案的选择第一节 设计要求我们要求设计一个具有数字显示功能的单片机系统, 实现车辆当前速度输出,当达到所设定的速度上限时并报警,以保证驾驶人员的人

10、身安全。首先要进行系统的总体方案设计,在设计中一般应考虑以下几点:一、 遵循从整体到局部的设计原则。在过程中,应遵循从整体到局部的设计原则,把复杂难处理的问题分为若干个较为简单的、容易处理的问题,分别加以解决。二、 经济性要求。为了获得较高的性能价格比,设计时不应盲目追求复杂高级的方案。在满足性能指针的前提下,应尽可能采用简单的方案,因为方案简单意味着所用的元器件少,可靠性高,而且比较经济。三、 可靠性要求。所谓可靠性是指产品在规定的条件下和规定的时间内完成规定功能的能力。可靠性指针除了可用完成功能的概率表示外,还可以用平均无故障时间、故障率、失效率或平均寿命等来表示。四、 操作和维护要求。在

11、车速报警系统的硬件和软件设计时,应当考虑操作方便,尽量降低对操作人员的专业知识的要求,以便产品的推广应用。系统的输入输出方式,操作程序应尽量简单明了,无须专门训练就能掌握其使用方法。第二节 方法选择方案一:采用模拟电路的方法,通过积分器得到电压,然后用比较器来控制报警输出,这种方法其原理简单,易于实现。但测量精度会比较粗,不能精确设置速度。此方法运用电子元器件较多,不能很好的得到测量精度的控制要求,不便于维修。方案二:采用车载GPS系统,能提供车辆的定位信息,包括车速信息,但价格昂贵。方案三: 采用嵌入式车载限速装置,在设计汽车时就已经考虑并在制造时嵌入整车电子控制系统中。传感器将车速转化为脉

12、冲信号,传入单片机,单片机将输入的一定值的脉冲转换为对应的速度值。方案一是模拟电路,特别是运放和比较器。方案二价格昂贵。不符合我们设计的要求。方案三在2005年以后国内生产的中高档乘用车中已初见端倪,但是国内约 4000万辆在用汽车中的近90%并未安装。鉴于此为在用汽车设计一种外挂式汽车超速报警器有着巨大的市场需求。嵌入式车速综上所述,我们选择方案三。运用单片机实现车辆超速报警。第三章 测速传感器的确立第一节 测速传感器的选择传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求

13、。它是实现自动检测和自动控制的首要环节。测速传感器是能测量被测物运行速度的仪器。我们要实现对速度的报警,故应该选择测速传感器。测速传感器包括测量线速度传感器和测量转速度传感器。线速度传感器是用来测量直线运动速度的传感器,它的输出电压和被测物体运动速度成线性关系,该传感器具有极高的频率响应,可检测小模数齿轮和其它物体的转速,具有稳定的工作性能。输出为方波信号,能实现远距离传输。线速度传感器具有结构简单可靠,不用外加电源稳压器,频率响应好,输出灵敏度高,测量范围大,抗干扰能力强等优点,它的输出直流电压可直接由高输入阻抗的直流电压表显示。转速传感器是将旋转物体的转速转换为电量输出的传感器,属于间接式

14、测量装置。按信号形式的不同,转速传感器可分为模拟式和数字式两种。前者的输出信号值是转速的线性函数, 后者的输出信号频率与转速成正比, 或其信号峰值间隔与转速成反比。常用的转速传感器有光电式、电容式、变磁阻式以及测速发电机等。在实际测量中我们要测量车轮的转速,要输出方波信号,不加电源稳压器,我就要选择转速度传感器。在测速传感器中,旋转运动速度测量较多,而且直线运动速度也经常通过旋转速度间接测量。目前广泛使用的测速传感器是直流测速发电机,可以将旋转速度转变成电信号。测速机要求输出电压与转速间保持线性关系,并要求输出电压陡度大,时间及温度稳定性好。测速机一般可分为直流式和交流式两种。直流式测速机的励

15、磁方式可分为他励式和永磁式两种,电枢结构有带槽的、空心的、盘式印刷电路等形式,其中带槽式最为常用。其中,由于磁电式传感器具有易于计算的特点,故我们选择了磁电式感应传感器。第二节 测速传感器的工作原理磁电感应式传感器简称感应式传感器,也称电动式传感器。它把被测物理量的变化转变为感应电动势,是一种机电能量变换型传感器,不需要外部供电电源,电路简单,性能稳定,输出阻抗小,又具有一定的频率响应范围(一般为101000Hz),适用于振动、转速、扭矩等测量。按工作原理不同,磁电感应式传感器可分为恒定磁通式和变磁通式,即动圈式传感器和磁阻式传感器。磁路系统产生恒定的直流磁场,磁路中的工作气隙固定不变,因而气

16、隙中磁通也是恒定不变的。其运动部件可以是线圈(动圈式),也可以是磁铁(动铁式),动圈式和动铁式的工作原理都是完全相同的。当壳体随被测振动体一起振动是,当振动频率足够高(远大于传感器固有频率)时,运动部件惯性很大,来不及随振动体一起振动,近乎静止不动,振动能量几乎全被弹簧吸收,永久磁铁与线圈的相对运动速度接近振动体振动速度,磁铁与线圈的相对运动切割磁力线,从而产生感应电动势。 线圈相对磁场运动的速度v或角速度表示,则所产生的感应电动势e为e=-NBLve=-NBS式中:N线圈在工作磁场中的匝数;L每匝线圈的平均长度;B线圈所在磁场的磁感应强度;S每匝线圈的平均截面积。在传感器中当结构参数确定后,

17、B、L、N、S均为定值,感应电动势e与线圈相对磁场的运动速度(v或)成正比,所以这类传感器的基本形式是速度传感器,能直接测量线速度或角速度。如果在其测量电路中接入积分电路或微分电路,那么还可以用来测量位移或加速度。但由上述工作原理可知,磁电感应式传感器只适用于动态测量。变磁通式又称 (变) 磁阻式或变气隙式,常用来测量旋转物体的角速度.线圈和磁铁静止不动,测量齿轮(导磁材料制成)每转过一个齿,传感器磁路磁阻变化一次,线圈产生的感应电动势的变化频率等于测量齿轮1上齿轮的齿数和转速的乘积。图2.1 车速传感器结构以Audi100轿车为例,其车速传感器由一个舌簧开关管和一个带有4对磁极的塑料环构成

18、(如图2.1所示)。后者安装在变速器左输出轴上,与轴一同旋转形成旋转磁场。舌簧开关管安装在靠近塑料环的变速器壳体上,它是在一个玻璃管内装有2个细长的触头构成的开关元件,其触头由磁性材料制成。图2.2车速信号图形舌簧开关管与塑料环间具有很小的间隙,当塑料环旋转时,舌簧开关管内触点接近塑料极时闭合,离开塑料极时断开,由此得到与汽车行驶速度相对应的方波信号 (如图2.2所示) 。汽车超速报警器的工作原理:汽车行驶过程中,车轮每转一圈,车速传感器产生8个脉冲。对已知车型可知其车轮直径D,例如规格为l8570VRl4的轮胎,185表示轮胎宽度为185mm,70代表轮胎高宽比为70,l4表示轮辋直径为14

19、inch,据此可计算出轮胎直径:D=18.50.72+142.54=61.46cm根据欲限定的汽车速度,可计算车轮在单位时间内转过的圈数:n=v/D。产生脉冲数f0=8n。比较,如果ff0,则车速报警器发出声光报警;反之,车速报警器将执行下一个比较任务。第四章 系统硬件设计第一节 系统总体方框图首先我们设计系统总框图。当车辆处于行驶状态时,该系统通过测速传感器时刻监测车辆速度,故我们需要测速传感器来测量速度传送到单片机中,为了减少系统误差和信号的干扰,实现非接触测量我们就需要在单片机和测速传感器之间加上一个关电耦合单元【1】。对于单片机我们需要稳定的电压,所以我们需要电源单元。最后采集的速度与

20、设定的速度送往液晶屏,相比较,超速就需要报警,我们就需要报警单元。故可以画出以下的超速报警系统总框图。图3.1超速报警系统总框图汽车超速报警器的硬件设计将车速传感器产生的车速信号送入光电耦合器单元,得到一个与车速信号频率一致的信号,送人单片机记数。记数满后与单片机内部设定值相比较。如果超过了预设值则可判断汽车超速,蜂鸣器报警提示。系统以AT89C5l单片机为核心,由电源单元、光电耦合器单元、凋速单元和声光报警单元组成。一、电源单元电源单元由三端集成稳压器W7805组成(如图3.2所示)。三端稳压器由启动电路、基准电压电路、采样比较放大电路、调整电路和保护电路等部分组成。图3.2 电源单元电容C

21、用来抵消因输入线太长而产生的电感效应,防止产生自激振荡,连线不长时可以不用,容量一般在0.10.33F【2】。用来消除高频噪声和改善输出的瞬态特性,即在负载电流变化时不致引起输出端产生较大的波动。当电路的输入端u大于5V时,输出端输出稳定的5V电压。二、光电耦合器单元光电耦合器是以光为媒介,传输信号的一种电一光一电转换器件,由发光源和受光器组成(如图3.3所示)。车速传感器信号位于高电平时,发光源发光并控制受光器导通,则受光器输出端产生与车速传感器频率一致的电压信号。采用光电耦合器PC817传输车速信号的目的是为了隔离车速传感器与单片机的直接联系,消除车速传感器信号对单片机的不利影响。车速传感

22、器产生的是恒流低阻抗信号,电压值受外部负载的影响大。以Audil00轿车为例,车速传感器信号送入单片机T0端口后,其高电平电压值迅速由9V下降为0.25V,而T0端口需要的最低识别电压为2V。图3.3信号耦合电路三、蜂鸣报警单元压电式蜂鸣器约需10mA的驱动电流,因此可以用系列集成电路7406或7407低电平驱动, 驱动器的输入端接89C51的P2.7。当P2.7输出高电平1时,7406的输出为低电平0,使蜂鸣器引线获得接近5V的直流电压,而产生蜂鸣音。当P2.7端输出低电平0时,7406的输出端升高的约+5V,压电蜂鸣器两引线间的直流电压降接近于0V,发生停止。我们用单片机的P2.7与蜂鸣器

23、相连,输出高电平,则报警。第二节 电路的连接一、测速传感器与单片机连接传感器 + _光电耦合器单片机VccP3.5电源图3.4传感器与单片机连接测速传感器两个电刷,将车轮转过的频率方波信号,传送给光电耦合器,实现非接触测量,再将信号送到单片机的P3.5口,单片机接驱动电压。实现单片机与测速传感器的连接。其主要作用是测试的速度可以用非接触的方式传送到单片机内部,是报警电路的关键一步。二、单片机与报警器连接图3.5 声光式报警电路报警模块主要负责声音报警和灯光报警,报警电路均比较简单,声音报警由单片机引脚接上拉电阻,晶体管及扬声器构成,灯光报警由两个发光二极管构成。当速度没有超速的时候,绿灯点亮,

24、不报警。当速度大于设定速度的时候单片机就将P2.7,P1.7口置为高电平,将红灯点亮,同时绿灯熄灭。P2.7高电平就将三极管发射极导通,实现speak报警。三、单片机与显示电路连接显示电路由MAX7219芯片完成,MAX7219是一种高集成化的串行输入/输出的共阴极LED显示驱动器。每片可驱动8位7段加小数点的共阴极数码管。SEGASEGG(图中为A到G)为LED七段显示器段驱动端,SEGDP为小数点驱动端; SEGASEGG,DP驱动显示器7段及小数点的输出电流,一般为40 mA左右,可软件调整,关闭状态时,接入GND【3】。DIG7DIG0:8位数值驱动线。输出位选信号,从每个LED公共阴

25、极吸入电流,吸收显示器共阴极电流的位驱动线。其最大值可达500 mA,关闭状态时,输出VCC。图3.6显示电路连接图计数器可以统计输入脉冲的个数,可以用其来统计汽车轮子在1s内的转动圈数,本电路采用两片十进制计数器组成模值为100的计数器。锁存器的作用是在1s 信号结束后将计数器的状态锁存并送至译码显示器,直到新的信号到来为止,以保证显示器能稳定的显示数据。选用8D锁存器可以完成上述功能,当时钟脉冲CP的正跳变来到时,锁存器的输出等于输入,即Q=D,从而将计数器的输出值送到锁存器的输出端。正脉冲结束后,无论D为何值,输出端Q的状态仍保持原来的状态Qn不变,所以在计数期间内,计数器的输出不会送到

26、译码显示器。四、单片机与按键电路的连接本设计为了能够自行设定最高上限速度,故设计了按键电路,我们选用单片机的P2.3、P2.4、P2.5、P2.6口分别与K0、K1、K2、K3相连。当按键按下去,产生低电平将数据传送单片机。其图如下:图3.7单片机与按键电路的连接第五章 系统软件设计第一节 系统流程图汽车超速报警器的总体流程图如图5.1所示。图5.1 软件设计流程图软件编程采用C语言,用单片机的T1作为定时器,设定定时时间为1S。由于单片机最大允许时间只有65S,需扩展定时时间。一般有硬件扩展和软件扩展两种方式,本文采用软件扩展方式。设T0定时时间为50ms,定时时间一到,溢出中断,在中断服务

27、程序中,对中断次数寄存器加1,重复定时中断20次,时间为1s。1s定时时间到,读取定时器T1(P3.5引脚) 输入的脉冲数,为实时车速的频率值。将该频率值与单片机内部设定阈值比较,判定是否超速。主程序主要完成硬件初始化、子程序调用以及显示、报警等功能。数据处理子程序主要完成监测车辆速度即主要是计算出车辆的时速,为报警子程序提供参考数据;按键中断子程序主要实现合法参数的输入;报警子程序主要实现在车辆超速行驶状态下发出报警信号,包括SPEAKER输出子程序和警报灯的闪烁子程序;显示子程序设计采用数字化显示用户设定的最高时速和车辆实际时速,用MAX7219芯片驱动LED进行动态显示。软件分为主程序、

28、初始化程序、按键子程序、中断服务子程序等。第二节 主程序 此系统由众多单元组成,为了便于修改,采用模块化分层管理。主程序中应该包含单片机初始化,MAX7219_Init初始化,数据、地址传人模块,显示测量速度,显示设定的初始速度,报警等单元。图5.2主程序流程图第三节 初始化程序单片机初始化,我们先来写TCON的控制字,首先将EA置为0,屏蔽所有的中断请求。接下来设定时器/计数器控制寄存器TCON。TCON用于控制T0、T1的启动和停止。我们选择电平触发方式,故IT=0,其最位D0应该设为0;IE0为外部中断请求0的中断请求标志位,在每个机器周期的S5P2采样/INT0引脚,若/INT0脚为低

29、电平,则IE0清“0”,故D1为设为0。同理,D2、D3是对外部中断1设定的,与外部中断0一样都设为0。当启动T0计数后,定时器/计数器T0从初值开始加1计数当最高位产生溢出时,由硬件使TF0置“1”,向CPU申请中断。CPU响应TF0中断时,TF0自动清“0”,TF0也可由软件清“0”,我们将其D5设为0。同理D7=0。故TCON状态字设为0x00。特殊功能计数器TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式,接下来我们来写TMOD的状态字。TMOD高4位控制T1方式,最高位D7为门控位,当其为0时,金庸运行控制位TRx(x=0,1)来控制定时器/计数器计数。将其设定为方式1,

30、16位定时计数器/计数器,故D5,D4设定为0和1。将T1设定为计数器,故D6=1。同理,T0工作在方式1下,T0为定时器模式。故其状态字设为0x51。将定时器/计数器写好初值后,将TR0,TR1置为1,均打开,写中断允许寄存器IE将其最高位D7设为1,允许所有的中断请求,允许T1,T0溢出中断,故D3,D1均写。故其状态字为0x8a。第四节 按键扫描程序图5.3按键扫描流程图先检测K1是不是低电平(按下),若没有按下,就执行延时程序,等待其输入数据;再次,检测K2是否按下,以此类推检测K3,就可以设定其最大速度。结论该系统的设计思想是主动式的,从人本主义出发,考虑的是时刻提醒驾驶员的自我安全

31、意识,最大限度避免因为车辆超速造成交通事故。此系统硬件主要包括以下四大模块: 89C51主控模块、传感器模块、报警模块和显示模块等。其中89C51 主要完成外围硬件的控制以及一些运算功能; 传感器完成信号的采样功能,报警模块主要负责声音报警和灯光报警,显示模块完成字符、数字的显示功能。此基于单片机的车速报警系统利用51单片机及高集成化的串行输入/输出的共阴极LED显示驱动器MAX7219实现, 这里叙述了该系统硬件设计方面的理论分析、软件设计方面的理论分析以及有关电路设计的实践经验。利用MAX7219芯片仅使用单片机三根引脚即可,电路设计简单,驱动共八位7段加小数点的共阴极数码管,每四位分别显

32、示当前速度和设定的速度上限,通过四个按键可以对速度上限不同要求地进行更改设置,方便使用。该系统具有硬件简单可靠性高抗干扰性强实用性好等优点,可以广泛应用在各种机动车辆上。通过了广泛地寻找资料,结合各种资料总结,掌握Proteus的基本用法及了解了不少新知识,参考其他相关的设计资料,并设计出相应的报警系统。对于C语言编程有了更进一步的了解。同时通过Proteus仿真验证了设计的正确性,使理论结果与实践相结合, 加深理论的理解。通过本次课程设计,理解到知识的广泛性,本身知识仍然不够,以后将会继续努力拓展知识面。致谢 本课题在选题及研究过程中得到刘静老师的悉心指导。刘老师多次询问研究进程,并为我指点

33、迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。刘老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽历时三载,却给以终生受益无穷之道。对刘老师的感激之情是无法用言语表达的。最后还要谢谢同学们对我的帮助,没有你们的帮助,我也不能及时完成毕业论文,以后我还会继续努力学习专业技能和理论知识,在实践中磨砺成长。参考文献1 张俊谟. 单片机的发展与应用. 电子制作, 2007,(08):31。 2 袁霞.娄云.汽车灯光网络化控制系统的研究. 河南机电高等专科学校学报, 2008,(05):18-19,32。3 李新.孙利生.基于DSP的汽车发动机转速测量系统研究. 汽车科技

34、, 2008,(05):61-64。4 任国峰.李军伟.张雨.单片机在发动机转速测量中的应用. 汽车科技, 2006,(01):38-40。5 周旭艳.彭宣戈.朱兵. 8051在车辆超速报警系统中的应用. 井冈山学院学报. 2006.(07)。6 吴有林.安玉.熊飞桥.吴先绪. 智能化汽车速度控制报警系统的设计. 重庆大学学报 (自然科学版). 2005年,(12).7 魏勋.单片机车速数显及报警系统设刮.电子制作, 2007年12期。8 DRACO. A transient recorder for road accidents. Fincham,C W.; Fowkes, M.; Ghib

35、audi, P. IEE Conference Publication, n 346, 1991, P 135-139。附 录源程序代码:#ifndef _Max7219_H_ #define _Max7219_H_#include#include#define uchar unsigned char#define uint unsigned int#define DECODE_MODE 0x09 /译码方式#define INTENSITY 0x0A /亮度寄存器#define SCAN_LIMIT 0x0B /扫描位数寄存器#define SHUT_DOWN 0x0C /低功耗模式寄存器#

36、define DISPLAY_TEST 0x0D /显示测试寄存器#define delay1us _nop_();/定义一微秒时间#define delay2us delay1us; delay1us ;#define delay4us delay2us; delay2us ;#define delay5us delay4us; delay1us ;#define delay12us delay4us; delay4us ; delay4us;sbit din=P20; /MAX7219串行数据输入,位操作,p2口0位sbit load=P21;/MAX7219显示数据锁存控制sbit cl

37、k=P22;/MAX7219串行时钟等下调用,函数声明void Max7219_Wr_byte(uchar wrdat);/写一个字节,void Max7219_Wr_data(uchar addr,uchar dat);/写一个数据(2个参数)void Init_Max7219(void);初始化子函数void Disp_speed(uint speed);显示速度void Disp_set_speed(uint set_speed);显示设置速度/初始化MAX7219void Max7219_Init(void) 初始化Max7219_Wr_data(SHUT_DOWN, 0x01); 地

38、址,显示内容 Max7219_Wr_data(DISPLAY_TEST, 0x00); 写字节子函数 Max7219_Wr_data (DECODE_MODE, 0xff); Max7219_Wr_data (SCAN_LIMIT, 0x07); Max7219_Wr_data (INTENSITY, 0x0a);void Max7219_Wr_byte (uchar wrdat)bit dat;uchar i;for (i=0;i8;i+) clk=0; /P2.2口打开dat=(bit)(wrdt&0x80); /取最高位,并强制转化if(dat)din=1;elsedin=0;wrdat

39、=1; /左移clk=1; /P2.2关闭 void Max7219_Wr_data(uchar addr,uchar dat)load=0; /P2.1口打开Max7219_Wr_byte ( addr ); /传递一个地址Max7219_Wr_byte(dat); /传递一个数据load=1;/P2.1口关闭void Disp_speed (uint speed)uchar speed_buf 4;uchar i;speed_buf0=speed%10;speed_buf1=speed/10%10|0x80 ;speed_buf2=speed/100%10;speed_buf3=speed

40、/1000;if(0=speed_buf3)speed_buf3=0x0f;if(0=speed_buf2)speed_buf2=0x0f; for(i=1;i=4;i+)Max7219_Wr_data (i, speed_buf i-1);void Disp_set_speed (uint set_speed)uchar speed_buf4;uchar i;speed_buf0=set_speed%10;speed_buf1=set_speed/10%10|0x80;speed_buf2=set_speed/100%10;speed_buf3=set_speed/1000;if(0=spe

41、ed_buf3)speed_buf3=0x0f;if(0=speed_buf2)speed_buf2=0x0f; for(i=1;i=4;i+)Max7219_Wr_data (i+4, speed_buf i-1);#endif /结束条件编译,编译时与前面最近的#if、#ifdef或#ifndef作为一对#include sbit KEY0=P23;sbit KEY1=P24;sbit KEY2=P25;sbit KEY3=P26;sbit SPK=P27;sbit LED_GREEN=P16;sbit LED=P17;uint set_speed;uint speed;uchar sec

42、_cnt;void Init_8051(void);void Delay(uchar time);uint Get_key(void);void Warn_ring(void);void main(void)Init_8051 ( );Max7219_Init ( );while (1)set_speed=Get_key ( );/按键数据放入设定速度Disp_speed (speed);Disp_set_speed (set_speed);Warn_ring ( );void Delay(uchar time)uchar t1,t2;for(t1=time;t10;t1- -)for(t2=

43、248;t20;t2-);/初始化void Init_8051(void)EA=0;/关总中断TCON=0x00;/定时器控制寄存器TMOD=0x51;/设定工作方式,16位计数器方式TL0=0xe0;/定时20msTH0=0xb1;TL1=0xf3; /定时器1装入初值,T1计数13个脉冲TH1=0xff;TR0=1;/ 打开定时器TR1=1;/打开计数器IE=0x8a;/总中断,定时器0 ,1均打开SPK=0;LED=0; /红灯关LED_GREEN=1;/点亮绿灯/定时器0函数,定时50*20ms=1svoid Timer0_speed(void) interrupt 1ET0=0;TR

44、0=0;TL0=0xe0;TH0=0xb1;TR0=1;sec_cnt+;ET0=1;/计数中断 计数10次 半径d=20cm/speed=0.2*60*10/sec_cnt*36 km/hvoid Counter_speed(void) interrupt 3 float a=6250;ET1=0;TR1=0;TL1=0xf3;TH1=0xff;TR1=1;speed=4.52*a/sec_cnt;sec_cnt=0;ET1=1;/键盘处理函数uint Get_key(void)static uint key_value;if(!KEY0)Delay(40); /延时if(!KEY0)while (KEY3)if(!KEY1)Delay(40);if(0=KEY1)while (0=KEY1)Disp_set_speed (key_value);key_value+=10;if(key_value=9999)key_value=0;if(!KEY2)Delay(40);/延时if(0=KEY2)while (0=KEY2)Disp_set_speed(key_v

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号