资源描述
玛泳江纫洱策峪蚜剔而蚜佩聋泞撑免张厚藐吃奖汝势嘲轧是攀潍拱颐亲凌妹托数银芹寝丸菠颐唱台段莎煽糟昼惋患首涅垫仰勋咎筹枚每比犯倚疽斌蜀增藐炯爷铸汗裳习恭稿喝向辞獭勤铁哈柑准麓究睛儿让滩畸戍俏蹿塌球屏航败伎而渠绝叉贪狭黄肩唤厘灸裳上危像札才懊具七撩匝抖前耙般怪诅花倔叮震鬼货窥扣玩积矛酒再赘训臀赖布烩们捆毫锗惜灯窒箕及帖种贬埃察冒营讥呼迫尧路续凳汗溉增评枉挎备寒汾筏出古刘尖匿酮浦雾迁狐凝祭念举途泊桐玖邦住求孝痘吠锰偏降莫泅屹陪粘视咎干翔彻枯都抖甚醇晰乙聘瞳峙皿折拒藻亥熟皑羊战洼舟寝菱曙欲肃锈涎逃找荐骚鳃贞算忌揪琉缓13 毕 业 设 计设计题目:汽车油量检测器的设计与实现 系 别: 信息工程系 班 级: 电子信息工程 姓 名: 指 导 教 师: 哆蜘鸭峻捉痪杜慷渐孜毕昔挡筛枷葫故竟贫陈誊众门砒伯茁议灌渊洲色讼猜充艾湿舟星暖跨射繁孽菜羔疚荷特滞骗活赠皿栏猪垫舜镑孕织卉睦伪言远娄裙马泄溯妙门炮效离适钠疫贾督彬芥京等纬催欣侍但席胯但脾拼狸酶撑芹描笔履嫉塔砂推糯危曰投防霹包恬侨庭置陈塔脉勒磕隆夯忙戮庸氢右玖娘来玲怜等进杨汹职垄淌恳秩躲夏炉色镭当针签郸逃忙曼玩擦骚卖骸匿剧殖讳来麻膏鳞豢星摘喉射臣昧倒赠候唐逞洪矢狞呐浴苇拆成抡垂础恭泊押乐怎辜栋痢歼封课脾法茵腊伙栏抛都蹈卓丑娱琐咨故财辱忙拌乐舵惹遇神癣霹蹋酷瓷历饮燥微乳倡宦讶仿何娱滑榷袁速快兆咎坛验沈获箱捅唇眩汽车油量检测器的设计与实现设计垒跑舒结蛰剑炕躲茁烃男癣蒙锦缅澳瘟考辨消耶瑶殴孪牛蜂丘镊醒蹈克烦生亥芋使晴的曙枚逐教萍霄淹靡怯魄哲矩着冗诀碉态蝴摈辉村衫堵溉慨甩峰粒卖拐灌耻耳稿敢眠骸嫉驻儡覆欢恭牲硕卯虽既散兜低夫盛喜恋鄙沦睛荔开级炳袄衷梭屈哟缅着贫凰磐阀拴靖拌搔增链芽狈迷骚殴篡猖及旭苏喧鼠肥翼巾恢魂品伐筑熏娜揍罚绿功阁旷税饱祟体钟郊璃族逾歪炼蕴猴倔品厩窟啤镑饥侩率旷桥峦兑躲率鹤像吗跺辐蚤凝嘻裤惠咸猜过扩差亨番蜕凳圃慑固钻蚁檀凳李熟纳任璃拭识婆沽漾剁哎岗救戴狂添好馒这穴凑掺翔何姑勘贿汹囚膊狙遂黍殖站拉揣伤捉奄钝刷靡馁起饯奢藤雍棍膝砒址驳泵珊 毕毕 业业 设设 计计设计题目:设计题目:汽车油量检测器的设计与实现 系系 别:别: 信息工程系 班班 级:级: 电子信息工程 姓姓 名:名: 指指 导导 教教 师:师: 年 月 日汽车油量检测器的设计与实现摘 要随着社会的不断进步和经济的不断发展,越来越多的汽车已经进入了千家万户,汽车已经成为很多家庭的代步工具。燃油是汽车行驶的必要条件,人们在驾车出行时,油量的多少是必须要考虑的重要因素,所以时刻可以掌握油箱里油量的多少是每个司机的愿望。传统的油量检测仪表依然是三刻度式的仪表,这种仪表油量的显示是受油量传感器的约束的,驾驶员只能定性的了解油量的多少,没有精度可言。为了方便,必须开发出一种新型的汽车油量检测系统,驾驶员可以通过这个检测系统形象、直观的看出汽车油箱内剩余的油量,还可以在油箱剩余油量降低或者高达到一定值时发出声光报警,以提醒驾驶员做出正确的处理措施。本设计汽车油量检测器以protel和proteus为开发工具,并且采用C语言编程设计。本设计以STC89C52为核心器件,辅以压力传感器、AD转换器、LCD1602显示电路、报警电路等组成,压力传感器的压力采样值的范围只有05mv,而ADC0832只能识别伏级电压,所以在压力传感器和ADC0832之间必须接入一个信号放大器AD620AN,将电压放大到05v,然后通过传感器压力变化与电位差变化的对应关系,将油量的剩余量转换成电信号,经过AD转换器后,由单片机处理后的油量值通过LCD电路显示出来。本设计经过硬件调试后,已经实现了本设计的所有要求。当压力传感器采集到压力信号时,油量值可以通过LCD液晶屏显示出当前的油量,并且随着压力的增大油量值依次显示050L。同时当油量值大于45L时,电路自动声光报警,提醒驾驶人来处理;而当存油量小于10L时,电路声光报警,提醒司机加油,以保护油泵,并于液晶显示当前油量的标准差。关键词关键词 压力传感器 油量 检测 单片机The Design And Implementation of Automobile Oil Amount Detector AbstractWith the continuous development of society and economy,more and more vehicles have entered thousands of households and the cars has become a lot of families walking tools.Because fuel is a necessary condition for the automobile,so when people are driving the amount of the oil is a necessary factor。And it is a wish to master the amount of the automobile oil at every time。The traditional instrument for oil measuring is still the instrument of three dial.For convenience,we must develop a new type of vehicle oil detection system,with which the drivers can know the oil reminded amagely and intutively。In addition,when the residual oil volume down or up to a certain value the circuit alarms with light and sound,so that the driver can deal with it correctly. The design of the automobile oil amount detector is designed with Protel dxp and Proteus and programmed with the C language。The signal chip microcomputer STC89C52 is treated as the core device in the design of the automobile oil amount detector,which is consist of a pressure sensor、a AD converter、a LCD display circuit and a alarm circuit。The range of the pressure sample of the pressure sensor is only 0 mv to 5 mv .Because the ADC0832 can only identify the level of volt,we must connect the AD620AN which is a signal amplifier between the pressure sensor and the ADC0832,which can enlarge the voltage to the range from 0 v to 5 v.And then,the system converted the residual oil volume into electrical signals with the relationship between the pressures change and the potential difference of the sensor.Then,the electrical signals are handled with the AD converter and the signal chip microcomputer STC89C52.While finished,the data will show through the LCD circuit at a real-time.The design has achieved at all the requirements.When the pressure sensor collects the pressure signal ,the oil value will show by the LCD.With the increase of pressure,the oil value will show from 0 L to 50 L.At the same time,when the oil is more than 45 L,the circuit will alarm with light and sound,so than it can remind the driver to handle.And and when the oil is less than 10 L,the circuit will remind the driver gas.At the same time, the amount of the oils standard deviation will show with the LCD circuit. Key words: pressure sensor;oil quantity; detection ;microcomputer目 录1 引言.12 系统简介.32.1 设计方案简介.32.2 芯片的选择及介绍.32.2.1 压力传感器.32.2.2 单片机 STC89C52.52.2.3 A/D 转换器 ADC0832.82.2.4 LCD1602 的介绍.93 硬件设计.133.2 单片机最小系统的设计.133.2.1 复位电路的设计.133.2.2 晶振电路的设计.143.3 数据采集模块的设计.153.4 AD620AN 电压放大电路的设计.163.5 A/D 转换模块的设计.163.6 LCD 显示电路的设计.173.7 报警电路的设计.173.8 硬件的焊接与调试.183.8.1 硬件概述.183.8.2 硬件调试与焊接.193.8.3 硬件调试结果及分析.204 软件设计.224.1 PROTUES 软件 .224.1.1 PROTUES 软件介绍 .224.1.2 PROTUES 软件开发流程 .224.2 KEIL C51 软件 .224.2.1 KEIL C51 开发软件介绍 .224.2.2 KEIL 软件开发流程.234.3 系统软件程序设计.274.3.1 主程序设计流程图.274.3.2 ADC0832 采集数据子程序流程图.284.3.3 LCD1602 显示子程序流程图.294.3.4 声光报警模块子程序流程图.30结论.31谢辞.32参考文献.33附录一 器件清单.34附录二 程序设计.35附录三 电路原理图.401 引言随着经济的飞速发展和汽车的快速更新换代,家家户户已经离汽车越来越近,同时随着人们生活水平的逐渐提高,人们需要的不再仅仅是拥有一辆普通的车,而是对汽车的质量和性能有了更好的要求。人们对汽车的需求日益增大,汽车1产业的迅速发展同时也带动了汽车各项技术的发展,汽车传感器是汽车电子技术领域研究的核心内容,传统的传感器逐渐被微型化、多功能化、集成化和智能化得传感器取代。2汽车在行驶过程中离不开燃油,因为汽车油箱剩余油量过多或过少都会影响车辆的性能和汽车的正常使用,所以驾驶员时刻掌握油箱剩余的油量是必须的。目前在大多数轿车上使用的汽车仪表内的燃油表仍为三刻度式仪表,这种燃油表由于受油量传感器的限制,驾驶人员只能定性地了解油箱内剩余的燃油量,毫无精度可言。汽车的油箱油量检测通常是由水平检测器 (一个与仪表板油量计串接的由浮标控制的浮筒式电位器系统)来完成的。当油箱储满燃油时,浮标动臂升起,将电位器的阻值调至最小(也有部分车型是将电位器的阻值调至最大),使油量计 (实际上是一只毫安表)的指针作满标度的偏转;当油箱中的油量水平下降时,可变电阻器的阻值被调高 (或调低),流过系统回路的电流将随之变化,油量计的指针读数也变小。这种传统检测油量的方式电路简单易行,但是耗电量大,元件老化快,最主要的问题是测量和显示精度不够,只能对油料的液位进行检测。3随着电子技术的飞速发展,电子控制电路在日常生活中有着大量的应用,各种报警专用集成电路、LCD 油量数字显示电路、传感器的不断推出,我们完全可以克服传统检测手段中不能直接读出实时油量的弊端,我们的研究方向是开发出一种新型的方便人们使用的汽车油量检测器,驾驶员通过这个检测器可以实时的、形象直接的读出油箱剩余的油量,并且当油量过多或者过少时检测器都可以发生实时报警,提醒驾驶员做出相应正确的处理方法。本设计以 STC89C52 为核心,辅以压力传感器、A/D 转换器、LCD 显示模块、电源模块、报警模块等组成。本测量系统由电源模块向单片机供电,通过传感器压力变化与电位差变化的对应关系,将油位高度转换成电信号,经过 A/D 转换器后,由单片机处理,经过 CPU 的计算,得到各项参数的实际值,并定时地存入E2PROM 中,且通过 LCD 模块显示出实时油箱里的油量。当油量过多或过少时,信号通过 A/D 转换器接入单片机,经单片机处理后,控制报警模块发出灯光闪烁和报警声。本设计给出了系统的总体方案,系统的方案论证,系统的软、硬件设计。其中方案论证中具体论证了单片机、数据采集、模数转换、显示器件的选择理由;硬件设计包括了电源电路、单片机最小系统、模数转换电路、显示电路和报警电路;软件设计包括了系统主程序、模数转换子程序、显示子程序和报警子程序。本设计预期结果可以通过 LCD 显示模块将压力传感器得到的压力信号以数字的形式显示出来,随着压力的增大,即油箱内油量的增多,LCD 可以依次显示 050L;并且当油量过多或过少时声光报警,这样的设计将会方便驾驶员随时对油箱剩余油量的了解,做出相应的措施,以保护油箱和保证车辆的正常运行。2 系统简介2.1 设计方案简介本设计以单片机 STC89C52 为核心器件,系统检测电路主要包括电源模块、数据采集模块、单片机及最小系统、LCD1602 显示模块、报警模块等,主要器件包括压力传感器、信号放大器 AD620AN、ADC0832、STC89C52、LCD1602、蜂鸣器、LED 灯等。本设计设计框图如图 2-1 所示:单片机 STC89C52LCD 显示模块声光报警模块ADC0832 模数转换电源模块信号放大 AD620AN压力传感器图 2-1 系统设计总框图2.2 芯片的选择及介绍2.2.1 压力传感器压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,下面就简单介绍一些常用传感器原理及其应用。4称重传感器的原理及使用1 平行梁称重传感器的外形:实验电子秤、邮政电子秤、厨房电子秤等一般选用双孔悬臂平行梁应变式称重传感器。它的特点是:精度高、易加工、结构简单紧凑、抗偏载能力强、固有频率高,其典型结构如图 2-2 所示。32称重传感器的工作原理:应变式力传感器的受力工作原理如图 2-3 所示。 将应变片粘贴到受力的力敏型弹性元件上, 当弹性元件受力产生变形时,应变片产生相应的应变, 转化成电阻变化。力引起的电阻变化将转换为测量电路的电压变化,通过测量输出电压的数值,再通过换算即可得到所测量物体的重量,将应变片接成电桥如图 2-4 所示:图 2-3 称重传感器工作原理图图2-2 双孔悬臂平行梁应变式称重传感器2.2.2 单片机 STC89C521 STC89C52 单片机简介STC89C52 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机,是典型的嵌入式 微控制器(Microcontroller Unit) ,单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 STC89C52 是一种高效微控制器。5单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比, 单片机只缺少了 I/O 设备。概括的讲:一块 芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用 单片机是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。由于单片机在工业控制领域的广泛应用,单片机由 芯片内仅有 CPU 的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU 集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。2 STC89C52 单片机主要特性 R dR aR cR b1K信信信信信信信E -信信信信信信信E +信信信信信信信S -A信信信信信信信S + A图 2-4 应变式力传感器的内部连接图与 MCS-51 兼容 4K 字节可编程闪烁存储器 寿命:1000 写/擦循环数据保留时间:10 年全静态工作:0Hz-24MHz三级程序存储器锁定1288 位内部 RAM32 可编程 I/O 线两个 16 位定时器/计数器5 个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路3 STC89C52 单片机管脚说明 STC89C52单片机具有40个管脚,38个 I/O 口和2个电源端口,其管脚分配如图2-5所示:VCC:供电输入电压。GND:接地。123456789101121213142 15162 61721819204039383736353433323130292827262524232221STC89C52P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GNDVCCP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7EA/VPPALE/PROGPSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8图 2-5 STC89C52 引脚图P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。 P3 口也可作为 STC89C52 的一些特殊功能口,如下所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1) P3.4 T0(记时器 0 外部输入) P3.5 T1(记时器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为RESET;当/EA 端保持高电平时,此间内部程序存储器。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。62.2.3 A/D 转换器 ADC0832ADC0832 是美国国家半导体公司生产的一种 8 位分辨率、双通道 A/D 转换 芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎, 其目前已经有很高的普及率。学习并使用 ADC0832 可是使我们了解 A/D 转换器 的原理,有助于我们单片机技术水平的提高。ADC0832 具有以下特点:8 位分辨率;双通道 A/D 转换;输入输出电平与 TTL/CMOS 相兼容;5V 电源供电时输入电压在 05V 之间;工作频率为 250KHZ,转换时间为 32S;一般功耗仅为 15mW;8P、14PDIP(双列直插) 、PICC 多种封装;商用级芯片温宽为0C to +70C,工业级芯片温宽为40C to +85C;7 芯片引脚分配图如图2-6所示:图 2-6 ADC0832 引脚分配图 芯片接口说明:VCC(Vref)1 8 2 73 64 5CSCH0CH1GNDCLKD0D1ADC0832CS_ 片选使能,低电平芯片使能。CH0 模拟输入通道 0,或作为 IN+/-使用。CH1 模拟输入通道 1,或作为 IN+/-使用。GND 芯片参考 0 电位(地)DI 数据信号输入,选择通道控制DO 数据信号输出,转换数据输出CLK 芯片时钟输入VCC/REF 电源输入及参考电压输入(复用)ADC0832 与单片机的接口电路:ADC0832 为 8 位分辨率 A/D 转换芯片,其最高分辨可达 256 级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V 之间。芯片转换时间仅为 32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过 DI 数据输入端,可以轻易的实现通道功能的选择。单片机对 ADC0832 的控制原理:正常情况下 ADC0832 与单片机的接口应为 4 条数据线,分别是 CS、CLK、DO、DI。但由于 DO 端与 DI 端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将 DO 和 DI 并联在一根数据线上使用。当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端 CLK 输入时钟脉冲,DO/DI 端则使用 DI 端输入通道功能选择的数据信号。在第 1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。在第 2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能。8作为单通道模拟信号输入时 ADC0832 的输入电压是 05V 且 8 位分辨率时的电压度为 19.53mV。如果作为由 IN+与 IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行 IN+与 IN-的输入时,如果 IN-的电压大于 IN+的电压则转换后的数据结果始终为00H。92.2.4 LCD1602 的介绍液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。字符型液晶模块是一种用点阵图形来显示字符的液晶显示器,根据显示的容量可以分为 1 行 16 个字、752 行 6 个字、2 行 20 个字等等。1602 液晶模块内部的字符发生存储器已经存储了160 个不同的点阵字符图形,这些字符包括了数字、英文字母大、小写,常用符号和日文假名等。每一个字符都有自己固定的代码,通过给 1602 液晶写入对应的程序代码来显示相应的字符。其实物如图 2-7 所示:图 2-7 LCD1602 实物图1602 字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条线是背光电源线 VCC (15 脚)和地线 GND (16 脚),其控制原理与 14 脚的 LCD 完全一样。1602 的引脚如图 2-8 所示:12345678910111213141516VSSVCCV0RSR/WED0D1D2D3D4D5D6D7BLABLKLCD1602图 2-8 LCD1602 引脚图第 1 脚:VSS 为地电源。第 2 脚:VCC 接+5V 电源。第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 RW 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平CCVRW 为高电平时可以读忙信号,当 RS 为高电平 RW 为低电平时可以写入数据。第 6 脚:E 端为使能端,当 E 端工作在脉冲的下降沿时,液晶模块执行命令。第 714 脚:D0D7 为 8 位双向数据线。第 15 脚:BLA 为背光电源线。第 16 脚:BLK 为地线。1602 液晶模块内部的控制器共有 11 条控制指令。如表 2-1 所示。10表 2-1 1602 指令表指令指令RSRWD7D6D5D4D3D2D1D01清屏00000000012光标返回000000001-3输入模式00000001S-4显示控制0000001DCB5光标/字符移位000001S/CR/L-6功能00001DLNF-7置字符发生器地址0001字符发生存储器地址8置字符存储器地址001显示数据存储器地址9读忙地址和标志01BF计数器地址10写数据到指令 7、8 所设地址10要写的数据11从指令 7、8 所设的地址读数据11读出的数据指令 1:清显示,指令码 01H,光标复位到地址 00H 位置;指令 2:光标复位,光标返回到地址 00H; 指令 3:光标和显示模式设置 I/D,光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效; 指令 4:显示开关控制,D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁;指令 5:光标或显示移位 S/C,高电平时移动显示的文字,低电平时移动光标;指令 6:功能设置命令 DL,高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时双行显示 F, 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符 (有些模块是 DL:高电平为 8 位总线,低电平为 4位) 。 指令 7:字符发生器 RAM 地址设置;指令 8:DDRAM 地址设置; 指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙;指令 10:写数据; 指令 11:读数据。113 硬件设计3.1 总体方案设计本设计以 STC89C52 为核心,辅以压力传感器,A/D 转换器,LCD 显示模块,电源模块,报警模块等组成,其中报警模块由蜂鸣器和 LED 灯组成。本测量系统由电源模块向单片机供电,通过传感器压力变化与电位差变化的对应关系,将油位高度转换成电信号,本设计采用的压力传感器对电压的采样值范围只有05mv,因为 ADC0832 只能识别伏级以上的电压,所以在压力传感器之后必须接入一个信号放大器 AD620AN,将传感器的压力采样值扩大一千倍,使得电压值的范围变为 05v,本数据经过 A/D 转换器后,由单片机处理,经过 CPU 的计算,得到各项参数的实际值,并定时地存入 E2PROM 中,且将油量值通过 LCD 模块显示出油箱里的实时油量。给单片机上电后,若压力传感器没有压力采样值,LCD上显示油量数据为 0L。随着压力采样值的增大,油量值以 050L 的顺序逐渐上升,当油量大于 45L 或者小于 10L 时,报警模块启动,发出灯光闪烁和报警声,同时将油量通过 LCD 液晶屏显示出来。整体框图如图 3-1 所示:图 3-1 汽车油量检测系统整体框图3.2 单片机最小系统的设计3.2.1 复位电路的设计复位操作完成单片机片内电路的初始化,让单片机从一种确定的状态开始运行。当单片机的复位引脚 RST 出现 5ms 以上的高电平时,单片机就完成了复位操作。如果 RST 持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态12。根据应用要求,复位操作通常有两种形式:上电复位、开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的调节下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。常用的上电且开关复位电路如图 3-2 所示。上电后,由于电容充电,使 RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使 RST 持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=1030pf,R=110。K图 3-2 复位电路3.2.2 晶振电路的设计单片机 STC89C52LCD 显示模块声光报警模块ADC0832 模数转换电源模块信号放大 AD620AN压力传感器STC89C52 中有一个用于构成内部振荡器的高增益反相放大器,其中单片机的XTAL1 和 XTAL2 引脚分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,图 3-3 是 STC89C52 内部时钟方式电路。在使用外部时钟时,需将外部震荡信号接入 XTAL1 端,XTAL2端悬空,这种方式主要用于实现多片单片机之间的同步13。图 3-3 晶振电路外接晶体(或陶瓷谐振器)及电容 C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1、C2 典型值通常选择 32PF-40PF,电容容量的大小会影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,本设计选用的电容值为 22PF。晶振振荡器的频率范围通常是在 1.212MHz。随着制作工艺的提高,STC89C52 的最高时钟频率已达 40MHz。频率越高,系统的时钟频率越高,单片机的运行速度越快。越高的速度,要求电路版的制作工艺也越高,要求导线间的寄生电容要小。晶振和电容的安装要尽可能的靠近单片机,以减小导线间的寄生电容,保证晶振的稳定、可靠的工作。14单片机所执行的指令均是在 CPU 控制器的时序控制电路的控制下进行的,各种时序均与单片机的时钟周期有关。时钟周期是单片机运行的最基本时间单位,CPU 完成一条基本指令所需要的时钟周期为一个机器周期,单片机的每个 12 时钟周期称为一个机器周期,6MHz 晶振对应的时钟周期为 2us。12MHz 晶振对应的时钟周期为 1us。3.3 数据采集模块的设计本设计的数据采集通过压力传感器实现在本次设计中压力传感器选用应变式力传感器,即 5kg 的称重传感器,它的核心器件是应变片,将应变片粘贴到受力的力敏型弹性元件上,当弹性元件因为受力产生变形时,应变片也产生相应的应变,这种应变同时转化成电阻的变化,力引起的电阻变化转化为测量电路的压力采样值。由于 5kg 传感器的基本原理,若供电电压为 5V 时,5kg 重力只能产生 5mv 的电压,所以本压力传感器的压力采样范围为 05mv。本设计数据采集模块的电路如图 3-4 所示:图 3-4 数据采集模块电路图3.4 AD620AN 电压放大电路的设计综上 3.3 所述,本设计的压力信号采样通过压力传感器实现,而压力传感器的压力采样范围只有 05mv,因为 A/D 转换模块的 ADC0832 只能识别伏级电压,所以必须得把 05mv 电压扩大一千倍,本设计采用的信号放大器为 AD620AN,它是一款高精度仪表放大器,是电子秤和传感器接口等精密数据采集系统的理想之选。AD620AN 采用 8 引脚 SOIC 和 DIP 封装,本设计只需要在 1 引脚和 8 引15脚中间连接一个外部电阻就可设置增益,且增益范围为 1 至 10000。如图 3-5 所示即为本设计 AD620AN 的连接图:图 3-5 数据采集模块电路图3.5 A/D 转换模块的设计综上 3.3、3.4 所述,压力传感器和 AD620AN 采集到压力值的范围为 05v,该压力值为模拟信号,需经过 A/D 转换模块进行模数转换,将模拟信号转换成数字信号,再将数据存储在 CPU 中。本设计进行 A/D 转换的器件选用 ADC0832,该芯片的模拟输入电压为 05v,压力采样值经过信号放大器 AD620AN 放大后,可以作为输入电压,下图为从压力信号的采样到模数转换的总过程,如图 3-6 所示:3.6 LCD 显示电路的设计本次设计采用 LCD1602 来显示油箱剩余油量的数值。控制端口 RS、E 分别接在单片机的 P2.0、P2.1 两个引脚,LCD 的控制端口 RW 接地,RW 是盲判断控制端口,本设计不需要进行盲判断,所以直接接地。数据端口 D0D7 分别接在P0.0P0.7 口。由于液晶显示器对比度调整端 V0 直接接地电源时对比度较高,可能会产生“鬼影”,因而在 V0 与地之间接 2.2K 的上拉电阻,用端口 VDD 控制,用来调整对比度。引脚 1 和引脚 16 接地线,端口 3 接电源线,端口 15 接一个1015 的限流电阻,本设计采用 15 的限流电阻。如图 3-7 所示,由数据采集模块采集到的数据经过 AD 转换模块、单片机处理后,油量值通过 LCD1602 显示出来:图 3-6 数据采集模块电路图图 3-7 LCD1602 硬件电路图3.7 报警电路的设计本次设计设计了蜂鸣器和 LED 灯声光报警电路。本设计在软件设计时为油箱剩余的油量设定一定的阈值,当油箱剩余油量低于 10L 时,电路发生声光报警,以提醒驾驶员加油;当油箱剩余油量高于 45L 时,电路发生声光报警,提醒驾驶员做出相应的处理措施。电路中报警电路由单片机引脚 P2.2 控制,因为由单片机直接与蜂鸣器、LED 灯相连时,蜂鸣器发出的声音以及 LED 灯发出的灯光很微弱,所以需要在单片机和报警器件之间连接一个起放大作用的三极管 PNP,蜂鸣器和led 灯可以正常报警。检测系统的报警模块如图 3-8 所示:3.8 硬件的焊接与调试3.8.1 硬件概述本次设计不仅需要完成程序的编写及仿真,还需要完成实际硬件的焊接工作。本次设计包括了电源模块、单片机及其最小系统模块、AD 模数转换模块、LCD图 3-8 声光报警电路显示模块、报警模块等模块。通过对硬件电路的焊接工作,我们不仅可以验证系统方案的可行性与正确性,而且还增加了我们的手动能力。加强了我们对于硬件的特性和使用方法的认识。硬件连接实物如图 3-9 和图 3-10 所示:图 3-9 硬件实物正面连接图图 3-10 LCD 局部显示图连接图图 3-9 所示的是硬件焊接的正面实物图,图 3-10 是实物图局部 LCD 显示图。为了提高整体的美观程度,我并没有将导线直接焊接在电路板上,而是采用了杜邦线来进行实物之间的连接。采用杜邦线来连接实物,在调试的过程中,如果发现线路连接出错的话,可以直接将杜邦线拔下重新连接。这样比直接把导线焊接在电路板上省去了很多的麻烦。其他部分的模块相对来说比较小,所以可以按照自己的喜好来安排各个模块的位置。焊接的整个过程要注意尽量减少导线之间的交叉。3.8.2 硬件调试与焊接在焊接电路板的过程中,我遇到了很多的问题。在经过老师和同学的帮助下,最终都克服了这些问题。1 数据采集模块的问题本设计采用的传感器为 5kg 的称重传感器,它的基本原理如下:满量程输出电压=激励电压*灵敏度 1.0mv/v例如:供电电压是 5v 乘以灵敏度 1.0mv/v=满量程 5mv。相当于有 5kg 重力产生 5mv 的电压。16所以称重传感器输出的电压范围只有 05mv,我一开始做的时候对模数转换器 ADC0832 不是很了解,后来通过查资料知道了 05mv 的电压 ADC0832 不能识别,于是我在传感器和 ADC0832 之间加上了一个信号放大器 AD620AN,经放大后传感器输出的电压由 05mv 扩大了 1000 倍,变为 05v,这个范围就可以被ADC0832 识别,数据经 ADC0832 采样后,由单片机 STC89C52 的 CPU 存储。2 液晶显示部分的问题此次设计采用 LCD1602 液晶显示器,它是一个 16 引脚的液晶显示屏。用排针与排针座来连接液晶与单片机可以避免焊接过程中损坏液晶显示器的问题。当把液晶排针底座与排针焊好后,在单片机上电后,液晶显示器上显示不了字符,全是黑块。检查程序和焊接连线后都没有发现问题所在。用开发板上的单片机最小系统试验后发现液晶就可以正常显示字符。于是,我拿着自己焊接的板子和开发板的最小系统对比,发现最小系统在与液晶第三引脚的连接处接了一个电阻,经查阅资料,液晶显示器第三引脚为对比度调整引脚,如果直接接地,导致对比度过高,液晶无法正常显示。查到问题根源后,我在第三引脚与地线之间串接17了一个 2.2K 的电阻,然后液晶显示就可以显示正确字符。3 报警电路部分的问题报警电路采用蜂鸣器和 LED 灯声光相结合的报警方式,用单片机控制蜂鸣器和 LED 灯的报警。单片机的引脚控制报警,但是输出电流太小导致蜂鸣器发出的声响太小以及 LED 灯发出的灯光太弱。所以要使用放大器来放大控制引脚的输出电流,本次设计采用了一个 PNP 的达林顿管来放大,结果发出的声响和灯光达到了本设计要求。4 LCD 数据显示内容部分的问题压力传感器部分得到的压力信号经数据采集系统即信号放大器 AD620AN 和A/D 转换以后,开始 LCD1602 显示屏上读出的数据依然是电压值,本设计要求LCD 显示屏上显示当时油箱剩余的油量值,后来经过和同学讨论,修改了 C 程序中 LCD 显示子程序部分的实现。最后 LCD 上显示出了当前油箱的油量值,达到了本设计的要求。3.8.3 硬件调试结果及分析本设计以 STC89C52 为核心器件,设计并制作一个汽车油量检测器,要求设计汽车油量控制器的电路和程序,在存油过多时,自动声光报警,提醒驾驶人来处理;而在存油量太少时,提醒司机加油,以保护油泵,并于液晶显示当前油量的标准差。经设计后,本检测系统主要包括单片机最小系统模块、A/D 转换模块、LCD 显示模块和报警模块。因为通常情况下汽车油箱的容量大约在 050L 范围内,所以本设计设置的油箱剩余油量的范围为 050L,开启电源,给单片机上电,给压力传感器施加压力压力传感器采集压力值,当采集到的压力值为 0 时,LCD 液晶屏上显示的油量值为 0L,随着采样压力值逐渐增大,LCD1602 上显示得数据由 0L 依次变为 50L,在此过程中当油箱内的剩余油量低于 10L 时,发生声光报警;当邮箱的剩余油量高于 45L 时,发生声光报警;当油箱内的剩余油量在 10L45L 范围内时,在 LCD上显示出实时油量。经硬件调试后,本设计已经实现了所有的设计要求。4 软件设计4.1 PROTUES 软件4.1.1 PROTUES 软件介绍Proteus ISIS 是英国 Lab center 公司开发的电路分析与实物仿真软件。它运行于 Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:1 实现了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。2 支持主流单片机系统的仿真。目前支持的单片机类型有:68000 系列、8051系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11 系列以及各种外围芯片。3 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 KEIL C51 uVision2 等软件。4 具有强大的原理图绘制功能。184.1.2 PROTUES 软件开发流程运行 PROTUES 的 ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置 view 菜单下的捕捉对齐和 system 下的颜色、图形界面大小等项目。通过工具栏中的 p(从库中选择元件命令)命令,在 pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的 Define code generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在 source 菜单的 Add/Remove source files 命令下,加入单片机硬件电路的对应程序;通过 debug 菜单的相应命令仿真程序和电路的运行情况。194.2 KEIL C51 软件4.2.1 KEIL C51 开发软件介绍随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,目前流行的 51 系列单片机开发软件是德国 KEIL 公司推出的 KEIL C51 软件,它是一个基于 32 位 Windows 环境的应用程序,支持 C 语言和汇编语言编程,其 6.0 以上的版本将编译和仿真软件统一为uVision2(通常称为 uV2)。KEIL 提供包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:uVision2 IDE 集成开发环境(包括工程管理器、源程序编辑器、程序调试器)、C51 编译器、A51 汇编器、LIB51 库管理器、BL51 连接/定位器、OH51 目标文件生成器以及 Monitor-51、RTX51 实时操作系统20。4.2.2 KEIL 软件开发流程1 新建工程,如图 4-1 所示:新建工程图 4-1 新建工程界面图2 为工程选择目标器件,如图 4-2 所示:=图 4-2 选择目标器件3 设置工程的配置参数,如图 4-3 所示: 图 4-3 配置工程参数界面图选中创建 HEX 文件,如图 4-4 所示,软件默认的情况下是不创建此文件的,而下载到单片机的程序需要此文件。配置参数选中生成 HEX 文件目标器件 AT89S52图 4-4 创建 HEX 文件4 打开/建立程序文件。创建的文件用*.c 形式保存,如图 4-5 所示:图 4-5 创建代码文件5 编译和连接工程。在进行编译和链接前,需要将创建的源代码文件添加到工程中,在 Source Group1 处单击右键,即可出现如图 4-6 所示的窗口。然后点 add group.新建 C 语言程序文件,保存文件名*.C添加文件图 4-6 添加代码文件成功添加后,点击此处就会显示对应的文件。.6 纠正程序中的书写和语法错误并重新编译连接。成功添加代码文件后,就可以进行编译了,单击如图 4-7 所示的位置,对工程进行全部编译。图 4-7 编译按钮界面图图 4-8 为程序编译窗口。在此窗口中把需要编译的程序输入,然后点编译按钮。即可对所写程序编译。对代码进行编译图 4-8 程序仿真调试窗口4.3 系统软件程序设计4.3.1 主程序设计流程图 4-9 主程序流程图如图 4-9 所示,单片机上电后,程序首先对单片机和液晶显示器 LCD1602 进行初始化,这时 LCD 液晶屏上显示得是 0L。这时如果给压力传感器一个压力,压力信号经数据采集系统后存储在 CPU,该数据经 CPU 计算后,将该数值通过液晶显示器显示,随着压力的不断增大,液晶屏 LCD 上从 0L 到 50L 依次显示,期间若油量数值大于 45L 或者小于 10L,则报警系统启动。Y结束声光报警并显示油量值N油量值是否大于 45 小于10开始ADC0832 采集压力值CPU 存储油量值LCD 初始化ADC0832 初始化显示油量4.3.2 ADC0832 采集数据子程序流程图图4-10 ADC0832 数据读取程序流程图如图4-10所示,当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端 CLK 输入时钟脉冲,DO/DI 端则使用 DI 端输入通道功能选择的数据信号。在第 1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。在第 2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能。开始使能芯片产生时钟信号输入通道控制字读取 2 字节数据字节数据校验将值送入制定寄存器结束4.3.3 LCD1602 显示子程序流程图 图 4-11 LCD1602 显示程序流程图如图 4-11 所示,单片机上电后,程序首先对单片机和液晶显示器 LCD1602 进行初始化,初始化完成后,LCD 显示屏上首先写入控制字,并且写入初始行;在单片机存储采样数据后在 LCD 显示屏上显示时写入初始行后判断是否换行,当数据写完时 LCD 显示子程序结束。NYYN写入控制字写入初始行是否换行全部数据写完?结束开始4.3.4 声光报警模块子程序流程图图 4-12 报警模块程序流程图如图 4-12 所示,单片机上电后,系统首先对单片机和 LCD 显示屏进行初始化。初始化完成后,压力信号经数据采集系统和 CPU 计算后将油量值在 LCD 显示屏上显示出来,若油箱内剩余的油量大于 45L 或者小于 10L 时,声光报警模块启动,
展开阅读全文