《多路放大与巡回检测课程设计.doc》由会员分享,可在线阅读,更多相关《多路放大与巡回检测课程设计.doc(21页珍藏版)》请在三一办公上搜索。
1、 第一章 绪论1.1系统背景科技信息时代,数据的重要行不言而喻,如何高效、稳定的对数据(包括温度、压力、湿度、光线、辐射等项目)进行实时采集对现代的企业、工厂、研究所等对数据的精度要求较高的单位有非常重要的作用。自动化生产和大型设备(如激光器)中,经常需要对生产过程或运行状态的各种参数实时进行巡回检测、监视以及报警,以确保系统的稳定可靠性。然而在具体的生产实践中,需要检测的数据不至一路,大多需要对多路信号进行同时的检测,而且这些信号大多数都是由传感器测量得来,在进行信号处理前必须对其进行前置放大的处理,才能够为后级的电路使用,因此研制一种可以多路放大的并且可以对每一路信号进行巡回检测的系统成为
2、必要。目前国内有相关的自动检测系统,但是大多数都是专门针对某一项具体的参数(如环境温度)的检测居多,能够对多路不同的信号同时进行放大与检测的产品很少,而且价格偏高,抗干扰性不强1.2系统概述本文研究一种多路放大与巡回检测系统,可以8路不同的被测信号进行放大,放大后的信号连接到数据选择器,然后通过一路A/D转换器转换为相应的数字量,送单片机进行处理,最后用数字显示器按照一定顺序轮流显示这若干个被测量,这样既可以减小测试仪器的功耗和体积,又能降低成本。 第二章 系统单元硬件电路设计2.1单片机最小系统电路设计单片机最小系统是指单片机利用自身资源,用最少的辅助元件组成一个可以工作的系统。包括电源(地
3、),起振电路(晶振Y2=11.0592MHZ),复位电路组成。如图2.1所示。其中,晶振的两端分别接30pF的电容到地;复位电路先接10uF电容后在与地并联,起到滤波的作用,复位采用上电复位电路。晶振是为单片机提供起振时间,晶振频率越高,单片机处理速度越快。本次系统设计选择11.0592MHZ的晶振,一个机器周期大约是1uS,能够满足系统设计需求 图2.1: 单片机最小系统2.2 放大电路设计工业检测绝大多数信号都是有传感器获得,属于小信号,无法直接进行处理,因此需要相应的放大电路都有传感器获得的信号放大。工业现场属于强干扰的现场,对传感器和放大电路的性能要求很高,否则检测到的信号无法分辨是有
4、用的信号还是噪声干扰,因此选择一个抗干扰、高精度、高阻抗的集成运算放大器显得尤为重要。由于LM324集成运算放大器价格便宜,具有差动输入,带有四个运放单元,与单电源应用的标准运算放弃相比,具有更多的优点,可以工作在低至4V高至32V的电源下,共模输入范围包括负电源,功耗低,具有输入端静电保护,具有内部补偿,输出短路保护,且具有偏置电流也较低等优点,为此选择此集成运算放大器。其引脚图排列如图2.2所示 图2.2: LM324引脚图 为了获得良好的信号放大性能,放大电路采用同相比例运算放大电路如2.3所示。 图2.3: 运算放大电路2.3 信号选择电路设计本设计对八路信号进行放大然后显示,鉴于成本
5、和使用的方便,不可能对八路信号进行同时处理和显示,需要用数据选择对每一路巡回测量处理,然后一次显示,因此可选用CD4051数据选择器,其引脚图如图2.4所示。 图2.4: CD4051引脚图 八路放大电路对信号放大后,连接到CD4051的八个输入端,使能端接地,让其始终处于工作的状态,三个二进制控制输入端A、B、C和单片机相应的IO口相连接,依次选通八路信号送至AD转换器处理,如图2.5所示。 图2.5: 数据选择电路2.4 AD转换电路设计本设计采用A/D芯片为ADC0804,它是CMOS 8位单通道逐次渐近型的模/数转换器,其规格及引脚图如图2.6所示 图2.6:ADC0804引脚图当CS
6、/=0时,允许进行转换。WR/由低跳高时转换开始,8位逐次比较需用88=64个时钟周期,再加上控制逻辑操作,一次转换需要6673个时钟周期。 当CS/与WR/同时有效时便启动转换,转换结束时产生信号INTR/,可供出查询或中断信号。在CS/和RD/共同控制下可以读取转换结果数据。 在转换过程中,如果再次启动转换器,则终止正在进行的转换,进入新的转换,在新的转换过程中,数据寄存器中仍保持上一次的转换结果。0804转换器的零点无需调整,而输入电压的范围可以通过调整Vref/2端处的电压加以改变。Vref端电压应为输入电压的1/2。例如输入电压范围是0V至2V,则在Vref端加1V电压,但当输入电压
7、为0+5V时,Vref端无需外加任何电压,而由内部电源分压得到 。本设计的内部时钟由4引脚和19引脚外接RC实现。输入信号来自数据选择器的输出,转换完后的结果由数据线DB0-DB7送到单片机的P1口处理,INTR引脚外部中断1相连,提供转换完成信号,为了保证数据的实时性,因此片选端接地,WR和RD分别与单片机的读写控制端相连。具体电路如图7所示。 图2.7: ADC转换电路2.4显示模块电路可以显示单片机系统数据的方法很多,常用的有数码管和LCD液晶显示,考了到价格的原因,本设计选用四位LED数码管显示。所谓LED就是发光二级管的缩写,LED显示模块是由发光二极管显示字段组成的显示器,有8字段
8、和“米”字段之分,显示块都有DP显示段,用于显示小数点。7段LED的字型码,由于只有7个段发光二极管,所以字型码为一个字节如图2.8所示。这种显示块有共阳极和共阴极两种,共阴极LED显示块的发光二极管的阴极连接在一起,通常此公共阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示,如图2.8(a)。同样,共阳极LED显示块的发光二极管的阳极连接在一起,当某一个阴极为低电平时,对应的二极管呗点亮发光,如图2.8(b)。 共阴极接法(a) 共阳极接法(b) LED数码管内部结构(c) 图2.8 :数码管内部结构由N片LED显示块可拼接成N位LED显示器。N位LED显示器由N根
9、位选线和8XN(或16XN)根段选线构成。根据显示方式的不同,位选线和段选线的连接方法也各不相同。段选线控制显示字符的字型,而位选线则控制显示位的亮、暗。数码管的显示方法有动态显示和静态显示,所谓静态显示,就是再同一时刻只显示一种字符,或者说被显示的字符再同一时刻是稳定不变的。其显示方法比较简单,只要将显示段码送至段码口即可。此种显示比较简单、亮度高、接口编程容易,但是用处不大。动态显示是把所有位的断码线的相应段并联在一起,有一个8位的IO口控制,各位的共阴极或共阳极分别由相应的IO口线控制,形成各位的分时选通,虽然每位显示的字符不是在同一时刻出现的,每一时刻只能够显示一位,而其他的各位熄灭,
10、但是由于LED的余辉和人眼的视觉暂留作用,只要每位的显示时间间隔足够短,就可以达到同时显示的效果。 由于本系统需要显示的位数较多,为了节省IO口资源,达到显示效果,采用动态显示,断码线与单片机的P0.0-PO.7相连,位选线分别与单片机的P2.0P2.3相连,电路图如图2.9所示。 图2.9 显示模块 第三章 系统设计与分析 3.1 体统原理综述AD转换器多路放大信号选择处理单片机器显示模块 图3.1:系统原理框图系统的原理框图如图3.1所示,本系统分为五大部分,第一部分主控芯片,本设计的主控芯片采用AT89C52单片机,第二部分放大电路,由传感器获得的各种电压信号,分别接到八个放大器的输入端
11、进行放大,放大后的信号连接到第三部分的数据选择器的数据输入端,数据选择的的三个控制端连至单片机的三个IO口,由单片依次选择控制进入数据选择器的八路信号的任一路,选择输出的数据送至ADC0804的输入端,AD转换器把输入的模拟量转化为相应的数字量送至单片,然后由显示模块的数码管显示相应的数值。3.2 系统原理图系统原理图如图3.2所示。 图3.2:系统总原理图第四章 软件设计4.1 软件实现的功能及流程图 本设计采用8052单片为控制芯片,改程序要实现的功能是:用单片的P3.0-P3.2IO口控制数据选择器,依次把每一路信号选通,这通道选择函数实现,选择的信号送至ADC转换器,再由单片机P1口通
12、过读取函数读取AD转换器,单片机处理完数据后,有显示函数显示具体的数值。其流程图如图4.1所示。显示系统初始化开始通道选择制读AD数据数据处理 图4.1:程序流程图 4.2 程序清单 #include #includeat89x52.h#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define k0 P2_0#define k1 P2_1#define k2 P2_2#define k3 P2_3#define ADwr P3_1#define nop() _nop_()#defi
13、ne Intr P3_2uchar code acLEDCS=0xef,0xdf,0xbf,0x7f;/* 位选地址码,“0”有效,位选接的是P2口高4位 */uchar code acLedSegCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c;/* 段码 */uchar acLED4; /* 测电压显示缓冲区 */char cScanIndex=0; /* 位选指针03 */sbit DQ =P33;/*TSOR为数据口,接于P3.3*/uchar nChannel;uchar nVoltage; uint V
14、oltage; /*转化后的电压值*/void delay2(void);void display2(int k) ;void zhuanhuan();void Delay1(unsigned char );void delay(unsigned int time); WriteOneChar(unsigned char dat);void AdChannel(uchar channel);void display1(void);void display() if(nChannel = 0)acLED0=acLedSegCode1|0x80;if(nChannel = 1)acLED0=acL
15、edSegCode2|0x80;if(nChannel = 2)acLED0=acLedSegCode3|0x80;if(nChannel = 3)acLED0=acLedSegCode4|0x80;if(nChannel = 4)acLED0=acLedSegCode5|0x80;if(nChannel = 5)acLED0=acLedSegCode6|0x80;if(nChannel = 6)acLED0=acLedSegCode7|0x80;if(nChannel = 7)acLED0=acLedSegCode8|0x80; if(nChannel = 7) acLED1=acLedSe
16、gCodeVoltage/100%10;else acLED1=acLedSegCodeVoltage/100%10|0x80;/* 显示第2位 */acLED2=acLedSegCodeVoltage/10%10;/* LED显示第3位 */acLED3=acLedSegCodeVoltage%10;/* LED显示第4位 */* 主函数 */void main(void) nChannel = 0; mode =0;while(1) Delay1(6000); if(k1=0&mode=0) while(k1=0); if(nChannel = 7) nChannel = 0; else
17、nChannel +; if(k2=0&mode=0) while(k2=0); if(nChannel = 0) nChannel = 7;else nChannel -; if(k0=0) while(k0=0); mode=mode; while(mode=1) while(k0!=0) zhuanhuan(); display2(temp); Delay1(6000); if (k0=0) while(k0=0); mode=mode; AdChannel(nChannel);Delay1(100); zhuanhuan(); /*ADC0804进行模数转换,然后显示出来*/void
18、zhuanhuan() ADwr=0;ADwr=1;Delay1(5000);/while(Intr=1);nVoltage=P1;Voltage = (uint)(nVoltage*250)/128; if(nChannel=7) Voltage=Voltage*10/54;TMOD=0x12;TH0=-200;TL0=-200;TR0=1;ET0=1;while(k1!=0&k2!=0&k0!=0) EA=1; display(); EA=0; P0=0;void IntT0() interrupt 1 uchar BakP2;P0 = 0; /* 先清显示再换位选 */ Delay1(1
19、);BakP2 = P2 & 0x0F;P2 = BakP2 | acLEDCScScanIndex;/* 送位选数据 */P0 = acLEDcScanIndex+; /* 送显示数据,位选指针移位 */ cScanIndex &= 0x03; /* 位选指针回位 */*跳到选择 */void AdChannel(uchar channel) P3&=0x8f; switch(channel) case 0:break; case 1:P3|=0x10;break; case 2:P3|=0x20;break; case 3:P3|=0x30;break; case 4:P3|=0x40;b
20、reak; case 5:P3|=0x50;break; case 6:P3|=0x60;break; case 7:P3|=0x70;break; /数码管显示子程序 入口参数k void display2(int k) P0=tabk/1000; P2_4=0; delay2(); P0=0x00; P2=0xff; P0=tabk%1000/100|0x80; P2_5=0; delay2(); P0=0x00; P2=0xff; P0=tabk%100/10; P2_6=0; delay2(); P0=0x00; P2=0xff; P0=tabk%10; P2_7=0; delay2(
21、); P0=0x00; P2=0xff; void display1(void)uchar i; tab31=0; tab32=temp%10000/1000; tab33=temp%1000/100; tab30=0; for(i=2;i4;i+) P0=0; P0=acLedSegCodetab3i; P2=acLEDCSi; delay(600); void delay2(void) /数码管扫瞄延时程序 int k; for(k=0;k0;t-) nop();nop();nop();nop();void delay(unsigned int time) /延时子程序 入口参数 time
22、 unsigned int n;n=0;while(ntime)n+;return;第五章 设计总结 以上为课设期间所设计的多路放大与巡回测量控制系统,经过多次修改和整理,可以满足设计的基本要求,且性能稳定,可靠性较好,具有一定的使用价值,本系统在设计时采用8052单片机为核心,把整个系统划分为了五大部分,先由整体原理框图构思系统整体电路结构,然后分单元构思每个模块电路设计,最后把所有的单元模块综合起来,绘制总体的硬件电路图,在设计中放大电路部分采用了性能优良的LM324集成运算放大器,由于题目要求8路数据巡回检测,在数据性选择部分选择了CD4051数据选择器,为了节省成本,ADC选择了价格便
23、宜的ADC0804,同时满足题目要求的一路AD转换要求偶,显示部分则选用四位数码管,才用动态显示的方式,方便而且可行性高。通过这十天的课程设计学习,我感觉有很大的收获:首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力:能够充分利用图书馆去查阅资料,拓展许多课本以外的知识。能对PROTEL 99SE、PROTEUS、KEIL等软件熟练操作,达到学以致用。对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。同时掌握了电子系统综合设计的不少方法和技巧,为以后的工作和学习奠定一定的基础
24、。 虽然整个系统设计完成后能够基本满足设计的要求,但是在实际的设计过程中出现了不少的问题,对相关的硬件电路原理不够熟悉,软件使用不够精通,在设计时走不少的弯路,尤其在软件编程的设计上,缺乏经验,还需要进一步的加强,最后在老师的帮助下完成了相关的设计。 参考文献1 赵 晶 主编Prote199高级应用人民邮电出版社,2000.122 于海生 编著 微型计算机控制技术 清华大学出版社2003.4 3段九洲. 放大电路实用设计手册.M辽宁科学技术出版社,2002.84李朝青. 单片机原理及接口技术M 空航天大学出版社,2000.55阎石 主编数字电子技术基础 高等教育出版社,2006.56.忠梅. 单片机的C语言应用程序设计M. 北京:北京航空航天大学出版社,20037 何钦铭 编著C语言程序设计 高等教育出版社,2008.4附录1:器件清单 器件名称 器件型号 器件个数 电容 0.1U 5 电阻 1K 15 电阻 10K 2 电阻 33K 9 电阻排 10K(RESPACK-8) 1 电容 10U 1 晶振 11.0592 1 电容 30P 1 电容 150 1 数据选择器 CD4051 1 单片机处理器 AT89C52 1 AD转换器 ADC0804 1 4位数码管 FJ3461BH 1 集成运放 LM324 2 单排针 CON4 1 单排针 CON8 1 附录2