基于单片机技术的酒精浓度检测

上传人:沈*** 文档编号:59646097 上传时间:2022-03-04 格式:DOCX 页数:37 大小:427.72KB
收藏 版权申诉 举报 下载
基于单片机技术的酒精浓度检测_第1页
第1页 / 共37页
基于单片机技术的酒精浓度检测_第2页
第2页 / 共37页
基于单片机技术的酒精浓度检测_第3页
第3页 / 共37页
资源描述:

《基于单片机技术的酒精浓度检测》由会员分享,可在线阅读,更多相关《基于单片机技术的酒精浓度检测(37页珍藏版)》请在装配图网上搜索。

1、 论文题目:基于单片机技术的酒精浓度检测学 院:电子工程学院年 级:(黑体三号字)专 业:(黑体三号字)姓 名:(黑体三号字)学 号:(黑体三号字)指导教师:(黑体三号字) 年 月 日摘要本文以AT89C51单片机为控制核心,配合ADC0832转换芯片,Arduino MQ-3酒精传感器,LED和蜂鸣器组成了酒精浓度传感系统。在硬件电路上完成了对AT89C51单片机的最小系统的搭建,其中包括电路的连接以及各个部位器件的选择,完成了对ADC0832的电路设计使其能够实现模拟数字的转换。实现了LCD1602液晶与单片机的通信电路,使LCD1602液晶能够作为本套系统的实时显示模块顺利显示实时数据值

2、。在软件上使用了Altium designer设计电路原理图,Multisim 11实现模拟电路仿真,为电路制作提供了坚实的理论基础。在模拟放大部分使用了S9013三极管,顺利完成了使用数字信号控制模拟器件的功能。关键词AT89C51;ADC0832;Arduino MQ-3酒精传感器Abstract In this passage,we use AT89C51 MCU as the system controller core, combined with ADC0832 convert chip, Arduino MQ-3 alcohol sensor and LED , set up t

3、he platform to detect the dense of the alchol in an area.On the one hand, we accomplished the least system about 51 MCU and the design of ADC0832 convert circuit. Through the hardware, we can read the value from ADC0832 and display the value on LCD1602, which is the real-time display module to the s

4、ystem.On the other hand, we use Altium designer to draw up the picture about the whole circuit, and use to finish the get the value about the devices by reMultisim 11.Baed on the theory, wecan use S9013 transistor to amplify the current to drive the LED and BUZZER, thus, we can use the digital signa

5、l to control the analog circuitKey wordsAT89C51;ADC0832;Arduino MQ-3 alcohol sensorII基于单片机技术的酒精浓度检测目录摘要IAbstractII第一章 绪论31.1传感器的发展31.2 单片机及微处理器31.3本论文研究的主要内容及意义3第二章 系统设计52.1 系统功能52.2 器件选择52.2.1 传感器探头52.2.2显示模块62.2.3报警部分72.2.4 核心控制模块8第三章 硬件设计113.1 51单片机最小系统113.2 AD转换电路123.2.1 AD转换原理123.2.2 电路连接133.3

6、报警电路143.3.1 LD驱动电路143.3.2 蜂鸣器驱动电路163.4 液晶显示电路17第四章 软件设计194.1 单片机C语言编程194.2 KEIL开发环境204.3 系统流程21结 论23参考文献24附录一26附录二32致谢33第一章 绪论1.1传感器的发展随着电子技术的日益进步,传感技术也在大跨步的前行。基于各式各样的传感元器件能够测定人们生活中几乎所有的物理量1。光纤传感器2,半导体传感器3,化学物质传感器等等4,已经成为人们感知世界5,感知自然,认识世界,认识自然所必须的设备。从简单的物理量来说6,光纤传感器所做的光极限测量能够检测到皮米甚至飞米数量级的微位移7,从较为复杂的

7、物理量来看,半导体传感器能够测定稳定以及变化的磁场,这是人们能够进一步发展的标志8。无论是各种各样的传感元件,还是形态各异的传感器模型,都在不断挑战,不断做更新,根据人们的需要,传感器的世界会更加丰富多彩。1.2 单片机及微处理器随着电子技术的不断发展,人们生活中各式各样的自动化设备层出不穷,无论是大到太空飞船,载人航天,还是小到手机,MP3等等电子设备都在朝着自动化,方便化,简洁化的方向发展9。这一功劳无疑是单片机革命性的出现,是电子世界日益壮大与完善,从最早的 1位布尔型单片机,到现在大型的32位ARM嵌入式系统,都是单片机在历史上留下的痕迹10。二十一世纪是数字化时代,几乎人们感知的世界

8、都存在各种各样的数值,人们通过这些数值的大小来比较周围环境11,感知所要提取的信息12。数字信息化也是单片机发展所造就的产物13。现在的微处理器朝着小型化,高速化,多功能化不断进步,不断提高,不断发展,我们的生活也因为这些技术的进步而得到较大的改善14。51单片机作为一款经久不衰单片机内核,因其过硬的系统稳定性在航天,工业控制等重要场合扮演者重要的角色,又因其低廉的制作成本与简单的使用流程,是他在简单的仪器中占有一席之地15。所以未来无论嵌入式系统亦或单片机的发展如何,我们都要重视51单片的性能,充分发挥传统单片机的优势。1.3本论文研究的主要内容及意义随着我国的改革开放政策实施,信息化全球化

9、的步伐加快,我国的科技经济实力也在日益壮大起来,人民的物质文化生活水平逐渐体高,汽车几乎成为了与多人的通用出勤工具16。说到驾车我们就不得不谨慎小心,因为这不单单关系到个人的安危,也可能会对周围的人造成伤害17。其中最严重的问题就是酒后驾车,如何杜绝酒后驾车是当今社会面临的一个难题。目前来说交警用的酒后驾车监测装置造价比较昂贵,大多是数千元甚至上万元,最主要的是操作复杂,很多平民百姓很难正常使用。这次我们开发一套操作简单,便于大多数人使用的酒精浓度报警系统,能够解决很多生活中的问题。最主要的就拿酒后驾车来说,这套系统的设计具有体积小巧18,供电简单,操作方便,集成度高等特点,也就是说这个小系统

10、只需要3节5号电池就能安装在任意场所,比如说出租车内,酒店门口旁边,当系统处于待机监测时就能够检测到周围的酒精浓度值,如果超过阈值便发出强烈的声光报警,这样的话周围的人就能够知道那里酒精浓度比较高,不回去座酒精浓度高的司机开的车。除了这点以外,这个系统能够检测到大气中的酒精浓度,在易燃易爆以及存放干燥物品的仓库内,我们需要实时对酒精浓度进行监控测量以保证周围的大气内部不会因充满酒精发生危险。这套系统的另一大特色就是集成度高19,如果但从传感探头的大小来说不超过5厘米见方,也就是说这个器件完全可以集成到其他传感报警门禁系统中,另一方面,其他的报警系统也可以直接与这个系统构成双保险开关甚至是带优先

11、级智能保险开关来检测控制我们需要知道的物理量20。酒精浓度报警系统这么看来有着广泛的市场空间与发展前景。全文共分为四章,主要内容如下:第一章:介绍了传感器以及传感元器件的发展历史,发展现状,单片机嵌入式系统的特点、优点以及未来的发展趋势。第二章:重点介绍系统的设计思想,整体功能框图,对实现各个功能模块的器件选型进行了详细的说明,深入分析了各个模块的作用。第三章: 主要介绍系统的硬件电路设计,包括核心电路的连接,各个模块驱动电路的设计原理。 第四章:介绍了单片机编程平台的搭建,如何进行单片机开发,如何使用C语言编写系统程序以及整体系统的流程图,软件结构设计思想。第二章 系统设计2.1 系统功能5

12、1单片机酒精浓度报警系统如图2-1所示。本套系统的作用是完成对酒精浓度的检测并将模拟的酒精浓度值做量化处理,设定阈值并完成报警提示功能。图2-1系统框图首先,系统经电源模块供电使各个模块工作如图2-1,进入初始化状态。系统初始化之后,传感器探头开始以扫描方式检测周围酒精浓度并向核心控制CPU发出数据信号,CPU接到数据信号之后开始做算法处理,将此时的传感器数据量化,量化的数据需要与标准进行比对,换算成统一的酒精浓度标准。此时的数据经过逻辑判断,与用户设定的与之相比对,如果大于设定阈值就会将信号传送给报警模块。显示模块用于实时显示CPU所接受的数据,方便工作人员实时监测。 2.2 器件选择2.2

13、.1 传感器探头传感器探头我们选用Arduino MQ-3酒精传感器。这个传感器机械强度高,便于各种地方安装,电气特性好,驱动起来简单,通信协议符合TTL电平标准,适于和各种芯片进行直接通信,探测特性好,测量数据精准。另外,该传感器具有信号输出指示灯指示功能,方面直接从探头上确认工作状态。该传感器支持双路信号输出,模拟量与数字量可切换,对乙醇蒸汽具有很高的灵敏度和良好的选择性,具有长期的使用寿命和可靠的稳定性,快速的响应恢复特性;等特点表2-1传感器参数特性加热电压 50.2V(ACDC)工作电流140mA回路电压10V(最大DC 15V)负载电阻5K(可调)检测浓度范围10-1000ppm清

14、洁空灵敏度1.5V气中电压3%响应时间1S(预热3-5分钟)2.2.2 显示模块显示模块部分我们选用LCD1602液晶显示屏作为系统的显示界面。这款液晶是一款通用型液晶显示器,能够显示两排各16个ASIC字符。这个液晶模块主要由HD4470显示控制芯片驱动,这个芯片内部集成了ASIC码字符集与控制指令集,便于CPU控制芯片操作液晶显示。图2-2 LCD1602实物图这款液晶具有显示亮度高,背光可调,操作简单,操作时序速率要求低等优点,因为驱动芯片HD4470为一款8位数据芯片,也就是说他能够很好地与8位单片机之间完成数据通信,并且相互之间电平兼容。这款液晶留给我们的同样是2.54mm的DIP封

15、装接口,我们同样使用万用板进行电路焊接并用杜邦线级联就能是使系统正常工作。2.2.3 报警部分系统的报警部分我们选用声光报警系统,这种双保险能够保证如果有一路报警失灵的话另一路正常维持系统运转。另外声光报警能够相互弥补之间的不足,无论是在各种场合都能够保证系统正常工作。声光报警模块的元器件我们采用蜂鸣器加上LED共同作用,从驱动源上来看,这两款器件都属于电流驱动型,电流驱动性器件相比于电压驱动型器件有很多优点,它能够不改变负载的阻抗,减小了电源端的带负载压力。LED的内在特征决定了它是最理想的光源去代替传统的光源,它有着广泛的用途。体积小,基本上是一块很小的晶片被封装在环氧树脂里面,所以它非常

16、的小,非常的轻。LED耗电非常低,一般来说LED的工作电压是2-3.6V。工作电流是0.02-0.03A。这就是说:它消耗的电不超过0.1W。 在恰当的电流和电压下,LED的使用寿命可达10万小时。 高亮度、低热量、 环保LED是由无毒的材料作成,不像荧光灯含水银会造成污染,同时LED也可以回收再利用。红光LED含有大量的As(砷),剧毒。坚固耐用LED是被完全的封装在环氧树脂里面,它比灯泡和荧光灯管都坚固。灯体内也没有松动的部分,这些特点使得LED可以说是不易损坏的。 可控性强,可以实现各种颜色的变化。蜂鸣器结构简单,驱动方便,只要是通过蜂鸣器的电流达到额定值蜂鸣器就能发出声音,蜂鸣器发出声

17、音的特性与流过蜂鸣器的电流特性相关,换句话说如果我们想要改变蜂鸣器的声音,使蜂鸣器有节奏性变化,甚至使用蜂鸣器奏出一段美妙的音乐都只需要改变电流,操作IO口信号来完成。2.2.4 核心控制模块AT89S51是和AT89C51都是一款具有高性能低功耗的CMOS8位,其内部由计数器/定时器、串行口、I/O、程序存储器、数据存储器、中央处理器等部分组成。封装方式分为三种,分别是PDIP、TQFP、PLCC,基于这三种封装形式基本上可以覆盖大部分应用。同时内部还有2 个看门狗(WDT)电路,内部时钟振荡器。所谓振荡电路简单的说就是指一个频率源,一般用在锁相环中。具体地说就是在外部没有信号的情况下振荡电

18、路本身就可以将直流电能转化为交流电能的装置。通常有正反馈和负反馈两种型号,作用就是在电源稳定的情况下产生高频。时钟振荡电路和外部晶振电路配合使用就达到了为单片机提供时钟的功能。单片机内部组成如图图2-3 单片机内部结构图如图2-3所示为51单片机内部基本结构,清晰地反映了51单片机内部的丰富资源。我们这次系统设计是要实现对酒精浓度信号的采集,数字信号分析,以及控制1602液晶显示,主要使用单片机的可编程IO口部件。本次设计选用的单片机具有两个功能,分别是控制功能和运算功能。中央处理器内部有运算器和控制器两个部分。运算器由算术逻辑运算部件ALU、累加器、暂存器程序状态字寄存器PSW、BCD码运算

19、调整电路组成。控制器由程序计数器PC、指令寄存器、指令译码器、定时控制与条件转移逻辑电路等组成。 数据存储器:本次设计选择的单片机中的数据存储器拥有128bytes的存储空间,这样大小的存储空间基本上可以满足一般的设计需求。但是不能保证所有满足所有的应用场所,所以数据存储器还可以进行扩展,单片机的扩展能力为可寻址64K,用户可以根据自己的需求对空间进行的扩展。它的作用是可以作为处理问题的数据缓冲器。程序存储器:程序的正常运行不仅和时钟电路有关,同时还需要将调试过的程序放到单片机的存储器中。传送程序需要的是串行口与外部机器相连接进行传送,而存储这些程序的就是单片机中的程序存储器。本次设计选用的单

20、片机拥有4K的存储空间,如果需要扩展的话,最大的扩展空间为64K。从单片机的访问来说,程序存储器可以分为内部和外部。单片机通过控制引脚的高低电平区分访问程序存储器的内部和外部。在其中还有5个部分具有特殊功能,因为当执行复位电路之后,单片机的程序执行必须从0000H开始,这样就需要在0000H单元存放一条用于跳转的指令。串行口:上文已经提到,各种指令和程序要传送到单片机的个存储单元需要串行口与电脑连接,同时单片机内部程序要传送到外部也是通过串行口于外部进行连接。由于串行口的数量有限,51系列单片机的串口还具备扩展功能。本次设计选用的单片机拥有2个双全共串行口,采用异步通信方式。所谓的异步通信方式

21、,就是单片机可以实现输入和输出同时进行,是一种比较先进的通信方式。其内部结构如图2-4发送SBUF接受SBUF门发送控制器接受控制器输出移位寄存器串行控制寄存器定时器T1图2-4 串行口内部结构I/O口:本次设计选择的单片机提供4个并行8位I/O,分别上P1口、P2口、P3口、P0口。内部时钟电路:时钟电路可以分为内部和外部两种。构成内部振荡器是一个高增益反放大器,用于和外部晶振电路连接过程时钟电路。定时器计时器:这个部分有两个工作模式,分别是计数工作模式和定时工作模式。计数工作模式的作用是针对外部的脉冲计数,在引脚中有T0(14脚)和T1(15脚),他们是计数器的输入端,脉冲产生从正向负变化

22、时,计数器就开始工作,计数器记1.定时器工作模式实在计数器工作模式的配合下使用,这是的计数器模块应用的是单片机内部脉冲,脉冲的产生是由时钟电路产生的,每经过一个时钟周期,定时器模块就工作计数1。定时器计时器内部结构如图2-5CPU微处理器TH1TL1TH0TL0TCONTMODT1T0图2-5定时器计时器内部结构上文提到单片机具有低功耗和高性能的特点,之所以这么说是因为单片机在单机状态下CPU可暂停工作,同时计数器、串行口等内部系统课保持工作状态,这样就可以达到低功耗和高性能的特点第三章 硬件设计3.1 51单片机最小系统核心控制系统主要是使用51单片机控制AD芯片对传感器数据进行采样量化处理

23、,之后的数字信号用于控制液晶屏幕显示以及报警系统是否起作用,这里面的核心硬件部分就是51单片机最小系统如图3-1。图3-1 单片机最小系统图51单片机最小系统的原理图,这里面除了51单片机以外还包括几个重要的部件,其中有晶振以及复位电路。51单片机因为其内部有脉冲整形电路,所以只需要外接一个1-24MHz的无源晶振就能够产生程序运行的数字时钟信号,晶振两端需要外接两个22pF或者30pF的对地电容,首先保证信号能够无衰减的进入单单片机内部,其次也是与内部的电路构成震荡环构成稳点的脉冲时钟回路。51单片机的31引脚决定了程序读取的位置,当这个引脚被拉高时表示是从内部ROM区开始读取程序代码,如果

24、未被拉高则默认从外部的ROM区读取程序,有的时候51单片机程序硬件电路都没有问题,就是现象不对,可能是这个引脚的电平值未被拉高导致系统从外部ROM读取数据,而我们的系统没有外部拓展ROM,所以说系统不能正常运行。51单片机需要2个完整周期的高电平输入到RESET引脚进行复位,这个引脚通常处于被拉低状态。3.2 AD转换电路3.2.1 AD转换原理在电子电路里有模拟量以及数字量之分,变化幅值随着时间化而连续变化的量我们称之为模拟量,相反的只有高低电平表示的数量值表示数值变化我们称之为数字量,数字量里面一般用0,1表示信号值。图3-2 AD转换原理图如图所示为AD采集数据的基本原理首先电压值经过V

25、IN输入到电压比较器当中,电压比较器记录此时的数据值为0或者1,代表此时的电压高或者低,不同的控制信号用来驱动后面的逻辑控制电路,逻辑控制电路在CP时钟的频率下开始按照移位寄存的方式存入数据,也就是此时的模拟信号量化值,这个量化值分成两路,一路作为外部信号输出,传送给后端的数字电路,另一路送给DA转换器,DA转换器将此时的数字量重新转换为模拟电平值与输入信号做比对,是真个AD转换系统的反馈量,如果输入量大于反馈量AD通道输出值为1,反之为逻辑0。3.2.2 电路连接市面上AD芯片比较多,我们出于对系统整体性能的考虑,选择ADC0832这款通用性TTL电平AD转换芯片。他是由美国AD公司生产的一

26、种面向低端产品的AD芯片,这款新片成本低,转换速率适中,能够适应于大部分的模拟/数字器件。它主要是8 位分辨率、双通道 A/D 转换,因其具有体积小,兼容性强的独特优点,所以倍受广大电子工程师认识的追捧,普及率很高,而且对于高校学生来说,理解认识AD转换的功能有着重要的意义。ADC0832 具有以下特点: 1.分辨本领比较高支持256个数字等级;2.拥有两路 A/D 转换通道;3.输入输出电平与 TTL/CMOS 相兼容;4.5V 电源供电时输入电压在 05V 之间;5.工作频率为 250KHZ,转换时间为 32S;6.一般功耗仅为 15mW;7.DIP(双列直插)、PICC 多种封装;8.商

27、用级芯片温宽为0 to +70,工业级芯片温宽为40 to +85; ADC0832有DIP和SOIC;两种封装,DIP封装的ADC0832引脚排列如下图所示:图3-2 ADC0832的引脚封装图芯片接口说明: 1.CS_ 片选使能,低电平芯片使能。2. CH0 模拟输入通道 0,或作为 IN+/-使用。3. CH1 模拟输入通道 1,或作为 IN+/-使用。4. GND 芯片参考 0 电位(地)。5. DI 数据信号输入,选择通道控制。6. DO 数据信号输出,转换数据输出。7. CLK 芯片时钟输入。8. Vcc/REF 电源输入及参考电压输入(复用)。对于51单片机来说,ADC0832支

28、持TTL电平通信,所以我们需要做的就是了解0832的操作时序,这里面用于通信的有四根数据线,分别是CS、CLK、 DO、DI,这里有一个值得说的技巧就是ADC0832的5、6引脚,也就是对应着通信过程中的DO、与DI端口是一组双向的数据端口,也就是说我们完全可以将这两根线变连到一起,然后接到单片机的IO口引脚上去,这样在软件编程的过程中及减少了不必要的操作时序语句,同样也能节省单片机的IO口资源,便于预留出来接口拓展其他的外部设备。CS引脚一般为芯片的片选或者是数据所存引脚,当数据总线上有数据传输时,如果我们要再次是读取数据或者要在此时写入数据,就要把CS引脚拉低或者拉高,当下一个时钟沿过来时

29、,逻辑门电路就会检测CS引脚上的控制电平是写入还是读取,同时锁存住数据总线的逻辑值,等待器件将数据值读走或者写入。3.3 报警电路3.3.1 LD驱动电路需要注意的是,因为每一批激光器的出厂参数都稍有不同,在使用前须经过实际测试,同时这对于激光器驱动电路的设计也是至关重要的。测试时需要用到光功率计与恒流源,注意测试的时候需要将电流缓慢增加以保证激光器的安全,测试结果为开启电流10.5mA,工作电流为15.5mA此时的光功率为0.7mW。换言之,所需的驱动电路工作电流值应为15.5mA。图3-3 Multisim驱动激光器仿真结果驱动电路如图3-3所示,根据设计要求,要实现对激光器的载波调制,要

30、求电路能产生峰峰值在0-5V左右的电压以及10mA左右的电流信号,图中红线为驱动信号,蓝线为驱动装置输出信号,其开关速度超过800MB/S。所以电路开关元件选择BFW16射频三极管。这款三极管的开关速度很高能适应通信系统的要求。值得注意的是,射频三极管在使用的时候要在集电极与基极之间并联LC网络,实现快速退饱和,才能进行高速信号处理,否则射频三极管不能正常工作。电路的设计三极管在驱动装置中启开关作用,输入信号由51单片机产生,当信号幅值低于0.7V时,三极管处于关断状态,激光器两端没有电压,不能形成电流。当三极管输出大于0.7V的电压时,三极管开启,集电极到发射极导通,而且电流信号经放大输出,

31、可以驱动激光器工作。这里,可以通过一个简单的计算来说明。设三极管开启电压为0.7V,激光管的压降为2V,FPGA引脚的输出电平是5V,则流过电阻R的电流大小为 U = Uout0.72 (3-1) I = U/R (3-2)取 R = 200,则电流I = 0.6 mA,三极管放大系数25,则发射极电流为15.5mA,这时激光管工作在线性区,Multisim仿真效果良好(见图3-3)。3.3.2 蜂鸣器驱动电路图3-4 蜂鸣器驱动电路如图3-4所示,为蜂鸣器的驱动电路,这里我们要种地那介绍一下蜂鸣器的驱动方法,首先要明确一点就是蜂鸣器的电流型器件,也就是说蜂鸣器的工作状态只跟通过蜂鸣器的电流大

32、小有关,所以我们不能把蜂鸣器直接接到单片机的IO口上面,而且对于51单片机来说,IO口的拉电流能力不足,难以驱动大功率尤其是大电流的器件,所以我们必须使用三极管将信号放大才能让三机关正常工作。当单片机的P1.0口输出为低电平时三极管的集电极反偏,发射极不偏,三极管工作在截止区,也就是说此时的发射极与集电极没有电流通过,所以蜂鸣器不发出生意,没有报警。当P1.0口输出为高电平时,由于1k电阻与三极管发射极压降以及内阻的作用,三极管基极电压介于5V到1V之间,满足了发射极正偏,集电极反片的条件,三级光的集电极电流大约为基极电流的几十倍,此时蜂鸣器正常工作,发出报警信号。3.4 液晶显示电路图3-5

33、 LCD1602液晶接口电路如图3-5所示为1602液晶显示电路,1602液晶一共有11个TTL电平数据引脚可以直接与51单片机进行通信左右两对VCC与GND分别控制1602液晶的背光开启与关闭,显示开启与关闭,其中第3引脚的滑动变阻器用来调节显示字符的背光大小,如果阻值偏高可能导致液晶显示颜色比较淡,如果阻值偏小可能导致液晶的背光直接被黑色方块填充满导致我们无法分辨出字符的字块模型,一般选择在100欧姆左右为最佳。现在我们要着重讲解一下LCD1602的操作时序。图3-6 LCD1602液晶操作时序如图3-6所示,为1602液晶的操作时序图。首先需要确认的就是1602属于低速显示器件,他的操作

34、时间间隔要求通常比较长,一般来说单片机的每条语句执行时间都要小于1602液晶的响应时间,也就是说我们在单片机里不必做刻意做时间计算来操作液晶,我们直接按照时序图的状态写程序即可完成对1602的操作。这是一个典型的读数据操作。我们需要确认的是默认总线状态,当不进行操作时RS引脚状态为高,RW引脚状态为低,E引脚状态为低,数据引脚状态不定。发起一个读操作时,首先将RS引脚切换至高或者低选择是读数据或者读命令,首先将RW引脚拉高,告诉1602的控制芯片此时单片机要开始发起读的操作,紧接着把使能E引脚拉高,之后在数据总线上放上要读取的内容,当E使能引脚再次被拉低时8根数据总线上的内容被对应的器件读走,

35、之后需要把RS,RW至于闲置总线状态,方便下一次发起读写操作。第四章 软件设计4.1 单片机C语言编程随着单片机技术日益精进,单片机结构的日益复杂,单片机功能也在逐步完善,这也必然会导致单片机内部的寄存器资源数量成倍的增长,也就是说,对于普通人来说很难像以前那样记住单片机的每一个寄存器名称和地址然后采用寻址的方法来访问单片机的内部资源,并对单片机进行逻辑操作。越来越多的人开始使用C语言对单片机进行编程,因为C语言结构趋近与人类逻辑思维,这样我们再编程时,就不用担心所使用的变量,函数等等问题是否在单片机中能够执行,只需要通过开发商提供的编译工具将C语言编译成机器可执行的二进制代码就可以,这几大量

36、节省了开发时间,而且缩短了开发周期,降低了开发难度,为单片机的应用领域拓宽了新的道路。单片机编程时,使用C语言相比于以往的汇编语言有明显的优势1.我们可以完全不懂的单片机的硬件结构,就能编写出具备专业水平的高质量程序。2.在使用不同种类的单片机时,无需每一款单片机的 指令集都要熟悉,用C语言编写的单片机程序具有较强的可移植性,任意一款单片都可以执行。3.对于有限的单片机空间RAM地址能够有效的利用,因为他对不同的函数定位不同的地址。4.对于51系列单片机来说,C语言中的auto、static、const等存储类型能够直接匹配51单片机中的data idata、pdata、xdata、code等

37、存储类型,自动为变量合理地分配地址;5.C语言程序运行相比于其他的编程语言有更高的稳定性,更高的执行效率,尤其在使用指针编程时,能够更有效地为单片机寄存器赋值。6.C语言里面嵌入了许多标准函数库,比如说数学函数库,复杂的数学关系可以直接利用函数算出。4.2 KEIL开发环境图4-1 KEIL建立工程界面如图所示,KEIL2 为一款单片机集成开发环境,里面包含了多种单片机的编译器与仿真综合器,支持C语言编程,支持J-TAG等调试电路的在线仿真,并且界面友好,操作简单。图4-2 KEIL选择芯片内核界面如图所示为使用KEIL建立工程的基本操作步骤。1.我们首先需要建立一个项目工程,然后确定一个需要

38、保存的文件目录,当我们生成KEIL的工程文件之后,这个文件目录下面会生成相关的编译文件,包括相关的调试信息,编译信息,以及最后下载到单片机里面的hex文件等等。我不想被查重我不想被查重我不想被查重我不想被查重我不想被查我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重

39、我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重

40、我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重

41、我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重

42、我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查重我不想被查图4-3 KEIL添加文件界面2.建立好工程文件之后,我们就可以选择使用单片机的型号,这个软件提供给我们大量的常用单片机内核,只要我们选择好确定的内核之后,KEIL软件就

43、会调用相关的编译器编译链接把C语言程序生成相关的单片机可执行文件。3.下一步需要为工程文件添加C语言文件,我们新建一个.C文件然后添加到工程里面。4.编写好C语言程序之后进行编译就能生成我们需要的单片机可执行程序。5.如果我们手里有J-TAG的话可以选择进行模拟程序的软件仿真,这个方法可以减少单片机ROM的擦写次数,同时也能够提高单片机编程效率,这在高级芯片的编程中应用比较广泛。4.3 系统流程如图4-4 1602初始化编程如图4-4所示为1602初始化的编程流程图,首先在1602上电之后需要对1602送入一些初始化指令,先将光标定位在1602左上角,对于指令集为代码为0X80H,然后设置光标

44、为单步移动,每次一个字符,使用之前一定清屏三次,然后进行单片机与1602之间的判忙相应,得到响应值确定1602可以正常工作。图4-5软件设计流程图如图4-5所示为系统的的软件设计流程图。首先系统需要上电,上电复位单片机后程序开始初始化。初始化程序里面单片机主要对1602写入了初始化命令,其中包括对光标的设置,对比度等选项,参照1602的命令表里面包括清屏,选取光标为首行首列,选取光标移动模式为自动加一等等。当传感器在上电之后会自己采集一定的环境酒精浓度值作为前几个数据标定,这时候AD转换芯片需要8个时钟脉冲周期来采集一字节的数据进行转换,转好好的一字节数据送给单片机。这时候单片机会通过内部的算

45、法计算出来此时的酒精浓度值,并将这组数据换算成ASCI码,送入1602液晶进行显示,同时进行判断是否超过设定阈值,是否要进行声光报警。结 论本文以AT89C51单片机为核心控制芯片,配合Arduino MQ-3酒精传感器以及LED和蜂鸣器,ADC0832芯片构成了酒精浓度报警系统。这套系统无论是在日常生活还是科学研究方面都有很好到价值以及广阔的发展前景。本套系统在软件设计方面主要使用C语言编写程序,KEIL编译器生成51单片机的执行代码,使用Altium designer软件完成了对路板原理图的绘制,为自己手工焊接PCB电路板提供了完整的电路原理图,使用Multisim 11进行了激光器驱动电

46、路的仿真设计,蜂鸣器电路仿真设计,通过这两个仿真电路确定了硬件电路在设计时需要选用哪款三极管的具体型号,LED以及蜂鸣器的开启电流,IO口以及三极管的限流电阻大小,不至于直接烧毁器件。本套系统最终试验成果:1.通过酒精浓度传感器顺利感应到了周围酒精浓度的变化,通过ADC0832将周围的浓度模拟量数字化送给单片机,即完成了传感器与ADC0832之间的数据通信交换,ADC0832与51单片机之间的数据通信。2.使用LCD1602液晶显示器显示量化好之后的酒精浓度值,让人们能够直观读取此时的酒精浓度,即在电器上完成了LCD与单片机之间的通信。3.实现了酒精浓度值偏高报警,51单片机最终将才回来的数据

47、值经过内部算法处理判定阈值条件,并作为报警信号的门控信号发出命令,在软件上实现了十进制数值与ASIC码型的转化,比较大小。4.用三极管驱动LED液晶与蜂鸣器,通过计算出这两个器件工作时的最佳电流与电压,实现了数字电路对模拟器件的控制。这套系统仍然有许多不足的地方,首先是由于传感元器件的物理特性不一致,每一个传感器检测出来的数据值可能有所偏差,还有就是模拟电路噪声部分的的影响,也会导致AD采样的误差,引起不准确的测量值。再有就是软件设定上,如果可能的话应该外加一个或者几个摁键同时设定酒精浓度阈值,就不需要通过编程来设定阈值,最后就是在报警装置上,可以考虑外加一个GSM模块,如果有酒驾等问题发生直

48、接拨打110电话告知相关部门。参考文献1 谢医华.气体传感器发技术研究D.广州:暨南大学,2004:1-26.2 徐沙林.基于Modbu协议的医用气体压力集散监测系统开发D.南京:南京理工大学,2010:1-4.3 朱艳萍,潘虹,孙艳阳等.乙醇传感器在人工气道气囊压力监测中的应用J.中华护理杂志,2012,47(12):1123-1124.4 中华医学会重症医学分会. 机械通气临床应用指南(2006)J.中国危重病急救医学,2007,19(2):65-72.5 夏海波,张来斌,王朝辉.国内外油气管道泄漏检测技术的发展现状J.油气储运,2001,20(1):1-3.6 Xiaowei Liu,X

49、uebin Lu,Rongyan et al.Polysilicon Nanofilm Pressure SensorJ.Sensors and Actuators A.2009,154:42-45.7 Pavel Kulha,Alexander Kromka,Oleg Babchenko,et al.Nanocrystalline Diamond Piezoresistive Sensor J. Vacuum,2010(84):53-56.8 Chia-Min Lin, Li-Yuan Lin,Weileun Fang.Monolithic Integration of Carbon Nan

50、otubes Based Physical SensorsC.IEEE MEMS,2010,55-58.9 Pilar Gonzalez,Bin Guo,Michal Rakowski,et al.CMOS Compatible Polycrystalline SiliconGermanium Based Pressure SensorsJ. Sensors and Actuators A, 2012(188) :9-18.10 王国琴.慢性阻塞性肺病患者人工气道气囊压力监测及护理J.检验医学与临床,2013,10(3):293-294.11 郭天祥.十天学会单片机J.哈尔滨工程大学出版社,2

51、008,14(1):139-142.12 童诗白,数字电子技术J. 北京:高等教育出版社,2008,29(10):2038-2039.13 刘友奇,宋益东.模拟芯片在单片机系统中的应用J.煤矿安全,2007,(4):48-50.14 华成英,童诗白.模拟电子技术基础M.北京:高等教育出版社,2006:330-333.15 盛庆华,袁路花,闫云鹏等.基于24位AD自然电位法海底探矿系统研究J.传感器与微系统,2013,32(2):36-38.16 Francesca Cuomo, Anna Abbagnale, Emanuele Cipollone. Cross-layer network fo

52、rmation for energy-efficient IEEE 802.15.4/ZigBee Wireless Sensor NetworksJ.AD HOC NETWORKS,2013,11(2):672-686.17 Bathe K J. Finite Element Procedures in Engineering Analysis. Prentice-Hall, Inc.1982.525318 Zienkiewicz O C. The Finite Element Method, Third Edition. Mcgraw-Hill,Inc.1987.1314.19 Huebn

53、er K H,Thornton E A. Finite Element Method for Engineers. John Wiley&Sons,Inc.1995.20 Turner M J,Clough R W,Martin H C,Topp L C.Stiffness and Deflection Analysis of Complex Structures.J.Aero.Sci.,1956,23:801806.21 Guha Subhendy,Yang Jeffrey.Progess in amorphous and nanocrystalline silicon solar cell

54、sJ.Journal of Non-Crystalline Solids.2006.352(9-20):1917-1921.26附录一#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#includesbit RS = P24; /定义端口 sbit RW = P25;sbit EN = P26;#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#define EN_SET EN=1#define DataPort P

55、0/*- uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-)

56、 /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 判忙函数-*/ bit LCD_Check_Busy(void) DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort & 0x80); /*- 写入命令函数-*/ void LCD_Write_Com(unsigned char com) while(LCD_Check_Busy(); /忙则等待 RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_

57、CLR; /*- 写入数据函数-*/ void LCD_Write_Data(unsigned char Data) while(LCD_Check_Busy(); /忙则等待 RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; /*- 清屏函数-*/ void LCD_Clear(void) LCD_Write_Com(0x01); DelayMs(5); /*- 写入字符串函数-*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) i

58、f (y = 0) LCD_Write_Com(0x80 + x); /表示第一行 else LCD_Write_Com(0xC0 + x); /表示第二行 while (*s) LCD_Write_Data( *s); s +; /*- 写入字符函数-*/ void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) if (y = 0) LCD_Write_Com(0x80 + x); else LCD_Write_Com(0xC0 + x); LCD_Write_Data( Data); /*- 初始化函数-*/ void LCD_Init(void) LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*显示关闭*/ LCD

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!