湖南工程学院工业现场单片机课程设计_第1页
湖南工程学院工业现场单片机课程设计_第2页
湖南工程学院工业现场单片机课程设计_第3页
湖南工程学院工业现场单片机课程设计_第4页
湖南工程学院工业现场单片机课程设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南工程学院工业现场单片机课程设计 湖南工程学院 课 程 设 计课程名称 单片机原理与应用课题名称 单片机工业现场报警器专 业 测控技术与仪器班 级 测控1101学 号姓 名 指导教师 肖 峰 2014 年 3 月 7 日 湖南工程学院课 程 设 计 任 务 书 课程名称 单片机原理与应用 课 题 单片机工业现场报警器 专业班级 测控1101班学生姓名学 号指导老师 肖 峰审 批任务书下达日期 2014 年 2 月 24 日任务完成日期 2014 年 3 月 7 日 目录 第一章 系统总体方案选择与说明 . 1第二章 系统结构框图与工作原理 . 22.1设计框架图 . 22.2工作原理 . 2

2、第三章 各单元硬件设计说明 . 33.1 主控芯片80C51 . 33.3 A/D转换集成电路主芯片0808 . 53.4 光报警系统 . 63.5 声报警系统 . 73.6 LCD1602显示系统 . 7第四章 软件设计 . 84.1 软件总体设计 . 84.2各子程序设计 . 94.2.1 自检程序 . 94.3.2 八路模数转换存入getdata . 104.3.3 检测程序 . 104.3.4 LCD头文件程序 . 10第五章 调试 . 115.1软件模拟调试 . 115.2硬件接线及调试 . 11第六章 总结 . 13附录A 源程序清单 . 15附录B 源程序清单 . 15附录C 参

3、考文献 . 20 第一章 系统总体方案选择与说明 随着社会工业的发展,生活水平的提高,人们的安全防范意识也越来越强,特别是在工业的生产中,安全的需求愿望也更大。传统的安防手段渐渐不能满足人们在工程工业生产安防智能化的需求。于是工业安防产品的更新与改良就在所难免了。本系统就是基于这个社会的大环境,从工业生产的需求出发,设计出来的的一种多路控制的工业现场报警器,以实现智能安全防范报警的目的。我们通过单片机工业现场报警系统是对工业现场的有害气体进行检测,一旦有害气体的浓度超过容许的气体浓度范围,系统闪光响铃报警。通过传感器对工业现场有害气体浓度的检测从而转换成相应的电压值,又通过A/D模数转换器AD

4、C0808将传感器的电压值的模拟信号转换为数字信号,然后所转换的数字量接到单片机80C51的P0口,最后单片机对接入的数字信号做出反应,判断所测有害气体的浓度是否超标,超标则做出闪光响铃的报警指示,处于安全范围保持正常状态不变。 1 第二章 系统结构框图与工作原理2.1设计框架图 图2-1 设计框图 2.2工作原理单片机工业现场报警器主要由气体传感器、信号调理、A/D模数转换器、80C51单片机和闪光响铃报警等几部分构成。八种有害气体分别对应八个滑动变阻器模拟测量,然后接到A/D模数转换器的IN0至IN7端,作为A/D模数转换器的输入。再将A/D模数转换器的输出端D0D7接到80C51单片机的

5、P0口,将闪光响铃报警电路接到80C51单片机的P3.7口,从而构成气体检测报警系统。当气体传感器检测的浓度值大于或等于所设定的气体浓度值,通过A/D模数转换成高电平送到80C51单片机的P0口,从而使P3.7=0,闪光响铃就启动了,从而完成了气体的检测。2 第三章 各单元硬件设计说明3.1 主控芯片80C51这次课程设计的主要是围绕80C51而设计的,所以有必要先对它做一个简单介绍,80C51引脚图如下图所示: 图3-1 80C51外部管脚图 80C51是INTEL公司MCS-51系列单片机中最基本的产品,属 3 于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CH

6、MOS的低功耗特征,它继承和扩展了MCS-48单片机的体系结构和指令系统。80C51滑动变阻器模拟传感器的输入4 3.3 A/D转换集成电路主芯片0808A/D转换由集成电路0808完成。0808具有8路模拟输入端口,地址线(23-25脚)可决定对哪一路模拟输入作A/D转换。0808的管脚图如下: 图3-3 ADC0808外部管脚 A/D转换电路采用了常用的8位8通道数模转换专用芯片ADC0809,电路如图5所示。气体传感器的输出分别接到ADC0809的IN0至IN7。ADC0809的通道选择地址A,B,C分别由89C51的 5 P0.0P0.2经地址锁存器74LS373输出提供。当P2.7=

7、0时,与写信号WR共同选通ADC0809。图中ALE信号与ST信号连在一起,在WR信 号的前沿写入地址信号,在其后沿启动转换。图中ADC0809的转换结束状态信号EOC接到89C51的INT1引脚,当A/D转换完成后,EOC变为高电平,表示转换结束,产生中断。在中断服务程序中,将转换好的数据送到指定的存储单元。 3.4 光报警系统光报警电路在单片机P3口的控制下,通过74LS138译码芯片,然后根据不同情况发出不同的光报警信号。8个灯分别用共阳极的二级管接通,只要有低电平信号指示灯就会发光。某一种气体超标时,其对应的指示灯就会发光,下图为第二种气体的报警。 图3-4 光报警电路图6 3.5 声

8、报警系统我们把蜂鸣器设计成通过P2.7输出,通过P2.7来输出报警声音,图示为PNP型三极管,当基极输入低电平时,集电极和发射极导通,蜂鸣器发出声响,向工作人员发出报警。 图3-5 声报警电路 3.6 LCD1602显示系统我们把 LCD显示器的8个输入端接AT89C51的P1口8个输入端,即可实时显示相应的气体浓度,第2种气体NO超标时电路图。 图3-6 LCD显示电路图7 第四章 软件设计4.1 软件总体设计系统复位后,首先要进行初始化,包括对各个控制用寄存器的初始化、设置中断服务程序的入口地址、设置堆栈等。流程图如图 8 4.2各子程序设计4.2.1 自检程序我们通过C语言编写自检程序,

9、单片机通电,通过单片机P3口控制8个LED移位点亮,并且延时800,然后P3.7口控制蜂鸣器延时发出声响,以检测LED和蜂鸣器是否能正常工作,以下为自检程序: void test()char i;for(i=0;i<8;i+)P3=tdi;delay(800);P3=1;for(i=0;i<3;i+)alarm();delay(1500);4.3.2 八路模数转换存入getdata我们通过滑动变阻输入不同的电平,然后通过ADC0808把信号输给单片机的P1口,我们通过C语言编写程序把信号存入getdata。void adc()char i,m=1;for(i=0;i

10、<8;i+)9 P2=tdi|0x0f; ST=0;ST=1;ST=0; delay(10); while(EOC=0); getdatam=P0; delay(10); m+; 4.3.3 检测程序我们通过C语言编程中IF语句,判断P0口输入 的电平信号是否超过预先设定的值,如果超过则使FLAG=0,从而实现报警。 void check()char i;for(i=1;i<=8;i+)if(100*getdatai)/51)>warni-1)flag=1;number=i; /记录超过指标的通道;break;elseflag=0;4.3.4 LCD1

11、602头文件程序 我们利用单片机C语言编程的可移植性,通过#include<LCD1602.H>这条语句可以调用LCD1602的头文件,LCD1602液晶模块的头文件,在我们使用液晶模块时 必须加入头文件才可以,由于篇幅有限,可自行网上查阅资料。 10 第五章 调试单片机应用系统的调试包括硬件调试和软件调试。由于硬件和软件是交织在一起的,硬件调试和软件调试并不能完全分开,所以要将两者结合起来进行调试和调整。许多硬件错误是在软件调试过程中被发现和纠正的。一般方法是先排除明显的硬件故障,再进行软、硬件综合调试。下面分别介绍我这次设计的意见和软件调试过程:5.1软件模拟调

12、试一、在Proteus软件中绘制出硬件电路图。根据系统设计要求,选择元器件,设计出硬件电路图,如附录B所示。二、编写系统程序。根据系统要求,画流程图。在WAVE中编程,过程中先将各模块搞好,分别调试各模块,调试好后,编写主程序,将各系统结合,使成为系统软件。各模块调试后,在调试主程序,看是否能实现系统功能。三、硬件和软件电路的联合模拟调试在Proteus软件中进行。先将编译好的HEX文件加载到80C51中,在运行硬件电路,不断调试,若没达到要求,进行相应修改,直到符合要求。5.2硬件接线及调试虽然软件模拟调试是非常重要的,但是还是纸上谈兵啊,真正要到了调试的时候,这又是一个比设计还头痛的事,我

13、们说它令人头痛是有原因的,按理是通的,但调试不一定可以出来,甚至于设计是错误的,调试是设计的试金石啊!11 单片机系统进行软件盒硬件调试成功后最后一步是进行硬件的连接和物制作,我们的硬件调试是在试验台上进行的,虽然与设计的电路不太相同,不过可以适当修改源程序,以适应实验台的要求。一 根据实验台情况和设计要求连接电路图。二 在连接的电路上,进行模块测试,就是用简单的程序进行调试以确定电路连接正确。三 将修改后的程序下载到单片机里,可以用伟福仿真系统,进行单步和断点调试。四 将运行结果和实验现象与预定值进行比较,再适当修改程序以达到要求。 12 第六章 总结两周的单片机课程设计对我收益匪浅,让我系

14、统性地认识和全面地掌握了单片机技术,让我将平常学的汇编语言和编程方法学以致用,使我的汇编能力有了很大提高和进步,让我对单片机外围接口设备有了深入细致的了解。第一周,我们寻找有关的资料和课题小组成员间一起交流看法和讨论设计方案,进行设计的总体规划,理清课程设计思路。但是将这些具体的方案落实到每一个设计环节和步骤中,难免会出现意想不到错误,这就需要我们在进行设计的过程中利用所掌握的知识认真排查错误原因,多方面的思考问题的关键不断地改正自己的设计不足之处和错误。此外,对硬件电路的工作原理和单片机知识的掌握是进行下一步的软件设计的关键。比如要想实现数码管的动态显示就需要了解数码管是采用共阴接法还是共阳

15、的接法,这个对设置数码管显示代码是很重要的。其次,要能够实现动态显示就需要了解单片机上的I/O口接线端。这次课程设计能顺利的完成任务很大程度上是因为在软件设计之前对硬件的设计及工作原理有了细致的了解。第二周,进入了软件设计方案和具体的编程和调试运行阶段。在这个阶段中,对系统的需求分析和如何采用模块化设计思想是设计方案主要解决的问题。在这一周遇到最大的问题就是用汇编语言去编写程序会变得冗长复杂,我想,如果用C语言的来编写应该能很好的解决问题。最后,现在经过两周后,经过实践的操作和调试,对中断和查询等都有了更深的了解。通过设计,巩固所学课程,使所学知识牢固掌握并灵活运用。在整个课程设计中,非常感谢

16、我的指导 13 老师寻大勇老师给予我很多指导性的意见,在软件设计和仿真过程中,也帮助我解决很多实际问题。本次课程设计必将成为自己以后学习道路上的宝贵的实践经验。 14 附件 A 原理图 附录B 源程序清单 #include<reg52.h>#include <lcd1602.h>#define uchar unsigned char#define uint unsigned intunsigned char dispbuf5;unsigned char getdata8; /存储八路模数转换后的结果unsigned int temp;un

17、signed int temp1;unsigned char count;unsigned char d=0;char cancel=0;uchar number;uint code warn=250,125,125,125,125,125,125,125; /设定各个有害气体的指标15 uchar code td=0x04,0x14,0x24,0x34,0x44,0x54,0x64,0x74;/通道先择数组uchar code *gas="CO ","NO ","NO2 ",&

18、quot;SO2 ","SO3 ","CH4 ","C6H6 ","HCHO " /有害气体名称uchar code ok="Everything is OK"sbit ST=P3;sbit OE=P2;sbit EOC=P2;sbit CLK=P3;sbit P32=P3; /按钮 sbit P34=P3; / 4 5 6 ls138地址sbit P35=P3;sbit P36=P3;sbit P

19、37=P3; /控制使能端sbit BEEP=P2;char flag=0; /检测到指标高于设定值是flag=1void delay(uint i)unsigned char j = 0;for(i;i>0;i-)for( j=0;j<250;j+);void TimeInitial()TMOD=0x10;TH1=(65536-200)/256;TL1=(65536-200)%256; /定时200usEA=1;ET1=1;TR1=1;void adc() char i,m=1;for(i=0;i<8;i+)P2=tdi|0x0f;16ST=0;ST

20、=1;ST=0;delay(10);while(EOC=0); getdatam=P0;delay(10); m+;void alarm(void)uchar i;for(i=60;i>0;i-)BEEP=BEEP; delay(2);BEEP=BEEP; delay(2);void test() char i;for(i=0;i<8;i+)P3=tdi; delay(800); P37=1;for(i=0;i<3;i+) alarm(); delay(1500); void check() char i;for(i=1;i<=8;i+)

21、17 / unsigned int temp;(100*uiResult)/51; / temp=getdatai*1.0/255*500;if(100*getdatai)/51)>warni-1) flag=1;number=i; /记录超过指标的通道; break;elseflag=0;void display() temp=100*getdatanumber/51;dispbuf4=%;dispbuf3=temp%10+0x30; /取个位 dispbuf2=temp/10%10+0x30; /取十位 dispbuf1=.;dispbuf0=temp/100%10+0x30; /取百位 write_str(0x80,gasnumber-1); /显示 write_str(0x80+0x0b,dispbuf);void main()test(); /自检/P3=0xff;TimeInitial(); /定时器初始化;LCD_Init(); /1602初始化 EA=1;EX0=1;while

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论