课程设计说明书-汽车发动机机油压力检测.doc

上传人:西安人 文档编号:3292436 上传时间:2019-08-08 格式:DOC 页数:29 大小:497.01KB
返回 下载 相关 举报
课程设计说明书-汽车发动机机油压力检测.doc_第1页
第1页 / 共29页
课程设计说明书-汽车发动机机油压力检测.doc_第2页
第2页 / 共29页
课程设计说明书-汽车发动机机油压力检测.doc_第3页
第3页 / 共29页
课程设计说明书-汽车发动机机油压力检测.doc_第4页
第4页 / 共29页
课程设计说明书-汽车发动机机油压力检测.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《课程设计说明书-汽车发动机机油压力检测.doc》由会员分享,可在线阅读,更多相关《课程设计说明书-汽车发动机机油压力检测.doc(29页珍藏版)》请在三一文库上搜索。

1、 微机检测系统课程设计目 录摘要 31 引言 41.1 问题提出 4 1.2 任务与分析 42 方案设计 52.1系统方案设计论证52.1.1系统的控制方案设计52.1.2 系统显示方案设计42.1.3 最终方案设计 42.2 最终设计方案总体设计框图 63 系统硬件设计 73.1 AT89C52单片机 73.1.1 AT89C52单片机介绍 73.1.2 选用AT89C52单片机原因93.2 时钟电路 93.3 复位电路 104系统软件设计 114.1主程序框图114.2 蜂鸣器子程序框图114.3显示子程序框图 124.3传感器信号输出子程序框图 135 系统调试过程 155.1原理图和印

2、制板图绘制和检查 155.1.1 在Protel99se绘制原理图并进行相应的ERC检查155.1.2 在Protel99se生成PCB图155.2 Keil程序调试 175.3 Proteus仿真调试 17结论19致谢 20参考文献 21附录一 程序源代码 22附录二 电路原理图和PCB图28附录三 Proteus仿真截图29摘 要我们知道,汽车发动机机油压力与发动机工作好坏密切相关。如何利用已学知识模拟机油压力检测是开始本设计的初衷。本文通过以AT89C52单片机为中心,通过DS18B20模拟产生一个信号,送入单片机进行处理,再从单片机P0口将电平信号送入数码管7SEG-MPX2-CC-B

3、LUE实现动态显示。并在超过安全阈值时由单片机控制蜂鸣器报警。此说明书给出了系统的设计原理图,并在Proteus软件中进行仿真实现设计功能。关键词:AT89C52单片机 数码管 蜂鸣器1 引 言1.1 问题的提出随着进入电气时代,电子测控装置被广泛应用于各种电器机械产品上,本次的任务就是设计一个电子压力检测系统来检测机油压力。1.2任务与分析本次课程设计的主要任务是设计一个硬件电路,用AT89C52单片机处理从DS18B20传感器送来的信号,并输出到数码管7SEG-MPX2-CC-BLUE,进行动态显示,并在超过安全阈值时用蜂鸣器报警。设计的核心是以AT89C52单片机作为硬件电路的核心,通过

4、其定时器来实现定时1秒。先应在protell99se中绘制出原理图并作相应的ERC检查,检查无错误后,在相应地方用文本标出注释;其次根据设计思路确定出相应的程序设计方案,并选择最佳的方案,并在Keil软件里面进行程序的编写和调试;最后在程序调试无误后在Proteus中搭建虚拟的单片机仿真平台,并和Keil实现联调,并在Proteus中实现仿真结果。 2方案设计2.1 系统方案设计论证2.1.1系统的控制方案设计方案1:以单片机AT89C52为核心,通过DS18B20产生数字信号,送入单片机进行处理,电路较为简单。方案2:以单片机AT89C52为核心,通过电源发生器产生模拟信号,经过放大、滤波、

5、A/D转换电路,送入单片机处理,电路相对于方案1较为复杂,连线时容易出错。2.1.2系统显示方案设计方案1:采用静态显示,静态显示是指每个数码管的每一个段码都由一个单片机的I/O口进行驱动。静态显示的优点是编程简单,显示亮度高,缺点是占用I/O口多,如驱动5个数码管静态显示则需要5840根I/O口来驱动,要知道一个89C52单片机可用的I/O口总共才32个。故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。方案2:采用动态显示,动态驱动是将所有数码管的8个显示笔划A,B,C,D,E,F,G,DP 的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独

6、立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。

7、2.1.3 最终设计方案从给方面考虑后,确定方案:以单片机AT89C52为核心,通过DS18B20产生数字信号,送入单片机进行处理,再通过单片机P0口送入数码管7SEG-MPX4-CC-BLUE段码口,通过单片机P2.0和P2.1控制数码管高低位(十位和个位)的显示,进行动态显示。并在超过安全阈值时通过单片机P1.0口控制蜂鸣器报警。此方案电路简单易实现,采用动态显示更能节省大量的I/O口,而且功耗更低,故选此方案。2.2最终设计方案总体设计框图时钟电路XTAL2 P0.00.7 P2.02.1AT89C52单片机P1.07SEG-MPX4-CC-BLUE数码管ADP12蜂鸣器报警图2.1 系

8、统总体设计框图当时钟电路的晶振产生外部振荡脉冲信号送入AT89C52单片机的XTAL2口时,单片机开始以时钟频率为基准,有条不紊地一拍一拍地工作。单片机AT89C52执行编写在其内部的程序,处理从DS18B20送来的信号,并送到P0口输出到数码管显示,并通过其P2.0和P2.1控制对数码管高低位显示的控制。同时在超过安全阈值时通过单片机P1.0口控制蜂鸣器报警。3 系统硬件设计3.1 AT89C52单片机3.1.1 AT89C52单片机介绍AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器

9、(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。图3.1 AT89C52单片机引脚振荡器及定时电路89C52CPU4K字节可编程闪烁ROM256字节*8RAM2个16位定时器/计数器64K总线扩展控制32可编程I/O可编程串行口89C52系列单片机都是以8051为核心发展起来的,具有和51系列单片机及基本结构和软件特征,其内部结构如图3.2所示:图3.2 AT89C52单片机内部框图AT89C52单片机的引脚功能:VCC:供电电压。

10、GND:接地。 P0口:方式驱动8个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1 是一个带内部上拉电阻的8 位双向I/O 口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑 门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT

11、89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),P2口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX RI 指

12、令)时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C52的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输

13、入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有

14、在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工

15、作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.1.2 选用AT89C52单片机原因在该课程设计里设计只要满足开环设计就可以了,在设计里面使用的引脚较少,占用的资源也比较少。而且该芯片是以8051为核心,性能价格比高,且对其内部结构较为熟悉,芯片功能够用而且适用,从而选用AT89C52单片机作为主控芯

16、片。3.2 时钟电路本设计采用内部时钟方式的电路,其电路如图3.3所示。AT89C52单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。电路中的电容C1和C2典型值通常选择为30pF左右。晶体的振荡频率的范围通常是在1.2MHZ12MHZ之间。晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。图3.3 时钟电路图3.3复位电路复位电路通常采用上电自动复位和按钮复位两种方式。本次设计采用按键复位电路。按键复位电路是在按键瞬间接地来实现的,

17、其电路如图3.4所示。按下复位按钮后,电源对按键RESET端维持两个机器周期的高电平实现复位的。 图3.4 复位电路图4 系统软件设计4.1主程序框图程序框图采用的是Microsoft Visio绘制:图4.1 主程序流程图说明:该流程图中,首先对蜂鸣器初始化,关闭蜂鸣器。然后用一个循环while(1)不断地读入压力值,显示压力值,并与安全压力值比较,超出安全压力值控制蜂鸣器报警。4.2蜂鸣器子程序框图图4.2 蜂鸣器子程序流程图说明:该流程图中通过一个for循环让蜂鸣器工作。当蜂鸣器工作后,通过延时,实现喇叭一段时间的响,同时取反电平,并延时,让喇叭不响一段时间。这样重复,可实现间隙的报警声

18、。4.3显示子程序框图图4.3 显示子程序流程图说明:该流程图中首先对P2.0和P2.1口清零,再分别通过选通P2.0和P2.1口控制数码管的高位(十位)和低位(个位),并调用延时子程序进行动态显示。4.4传感器信号输出子程序框图图4.4 传感器信号输出子程序框图说明:该流程图中,首先对传感器DS18B20初始化,然后通过输入一个增大或减小的控制信号,使其中的初值发生变化,同时读出这个改变后的值,再通过vout端输出到单片机。5 系统调试过程 通过上面的设计,设计已经基本完成。下面主要实现Protell99se的原理图、印制板图的绘制和做相关检测,对Keil进行相应的检查和调试,并用Prote

19、us对所设计系统进行仿真。5.1原理图和印制板图绘制和检查5.1.1 在Protel99se绘制原理图并进行相应的ERC检查打开Protel99se,绘制系统的原理图。原理图包括能输出时钟电路,驱动电路以及复位电路。绘制完成的原理图如图5.1:图5.1 原理图的绘制绘制完原理图之后,对原理图进行同一网络命名多个网络名称检测、未连接的电路标号检测、未连接的电源检测、电路编号重号检测、元件编号重复检测等检测。ERC检测结果如图5.2:图5.2 ERC电气规则检查5.1.2 在Protell99se生成PCB图在创建完原理图后,对各元器件的引脚进行封装,在原理图中创建网络表(NET),然后再Prot

20、el中新建PCB图并加载网络表。加载网络表截图如图5.3所示:图5.3 加载网络表对于生成的PCB图中各器件进行调整,并布线,最终生成PCB图。结果如图5.4所示:图5.4 生成PCB图5.2 Keil程序调试程序调试结果如图5.5所示:Creating hex file from “机油压力控制”表明 .hex文件创建成功。“机油压力控制”- 0 Error(s),5 Warning(s)表明文件编译结果没有错误。图5.5 程序调试结果5.3 Proteus仿真调试在Proteus中建立仿真图。按下开始仿真按钮,开始进行仿真实验,结果如图5.6,图5.7所示:图5.6 Proteus仿真图(

21、正常运行)图5.7 Proteus仿真图(报警状态)仿真电路图中实现对压力检测的控制,输出到数码管实现动态显示。当输入信号大于32时,数码管就会闪烁,同时蜂鸣器就会报警。仿真虽然能运行,但在实际电路中,还需要加入其它的一些电路才能保证单片机能正常工作,实现其功能。 结 论通过DS18B20产生一个数字信号输入到AT89C52单片机中进行处理,再通过单片机P0口送入数码管7SEG-MPX4-CC-BLUE段码口,通过单片机P2.0和P2.1控制数码管高低位(十位和个位)的显示,进行动态显示。并在超过安全阈值时通过单片机P1.0口控制蜂鸣器报警。在设计里面刚开始为了要求程序的完善性和适用性,采用了

22、汇编语言进行编译,其相比于C程序编译其结果导致程序较大,往往在进行编译的时候不会报错和警告,但是在虚拟的Proteus仿真中往往会出现超出ECU负荷的错误报告。所以后来改用C语言编程。也得知在进行单片机软件仿真时,应尽量使程序精简。本次设计由于时间较为仓促,对于单片机定时器的控制,而在实际的应用中往往需要对其进行扩展应用,对于这些知识,我还只是只了解其表面,这需要下来再去深究。在本次课程设计里面,我把电路和单片机必备的一些基本操作技能再次熟悉了一遍,虽然对于课程设计没有太大必要,也占用了一些时间,但是我个人觉得这么做是值得的,也为我即将进入工厂开始实际工作有了基本理论保障。对于机油压力检测,我

23、只进行了最简单的程序编写和仿真,而往往在实际中是作为一个系统中的很小子环节来进行应用的,所以还需要我进一步学习更多的单片机及相关测试传感器知识。致 谢 在本课程设计资料搜集期间,他人的研究资料对我提供了莫大的帮助,这里表示感谢。值此即将完成课程之际,我要衷心地感谢xx老师。在课程设计过程中,得到了她的精心指导和热情帮助,她的一些建议和意见给我很深的启发。我还要感谢在编写程序以及应用软件仿真过程中给我提供帮助的xx同学。在他们的帮助下,我顺利地完成了本次课程设计,感觉到了团队合作的力量所在,在此由衷感谢。参考文献1谭浩强.C程序设计(第三版)M.北京.清华大学出版社.2005(2007重印)2

24、张毅刚,彭喜元等. MCS-51单片机应用设计(第3版)M.哈尔滨.哈尔滨工业大学出版社.2001.3徐琤颖.Protel99SE EDA技术及应用.M.北京.机械工业出版社.2009.1重印4古辉,刘均等.微型计算机接口及控制技术.M.北京.机械工业出版社.2009.1附录一 程序源代码#includesmg.h#include#includedelay.hunsigned char code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/设置共阴极显示段码voi

25、d display(uchar yali)/显示子程序D=1; smg3=0;smg2=0;smg1=0;P0=smg_duyali/10;D=0;delay_50us(50);D=1;smg2=0;smg1=1;smg3=0;P0=smg_duyali%10;delay_50us(20);D=0; #includebeep.h#includeds18b20.hvoid beepon(void)/打开蜂鸣器报警子程序int i;for(i=0;i0;t-)for(j=19;j0;j-);void delay_50ms(uint t)uint j;for(;t0;t-)for(j=6245;j0

26、;j-);#includeds18b20.hunsigned char vout; void delay(uint t)/信号输入程序 while(t-);/t-一次大约9us /*-ds18b20初始化- */ void init_ds18b20(void) uchar n;vout=1; /DQ复位delay(8); /稍作延时vout=0; /单片机将总线拉低delay(80);/延时要求大于480us小于960us ,发出一个复位脉冲 vout=1;/拉高,释放总线,构成上升沿,delay(20);/等待15US后,ds18b20发出一个60240us存在脉冲n=vout;/检测是否存

27、在,若DQ=1,存在delay(30); /*-写一个字节- */ void write_byte(uchar dat) uchar i;for(i=0; i=1;/右移一位 delay(4); /*-读一个字节- */ uchar read_byte(void) uchar i,value=0;for(i=0;i=1; vout=1;if(DQ)value|=0x80;delay(8);return (value); /*-读取信号值- */ uchar readtemperature(void) uchar a=0,b=0;init_ds18b20();write_byte(0xcc);w

28、rite_byte(0x44);delay(300);init_ds18b20();write_byte(0xcc);write_byte(0xbe);a=read_byte();b=read_byte(); b4;return (b); #include ds18b20.h#includebeep.h#includesmg.h#includedelay.h#define almyali 32 /压力报警器,高于29MPA时报警void main()/主程序 unsigned char yali; beepoff(); while(1) yali=readtyali(); display(yali); display(yali); display(yali); display(yali); display(yali); if (yalialmyali) beepon(); display(yali); if(yali0 & yali32) beepoff(); display(yali); 附录二 电路原理图及PCB图图附2.1 电路原理图图附2.2 电路PCB图附录三 Proteus仿真截图图附3.1 Proteus仿真图- 28 -

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1