多路放大与巡回检测课程设计Word格式.docx
《多路放大与巡回检测课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《多路放大与巡回检测课程设计Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
CD4051引脚图
八路放大电路对信号放大后,连接到CD4051的八个输入端,使能端接地,让其始终处于工作的状态,三个二进制控制输入端A、B、C和单片机相应的IO口相连接,依次选通八路信号送至AD转换器处理,如图2.5所示。
图2.5:
数据选择电路
2.4AD转换电路设计
本设计采用A/D芯片为ADC0804,它是CMOS8位单通道逐次渐近型的模/数转换器,其规格及引脚图如图2.6所示
图2.6:
ADC0804引脚图
当CS/=0时,允许进行转换。
WR/由低跳高时转换开始,8位逐次比较需用8×
8=64个时钟周期,再加上控制逻辑操作,一次转换需要66~73个时钟周期。
当CS/与WR/同时有效时便启动转换,转换结束时产生信号INTR/,可供出查询或中断信号。
在CS/和RD/共同控制下可以读取转换结果数据。
在转换过程中,如果再次启动转换器,则终止正在进行的转换,进入新的转换,在新的转换过程中,数据寄存器中仍保持上一次的转换结果。
0804转换器的零点无需调整,而输入电压的范围可以通过调整Vref/2端处的电压加以改变。
Vref端电压应为输入电压的1/2。
例如输入电压范围是0V至2V,则在Vref端加1V电压,但当输入电压为0~+5V时,Vref端无需外加任何电压,而由内部电源分压得到。
本设计的内部时钟由4引脚和19引脚外接RC实现。
输入信号来自数据选择器的输出,转换完后的结果由数据线DB0-DB7送到单片机的P1口处理,INTR引脚外部中断1相连,提供转换完成信号,为了保证数据的实时性,因此片选端接地,WR和RD分别与单片机的读写控制端相连。
具体电路如图7所示。
图2.7:
ADC转换电路
2.4显示模块电路
可以显示单片机系统数据的方法很多,常用的有数码管和LCD液晶显示,考了到价格的原因,本设计选用四位LED数码管显示。
所谓LED就是发光二级管的缩写,LED显示模块是由发光二极管显示字段组成的显示器,有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根位选线和8XN(或16XN)根段选线构成。
根据显示方式的不同,位选线和段选线的连接方法也各不相同。
段选线控制显示字符的字型,而位选线则控制显示位的亮、暗。
数码管的显示方法有动态显示和静态显示,所谓静态显示,就是再同一时刻只显示一种字符,或者说被显示的字符再同一时刻是稳定不变的。
其显示方法比较简单,只要将显示段码送至段码口即可。
此种显示比较简单、亮度高、接口编程容易,但是用处不大。
动态显示是把所有位的断码线的相应段并联在一起,有一个8位的IO口控制,各位的共阴极或共阳极分别由相应的IO口线控制,形成各位的分时选通,虽然每位显示的字符不是在同一时刻出现的,每一时刻只能够显示一位,而其他的各位熄灭,但是由于LED的余辉和人眼的视觉暂留作用,只要每位的显示时间间隔足够短,就可以达到同时显示的效果。
由于本系统需要显示的位数较多,为了节省IO口资源,达到显示效果,采用动态显示,断码线与单片机的P0.0-PO.7相连,位选线分别与单片机的P2.0P2.3相连,电路图如图2.9所示。
图2.9显示模块
第三章系统设计与分析
3.1体统原理综述
图3.1:
系统原理框图
系统的原理框图如图3.1所示,本系统分为五大部分,第一部分主控芯片,本设计的主控芯片采用AT89C52单片机,第二部分放大电路,由传感器获得的各种电压信号,分别接到八个放大器的输入端进行放大,放大后的信号连接到第三部分的数据选择器的数据输入端,数据选择的的三个控制端连至单片机的三个IO口,由单片依次选择控制进入数据选择器的八路信号的任一路,选择输出的数据送至ADC0804的输入端,AD转换器把输入的模拟量转化为相应的数字量送至单片,然后由显示模块的数码管显示相应的数值。
3.2系统原理图
系统原理图如图3.2所示。
图3.2:
系统总原理图
第四章软件设计
4.1软件实现的功能及流程图
本设计采用8052单片为控制芯片,改程序要实现的功能是:
用单片的P3.0-P3.2IO口控制数据选择器,依次把每一路信号选通,这通道选择函数实现,选择的信号送至ADC转换器,再由单片机P1口通过读取函数读取AD转换器,单片机处理完数据后,有显示函数显示具体的数值。
其流程图如图4.1所示。
图4.1:
程序流程图
4.2程序清单
#include<
intrins.h>
#include"
at89x52.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
#definek0P2_0
#definek1P2_1
#definek2P2_2
#definek3P2_3
#defineADwrP3_1
#definenop()_nop_()
#defineIntrP3_2
ucharcodeacLEDCS[]={0xef,0xdf,0xbf,0x7f};
/*位选地址码,“0”有效,位选接的是P2口高4位*/
ucharcodeacLedSegCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};
/*段码*/
ucharacLED[4];
/*测电压显示缓冲区*/
charcScanIndex=0;
/*位选指针0~3*/
sbitDQ=P3^3;
/*TSOR为数据口,接于P3.3*/
ucharnChannel;
ucharnVoltage;
uintVoltage;
/*转化后的电压值*/
voiddelay2(void);
voiddisplay2(intk);
voidzhuanhuan();
voidDelay1(unsignedchar);
voiddelay(unsignedinttime);
WriteOneChar(unsignedchardat);
voidAdChannel(ucharchannel);
voiddisplay1(void);
voiddisplay()
{if(nChannel==0)
acLED[0]=acLedSegCode[1]|0x80;
if(nChannel==1)
acLED[0]=acLedSegCode[2]|0x80;
if(nChannel==2)
acLED[0]=acLedSegCode[3]|0x80;
if(nChannel==3)
acLED[0]=acLedSegCode[4]|0x80;
if(nChannel==4)
acLED[0]=acLedSegCode[5]|0x80;
if(nChannel==5)
acLED[0]=acLedSegCode[6]|0x80;
if(nChannel==6)
acLED[0]=acLedSegCode[7]|0x80;
if(nChannel==7)
acLED[0]=acLedSegCode[8]|0x80;
if(nChannel==7)acLED[1]=acLedSegCode[Voltage/100%10];
elseacLED[1]=acLedSegCode[Voltage/100%10]|0x80;
/*显示第2位*/
acLED[2]=acLedSegCode[Voltage/10%10];
/*LED显示第3位*/
acLED[3]=acLedSegCode[Voltage%10];
/*LED显示第4位*/
}
/**************************主函数*****************************/
voidmain(void)
{nChannel=0;
mode=0;
while
(1)
{Delay1(6000);
if(k1==0&
&
mode==0)
{
while(k1==0);
if(nChannel==7)
nChannel=0;
elsenChannel++;
if(k2==0&
while(k2==0);
if(nChannel==0)
nChannel=7;
elsenChannel--;
}
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);
AdChannel(nChannel);
Delay1(100);
zhuanhuan();
}
/*******ADC0804进行模数转换,然后显示出来********/
voidzhuanhuan()
{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!
k0!
{EA=1;
display();
EA=0;
P0=0;
voidIntT0()interrupt1
{ucharBakP2;
P0=0;
/*先清显示再换位选*/
Delay1
(1);
BakP2=P2&
0x0F;
P2=BakP2|acLEDCS[cScanIndex];
/*送位选数据*/
P0=acLED[cScanIndex++];
/*送显示数据,位选指针移位*/
cScanIndex&
=0x03;
/*位选指针回位*/
/******跳到选择*********/
voidAdChannel(ucharchannel)
{P3&
=0x8f;
switch(channel)
{case0:
break;
case1:
P3|=0x10;
case2:
P3|=0x20;
case3:
P3|=0x30;
case4:
P3|=0x40;
case5:
P3|=0x50;
case6:
P3|=0x60;
case7:
P3|=0x70;
//数码管显示子程序入口参数k
voiddisplay2(intk){
P0=tab[k/1000];
P2_4=0;
delay2();
P0=0x00;
P2=0xff;
P0=tab[k%1000/100]|0x80;
P2_5=0;
P0=tab[k%100/10];
P2_6=0;
P0=tab[k%10];
P2_7=0;
voiddisplay1(void)
{uchari;
tab3[1]=0;
tab3[2]=temp%10000/1000;
tab3[3]=temp%1000/100;
tab3[0]=0;
for(i=2;
i<
4;
i++)
{P0=0;
P0=acLedSegCode[tab3[i]];
P2=acLEDCS[i];
delay(600);
voiddelay2(void)//数码管扫瞄延时程序
{
intk;
for(k=0;
k<
600;
k++);
voidDelay1(unsignedchart)
{
for(;
t>
0;
t--)
{nop();
nop();
voiddelay(unsignedinttime)//延时子程序入口参数time
unsignedintn;
n=0;
while(n<
time)
{n++;
return;
第五章设计总结
以上为课设期间所设计的多路放大与巡回测量控制系统,经过多次修改和整理,可以满足设计的基本要求,且性能稳定,可靠性较好,具有一定的使用价值,
本系统在设计时采用8052单片机为核心,把整个系统划分为了五大部分,先由整体原理框图构思系统整体电路结构,然后分单元构思每个模块电路设计,最后把所有的单元模块综合起来,绘制总体的硬件电路图,在设计中放大电路部分采用了性能优良的LM324集成运算放大器,由于题目要求8路数据巡回检测,在数据性选择部分选择了CD4051数据选择器,为了节省成本,ADC选择了价格便宜的ADC0804,同时满足题目要求的一路AD转换要求偶,显示部分则选用四位数码管,才用动态显示的方式,方便而且可行性高。
通过这十天的课程设计学习,我感觉有很大的收获:
首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力:
能够充分利用图书馆去查阅资料,拓展许多课本以外的知识。
能对PROTEL99SE、PROTEUS、KEIL等软件熟练操作,达到学以致用。
对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。
同时掌握了电子系统综合设计的不少方法和技巧,为以后的工作和学习奠定一定的基础。
虽然整个系统设计完成后能够基本满足设计的要求,但是在实际的设计过程中出现了不少的问题,对相关的硬件电路原理不够熟悉,软件使用不够精通,在设计时走不少的弯路,尤其在软件编程的设计上,缺乏经验,还需要进一步的加强,最后在老师的帮助下完成了相关的设计。
参考文献
[1]赵晶主编《Prote199高级应用》.人民邮电出版社,2000.12
[2]于海生编著《微型计算机控制技术》清华大学出版社2003.4
[3]段九洲.放大电路实用设计手册.[M]
辽宁科学技术出版社,2002.8
[4]李朝青.单片机原理及接口技术[M]空航天大学出版社,2000.5
[5]阎石主编《数字电子技术基础》高等教育出版社,2006.5
[6].忠梅.单片机的C语言应用程序设计[M].北京:
北京航空航天大学出版社,2003
[7]何钦铭编著《C语言程序设计》高等教育出版社,2008.4
附录1:
器件清单
器件名称
器件型号
器件个数
电容
0.1U
5
电阻
1K
15
10K
2
33K
9
电阻排
10K(RESPACK-8)
1
10U
晶振
11.0592
30P
150
数据选择器
CD4051
单片机处理器
AT89C52
AD转换器
ADC0804
4位数码管
FJ3461BH
集成运放
LM324
单排针
CON4
CON8
附录2