最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

计算机控制技术课程设计

来源:动视网 责编:小OO 时间:2025-09-29 18:15:53
文档

计算机控制技术课程设计

目录1前言22总体方案设计32.1主控芯片选择32.2显示模块选择32.3可燃气体信号采集传感器选择42.4A/D转换部分42.5电源的选择43理论分析与计算53.1MQ-2可燃气体信号采集传感器特点及参数53.2相关理论值计算54单元模块电路设计84.1可燃气体信号采集部分84.2显示部分84.3A/D转换部分94.4报警显示部分104.5最小系统及按键115软件设计125.1程序结构图125.2程序代码126系统调试136.1系统硬件调试136.1.1排除逻辑故障136.1.2排除元件故障
推荐度:
导读目录1前言22总体方案设计32.1主控芯片选择32.2显示模块选择32.3可燃气体信号采集传感器选择42.4A/D转换部分42.5电源的选择43理论分析与计算53.1MQ-2可燃气体信号采集传感器特点及参数53.2相关理论值计算54单元模块电路设计84.1可燃气体信号采集部分84.2显示部分84.3A/D转换部分94.4报警显示部分104.5最小系统及按键115软件设计125.1程序结构图125.2程序代码126系统调试136.1系统硬件调试136.1.1排除逻辑故障136.1.2排除元件故障
目录

1 前言    2

2 总体方案设计    3

2.1 主控芯片选择    3

2.2 显示模块选择    3

2.3 可燃气体信号采集传感器选择    4

2.4 A/D转换部分    4

2.5 电源的选择    4

3 理论分析与计算    5

3.1 MQ-2可燃气体信号采集传感器特点及参数    5

3.2 相关理论值计算    5

4 单元模块电路设计    8

4.1 可燃气体信号采集部分    8

4.2 显示部分    8

4.3 A/D转换部分    9

4.4 报警显示部分    10

4.5 最小系统及按键    11

5 软件设计    12

5.1 程序结构图    12

5.2 程序代码    12

6 系统调试    13

6.1 系统硬件调试    13

6.1.1 排除逻辑故障    13

6.1.2 排除元件故障    13

6.2 系统软件调试    13

7 设计总结    14

8参考文献    15

附录一:系统总图    16

附录二:相关程序    17

1 前言

随着城市煤气、天然气事业及化学工业的迅速发展,易燃、易爆的气体种类和应用范围在不断增加,这些易燃易爆气体在生产和使用过程中,一旦发生泄漏将会引起中毒、火灾、爆炸等重大事故,人们在对安全生产的重视程度日益增加的同时,对生产技术手段也进行不断的提高, 研制一种新型、性能稳定、准确监测可燃性气体报警控制器势在必行。 

而传统的模拟型可燃性气体报警控制器,对于气体传感器的特性补偿、修正,采用匹配补偿传感器的硬件调整方式;这种调整方式虽然具有现场调整方便的优点,但补偿拟合的范围窄,匹配传感器的部件选择困难,而难以获得较好的补偿、修正效果。因此,本次设计采用了“探测器+单片机控制电路”设计思路。 

本次设计采用以STCC52芯片为核心,用半导体陶瓷式气体传感器MQ-2来检测外部气体浓度,结合外部硬件电路实现对可燃性气体进行报警控制装置。STCC52芯片具有功能强大,性价比高等一系列优点,适合产品大规模生产。同时,设计出的可燃性气体报警控制器具有操作简单,实用性强,价格便宜,安全性高等特点,所以非常适合贮气仓库,以及家庭等场所使用,具有很高的实用价值。 

正是由于可燃性气体报警控制器对于安全生产的重要性,国内外有众多厂家研制、生产这一产品。从运用所学知识和实际意义出发,研制一种固定式可燃性气体报警控制器,它主要对以烷类气体为主的多种可燃性气体进行检测控制。

2总体方案设计

2.1主控芯片选择

方案一:STCC52系列单片机,此系列单片机比较常用、价格便宜、操作简单、的I/O口数量较多,方便购买。但属于8位单片机,计算能力一般,功耗高,加密性能弱,体积大。

方案二:DSP430系列单片机电压低,功耗低,3.3V供电,16位,运行速度快,内置硬件乘法器,乘除法运算都为单周期指令,片内集成资源丰富,有两组普通I\\O口具有中断功能。但是相对STCC52系列单片机成本较高,耐压值低,容易被烧毁。

方案三:ARM32位系列单片机以及处理器,与传统的8位微处理器相比速度更快,性能更强,资源丰富,比如中断、AD、LCD控制器、DMA、存储系统等等。ARM开发一般重点是操作系统和应用程序。缺点就是在低端应用时ARM性价比较低,开发难度也更大,新手入门较困难。

确定方案:考虑到实际开发中,STCC52系列单片机性能已经完全足够,同时基于成本考虑,主控芯片采用STCC52。

2.2显示模块选择

    方案一: LCD1602液晶也叫LCD1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

方案二:LCD128液晶,能显示汉字,字符,数字等,但是体积较为庞大,所占空间较大。

    方案三:诺基亚5110液晶,该模块具有以下特点: 

84x48 的点阵LCD,可以显示4 行汉字,采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协议(如AVR 单片机的SPI、MCU51的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。

方案四:数码管,显示较为稳定,抗干扰较强,但是显示能力单一,显示内容会受到一定。

确定方案:实际开发中,不需要功能相对强大的液晶显示屏,显示可燃气体浓度用数码管显示简洁明了,同时功耗和成本都较低,确定显示模块采用数码管。

2.3可燃气体信号采集传感器选择

方案一:MQ-2,广泛的探测范围、高灵敏度、快速响应恢复、优异稳定性、寿命长、简单的驱动电路MQ-2应用: 可用于家庭和工厂的气体泄漏监测装置,适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测。

方案二:TGS813,后期电路简单; 长寿命,低功耗; 对甲烷、乙烷、丙烷等可燃气体的高敏感度,但价格相对MQ-2要高一些。

方案确定:MQ-2的高灵敏度和优异的稳定性以及较低的价格适合本项目的开发,决定采用MQ-2作为可燃气体信号采集传感器。

2.4A/D转换部分

方案一:AD7888,微功耗8通道12位AD转换器,是高速、低功耗的12位AD转换器,单电源工作,电压范围为2.7V~5.25V,转换速率高达125ksps ,输入跟踪-保持信号宽度最小为500ns,单端采样方式。AD7888包含有8个单端模拟输入通道。

方案二:ADC0804是一个早期的A/D转换器,因其价格低廉而在要求不高的场合得到广泛应用。ADC0804是一个8位、单通道、低价格A/D转换器,主要特点是:摸数转换时间大约100us;方便的TTL或CMOS标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作电压为0-5V。

方案确定:ADC0804开发简单,资料齐全,适合项目开发,通过分析对比采用ADC0804作为AD转换器。

2.5电源的选择

方案一:采用两节五号的干电池作为主控芯片的供电电源。此方案简单易行,但是此系统是处于长期工作状态对电量的消耗比较大。

方案二:采用汽车自带的汽车电瓶12V电源降压后供电。此方案较好的利用汽车自身能源,避免单独电源给防撞系统供电,可使系统长期安全不掉电工作。

方案确定:选择方案一,五号干电池易于得到,便于开发。                

3理论分析与计算

3.1MQ-2可燃气体信号采集传感器特点及参数

MQ-2/MQ-2S气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。

MQ-2/MQ-2S气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。

MQ-2/MQ-2S气敏元件的结构和外形如图2-3-1所示(结构 A 或 B), 由微型Al2O3陶瓷管、SnO2 敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。基本电路

图3.1 结构和外形

3.2相关理论值计算 

MQ-2灵敏度特性: 

图3.2  MQ-2灵敏度特性曲线

MQ-2 温/湿度的影响: 

图3.3  MQ-2温/湿度曲线

 

  

图3.4是传感器的基本测试电路。该传感器需要施加2 个电压:加热器电压(VH)和测试电压(VC)。其中VH用于为传感器提供特定的工作温度。VC 则是用于测定与传感器串联的负载电阻(RL)上的电压(VRL)。这种传感器具有轻微的极性,VC 需用直流电源。在满足传感器电性能要求的前提下,VC 和VH 可以共用同一个电源电路。为更好利用传感器的性能,需要选择恰当的RL值。传感器电阻(Rs),可用计算公式: Rs=(Vc/VRL-1)×RL求得。

图3.4  传感器基本测试回路

                

4    单元模块电路设计

4.1可燃气体信号采集部分

在本设计中,采用MQ-2传感器作为信号采集器件,器件的1、3、4脚连接电源的正极(+5V),2、5、6脚连接地。采集到的信号通过1k欧姆电阻后送到ADC0804的模拟输入端,R2用来调节输出信号的大小。具体电路连接如图4.1所示:

图4.1  信号采集部分

4.2显示部分

显示模块采用共阳极数码管显示。单片机P0口控制 LED数码管显示,其中P0接4.7k欧姆的上拉电阻后8个管脚接1k欧姆的限流电阻后分别于控制数码管的a,b,c,d,e,f,d连接。LED显示0-9的段码为0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90。具体电路连接如图4.2所示:

图4.2  数码管显示部分

4.3A/D转换部分

由MQ-2传感器采集到的电压信号接10k欧姆的电阻后接到ADC0804的Vin+端;ADC0804的A-GND和Vin-端接地;CLK-IN端接104电容后接地;CLK-R接10k欧姆电阻接104电容接地;Vref/2接2.5V电压,电路中采用两个1k欧姆的电阻分压得到;DB0-DB7分别连接单片机的P1.0-P1.7用于单片机采集转换后的数字信号;CS、RD、WR三端分别连接P3.0、P3.1、P3.2用于控制单片机于ADC0804进行通信。具体电路连接方式如图4-3-1所示:

图4.3  A/D转换部分

4.4报警显示部分

采集到的数字信号经过单片机计算后如果可燃气体浓度达到报警器设置的临界点时,单片机将控制蜂鸣器报警,同时LED闪烁。LED的正极接电源正极(+5V),负极接1K欧姆电阻后接单片机P2.0端。蜂鸣器采用NPN3041三极管来驱动,三极管集电极接电源正极(+5V),基极接5.1k欧姆电阻后接P2.1端,射极接蜂鸣器,通过蜂鸣器后接地。具体电路连接方式如图3-4-1所示:

图4.4  报警部分

4.5最小系统及按键

单片机接+5V电源;晶体振荡器频率为12MHz,晶振的两个引脚分别连接在单片机的XTAL1和XTAL2端,晶振的两端再分别连接一个22pF电容后接地;复位电路经电源正极(+5V)接10uF电容后接1k欧姆电阻接地,单片机复位端RST接在电容和电阻之间。在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平,单片机系统自动复位。

本次设计电路中加入两个按键,用于人为报警。考虑到实际开发中,如果已经人为已经发现有危险后,但是系统由于各种意外并没有报警时,可以手动的按下S1按键报警。同理,当报警解除时,有可能系统的报警声还一直处于报警状态,所以设计按键S2用于手动解除。单片机P3.6和P3.7端分别连接一个按键后接地。当按下S1时蜂鸣器报警,LED闪烁;S2用来取消报警。具体电路连接方式如图4.5所示:

图4.5  最小系统及按键

5软件设计

5.1程序结构图

                

 

5.2程序代码

见附录二。

        

6系统调试

6.1系统硬件调试

6.1.1排除逻辑故障

这类故障往往由于设计和加工制板过程中工艺性错误所造成的。主要包括错线、开路、短路。排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。必要时利用数字万用表的短路测试功能,可以缩短排错时间。

6.1.2排除元件故障

造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误后,用替换方法排除错误。

6.2系统软件调试

软件调试主要采用keil软件调试编译单片机程序。由于由于STCC52可以擦写上千次,所以在这个调试过程中,并没有用仿真器来实践,而是直接将程序烧写进单片机来操作。将通过KEIL软件编译通过的单片机程序生成的“.hex”文件用烧录软件通过下载线烧写进单片机中。 

7设计总结

本次设计对可燃性气体报警控制器进行了深入的研究,在参考国内外一些资料的基础上,比较合理地选择了系统的设计方案,采用了“探测器+单片机控制电路”设计思路,由于具有操作简单,实用性强,价格便宜,安全性高等特点,所以非常适合贮气仓库,以及家庭等场所使用,具有很高的实用价值。 

本次设计的可燃性气体报警器由探测器与单片机控制电路两大部分构成。根据设计要求、使用环境、成本等因素,选用MQ-2气体传感器。该传感器是对以烷类气体为主的多种可燃性气体有良好敏感特性的广谱型半导体敏感器件。它的灵敏度适中,响应与恢复特性好,长期工作稳定性、重现性、抗环境气氛影响及抗温湿度影响等性能均优。该仪器采用了高性能STCC52单片机作为核心电路,充分利用了STCC52的高速数据处理能力和丰富的片内设置,实现了仪器的小型化和智能化,使仪表具有结构简单、性能稳定、成本低等优点。应用程序用C语言编写,充分利用芯片资源,提高了测量精度和代码执行效率,减小代码容量。对可燃性气体采用滤波、线性化处理等,不但最大限度地排除现场噪声干扰,降低可燃性气体报警器误报概率,而且易于在单片机中实现。此电路具有结构简单,调试方便,线性度好,温漂小等优点。 

本次设计也存在着一些需要完善的地方,譬如让检测进行网络连接,实行多点同时检测、如何更加智能化的进行报警工作,如何能更好的减少检测误差等问题值得去进一步的研究和探讨。 

本次设计的可燃性气体报警控制警器灵敏度高,在测量范围内具有较理想的特性,适用于低流速的可燃性气体测量。本课题的工作为便携式仪器的研制和实用化提供了较好的实现方案,为今后该领域的研究提供了很好的参考依据。

8参考文献

[1] 杨天怡主编,微型计算机控制技术,重庆:重庆大学出版社; 

[2] 涂时亮编,单片微机控制技术,上海:复旦大学出版社;

[3] 黄胜军编,微机控制应用实验与实例,北京:清华大学出版社;

 [4] 陈理壁.步进电机及其应用[M],上海: 上海科学技术出版社;

 [5] 刘国荣.单片微型计算机技术,北京:机械工业出版社;

[6] 王福瑞编,单片微机测控系统设计大全,北京:北京航空航天大学出版社; 

[7] 潘新民编,单片微型计算机实用系统设计,北京: 人民邮电出版社; 

[8] 李伯成编,IBM - PC 微机应用系统设计,西安:西安电子科技大学; 

[9] 微机控制技术及其应用方面的教材、期刊、杂志。

附录一:系统总图

附录二:相关程序

#include

#include

#define uchar unsigned char 

#define uint unsigned int

#define ulong unsigned long

uint num,aa,bb,adval;            //定义全局变量

uint table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};            //数组用于数码管显示0--9 

sbit wr=P3^0;             //位定义 AD wr脚

sbit rd=P3^1;             //位定义 AD rd脚

sbit csad=P3^2;             //位定义 AD cs脚

sbit led=P2^0;             //位定义 LED         

sbit beep=P2^1;             //位定义 蜂鸣器

sbit key0=P3^7;             //位定义按键0

sbit key1=P3^6;             //位定义按键1

void init();              //子函数声明

void start();            //子函数声明

void read();            //子函数声明

void delay(uint z)        //延时子函数z ms

{

    uint t1,y;            //定义局部变量t1,y

for(t1=z;t1>0;t1--)

     for(y=110;y>0;y--);

}        

void main()                        //主函数

{

    init();                         //定时器 AD初始化

    while(1)                    //while循环

    {

        start();                //启动AD

        delay(200);                //延时200ms用于AD处理

        read();                    //读取AD数据

        num=adval/12;             //数据处理

     if(num>9) num=9;

        P0=table[num];              //数码管显示数据

      if((num>2)||(num==2)) //检测数据大于或等于3 开定时器0  报警

TR0=1;

        if(num<2)            //如果数据小于3  关定时器0  取消报警

        {

            TR0=0;             //关定时器0

            beep=0;            //关蜂鸣器

            led=1;            //关LED

        }

          

        if(key0==0)                //报警按键  

        {

            delay(20);          //消抖

            if(key0==0)

            {

                TR2=1;            

                while(!key0);        //按键松手检测

            }

        }

        if(key1==0)                //报警取消  

        {

            delay(20);           //消抖

            if(key1==0)

            {

                TR2=0;              //关定时器2

                beep=0;              //蜂鸣器报警

                led=1;              //LED闪烁

                while(!key1);         //按键松手检测

            }

        }    

    }    

}

void init()            //CS脚置0,定时器0初始化子函数

{

    csad=0;             //CS脚置0

    P2=0x01;

    

    TMOD=0x21;                     //设置定时器工作方式

    TH0=(65536-50000)/256;        //T0赋初值

    TL0=(65536-50000)%256;

    ET0=1;                        //定时计数溢出中断允许位

    T2CON=0x00;                    //T2赋初值

    TH2=(65536-50000)/256;

    TL2=(65536-50000)%256;

    ET2=1;

    EA=1;                //开总中断

}

void start()        //启动AD子函数

{

    wr=1;

    _nop_();        //延时一个机器周期

    wr=0;

    _nop_();

    wr=1;    

}

void read()            //AD读操作子函数

{

    P1=0xff;

    rd=1;

    _nop_();        //延时一个机器周期    

    rd=0;

    _nop_();

    adval=P1;        //读取AD中的数据

    rd=1;      

}

void timer0() interrupt 1        //T0中断服务程序

{

    TH0=(65536-50000)/256;        //赋初值

    TL0=(65536-50000)%256;

    aa++;

    if(aa==6)                //延时300ms

    {    

        aa=0;

        led=~led;            //LED值取反

        beep=~beep;            //蜂鸣器值取反          

    }

}

文档

计算机控制技术课程设计

目录1前言22总体方案设计32.1主控芯片选择32.2显示模块选择32.3可燃气体信号采集传感器选择42.4A/D转换部分42.5电源的选择43理论分析与计算53.1MQ-2可燃气体信号采集传感器特点及参数53.2相关理论值计算54单元模块电路设计84.1可燃气体信号采集部分84.2显示部分84.3A/D转换部分94.4报警显示部分104.5最小系统及按键115软件设计125.1程序结构图125.2程序代码126系统调试136.1系统硬件调试136.1.1排除逻辑故障136.1.2排除元件故障
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top