ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:630.34KB ,
资源ID:5920428      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5920428.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(多功能酒精测试仪.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

多功能酒精测试仪.docx

1、论 文 课题名称 基于单片机的酒精测试仪 武汉工程大学邮电与信息 目录 一.摘要与系统原理…………………………………………………(3 ) 二. 功能指标…………………………………………………………(4 ) 三.整机原理图………………………………………………………(5) 四.软件流程………………………………………………………(6) 五.MCS-51单片机引脚功能…………………………………………(7 ) 六.ADC0809资料…………………………………………………(9) 七.酒精传感器TGS822…………………………………………(11)

2、八. LCD资料………………………………………………………(12) 九.整机程序………………………………………………………(13) 摘要 本作品是基于单片机控制ADC0809对TGS822酒精浓度取样来反映人体血液酒精浓度;以及对DS18B20获取温度 系统框图 单 片 机 LCD 显 示 输 出 传 感 器 模拟输入 控制输出 实现原理 TGS822对酒精浓度的变化,其阻值产生相应的变化,然后通过取样电阻分压的变化表现出来;人体血液酒精浓度的不同,其呼出的气体中酒精浓度也不同。通过TGS8

3、22对呼出气体中酒精浓度的反应以取样电压的形式送入到ADC0809,进行A/D转换后并将转换的数据送入单片机进行分析处理,并判断是否醉酒驾车,再通过液晶板显示出来。 DS18B20其自身的温度传感器所产生的温度数字数据存入其自身的存储器,单片机对其控制读出温度数据,然后经过计算处理,将当前环境温度由液晶板输出。 作品亮点 该作品结构简单,功能多样,可扩展性强,成本低廉,便于携带,适用范围广。 功能指标 车辆驾驶人员血液中的酒精含量大于或等于80mg/100ml的驾驶行为。   血液酒精含量临界值: 行为类别 对    象 临界值(mg/100ml) 饮酒

4、驾驶 车辆驾驶人员 20 醉酒驾驶 车辆驾驶人员 80    血液与呼气酒精含量换算 车辆驾驶人员呼气酒精含量检验结果可按标准GA307换算成血液酒精含量。 序 号 呼出气体中酒精 浓度mg/L 呼出气体中酒精 浓度10¯6 血液中酒精浓度mg/100mL 1 0.0227 11.85 5 2 0.0454 23.69 10 3 0.0681 35.53 15 4 0.0909 47.43 20 5 0.1136 59.28 25 6 0.1363 71.13 30 7 0.1591 83.02

5、35 8 0.1818 94.86 40 9 0.2045 106.71 45 10 0.2272 118.56 50 11 0.2500 130.45 55 12 0.2727 141.26 60 13 0.2954 154.15 65 14 0.3181 166.00 70 15 0.3409 177.89 75 16 0.3636 189.72 80 17 0.3863 201.15 85 18 0.4091 213.43 90 19 0.4318 225.33 95 20 0.4515

6、 237.12 100 21 0.6618 355.68 150 22 0.9091 474.24 200 整机原理图 软件流程图 开始 设置第一行显示内容 设置显示模式 显示第一行内容 延时 延时 关显示 延时 初始化DS18B20 跳过读序列号 清屏 启动温度转换 延时 延时 关显示 初始化 延时 跳过读序列号 设置第一行显示位置 读取温度值并计算 显示第一行内容 设置第一行显示内容 控制ADC0809转换 显示第一行内容 设置第二行显

7、示内容 读取数据 显示第二行内容 比较计算 MCS-51单片机引脚功能 MCS单片机都采用40引脚的双列直插封装方式。下图为引脚排列图, 40条引脚说明如下: 1、主电源引脚Vss和Vcc ① Vss接地 ② Vcc正常操作时为+5伏电源 2、外接晶振引脚XTAL1和XTAL2 ① XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。 ② XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。 3、控制或与其它电源复用引脚RST/VPD,ALE/ , 和 /Vpp ①

8、 RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位 在Vcc掉电期间,此引脚可接 下图8051引脚排列图 上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。 ② ALE/ 正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的 )周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE 端可以驱动(吸收或输出电流)八个LSTTL电路。 对于EPROM型单片机,在EPROM编程期间,此引脚

9、接收编程脉冲( 功能) ③ 外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间, 在每个机器周期内两次有效。 同样可以驱动八LSTTL输入。 ④ /Vpp 、 /Vpp为内部程序存储器和外部程序存储器选择端。当 /Vpp为高电平时,访问内部程序存储器,当 /Vpp 为低电平时,则访问外部程序存储器。 对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编程电源(Vpp)。 4、输入/输出引脚P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 ① P0口(P0.0 - P0.7)是一个8位漏极开路型

10、双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。 ② P1口(P1.0 - P1.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。。 ③ P2口(P2.0 - P2.7)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载。 ④ P3口(P3.0 - P3.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载 ADC0809

11、资料 1.主要特性   1)8路8位A/D转换器,即分辨率8位。   2)具有转换起停控制端。   3)转换时间为100μs   4)单个+5V电源供电   5)模拟输入电压范围0~+5V,不需零点和满刻度校准。   6)工作温度范围为-40~+85摄氏度   7)低功耗,约15mW。   2.内部结构    ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近 寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可

12、与各种微处理器相连,也可单独工作。输入输出与TTL兼容。   3.外部特性(引脚功能)   ADC0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。下面说明各引脚功能。   IN0~IN7:8路模拟量输入端。   2-1~2-8:8位数字量输出端。   ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。   ALE:地址锁存允许信号,输入,高电平有效。   START: A/D转换启动信号,输入,高电平有效。   EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

13、   OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。   CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。   REF(+)、REF(-):基准电压。   Vcc:电源,单一+5V。   GND:地。   ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已

14、存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。 酒精传感器TGS822资料 特点: 应用: ・ 对乙醇等有机溶剂有高灵敏度・ 酒精检测器 ・ 长期稳定性优良・ 工厂、干洗店、半导体产业的 ・ 长寿命、低成本有机溶剂检知 ・ 以简单电路即可使用 费加罗气体传感器的气敏素子,使用在清洁空气中电导率低的二氧化锡(SnO2)。当存在检知对象气体时,传感器的电导率随空气中气体浓度增加而增大。使用简单的电路即可将电导率

15、的变化,转换为与该气体浓度相对应的输出信号。 TGS822 传感器对酒精、有机溶剂的灵敏度高,在酒精检测器等方面得到广泛应用。 相同特性的 TGS823,采用了陶瓷底座,可以在200℃的高温气氛中使用。 下 纵坐标以传感器电阻比(Rs/Ro)表示,Rs,Ro 的定义如下: Rs =不同浓度气体中的电阻值 Ro =300ppm 乙醇中的电阻值 灵敏度特性: 图中纵坐标也以传感器电阻比(Rs/Ro)表示,这里的Rs,Ro 定义如下: Rs=含300ppm 乙醇、各种温/湿度下的电阻值 Ro=含300ppm 乙醇、20℃65%R.H.下的电阻值

16、LCD资料  1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线   VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:    引脚 符号 功能说明 1 VSS 一般接地 2 VDD 接电源(+5V) 3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 5 R/W R/W为读写信号线,高电平(1)时进行读操作,低电平(

17、0)时进行写操作。 6 E E(或EN)端为使能(enable)端,下降沿使能。 7 DB0 底4位三态、 双向数据总线 0位(最低位) 8 DB1 底4位三态、 双向数据总线 1位 9 DB2 底4位三态、 双向数据总线 2位 10 DB3 底4位三态、 双向数据总线 3位 11 DB4 高4位三态、 双向数据总线 4位 12 DB5 高4位三态、 双向数据总线 5位 13 DB6 高4位三态、 双向数据总线 6位 14 DB7 高4位三态、 双向数据总线 7位(最高位)(也是busy flang) 15 BLA 背光电源正极 16 BLK 背光

18、电源负极   寄存器选择控制表即为ASCII码表    RS R/W 操作说明 0 0 写入指令寄存器(清除屏等) 0 1 都busy flag(DB7),以及读取位址计数器(DB0~DB6)值 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数据  1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来

19、我们就能看到字母“A”。   因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。 整机程序 #include #include sbit rs=P2^4; //LCD液晶引脚定义,p0接DB0_DB7 sbit rw=P2^7; sbit ep=P2^6; sbit ale=P2^0; //ADC0809引脚定义 sbit start=P3^7; sbit oe=P3^5; sbit eoc=P3^6; sbit adda=P2^5;

20、sbit addb=P2^2; sbit adc=P2^3; sbit light=P3^0; //报警输出 sbit DQ=P3^3; //DS18B20输入脚定义 sbit DE=P3^1; unsigned char tempL=0; unsigned char tempH=0; float temperature; unsigned char code dis1[]={"WORK START"}; unsigned char code dis2[]={"ALCOHOL TEST"}; unsigned char code dis3[]={"mg/1

21、00ml"}; unsigned char code dis4[]={"SAFE DRIVING"}; unsigned char code dis5[]={"DRINK-DRIVING"}; unsigned char code dis6[]={"DRUNK DRIVING"}; void delay(unsigned char ms) //延时1 { unsigned char i,j; while(ms--) { for(i=0;i<250;i++) for(j=0;j<50;j++) { _nop_(); _nop_(); } } }

22、 void delay2(unsigned int time ) //延时2 { unsigned int n; n=0; while (n

23、到LCD { while(lcd_bz()) rs=0; rw=0; ep=0; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); ep=1; _nop_(); _nop_(); ep=0; } lcd_pos(unsigned char pos) //设定显示位置 { lcd_wcmd(pos | 0x80); } lcd_wdat(unsigned char dat) //写入显示数据到LCD { while(lcd_bz()); rs=1;

24、 rw=0; ep=0; P0=dat; _nop_(); _nop_(); ep=1; _nop_(); _nop_(); ep=0; } lcd_init() //LCD初始化 { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); } Init_DS18B20(void) //DS18B20初始化 { unsig

25、ned char x=0; DQ=1; delay2(8); DQ=0; delay2(85); DQ=1; delay2(14); delay2(20); } ReadOneChar(void) // 向DS18B20读一字节数据 { unsigned char i=0; unsigned char dat=0; for(i=8;i>0;i--) { DQ=1; delay2(1); DQ=0; dat>>=1; DQ=1; if(DQ) dat|

26、0x80; delay2(4); } return(dat); } WriteOneChar(unsigned char dat) //向DS18B20写一字节数据 { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0X01; delay2(5); DQ=1; dat>>=1; } delay2(4); } ReadTemperature(void) //向DS18B20读温度值 { Init_DS18B20();

27、WriteOneChar(0xcc); WriteOneChar(0x44); delay2(125); Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0xbe); tempL=ReadOneChar(); tempH=ReadOneChar(); temperature=((tempH*256)+tempL)*0.0625; delay2(200); return(temperature); } main() { float x,y,k; unsigned int

28、 da,n,temp1,temp2,i,gw,sw,bw,kw,xw; light=0; lcd_init(); delay(3); lcd_pos(0); i=0; while(dis1[i]!='\0') { lcd_wdat(dis1[i]); i++; } lcd_pos(0x41); i=0; while(dis2[i]!='\0') { lcd_wdat(dis2[i]); i++; } delay(32); while(1) { lcd_init();

29、 ale=0; start=0; adda=0; addb=0; adc=0; _nop_(); ale=1; start=1; _nop_(); start=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(eoc==0); oe=1; _nop_(); da=P1; oe=0; y=(2550/da-10)

30、/9.27; if(y>2.68) x=61.61-4.08*y; else if(y>2.38) x=139.3-33.3*y; else if(y>2.23) x=218.7-66.7*y; else if(y>2.128) x=288.6-98*y; else if(y>2) x=262.88-85.9*y; else if(y>1.89) x=254.5-81.8*y; else if(y>1.62) x=450-185.2*y;

31、 else if(y>1.209) x=347.1-121.7*y; lse if(y>0.822) x=816.5-516.8*y; else if(y>0.635) x=1279.2-1069.5*y; else x=2238.7-2580.6*y; if(da<=17) x=0; n=(int)(x/0.23698); gw=n%10+0x30; temp1=n/10; sw=temp1%10+0x30; temp2=temp1/

32、10; bw=temp2%10+0x30; kw=temp2/10+0x30; lcd_pos(0x84); lcd_wdat(0x2e); if(n>=1000) { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw); lcd_pos(0x81); lcd_wdat(kw); } el

33、se if(n>=100) { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw); } else { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); } lcd_pos(0x86); i=0; whil

34、e(dis3[i]!='\0') { lcd_wdat(dis3[i]); i++; } n=n/10; if(n<20) { lcd_pos(0x42); i=0; while(dis4[i]!='\0') { lcd_wdat(dis4[i]); i++; } delay(16); } else if(n>=20 && n<80) { lcd_pos(0x42); i=0; while(di

35、s5[i]!='\0') { lcd_wdat(dis5[i]); i++; } delay(16); } else { light=1; lcd_pos(0x42); i=0; while(dis6[i]!='\0') { lcd_wdat(dis6[i]); i++; } delay(16); light=0; } lcd_init(); k=ReadTemperature();

36、 n=(int)(100*k); xw=n%10; n=n/10; gw=n%10+0x30; temp1=n/10; sw=temp1%10+0x30; temp2=temp1/10; bw=temp2%10+0x30; kw=temp2/10+0x30; n=n/10; lcd_pos(0x84); lcd_wdat(0x2e); if(n>=100) { lcd_pos(0x85

37、); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw); lcd_pos(0x81); lcd_wdat(kw); } else if(n>=10) { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw);} else { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw);} lcd_pos(0x86); lcd_wdat(0xdf); lcd_pos(0x87); lcd_wdat(0x43); delay(16); } }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服