单片机原理及应用课程设计有害气体温度监控仪.doc

上传人:laozhun 文档编号:2957762 上传时间:2023-03-05 格式:DOC 页数:44 大小:269.50KB
返回 下载 相关 举报
单片机原理及应用课程设计有害气体温度监控仪.doc_第1页
第1页 / 共44页
单片机原理及应用课程设计有害气体温度监控仪.doc_第2页
第2页 / 共44页
单片机原理及应用课程设计有害气体温度监控仪.doc_第3页
第3页 / 共44页
单片机原理及应用课程设计有害气体温度监控仪.doc_第4页
第4页 / 共44页
单片机原理及应用课程设计有害气体温度监控仪.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《单片机原理及应用课程设计有害气体温度监控仪.doc》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计有害气体温度监控仪.doc(44页珍藏版)》请在三一办公上搜索。

1、单片机原理及应用课程设计有害气体温度监控仪学 院: 理学院班 级: 应物0601学 号: 06003979姓 名: 指导老师: 二00九年一月九日 太 原 理 工 大 学 单 片 机 原 理 课 程 设 计 任 务 书课程设计题目:有害气体温度监控仪设计要求与原始资料 :1 独立按时完成设计任务。2 综合应用所学基础理论知识,培养独立思考问题和解决问题的能力。3 锻炼学生搜集资料和整理资料的能力。4在熟悉掌握89S52芯片参数指标和相关知识的前提下,研发一台可以监控有害气体(二氧化硫,二氧化氮,一氧化碳)浓度和环境温度的仪器,把测量结果显示在八位数码管上,并画出相应原理图,PCB图。5 论文要

2、求语言简练,文字通畅,思路清晰。设计的主要内容:1画出有害气体温度监控仪控制电路的原理图并生成相应PCB图。2编译程序实现其功能。3在电路板上焊接各元件。4调试运行并对不合理之处加以改正。学生应交出的设计文件:1 严格按照学校课程设计要求与格式编排。2 课程设计正文不少于20页。3 查阅相关资料尽可能的全面。主要参考文献(资料):1单片机中级教程-原理及应用北京航空航天大学出版社 张俊谟2 学林网3单片机程序设计基础 北京航空航天大学出版社 周航慈 饶运涛 4AVR单片机嵌入式系统原理与应用实践 北京航空航天大学出版社 马潮专业班级 应用物理学0601班 学生 要求设计工作的起止日期2008年

3、12月29日2009年1月10日指导老师签字 日期教研室主任审查签字: 日期 系主任批准签字: 日期单片机原理及应用课程设计说明书 有害气体温度监控仪目 录第一章 选题背景与总体思路61.1、选题背景61.2、总体思路6第二章 设计原理72.1、方案和选材72.1.1、气体传感器72.1.2、AT 89C52单片机72.1.3、模数转换芯片TLC254382.1.4、数字温度传感器DS18B2082.1.5、数码管驱动芯片CH45182.2、原理图9第三章 电路的功能实现103.1、控制电路89C52芯片103.1.1、电源电路103.1.2、复位电路103.1.3、晶振电路103.2、气体浓

4、度的采集及处理103.2.1、气体浓度的采集103.2.2、模拟信号的处理113.3、温度的采集及处理153.4、显示电路的原理及应用20第四章 程序设计及说明24第五章 结果分析435.1、实验结果分析435.2、设计心得43参 考 文 献44第一章 选题背景与总体思路1.1 选题背景空气中的二氧化硫,二氧化氮,一氧化碳含量超过一定范围会对人的身体造成伤害,甚至会发生其它严重的安全事故。某些生产场所需要配备监控这些气体浓度和环境温度的仪器。单片机本身是一个微控制器,内部无任何程序,当它和其他器件设备有机地组合在一起,并配置适当的工作程序,就构成一个单片机应用系统。在应用系统中以它为核心, 控

5、制其它外围电路协调工作,有很强的控制功能。随着时代的进步和发展,单片机作为一种比较成熟的技术,在我们生活,工作,科研等各个领域有着及其广泛的应用。我们计划研发一台可以监控有害气体(二氧化硫,二氧化氮,一氧化碳)浓度和环境温度的仪器,并把测量结果显示在八位数码管上。本试验的指导思想是运用单片机的控制功能对气体传感器,放大电路,数模转换电路,LED数码管驱动电路等进行控制。1.2 总体思路对于有害气体的检测,通过气体传感器将气体的浓度采集回来,将气体信号的变化转化成电信号,再由放大电路将电信号放大,经过A/D转换芯片,将模拟量转换成数字量,最后经过CPU的处理,通过显示电路将气体浓度值显示在数码管

6、上。对于温度的检测,通过数字式温度传感器直接将温度信号转化为数字信号,再通过CPU的分析处理,将正确的温度显示在数码管上。本设计的由六个部分组成:气体传感器、数字温度传感器、A/D转换电路、LED显示电路、89C52控制电路。第二章 设计原理2.1 方案和选材关键词:气体传感器、AT89C52、模数转换芯片TLC2543、数字温度传感器DS18B20、数码管驱动芯片CH451。2.1.1 气体传感器二氧化硫传感器 二氧化氮传感器 一氧化碳传感器 2.1.2 AT 89C52单片机其主要包含下列硬件资源:a)面向控制的8位CPU;b)片内振荡器及时钟电路;c)8K字节程序存储器ROM;d)256

7、字节数据存储器RAM;e)三个16位定时器/计数器;f)可寻址64K外部数据存储器和64K外部程序器空间的控制电路;g)32条可编程的I/O线;h)一个可编程全双工串行口;i)具有5个中断源,两级中断优先级;j)有位寻址功能,适于布尔处理的位处理机。 其优点:a)小巧灵活、成本低、易于产品化 ;b)可靠性高、适用的温度范围宽 ;c)易扩展、控制功能强 ;d)指令系统相对简单,较易掌握 。2.1.3 模数转换芯片TLC2543TLC2543由美国德州仪器公司于近几年推出,是有11个输入端的12位模数转换芯片,具有转换快、稳定性好、与微处理器接口简捷、价格低等优点。2.1.4 数字温度传感器DS1

8、8B20DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。其性能优点如下:a)独特的单线接口仅需要一个端口引脚进行通信;b)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;c)无须外部器件;d)可通过数据线供电,电压范围为3.05.5;e)零待机功耗;f)温度以或位数字;g)用户可定义报警设置;h)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;i)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; 2.1.5 数码管驱动芯片CH451

9、CH451是一个整合了数码管显示驱动和键盘扫描控制以及监控的多功能外围芯片,CH451内置RC振荡电路,支持多片级联,时钟速度从 0到 10MHz。可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、移位等功能;同时还可以进行64键的键盘扫描。其工作原理如下图所示。2.2 原理图图2-1原理图第三章 电路的功能实现3.1 控制电路89C52芯片3.1.1 电源电路89C52芯片采用5V的直流稳压电源。3.1.2 复位电路复位是单片机回到初始状态的一种操作,是处理单片机“死锁”的主要方法,复位电路即实现此功能。单片机上电后,从何处开始执行第一条指令,由系统复位后的状态决定。我们使用的复

10、位器中的电容为极性电容,最大工作电压为16V,电容为10uV,最高工作温度105。3.1.3 晶振电路由晶振和电容组成,与89C52的XTAL1及XTAL2两引脚相连,即可构成一个稳定的自激振荡器,为CPU提供稳定的震荡频率,保证89C52工作。3.2 气体浓度的采集及处理3.2.1 气体浓度的采集二氧化硫,二氧化氮,一氧化碳气体传感器能感知环境中气体的存在及其浓度,根据气体传感器转换成的电信号的强弱就可以获得待测气体在环境中存在情况的信息,从而可以进行检测监控。放大电路放大由于气体含量变化引起的传感器的电压的变化,然后送入A/D转换器的输入端。对其基本要求是:输入阻抗应与传感器输出阻抗相匹配

11、;一定的放大倍数和稳定的增益;低噪声;低的输入失调电压和输入失调电流以及低的漂移;足够的带宽和转换速率(无畸变的放大瞬态信号);高输入共模范围和高共模抑制比;可调的闭环增益;线性好、精度高;成本低。单管或双管构成的单级放大电路的增益有限,不能满足实际的需要,而需要由若干单级放大电路级联成多级放大电路来运用。多级放大电路通常可分为输入级(其输入端与信号源相连接)、中间级、末前级和末级(其输出端与负载相连接)四部分。其中,输入级和中间级属于小信号放大电路,而末前级和末级属于大信号功率放大电路。多级放大电路级间耦合方式的基本要求是:既要不失真地、有效地传送信号,又要保证各级都有合适的静态工作点,常用

12、的耦合方式有:电容(又称阻容)耦合、变压器耦合、直接耦合、光电耦合。3.2.2 模拟信号的处理模拟信号的处理通过模数转换芯片TLC2543来完成。(1)TLC2543引脚及功能 TLC2543是12位的开关电容逐次逼近模数转换器,有多封装种形式,其中DB、DW或N封装的管脚图见图。TLC2543有20根引脚,其它封装形式引脚数及引脚功能相同。引脚的功能简要分类说明如下:电源引脚Vcc,20脚:正电源端,一般接+5V。GND,10脚:地。REF+,14脚:正基准电压端,一般接+5V。REF-,13脚:负基准电压端,一般接地。控制引脚CS,15脚:片选端,由高到低有效,由外部输入。EOC,19脚:

13、转换结束端,向外部输出。I/O CLOCK,18脚:控制输入输出的时钟,由外部输入。模拟输入引脚AIN0AIN10,19脚、1112脚:11路模拟输入端,输入电压范围:0.3VVcc+0.3V。控制字输入引脚DATA INPUT,17脚:控制字输入端,选择通道及输出数据格式的控制字由此输入。转换数据输出引脚DATA OUT,16脚:A/D转换结果输出的3态串行输出端。 (2)控制字的格式 控制字为从DATA INPUT端串行输入TLC2543芯片内部的8位数据,它告诉TLC2543要转换的模拟量通道、转换后的输出数据长度、输出数据的格式。其中高4位(D7D4)决定通道号,对于0通道至10通道,

14、该4位分别为0000、0001、1010,该4位为其它数字时的功能,用于检测校正。低4位决定输出数据长度及格式,其中D3、D2决定输出数据长度,TLC2543的输出数据长度有8位、12位、16位,但由于TLC2543为12位A/D转换芯片,经过分析可以看出,8位、16位输出对TLC2543的应用意义不大,宜定在12位输出,D3、D2两位为00即可。D1决定输出数据是高位先送出,还是低位先送出,若为高位先送出,该位为0,反之为1。D0决定输出数据是单极性(二进制)还是双极性(2的补码),若为单极性,该位为0,反之为1。(3)TLC2543接口 TLC2543只用4根线,即片选线CS,数据输入线D

15、ATA INPUT,数据输出线DATA OUT, 时钟线 I/O CLK与单片机相接。EOF未接入单片机,这是基于二个工作周期之间的单片机指令一般大于10s,转换已经完成,不必判断EOF,也可以通过试验或计算指令执行时间确定转换是否结束,这样可以省去一根接线。 三路模拟信号(二氧化硫,二氧化氮,一氧化碳)即电压信号从通道1(AIN0),通道2(AIN1),通道3(AIN2)输入,其控制字分别为00000000,00010000,00020000,输出的数字信号为12位,高位先送出,二进制。(4)内部寄存器TLC2543内部寄存器有输入数据寄存器与输出数据寄存器。输入数据寄存器存放从DATA I

16、NPUT端移入的控制字。输出数据寄存器存放转换好的数据,以供从DATA OUT端移出。开始时,片选为高,I/O CLOCK、DATA INPUT被禁止,DATA OUT呈高阻状态,此时EOC为高,输入数据寄存器被置为0,输出数据寄存器的内容是随机的。上电后,片选必须从高到低,才能开始一次工作周期。12个时钟信号从I/O CLOCK端依次加入,随着时钟信号的加入,控制字从DATA INPUT一位一位地在时钟信号的上升沿时被送入TLC2543(高位先送入),同时上一周期转换的A/D数据,即输出数据寄存器中的数据从DATA OUT一位一位地移出。TLC2543收到第4个时钟信号后,通道号也已收到,因

17、此,此时TLC2543开始对选定通道的模拟量进行采样,并保持到第12个时钟的下降沿。在第12个时钟下降沿,EOC变低,开始对本次采样的模拟量进行A/D转换,转换时间约需10s,转转完成EOC变高,转转的数据在输出数据寄存器中,待下一个工作周期输出。此后,可以进行新的工作周期。 TLC2543在每次I/O周期读取的数据都是上次转换的结果,当前的转换结果在下一个I/O周期中被串行移出。第一次读数由于内部读取的转换结果可能不准确,应丢弃。(5)程序及文字说明*/TLC2543驱动程序#include #include /*2543控制引脚宏定义*/#define CLOCK p17 /*2543时钟

18、*/#define D_IN p16 /*2543输入*/#define D_OUT p14 /*2543输出*/#define _CS p15 /*2543片选*/#define uint unsigned int#define uchar unsigned char/*名称:delay功能:延时模块输入参数:n要延时的周期数输出参数:无*/void delay(uchar n)uchar i;for(i=0;in;i+)_nop_();/*名称:read2543功能:TLC2543驱动模块输入参数:port通道号输出参数:ad转换值*/uint read2543(uchar port)ui

19、nt ad=0,i;CLOCK=0; /时钟通道打开禁止 _CS=0; /片选为低,开始工作,port=4; for(i=0;i12;i+) / 12个时钟上升沿if(D_OUT) ad|=0x01; /上个周期输出数据寄存器中的数据赋值给变量adD_IN=(bit)(port&0x80); 控制字从高位逐位输入到输入数据寄存器CLOCK=1; / 时钟信号delay(3); /延时半个周期CLOCK=0;delay(3);port=1;ad=1; return(ad); / 数字信号输出/*名称:main 功能:主函数输入参数:无输出参数:无*/void main()uint ad;whil

20、e(1)ad=read2543(0); 3.3、温度的采集及处理DS18B20可完成温度的采集和处理。(1)DS18B20内部结构温度LSB温度MSB用户字节1用户字节2配置寄存器保留保留保留DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时根据寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图所示。低位一直为,是工作模式位,用于

21、设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。(2)读数过程带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制

22、温度数据。(3)接口电路采用电源供电方式, DS18B20的1脚接地,2脚作为信号线,3脚接电源。(4)程序/-/ 程序名称:DS1820驱动程序/-/函数声明,变量定义#include #define jump_ROM 0xCC /跳过ROM命令#define start 0x44 /启动转换命令#define read_EEROM 0xBE /读存储器命令#define uchar unsigned char#define uint unsigned intsbit DQ=P10; /信号端定义unsigned char TMPH,TMPL; /-/ 函数名称: delay10ms/ 系统

23、采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动/-void delay10ms(uchar time) 每个周期10msuchar a,b,c;for(a=0;atime;a+)for(b=0;b10;b+)for(c=0;c120;c+);/-/ 函数名称: delay/-void delay(unsigned int N) int i;for(i=0;iN;i+);/-/ 函数名称: Reset/-unsigned char Reset(void) unsigned char deceive_ready; delay(10); DQ=0; /拉低DQ线 delay(29)

24、; /延时至少480us960us DQ=1; /将DQ线设置位逻辑高 delay(3); /延时等待deceive_ready响应 deceive_ready=DQ; /采样deceive_ready信号 delay(25); /等待时序结束 return(deceive_ready); /有deceive_ready信号时返回0,否则返回1/-/ 函数名称:read_bit/ 入口参数: 无/ 返回接收的数据/ 函数功能:读一个bit子程序 /-unsigned char read_bit(void)unsigned char i;DQ=0; /拉低DQ线开始时序DQ=1; /升高DQ线

25、for(i=0;i3;i+); /延时至时序开始15usreturn(DQ); /返回DQ值/-/ 函数名称: write_bit/ 入口参数: bitval/ 函数功能:写一个bit子程序 /-void write_bit(unsigned char bitval)DQ=0; /拉低DQ线开始时序if(bitval=1)DQ=1; /如果写逻辑为高delay(5); /延时 DQ=1; /升高DQ线 /-/ 函数名称: write_byte/ 入口参数: val/ 函数功能:写一个byte子程序 /-void write_byte(unsigned char val)unsigned cha

26、r i,temp;for(i=0;ii; /将val位右移i位赋值给比temp temp=temp&0x01; /取temp最低位 write_bit(temp); delay(5); /延时至时序结束/-/ 函数名称: read_byte/ 返回接收的数据 value/ 函数功能:读一个byte子程序 /-unsigned char read_byte(void)unsigned char i,m,receive_data;m=1;receive_data=0; /初始化for(i=0;i8;i+) if(read_bit() receive_data=receive_data+(mi);

27、/每读一位数据据,左移一位 delay(6); /延时至时序结束 return(receive_data); /返回value/-/ 函数名称: Get_temp/ 返回接收的数据 TMPL, TMPH/ 函数功能:取出温度值/-void Get_temp(void)Reset();write_byte(jump_ROM); /发跳过ROM命令write_byte(start); /发启动转换命令Reset();write_byte(jump_ROM); /发跳过ROM命令write_byte(read_EEROM); /读存储器命令TMPL=read_byte(); /读低8位温度值TMPH

28、=read_byte(); /读高8位温度值/-/-/ 函数名称: main/ 函数功能: 主函数/-void main() for(;) Get_temp();3.4、显示电路的原理及应用本过程由CH451芯片驱动八位数码管来实现。(1)CH451概述CH451是一个整合了数码管显示驱动和键盘扫描控制以及监控的多功能外围芯片CH451内置RC振荡电路,支持多片级联,时钟速度从 0到 10MHz。可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、移位等功能;同时还可以进行64键的键盘扫描。(2)外部接口CH451具有硬件实现的高速 4线串行接口,即4个信号线:串行数据输入线 DIN

29、、串行数据时钟线 DCLK、串行数据加载线 LOAD、串行数据输出线 DOUT。其中DIN、DCLK、LOAD接单片机的三个I/O口。字驱动引脚DIG4、DIG5、DIG6、DIG7接四个LED.段驱动引脚SEG0到7脚接LED的a、b、c、d、e、f、g、pd段,采用共阴极数码管,所以三脚接地。(3)输出过程单片机向 CH451输出串行数据的过程是(低位在前): 输出一位数据,即向 DIN输出最低位数据 B0,并向 DCLK输出低电平脉冲(从高电平变为低电平再恢复为高电平),其中包括一个上升沿使 CH451输入位数据; 以同样的方式,输出位数据 B0B11; 向 LOAD输出低电平脉冲,其中

30、包括一个上升沿使 CH451加载串行数据。(4)程序及文字说明#include#define uchar unsigned char#define uint unsigned int#define ch451_dsp 0x0500 /设置默认显示方式#define ch451_BCD 0x0580 /设置BCD译码方式#define ch451_twinkle 0x0600 设置闪烁方式#define ch451_reset 0x0201 /复位#define ch451_syson1 0x0401 开显示#define ch451_dig4 0x0c00 dig4,dig5,dig6,dig

31、7接四个八位LED #define ch451_dig5 0x0d00#define ch451_dig6 0x0e00#define ch451_dig7 0x0f00 sbit ch451_dclk=P17; /串行数据时钟上升延激活 sbit ch451_din=P16; / 串行数据输出,接CH451的数据输入 sbit ch451_load=P15; 串行数据加载void delay10ms(uchar time) 延时 time 个周期,每个10msuchar a,b,c;for(a=0;atime;a+)for(b=0;b10;b+)for(c=0;c120;c+); void

32、ch451_init() 初始化函数 ch451_din=0; ch451_dclk=1; ch451_din=1;void ch451_write(int command) 将12位数据输入CH451int i,temp;temp=command; 12位数据赋值给变量tempch451_load=0; LOAD变低,开始输入for(i=0;i1; 逐位输入ch451_load=1; 输入结束 void display (int num) CH451根据操作命令显示 int a,b,c,d; a=num/1000;b=num%1000/100;c=num%100/10;d=num%10;ch

33、451_write(ch451_dig7|a); ch451_write(ch451_dig6|b);ch451_write(ch451_dig5|c);ch451_write(ch451_dig4|d);void main()ch451_init(); 初始化ch451_write(ch451_syson1); 开显示ch451_write(ch451_twinkle); 开闪烁display_1(255,255,255,255); 8位LED都亮 delay10ms(300); 延时300周期while(1) ch451_write(ch451_reset); 复位 ch451_write

34、(ch451_syson1); 开显示 ch451_write(ch451_BCD);开BCD译码 void display (8888);第四章 程序设计及说明/-/-气体监测系统程序-/-author:wxh time:2009-01-06-/#include#include #define uchar unsigned char#define uint unsigned int#define ch451_syson 0x0400 /关显示、键盘、看门狗#define ch451_syson1 0x0401 /开显示#define ch451_syson2 0x0403 /开显示、键盘#define ch451_syson3 0x0407 /开显示、键盘、看门狗功能#define ch451_dsp 0x0500 /设置默认显示方式#define ch451_BCD 0x0580 /设置BCD译码方式#define ch451_twinkle 0x0600 /设置闪烁控制#define ch451_dig0 0x0800#define ch451_dig1

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

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号