锅炉越限报警系统.docx
- 文档编号:17334249
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:27
- 大小:446.86KB
锅炉越限报警系统.docx
《锅炉越限报警系统.docx》由会员分享,可在线阅读,更多相关《锅炉越限报警系统.docx(27页珍藏版)》请在冰点文库上搜索。
锅炉越限报警系统
锅炉越限报警系统
项目概述
单片机基础知识:
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机了解计算机原理与结构的最佳选择。
现在,这种单片机的使用领域已十分广泛。
彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。
单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。
单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。
MCS-51系列单片机主要包括8031、8051和8751等通用产品。
单片机的发展趋势
单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
一、微型单片化
现在常规的单片机普遍都是将中央处理器 甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。 此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。 现在的许多单片机都具有多种封装形式,其中SMD<表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。 二、低功耗CMOS化 MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS<互补金属氧化物半导体工艺)。 像80C51就采用了HMOS<即高密度金属氧化物半导体工艺)和CHMOS<互补高密度金属氧化物半导体工艺)。 CMOS虽然功耗低,但因为其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。 所以这种工艺将是今后一段时期单片机发展的主要途径。 三、主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍以89C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。 所以89C51占据了半壁江山。 而Microchip公司的PIC精简指令集合 此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。 在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。 九十年代以后,单片机在结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。 芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。 这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。 在工业生产中,往往会用到锅炉来完成相关的工业工艺要求,在实际生产中使用到了锅炉系统,为了实现自动控制的要求,那么就应该在使用中需要对其实行相应的自动控制。 很显然,我们可以有很多的途径去实现该种控制,在此仅用C51单片机来实现锅炉越限的报警的处理。 一、设计目的和要求 1、设计目的: 通过用C51单片机来编写一个简单的程序,利用ADC8080实现模数转换监控锅炉的越限参数的变化,从而实现相应的报警控制。 了解ADC8080的使用方法,以及学习使用KeilC51进行单片机开发的方法,并掌握联合Proteus来实现仿真调试。 2、设计要求: <1).蒸汽压力(X3>的下限报警值为1.5V, 炉膛温度(X2>的下限报警值为1V,上限报警值为4V, 水位(X1>的下限报警值为1V,上限报警值为4V; <2).调节滑动变阻器X3模拟蒸气报警,若参数越界, 对应红灯亮,并有报警声,按K1键消除报警声; <3).调节滑动变阻器X2模拟炉膛温度报警,若参数越界, 对应红灯亮,并有报警声,按K1键消除报警声; <4).调节滑动变阻器X1模拟水位报警,若参数越界, 对应红灯亮,并有报警声,按K1键消除报警声; <5).若所有参数均正常,绿灯亮。 二、硬件电路设计 越限参数监控 ADC0808 模数转换 AT89C52 单片机 报警显示 单元电路的设计 图1硬件电路 主控芯片根据设计的所需要求分析STC89C52单片机的工作原理,可得出来温度电路设计方便和优点。 VCC: 电源;GND: 地,RST: 复位输入。 P0口: P0口是一个8位漏极开路的双向I/O口。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。 程序校验时,需要外部上拉电阻。 P1口: 是一个具有内部上拉电阻的8位双向I/O口,在flash编程和校验时,P1口接收低8位地址字节。 P2口: P2口是一个具有内部上拉电阻的8位双向I/O口,在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3口: P3口是一个具有内部上拉电阻的8位双向I/O口,在flash编程和校验时,P3口也接收一些控制信号。 XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2: 振荡器反相放大器的输出端。 程序存储器: 如果EA引脚接地,程序读取只从外部存储器开始。 对于89S52,如果EA接VCC,程序读写先从内部存储器<地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为: 2000H~FFFFH。 数据存储器: STC89C52有256字节片内数据存储器。 高128字节与特殊功能寄存器重叠。 也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的 STC89C52有6个中断源: 两个外部中断 STC89C52单片机引脚图如图2所示 图2单片机引脚图 单片机晶振电路和复位电路 图3晶振和复位电路 锁存电路 图4锁存电路 模数转换电路 图5模数转换电路 越限参数控制电路 图6越限参数控制电路 报警显示电路 图7报警显示电路 三、软件设计 1、程序设计流程 编程流程图 2、程序说明 四、仿真测试 1、在Keiluvision4中编写程序生成.hex烧写文件: <1)、在安装好了Keil软件后,打开它,如图8所示。 图8运行Keil软件的界面 我们先建一个项目文件,点击“Project>NewProject..”菜单,如图9所示。 图9建立项目界面 选择项目文件要存放的路径,输入项目文件名,如图10所示,然后单击保存。 图10选择路径和项目名 在弹出的对话框中选择CPU厂商型号,选择Atmel公司的AT89C51后,单击确定,如图11所示。 图11选择CPU厂商型号 在接着出现的对话框中选择“否”,如图12所示。 图12选择不使用startupcode 新建一个C51文件,单击左上角的NewFile,如图13所示。 图13新建文件 保存新建的文件,单击SAVE,如图14所示。 图14保存文件 在出现的对话框中输入保存文件名“锅炉越限报警.c”<注意后缀是.c),再单击“保存”,如图15所示。 图15输入文件名 保存好后把此文件加入到项目中,方法如下: 用鼠标在SourceGroup1上单击右键再单击AddFileto‘SourceGroup1’,如图16所示。 图16将文件添加到项目 选择要加入的文件,找到“锅炉越限报警.c”文件后,单击Add,然后单击Close,如图17所示。 图17选择文件对话框 在编辑框中输入上述的程序代码后,如图18所示。 图18编译新文件 到此我们完成了项目项目的建立及文件的加入项目,现在我们开始编译项目,如图所示。 我们单击编译,如果在错误与警告出看到0Error0Warning,表示编译通过,如图19所示。 图19编译界面 生成.hex烧写文件,先单击OptionforTarget,如图20所示。 在图中,单击Output选项卡,选中CreateHEXFile选项,再单击确定。 图20生成.hex文件设置界面 以上是Keil软件的基本应用以及生成.hex烧写文件。 2、Protues和Keil联合调试 (1)在Protues中选择元器件,如图21所示。 图21选择元器件界面 <2)对元器件布局和布线以及设置元器件属性,如图22所示。 图22建立硬件电路 <3)下载程序并仿真,如图23所示。 图23加载.hex文件对话框 图24参数监控及报警显示电路 相关的越限参数指标: ●蒸汽压力(X3>的下限报警值为1.5V, ●炉膛温度(X2>的下限报警值为1V,上限报警值为4V, ●水位(X1>的下限报警值为1V,上限报警值为4V; 由相应的越限参数,我们可以按如下的步骤调试: ■调节滑动变阻器X3模拟蒸气报警,若参数越界, 对应红灯亮,并有报警声,按K1键消除报警声; ■调节滑动变阻器X2模拟炉膛温度报警,若参数越界, 对应红灯亮,并有报警声,按K1键消除报警声; ■调节滑动变阻器X1模拟水位报警,若参数越界, 对应红灯亮,并有报警声,按K1键消除报警声; ■若所有参数均正常,绿灯亮。 五、心得体会 通过本次课程设计,我们熟悉了AT89C52、ADC0808等元器件的功能和应用。 结合C51单片机语言设计一个程序,实现相关要求的控制系统设计。 在设计之前先画好流程图,形成清晰的编程思路,进而合理的完成实验编程。 通过实际的编程和仿真调试,我们可以在这一过程中将书本上的理论知识应用在实际的控制系统的设计中。 同时在仿真调试时,我们可以发现在编程时出现的错误并予以纠正。 在实际的编程环境中,可以很直观的纠正自己在编程中的错误,并形成良好的编程习惯,同时也为以后的编程设计打下良好基础。 当然,我们也会发现在这一设计过程中的不足。 即在软件和硬件实现的功能一样时,在实际硬件上能实现,但在Proteus仿真软件上却不能单独实现,必须要配合软件才能实现。 这就要求我们不仅要学会使用相关的软件,同时也应该积累实践的经验,从中总结一些实际的问题的解决方法。 于此同时也学会了将Keil软件和Proteus软件联合在单片机设计中的仿真调试。 提高了我们实际的操作能力,多方位地丰富了我们对硬件电路和软件程序的仿真调试手段。 成功完成本次的实验,让我们受益匪浅,同时也激发了个人的实际动手的积极性。 将死板的课本知识应用到实际可行的控制设计,是一种很好的学习方法。 实践是检验真理的唯一标准,学好了知识必须要能在实际的应用中实现才能体现其价值。 通过这次课程设计让我们对所学内容有了进一步的理解 六、参考文献 1、徐爱钧编著《8051单片机实践教程》电子工业出版社.2006年 2、常喜茂孔英会付小宁编著《C51基础与应用实例》电子工业出版社.1999年 3、贺敬凯刘德新管明祥编著《单片机系统设计仿真与应用——基于Keil和Protues仿真平台》西安电子科技大学出版社.2003年 4、孙涵芳编著《MCS-51/96系列单片机原理及应用<修订版)》.北京航空航天大学出版社.1994 5、李朝青编著《单片机原理及接口技术<第3版)》.北京航空航天大学出版社.2005 6、周润景袁伟亭景晓松编著《Proteus在MCS-51&ARM7系统中的应用百例》电子工业出版社.2006 附录一 元器件清单 序号 符号 名称 数量 1 74LS04 反相器 7 2 74LS373 锁存器 1 3 ADC0808 模数转换器 1 4 AT89C52 单片机CPU 1 5 BUTTON 按钮 1 6 CAP 电容 2 7 CAP-ELEC 电解电容 1 8 CRYSTAL 晶振 1 9 LED-GREEN 绿发光二极管 1 10 LED-RED 红发光二极管 5 11 NOR 或非门 2 12 POT-LIN 变阻器 1 13 RES 电阻 2 14 RESPACK-8 排阻 1 15 SPEAKER 蜂鸣器 1 附录二 系统仿真电路图 附录三 系统实现程序 /* *文件名锅炉报警系统程序.c *芯片: AT89C52 *主频: 12MHZ *功能描述: 锅炉报警系统,对水位、炉膛温度、蒸汽压力监控 */ #include #include #defineucharunsignedchar #defineuintunsignedint /*ADC0808的地址*/ #defineADC_0808XBYTE[0x7fff] /*采样值保存位置,分别为水位,温度,蒸汽压力值*/ ucharSAMP[3]={0x00,0x00,0x00}。 /*各个警限值,分别为水位上限值,水位下限值,温度上限值,温度下限值,蒸汽压力下限值*/ ucharLIMIT[5]={0xc0,0x40,0xc0,0x40,0x50}。 /*报警铃开/关标志,0-开,1-关*/ bitALARM=0。 ucharDETECT。 //保存消除报警铃时的值 /*P3口定义*/ sbitADC_EOC=P3^0。 //A/D转换后产生一个正脉冲 sbitLS_373=P3^1。 /*P1口定义*/ sbitP1_0=P1^0。 //水位上限灯控制 sbitP1_1=P1^1。 //水位下限灯控制 sbitP1_2=P1^2。 //温度上限灯控制 sbitP1_3=P1^3。 //温度下限灯控制 sbitP1_4=P1^4。 //蒸汽压力下限控制 sbitP1_5=P1^5。 //正常运行 sbitP1_6=P1^6。 sbitP1_7=P1^7。 //报警铃控制 /*函数原型申明*/ voidDelay500ms(void>。 voidInitInt0(void>。 /* *函数名: main(> *功能: 程序入口 *输入参数: 无 *输出参数: 无 */ voidmain(> { uchari。 P1=0x20。 InitInt0(>。 while(1> { for(i=0。 i<3。 i++> { P0=i。 //选通通道 LS_373=1。 LS_373=0。 //通道锁存 ADC_0808=0x00。 //启动A/D转换 while(! ADC_EOC>。 //等待转换结束 SAMP[i]=ADC_0808。 switch(i> { case0: { if(SAMP[0]>LIMIT[0]>//水位上限超过 { P1_0=1。 P1_1=0。 } else { if(SAMP[0] { P1_0=0。 P1_1=1。 } else//水位正常 { P1_0=0。 P1_1=0。 } } } break。 case1: { if(SAMP[1]>LIMIT[2]>//温度上限值超过 { P1_2=1。 P1_3=0。 } else { if(SAMP[1] { P1_2=0。 P1_3=1。 } else//温度正常 { P1_2=0。 P1_3=0。 } } } break。 case2: { if(SAMP[2] { P1_4=1。 } else {//蒸汽压力正常 P1_4=0。 } } break。 } if(P1&0x1F>//有警限值超过 { P1_5=0。 if(ALARM==0> {//报警 P1_7=! P1_7。 } else { if((P1&0x1f>>(DETECT&0x1f>> //判断消除报警铃后其它有没有报警 ALARM=0。 } } if((P1==0x00>||(P1==0x80>>//无警限值超过 { P1=0x20。 ALARM=0。 } } Delay500ms(>。 } } /* *函数名: int0 *功能描述: 外部中断0中断服务程序 *输入参数: 无 *返回值: 无 */ voidint0(void>interrupt0 { ALARM=1。 DETECT=P1。 } /* *函数名: InitInt0 *功能描述: 外部中断0初始化 *输入参数: 无 *返回值: 无 */ voidInitInt0(void> { EA=1。 EX0=1。 IT0=1。 } /* *函数名: Delay500ms *功能描述: 500ms延时 *输入参数: 无 *返回值: 无 */ voidDelay500ms(void> { uchari,j,k。 for(i=23。 i>0。 i--> for(j=152。 j>0。 j--> for(k=70。 k>0。 k-->。 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 锅炉 报警 系统