




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宁夏理工学院毕业设计(论文)摘要车速里程表广泛应用于各种机车,传统的机械式车速里程表虽然稳定可靠,但功能单一,易受磨损。随着电子技术的迅猛发展,电子式车速里程表得以广泛应用,现在很多轿车仪表已经开始使用电子车速里程表。本设计介绍一种基于单片机的智能车速里程表,该表是一种数字式仪表,不仅可以实时显示汽车的车速及行驶的总里程,也可以显示一段时间的阶段里程,还可以显示温度,以及实现超速报警功能。它的实现方式是:在车轮上安装一个很小的强力磁钢,在其侧正对面安装霍尔传感器a44e,在车辆行驶过程中,车轮每转一圈,霍尔传感器便相应产生一次高低电平变化,通过单片机记录处理这种电平变化的量,便知道一定时间车轮的转数,通过设定车轮的周长,再由单片机处理这些数据便可知道汽车的车速及里程了,并由led显示器显示出来。由于单片机每一秒钟处理一次信号量,并将相关的里程信息存储在非易失性eeprom中,所以车速及里程信息是实时更新的。关键词:stc89c52re单片机;a44e霍尔传感器;ds18b20温度传感器;at24c02存储器;ledabstract the speedometer is widely used in a variety of locomotives,the traditional mechanical speedometer stable and reliable ,but function of a single ,vulnerable to wear.with the rapid development of electronic technology ,electronic speedometer.this design introduces a micro-controller-based smart speedometer,the table is a digital meter,the total mileage of the vehicle speed and driving can not only real-time display can also display the speed alarm function .its implementation is:install a small strong magnet on the wheels,installed in the side opposite the hall sensor a44e,each turn in process of vehicle ,hall sensor will produce a level of power corresponding level chang ,by micro-controller record deal with this level the amount of change ,we will know the number of revolutions of the wheel of a certain period of time ,and then processed by the micro-controller by setting the wheel circumference ,these data will know thes speed and mileage by led display .micro-controller every minute of processing time semaphores and related mileage information is stored in nonvolatile eeprom,so the speed and mileage information is updated in real time. keywords:stc89c52re micro-controller;the a44e hall sensor;ds18b20 temperature sensor;at24c02;led 目录摘要i关键词iabstractiikeywordsii目录iii引言1系统总述21.1系统原理21.2系统功能及按键功能31.3产品设计参数及应用范围42硬件设计52.1单片机及时钟复位电路52.1.1stc89c52re单片机介绍52.1.2时钟复位电路72.2测速传感器72.2.1传感器的选择72.2.2霍尔传感器工作原理及电路连接82.3温度传感器ds18b2092.4存储器at24c02122.5键盘单元132.6显示单元132.7报警电路142.7.1发光二极管电路142.7.2蜂鸣器电路153软件设计163.1键盘扫描程序173.2数据处理程序193.3报警程序223.4显示程序243.5存储模块程序263.6温度采集转换模块程序304 系统仿真过程介绍354.1软件编写及电路图绘制354.2系统调试354.3设计软件介绍364.3.1protues软件364.3.2 keil c51软件37参考文献38结束语39致谢40附录a 系统原理图41附录b 程序42ii- 引言随着人们生活水平的提高,出行代步的交通工具也越来越多,如自行车,摩托车,小轿车,公交等。而这些不同的交通工具由于应用场合和自身结构设计的不同产生了种类繁多的车速里程表,即使同一种交通工具也由于测速方法和生产厂家的不同产生了不同型号的车速里程表。种类繁多的车速里程表,不仅减小了车速里程表的适用范围,降低了器件的通用性,给这些交通工具的维修更换带来一定困难,更是由于量产规模的减小增加了车速里程表的价格。 同时市场上销售的大部分车速里程表功能单一,无法满足用户对单里程、总里程、超速报警等功能的需求。正是在此背景下,本设计希望通过设计一种高精度、高可靠性、价格适中、功能丰富且应用范围广泛的车速里程表,来改善这种局面。在本设计中,利用安装在汽车转轴上的测量盘,在汽车行驶中,由霍尔传感器a44e输入采样电平,采用单片机采集和处理这些电平信号,然后计算得到车速及里程信息,用一个六位led数码管显示,从而得到车速里程信息。在里程信息的存储功能上,采用了新型轿车上广泛使用串行eeprom芯片,每隔一秒钟将芯片内的里程信息更新一次,电源掉电的情况下也能保存其中的信息。本作品可以安装于不同类型不同型号的交通工具上,在程序中写入正确的周长值,即可准确测量。同时通过按下不同的按键,可以实现单里程、总里程、温度显示、不同车速的报警等功能。本作品经过试验,基本能达到设计的要求,显示的车速、里程值和计算的理论值完全相同,且报警值很准确。由于采用的芯片都是广泛使用的通用芯片,成本较低,如果量产,单件成本会更低。而且该电子式里程表体积小,功耗低,功能多,稳定可靠,性价比高,在很多领域都能得到广泛的应用,具有较高的经济价值。系统总述1.1系统原理系统主要有六部分组成:霍尔传感器、单片机、独立键盘、六位数码管、芯片、ds18b20温度传感器。系统图如图1.1单片机stc89c52re独立按键霍尔传感器温度传感器led显示存储器at24c02报警图1.1本设计测速及记录行驶里程的方法与古人“记里击鼓”的方法类似。图1.2如图1.2所示,安装在车轮上的强力磁铁随着车轮的运动而做圆周运动,霍尔传感器处于一个强弱交替变化的磁场中,当磁感应强度超过导通阈值时,霍尔电路输出管导通,输出低电平,之后再增加,仍保持导通状态。当外加磁场的值降低到以下时,霍尔电路输出管截止,输出高电平。由以上的分析可知,在车轮转动一圈中,霍尔电路只能导通一次,即输出一个低电平。如果我们知道车轮的周长,利用单片机记录一秒钟内这种低电平的个数,然后就可以算出汽车一秒钟行驶的路程了,也易于求的车速,具体计算如下:设汽车每分钟车轮转动圈数为num汽车每分钟行驶路程为mile(m)汽车车速为speed(km/h)汽车车轮周长为cricle(m)mile=num*cricle; (式1.1)speed=num*cricle*3600/1000; (式1.2)用定时器t0做计数器,定时器t1定时一秒钟,当一秒钟到了以后,在中断程序中计算出车速送到数码管显示并将车辆一秒钟行驶的路程送到存储器中存储。1.2系统功能及按键功能本设计可以实现以下功能:1 实时显示车速。每一秒钟更新一次车速。2显示自安装使用以来车辆行驶的总里程。为车辆的定期保养维护和零部件更换提供依据。3显示自系统上电到任意时刻的单个路程的里程。用户可以了解单次行驶的里程。4可以显示驾驶环境的温度。5不同车速的报警。六个数码管分别在车速不小于40km/h、80km/h、90km/h、100km/h、110km/h、120km/h点亮报警,蜂鸣器在车速不小于120km/h时报警。而这些功能不同的显示结果是通过四个独立按键来转换的,现将其叙述如下: key1:key1按下后,数码管显示车辆行驶的总里程(km),松手后,显示车辆车速(km/h); key2:先按下key1,再按下key2后,数码管显示车辆行驶的单里程(m),key2松手后,显示车辆行驶的总里程; key3:key3按下后,车辆关闭报警系统,key3松开后,开启车辆报警系统; key4:先按下key1,再按下key4后,数码管显示环境温度(摄氏度),key4松手后,显示车辆总里程;1.3产品设计参数及应用范围 各参数测量范围如下: 总里程:0999999km; 单里程:0999999m; 温度:-55+125摄氏度 车速:0.01999.99km/h 本产品对于不同的车速对象需要使用不同安装方法,在实际应用中,还需进一步开发。考虑到本产品价格低廉,但要求较稳定的测速环境,在自行车、摩托车、健身设备等震动小且系统简单的设备安装上最有利用前景。合理的开发后也可用于各种车辆采集数字化的车速信息。2 硬件设计2.1单片机及时钟复位电路2.1.1stc89c52re单片机介绍在这次设计中用到的单片机芯片是stc公司的stc89c52rc 40i-pdip40 1022c1g222.90c单片机,其个字符表示的意义是:stc前缀,表示stc公司生产的产品;8表示该芯片为8051内核芯片;9表示内部含flash eeprom存储器;c表示该器件为coms产品;5固定不变;2表示该芯片内部程序存储器空间的大小,1为4kb,2为8kb,3为12kb。即该数字乘上4kb即是该芯片的程序存储器的大小。 rcstc单片机内部ram(随即读写存储器)为512b; 40表示芯片外部晶振最高可接入40mhz; i表示工业产品,温度范围在-40+85;pdip产品封装型号,表示双列直插式封装; 1022表示本芯片生产日期是10年第22周; c1g22.9c此标号表示芯片制造工艺或处理工艺。 其芯片引脚和实际图像如图2.1:图2.1从实物图中可以看出芯片采用pdip封装形式,下面将对各引脚进行介绍:引脚(见图2.2)主要分为三类:电源和时钟引脚,如vcc、gnd、xtal1、xtal2 编程控制引脚,如rst、psen、ale/prog、ea/vpp i/o口引脚,如p0、p1、p2、p3,四组八位i/o口xtal1(19脚)、xtal2(18脚)外接时钟引脚。rst(9脚)单片机复位引脚。psen(29脚)程序存储器允许控制端,在读外部程序存储器时psen低电平有效。ale/prog(30脚)ale用于控制p0口的输出低8位地址送锁存器锁存起来,以实现地位地址和数据的隔离。ea/vpp(31脚)接高电平时,单片机读取内部程序存储器。当扩展有外部rom时,当读取完内部rom后自动读取外部rom。ea接低电平时,单片机直接读取外部rom。p0口(3932脚)双向8位三太i/o口。可驱动8个ls型ttl负载。p1口(18脚)8位准双向i/o口,可驱动4个ls型ttl负载。p2口(2128脚)8位准双向i/o口,与地址总线相连,可驱动4个ttl型负载。p3口(1017脚)8位准双向i/o口,双功能复用口,可驱动4个ttl型负载。stc89c52rc单片机内部含有由硬件支持的定时器、中断、串行通信功能。这为其应用于各行业设记带来方便。图2.22.1.2时钟复位电路的复位端是一个施密特触发输入端,高电平有效。端若由低电平变为高电平持续两个以上周期,系统将实现一次复位操作。在复位电路中,按一下复位键就是端出现一段时间的高电平。时钟电路由一个.的晶振和两个的电容组成(见图2.3及2.4)。图2.3图2.42.2测速传感器2.2.1传感器的选择红外对管。把红外对管分别安装在自行车车轮的两侧,当车轮转动时,辐条会阻挡红外对管的光路,接收管输出低电平,单片机根据此信号可计算里程、速度等。红外对管的优点是测量精度高,缺点是安装比较复杂和容易受外来光线、灰尘等的影响。开关型霍尔传感器。霍尔传感器是利用霍尔效应把磁输入信号转换成电信号的器件。把开关型霍尔传感器安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔传感器的时候,传感器输出一个无抖动的低电平,单片机根据此信号可计算里程、速度等。霍尔传感器的优点是稳定和安装简易,缺点是成本较高。干簧管。干簧管是一种磁敏的有触点无源电子开关元件,应用在里程表上的原理与开关型霍尔传感器类似,把干簧管安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔传感器的时候,干簧管闭合,单片机根据此信号可计算里程、速度等。干簧管的优点是成本低廉和安装简易,缺点是比较脆弱和不够稳定。综合比较三种器件的性能和价格,本次设计选择价格适中、测量稳定且安装简易的霍尔传感器。2.2.2霍尔传感器工作原理及电路连接a44e霍尔传感器属于开关型器件,其工作电压比较宽(4.5-18v),其输出电平符合ttl电平标准,可以直接接到单片机io口上,而且其最高检测频率可达1mhz。 a44e集成霍尔开关(见图2.5)由稳压器a,霍尔电势发生器b,差分放大器c,施密特触发器d,oc门输出e五个基本部分组成。 在输入端输入电压vcc,经稳压器稳压后加在霍尔电势发生器两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,这与这两者相垂直的方向上将会产生霍尔电势差vh输出,该vh信号经放大器放大后送到施密特触发器整形,使其成为方波输送到oc门输出。当施加的磁场达到工作点时,触发器输出高电压,使三极管导通,此时oc门输出低电压,通常这种状态称为开。当施加的磁场达到释放点时,触发器输出低电压,三极管截止,oc门输出高电压,这种状态称为关。这样两次电压变化,使霍尔传感器完成一次开关动作。图2.5在本设计protues仿真中,用六个不同频率的方波发生器,代替霍尔传感器,演示在不同车速情况下,里程表的车速测量、里程显示及报警情况。将多路选择开关接到p34口,定时器t0记录一秒钟低电平的量,从而计算车速及里程信息。(见图2.6)图2.62.3温度传感器ds18b20ds18b20数字温度计是dallas公司生产的1wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。ds18b20产品的特点:它具有微型化,低功耗,高性能,抗干扰能力强,易配微处理器等特点,特别适合于构成多点温度测控系统。ds18b20采用单线接口,只有一根信号线与cpu连线;不需要外部元件;不需要备份电源、可用数据线供电;温度测量范围从-50摄氏度到125摄氏度,-10摄氏度到85摄氏度时测量精度为0.5摄氏度;通过编程可实现912位的数字值读数方式,在93.75ms和750ms内将温度值转化9位和12位的数字量。ds18b20引脚图及引脚功能介绍序号名称引脚功能描述1gnd地信号2dq数据输入/输出引脚。3vdd可选择的vdd引脚。当工作于几声电源时,此引脚必须接地。ds1820 的内部结构:图2.7 ds1820内部框图图2.7为ds1820的内部框图,它主要包括寄生电源、温度传感器、64 位激光rom 单线接口、存放中间数据的高速暂存器(内含便笺式ram),用于存储用户设定的温度上下限值的th 和tl 触发器存储与控制逻辑、8 位循环冗余校验码(crc)发生器等七部分。 ds1820 的测温原理: ds1820 内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时振荡器的脉冲无法通过门电路。计数器设置为-55时的值,如果计数器到达0 之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。温度表示值为9bit,高位为符号位,其结构如下:在正常测温情况下,ds1820 的测温分辨力为0.5,可采用下述方法获得高分辨率的温度测量结果:首先用ds1820 提供的读暂存器指令(beh)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(lsb),得到所测实际温度的整数部分tz,然后再用beh 指令取计数器1 的计数剩余值cs 和每度计数值cd。考虑到ds1820测量温度的整数部分以0.25、0.75为进位界限的关系,实际温度ts 可用下式计算:ts=(tz0.25) (cdcs)/cd在本设计protues仿真中,与单片机的连接如图2.8图2.8 2.4存储器at24c02at24c02是atmel公司生产的串行eeprom芯片,其存储容量为256*8bit。在断电情况下,仍可保存数据,可对保存的数据存储100年,并可多次擦写,擦写次数可达10万次以上。at24c02的引脚(如图2.9)功能简绍如下:1,2,3(a0,a1,a2)-可编程地址输入端。用于与系统中的同类器件编码。4(gnd)-电源地5(sda)-串行数据输入/输出端。在系统中与单片机的p20口相接。6(scl)-串行时钟输入端。在系统中与单片机的p21口相接。7(wp)-写保护输入端。用于硬件数据保护。当其为低电平时,可以对整个存储器进行正常的读写脚;当其为高电平时,存储器具有写保护功能,但读操作不受影响。该引脚在系统中接地。8(vcc)-电源正端。当时钟线scl为高电平时,数据线sda由高电平跳变为低电平定义为“开始”信号;当scl线为高电平时,sda线发生低电平到高电平的跳变为“结束”信号。在本设计protues仿真中,与单片机的连接如图2.10图2.9图2.102.5键盘单元因为本系统中要调节的信息不多,故只设计了四个独立键盘。(见图2.11)单片机上电后各io口为高电平,当键按下后,与按键相连的io口电平被拉低。各键的功能如1.2中所述2.6显示单元七段led显示器一般都是同时使用几个led显示器,它有两种连用方法:一是每一位都用各自的8位输出口控制,在显示某一字符时,相应的段恒定发光或不发光,这种显示方法属于静态显示,它占用较多的i/o口线。二是动态显示,即将多个7段led的段选端复接在一起,只用一个8位输出控制段选,段选同时加到各个7段led显示器上,通过控制各个显示器公共阳极/阴极轮流接电/接地的方法,逐一轮流地启动各个led。这种方法中,只要恰当地选择点亮时间和时间间隔,就会给人以为是各位led同时显示的假象。这里使用了一个6位动态显示的共阴极数码管显示器。其中led显示器的段选码都由单片机的p0口连接控制,位选码由p12-p17口控制。由定时器t1定时4ms,单片机每4ms点亮一个数码管,由于人眼的视觉暂留效应,感到各位数码管同时点亮了。与单片机的连接如图 2.12图2.11图2.122.7报警电路2.7.1发光二极管电路本部分采用一个蜂鸣器和六个红色发光二极管与单片机相接的方式实现报警。各数码管的报警值分别为40km/h、80km/h、90km/h、110km/h、120km/h。数码管与单片机连接的各io口,在软件运行初始化中,被拉为低电平,当测的车速不小于各报警值时,相应的io口又重新通过软件拉高,正5v电压使该数码管导通。二极管与单片机的连接如图2.132.7.2蜂鸣器电路当基极为低电平时,pnp三极管导通,发射集输出电流驱动蜂鸣器工作。蜂鸣器与单片机的连接如图2.14图2.13图2.143 软件设计 系统的主程序流程如图3.1本系统的控制、运算和管理功能都要通过软件设计来完成,本系统采用模块式设计技术来进行软件设计,整个软件在功能上可分为初始化模块、键盘扫描模块、数据处理模块、报警模块、显示模块、存储模块、温度采集转换模块。下面就各主要模块的功能分别进行说明。开始初始化数据处理是否到一秒是否超速显示相关内容二极管和蜂鸣器报警nny y 键盘扫描显示不同内容图3.13.1键盘扫描程序 键盘采用查询的方式,放在主程序中,当有键按下的时候,程序显示不同的内容。在程序中设不同的标志位,使其显示不同的内容,程序如下:(流程图为3.2) 开始键1按下显示车速键2按下显示总里程显示单里程键3按下报警显示温度键4按下报警取消y y y y nnnn图3.2void keyscan() if(key1=0)/键一按下 if(key4=0)/键四按下 flag4=1;/显示温度 else/键四未按下 flag4=0; if(key2=0)/键二按下 flag1=1; flag2=1;/显示单里程 flag4=0; else/键二未按下 flag1=1; flag2=0;/显示总里程 flag4=0; if(key1=1)/键一未按下 flag1=0;/显示车速 if(key3=0)/键三按下 flag3=0;/取消报警 d1=0; d2=0; d3=0; d4=0; d5=0; d6=0; fm=1; else/键三未按下 flag3=1;/不取消报警 3.2数据处理程序 利用单片机记录1秒钟内车轮转过的圈数num,车轮的周长为c,则在一秒钟内汽车行驶(num*c)m,同时时速为(3600*num*c)/1000km/h。然后在内存中开辟一段区域存储单个里程,每一秒后与先前的值相加后,存储于该区域。在外部存储区中开辟一段区域存储总里程,每一秒后与先前存储在该区域的值相加后再存储于该区域。程序如下:void chuli() if(flag=1) flag=0; /位变量清0 a=count*65536+th0*256+tl0; / 计算脉冲个数 c=a*1*3600/10;/车速暂存 warming();/车速报警 k1=read_add(1);/读取存储器中里程的各位 delay1(1); k2=read_add(2); delay1(1); k3=read_add(3); delay1(1); k4=read_add(4); delay1(1); temp=k1+a;总里程值相加 if(temp255) temp1=temp; k1=temp%256; temp2=k2+temp/256; if(temp2255) temp3=temp2; k2=temp2%256; temp4=k3+temp2/256; if(temp4255) k3=temp4%256; k4=k4+temp4/256; else k3=k3+temp3/256; else k2=k2+temp1/256; else k1=k1+a; write_add(1,k1);/将刷新的数据写入存储器 delay1(1); write_add(2,k2); delay1(1); write_add(3,k3); delay1(1); write_add(4,k4); delay1(1); ntemp=k11+a; if(ntemp255) ntemp1=ntemp;单里程值相加 k11=ntemp%256; ntemp2=k22+ntemp/256; if(ntemp2255) ntemp3=ntemp2; k22=ntemp2%256; ntemp4=k33+ntemp2/256; if(ntemp4255) k33=ntemp4%256; k44=k44+ntemp4/256; else k33=k33+ntemp3/256; else k22=k22+ntemp1/256; else k11=k11+a; b1=c%10; /计算b1位/ c=c/10; b2=c%10; / 计算b2位/ c=c/10; b3=c%10; /计算b3位/ c=c/10; b4=c%10; /计算b4位/ c=c/10; b5=c%10; / 计算b5位/ timecount=0; /重新使t0计数/ count=0; th0=0; tl0=0; tr0=1; 3.3报警程序报警程序比较简单,在超速时,只要在软件中使与二极管相连的单片机io口置一就可以了。当对与蜂鸣器相连的单片机io口置零时,蜂鸣器发生。在软件设计用if语句嵌套的方法实现了报警功能。程序如下:void warming() if(flag3=1)/是否报警 if(c/100=40)/车速超过40km/h d1=1;/第一个数码管亮 if(c/100=80)/车速超过80km/h d2=1;/第二个数码管亮 if(c/100=90)/车速超过90km/h d3=1;/第三个数码管亮 if(c/100=100)/车速超过100km/h d4=1;/第四个数码管亮 if(c/100=110)/车速超过110km/h d5=1;/第五个数码管亮 if(c/100=120)/车速超过120km/h fm=0;/蜂鸣器响 d6=1;/第六个数码管亮 else d6=0; else d5=0; else d4=0; else d3=0; else d2=0; else d1=0; 3.4显示程序本模块主要完成led的动态显示,而动态扫描的频率有一定的要求,频率太低,led将出现闪烁现象。如频率太高,每个led点亮的时间太短,led亮度太低,肉眼无法看清,所以一般取几个ms为宜。这就要求在编写程序时,选通某一位led使其点亮并保持一段时间,本程序中使用的是定时器t1。动态显示子程序的设计要点: (1)建立显示数据缓冲区存放待显示数字在编码表中的次序;(2)编码表各个数字的段选编码;(3)位扫描输出采用移位方法逐位点亮led显示器;(4)延时控制点亮时间和时间间隔。 本系统的显示程序设计成子程序的形式,每调用一次,可以将缓冲区中的数据显示一次,每个字符显示时间为4ms,为了使显示的字符稳定下来,必须反复调用该显示子程序。通过键盘调整,每次只调用其中一段显示程序,程序如下:void display() if(flag1=0)/显示车速 switch(dispcount) / 六位动态扫描显示/ case 0:p1=0xff;p0=tabb1;p1=0x7f;break; case 1:p1=0xff;p0=tabb2;p1=0xbf;break; case 2:p1=0xff;p0=tab10;p1=0xdf;break; case 3:p1=0xff;p0=tabb3;p1=0xef;break; case 4:p1=0xff;p0=tabb4;p1=0xf7;break; case 5:p1=0xff;p0=tabb5;p1=0xfb;break; else if(flag4=0)/键四未按下 if(flag2=0)显示总里程 b=k4*256*256*256+k3*256*256+k2*256+k1; b=b/1000; else /显示单里程 b=k44*256*256*256+k33*256*256+k22*256+k11; m1=b%10; /计算m1位/ b=b/10; m2=b%10; / 计算m2位/ b=b/10; m3=b%10; /计算m3位/ b=b/10; m4=b%10; /计算m4位/ b=b/10; m5=b%10; / 计算m5位/ b=b/10; m6=b%10; switch(dispcount) / 六位动态扫描显示/ case 0:p1=0xff;p0=tabm1;p1=0x7f;break; case 1:p1=0xff;p0=tabm2;p1=0xbf;break; case 2:p1=0xff;p0=tabm3;p1=0xdf;break; case 3:p1=0xff;p0=tabm4;p1=0xef;break; case 4:p1=0xff;p0=tabm5;p1=0xf7;break; case 5:p1=0xff;p0=tabm6;p1=0xfb;break; else /显示温度 displaytemp(); 3.5存储模块程序存储器部分主要解决单片机的里程数据的保存,因而要处理好24c02的字节读写问题。当24c02的时钟线scl为高电平时,数据线sda由高电平跳变为低电平定义为“开始”信号;当scl线为高电平时,sda线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是单片机产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。对于24c02的数据传送,在24c02的i2c总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ack)。每次都是先传最高位,通常从单片机上接收到每个字节后都会做出响应,即释放scl线返回高电平,准备接收下一个数据字节,单片机可继续传送。当单片机发送完一个字节的数据后,接着发出对应于scl线上的一个时钟(ack)认可位,在此时钟内单片机释放sda线,一个字节传送结束,而从器件的响应信号将sda线拉成低电平,使sda在该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,sda线返回高电平,进入下一个传送周期。24c02芯片的读写子程序如下:1 开始、停止、应答信号程序;2 写一个字节和读一个字节程序;3特定物理地址写数据和读数据程序;其程序如下:void start() sda=1;/在时钟线为高电平期间,数据线的一个下降沿为 delay();/起始信号 scl=1; delay(); sda=0; delay();void stop() sda=0;/在时钟线为高电平期间,数据线一个上升沿为 delay();/停止信号 scl=1; delay(); sda=1; delay();void respons() uchar i;/在时钟线为高电平期间, scl=1;/数据线被接受器件拉低,为应答信号 delay(); while(sda=1)&(i250)/等待,直到数据线被拉低或等了较长 i+;/或等了较长时间 scl=0;/释放时钟线 delay();void write_byte(uchar date) uchar i,temp;/在时钟线为低电平期间,数据线电平变化才有效 temp=date;/数据暂存 for(i=0;i8;i+) temp=temp1;/最高位移入cy中 scl=0;/拉低时钟线,为数据写入准备 delay(); sda=cy;/写入数据 delay(); scl=1;/拉高时钟线,为下一次写入准备 delay(); scl=0;/释放时钟线 delay(); sda=1;/释放数据线,为应答准备 delay();uchar read_byte() uchar i,k; scl=0;/释放时钟线 delay(); sda=1;/释放数据线 delay(); for(i=0;i8;i+) scl=1; delay(); k=(k1)|sda; scl=0; delay(); return k;void write_add(uchar address,uchar date) start(); write_byte(0xa0);/写入器件地址 respons(); write_byte(address);/写入物理地址 respons(); write_byte(date);/写入数据 respons(); stop();uchar read_add(uchar address) uchar date; start(); write_byte(0xa0);/写入器件地址 respons(); write_byte(address);/写入物理地址 respons(); start(); write_byte(0xa1);/写入器件地址及数据传输方向 respons(); date=read_byte();/读出数据 stop(); return date;3.6温度采集转换模块程序本模块包含以下子程序:1读或写一个字节子程序;2温度采集转换程序;3温度值显示程序;ds18b20有多个控制指令,但因为本设计中,只有一个温度传感器与单片相连,且使用的功能较简单,只使用了三条指令现简绍如下:1 cch跳过rom。忽略64位rom地址,直接向18b20发温度变换命令。2 44h温度转换。启动ds18b20进行温度转换,12位转换时最长为750ms。结果存入内部9字节的rom中。3 beh读暂存器。读内部ram中的9字节的温度数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平凡的世界信天游鉴赏课件
- 护理证考试题库及答案
- 2025-2030中国打蛋机市场营运能力预测与前景销售渠道咨询报告版
- 2026届内蒙古自治区第一机械制造有限公司第一中学化学高一上期中复习检测模拟试题含解析
- 江西省赣州市宁都县宁师中学2026届化学高二第一学期期中调研模拟试题含解析
- 2026届黑龙江省牡丹江市爱民区第三高级中学化学高二上期中质量检测试题含解析
- 河北省石家庄市藁城区2024-2025学年八年级下学期期末考试数学试卷(含答案)
- 闽教版(三起)(2024)三年级上册英语期中素养培优卷(含答案含听力原文无听力音频)
- 布病培训课件幻灯片
- 2025年金属非金属矿山安全管理人员考试笔试试题附答案
- 2025年住培结业考试题库及答案
- 写字楼租赁合同法律风险及防范指南
- DB42∕T 2151-2023 应急物资储备库建设规范
- 养老机构医养结合交流合作总结范文
- 分包招采培训课件
- 神经刺激器行业深度调研及发展项目商业计划书
- 公司全员销售管理办法
- 工贸行业重大事故隐患判定标准安全试题及答案
- 2025年全国新高考I卷高考全国一卷真题语文试卷(真题+答案)
- 课程思政教学课件
- 2025至2030中国建筑防腐行业发展趋势与前景分析报告
评论
0/150
提交评论