基于at89c51的气体浓度测量显示及报警系统课程设计(编辑修改稿)内容摘要:
图 8电路总体设计模块图 主机 选用 单片机 AT89C51 来实现,利用单片机软件编程灵活、自由度大的特点,力求用软件完善各种控 制。 本系统选用的 AT89C51 芯片时钟 为 12MHz,运算速度快,控制功能完善 ;选用气体传感器 MQ5来实现气体浓度的采集;选用 ADC0808 来实现模 拟量与数字量的转换;选用 LCD1602 来实现气体浓度的显示;选用蜂鸣器和 LED 灯来 实现报警。 数据采集 模块 的设计 数据 采集 电路主要由 气体传感器 MQ5和滑动变阻器 组成。 由 MQ5感测空气中的有害气体浓度的 变化,经过其内部器件处理将气体浓度这个模拟信号转换成对应的电信号, MQ5 输出的电信号通过滑动变阻器的调节改变进入 ADC0808 的电信号值。 数据采集模块如图 9 所示。 AT89C51控制实现报警与显示 气体传感 器采集气 体浓度值 ADC0808 将模拟量转换为数字量 LCD1602显示 LED 灯显示,蜂鸣器报警 哈尔滨商业大学课程设计 10 图 9 数据采集 电路 的设计 外部的模拟信号量需要转变成数字量才能进一步的由 单片机进行处理。 ADC0808可以非常方便的处理输入的模拟信号量。 ADC通过逐次比较( successive approximation)方式,将输入端的模拟电压转换成 8位的数字量。 数据转换模块如图10所示。 图 10 数据转换模块 while(1) { ST = 0。 delay1ms(1)。 ST = 1。 delay1ms(1)。 ST = 0。 //寄存器 SAR 复位,启动 ADC0809 while(1) { 哈尔滨商业大学课程设计 11 if(EOC == 1)//ADC0808 转换结束后改引脚为高低平 { OE = 1。 //输出允许信号为 1时表示把 ADC0808 采集的数据输出 getdata=P0。 //把采集到的数据送到 P0口处理 OE = 0。 //又打开 ADC0808 让继续开始转换 } } } 显示 及报警 模块 的设计 经由单片机处理后的数字量通过 LCD1602 进行显示当前的气体浓度值,同时如果当前的气体浓度对人体无害,则绿灯亮;如果当前的气体浓度对人体有害,则红灯亮同时蜂鸣器报警。 显示及报警模块如图 11所示。 图 11 显示及 报警模块 void init_play()//初始化显示 { lcd_init()。 wr_(0x80)。 //第 1行第一列 display(str1)。 //显示 Consentration 哈尔滨商业大学课程设计 12 wr_(0xc0)。 //第二行第一列 display(str2)。 //显示空格 wr_(0xc9)。 //第二行第九列 display(str3)。 //显示 ppm } void show_Concentration()//浓度值显示 { disdata[0]=con/1000+0x30。 //千位 数 disdata[1]=con%1000/100+0x30。 //百位数 disdata[2]=con%100/10+0x30。 //十位数 disdata[3]=con%10+0x30。 //个位数 if(disdata[0]==0x30) disdata[0]=0x20。 //如果千位为 0,不显示 if(disdata[1]==0x30) disdata[1]=0x20。 //如果千位为 0,百位为 0 也不显示 if(disdata[2]==0x30) disdata[2]=0x20。 //如果千位为 0,百位为 0,十 位为 0 也不显示 wr_(0xc3)。 wr_dat(disdata[0])。 //显示千位 wr_(0xc4)。 wr_dat(disdata[1])。 //显示百位 wr_(0xc5)。 wr_dat(disdata[2])。 //显示十位 wr_(0xc6)。 wr_dat(disdata[3])。 //显示个位 } show_Concentration()。 //LCD1602 显示 if(con 320)//如果采集到的浓度小于 320 不报警 { G_LED=0。 R_LED=1。 SPK=1。 } 哈尔滨商业大学课程设计 13 else //如果浓度大于 320 则声光报警 { G_LED=1。 R_LED=0。 SPK=0。 } break。 //跳出继续进行 ADC0808 的采集 系统 的软件设计 系统的软件设计 系统的软件由主程序模块、 数据采集 模块和 显示 报警 模块三大模块组成。 在主程序中首先给定参数值,然后通过 启动 AD转换 循环显示当前 电压。 4,2 编程环境 KeilC51 KeilC51 是一种专为 8051 单片机设计的高级语言 C编译器,支持符合 ANSI 标准的 C 语言程序设计,同时针对 8051 单片机自身特点作了一些特殊扩展。 C 语言对语法的限制不太严格 ,用户在编写程序时有较大的空间,但它毕竟还是一种程序设计语言,与其他计算机语言一样,采用 C语言进行程序设计时,仍需要遵从一定的语法规则。 KeilC51 编译器支持标准 C 语言的数据类型,另外还根据 8051 单片机的特点扩展了 bit、 sbit、 sfr、 sfr16 数据类型。 KeilC51 编译器支持两种指针类型:一般指针和基于存储器的指针。 一般指针需要占 3 个字节,基于存储器的指针只需要 1~2 个字节。 一般指针具有良好的兼容性但运行速度较慢,基于存储器的指 针是 C51 编译器专门针对 8051 单片机存储器特点进行的扩展,它只适用于 8051 单片机,但具有较高的运行速度。 软件流程框图 哈尔滨商业大学课程设计 14 N N Y N Y 图 12 软件流程图 初始化 启动 A/D转换 转换完成。 结束 浓度是否超过320ppm 开始 LCD1602显示 绿灯亮 红灯亮,蜂鸣器报警 哈尔滨商业大学课程设计 15 系统程序 ( 1)主程序 void main()//主函数 { Init()。 //定时器。基于at89c51的气体浓度测量显示及报警系统课程设计(编辑修改稿)
相关推荐
位操作。 上电复位要求接通电源后,自动实现复位操作。 手动按钮复位需要人为在复位输入端 RST上加入高电平(图 1)。 一般采用的办法是在 RST端和正 电源 Vcc之间接一个按钮。 当人为按下按钮时,则 Vcc的 +5V电平就会直接加到 RST端。 手动按钮复位的电路如所示。 即使 人的动作再快也会 让 按钮保持接通 的状态 达数十毫秒, 因此 , 它能够 完全满足复位的时间要求。 手动复位
系统硬件设计 6 数据现畅通。 8051 的 /RD 和 /PSEN 相与后接 DIR,使得 /RD 或 /PSEN 有效时, 74LS245输入( ←Di ),其它时间处于输出( →Di )。 2. 1. 4 LED 的特性及使用 发光二极管是由 Ⅲ Ⅳ 族化合物,如 GaAs(砷化镓)、 GaP(磷化镓)、 GaAsP(磷砷化镓)等半导体制成的,其核心是 PN结。 因此它 具有一般 PN结的
0 1 AVCC,AREF 引脚外加滤波电容 1 0 保留 1 1 的片内基准电压源, AREF 引脚外加滤波电容 在本文我们选择 AVCC,AREF 引脚外加滤波电容。 Bit 5 – ADLAR: ADC 转换结果 左对齐 ADLAR影响 ADC转换结果在 ADC 数据寄存器中的存放形式。 ADLAR 置位时转换结果为左对齐,否则为右对齐。 ADLAR 的改变将立即影响 ADC
第 11 页 灭。 LED 共有阳极和阴极两类,如图 c所示 共阴极 LED 数码管的发光二极管的阴极共地。 当某个发光二极管的阳极电压为高电平时,二极管发光;而共阳极 LED 数码管是发光二极管的阳极共接, 当某个二极管的阴极电压为低电平时,二极管发光。 a b (1) b(2) c 本次课题所选的二极管为共阳极二极管,数码管每段的电流是 10A。 所以公共段接高电平, Proteus
、启动或停止都取决于 CP 脉冲的有无或频率。 同时环形分配器还必须接受控制器的方向信号,从而决定其输出的状态是按正序或者按逆序转换,进而决定步进电机的转向。 从环形分配器输出的各相导通或截止的信号送入信号放大与处理级。 信号放大的作用是将环分输出信号加以放大,变成足够大的信号送入推动级,这中间一般既需电压放大,也需电流放大。 信号处理是 指实现信号的某些转换、合成等功能,产生斩波、抑制等特殊
产生。 此时,片内 RAM 和所有特殊功能寄存器的内容保持不变。 空闲模式可由任何允许的中断请求或硬件复位终止。 终止空闲工作模式的方法有两种,其一是任何一条被允许中断的事件 被激活,IDL( )被硬件清除,即刻终止空闲工作模式。 程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随 RETI(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式那条指令后面的一条指令。