基于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()。 //定时器。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。