电子系统综合设计报告.docx

上传人:b****3 文档编号:11767806 上传时间:2023-06-02 格式:DOCX 页数:28 大小:746.79KB
下载 相关 举报
电子系统综合设计报告.docx_第1页
第1页 / 共28页
电子系统综合设计报告.docx_第2页
第2页 / 共28页
电子系统综合设计报告.docx_第3页
第3页 / 共28页
电子系统综合设计报告.docx_第4页
第4页 / 共28页
电子系统综合设计报告.docx_第5页
第5页 / 共28页
电子系统综合设计报告.docx_第6页
第6页 / 共28页
电子系统综合设计报告.docx_第7页
第7页 / 共28页
电子系统综合设计报告.docx_第8页
第8页 / 共28页
电子系统综合设计报告.docx_第9页
第9页 / 共28页
电子系统综合设计报告.docx_第10页
第10页 / 共28页
电子系统综合设计报告.docx_第11页
第11页 / 共28页
电子系统综合设计报告.docx_第12页
第12页 / 共28页
电子系统综合设计报告.docx_第13页
第13页 / 共28页
电子系统综合设计报告.docx_第14页
第14页 / 共28页
电子系统综合设计报告.docx_第15页
第15页 / 共28页
电子系统综合设计报告.docx_第16页
第16页 / 共28页
电子系统综合设计报告.docx_第17页
第17页 / 共28页
电子系统综合设计报告.docx_第18页
第18页 / 共28页
电子系统综合设计报告.docx_第19页
第19页 / 共28页
电子系统综合设计报告.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子系统综合设计报告.docx

《电子系统综合设计报告.docx》由会员分享,可在线阅读,更多相关《电子系统综合设计报告.docx(28页珍藏版)》请在冰点文库上搜索。

电子系统综合设计报告.docx

电子系统综合设计报告

 

电子系统综合设计报告

 

姓名:

学号:

专业:

日期:

2011-4-13

 

南京理工大学紫金学院电光系

摘要

本次课程设计目的是设计一个简易温度控制仪,可以在四联数码管上显示测得的温度。

主要分四部份电路:

OP07放大电路,AD转换电路,单片机部分电路,数码管显示电路。

设计文氏电桥电路,得到温度与电压的关系,通过控制电阻值改变温度。

利用单片机将现在温度与预设温度进行比较,将比较结果在LED数码管上显示,同时实现现在温度与预设温度之间的切换。

关键词放大电路转换电路控制电路显示

1引言

电子系统设计要求注重可行性、性能、可靠性、成本、功耗、使用方便和易维护性等。

总体方案的设计与选择:

由技术指标将系统功能分解为:

若干子系统,形成若干单元功能模块。

单元电路的设计与选择:

尽量采用熟悉的电路,注重开发利用新电路、新器件。

要求电路简单,工作可靠,经济实用。

1.1系统设计

1.1.1设计思路

本次实验基于P89L51RD2FN的温控仪设计采用Pt100温度传感器。

 

1.1.2总体方案设计

热敏电阻测温调理电路

设计要求

1.采用Pt100温度传感器,测温范围-20℃--100℃;

2.系统可设定温度值;

3.设定温度值与测量温度值可实时显示;

4.控温精度:

±0.5℃。

2单元模块设计

2.1各单元模块功能介绍及电路设计

2.1.1温度传感器电路的设计

实现温度T和电阻R的对应关系。

电桥中R1=R2=R3=200Ω=R,R4为温度传感器,温度变化,导致电桥的一个桥臂上的电阻也就是R4的阻值变化。

2.1.2信号调理电路的设计

实现将温度T和电阻R的对应关系转化为温度T和电压V的对应关系。

利用电桥的原理,R4的阻值变化使电桥两点的电位差改变,此两点作为运算放大器的两个输入。

2.1.3A/D采集电路的设计

实现启动、等待、采集数据。

信号调理电路的输出接0809的IN0。

0809的ALE的START连接,单片机的P2.7和WR或非后接0809的START,P2.7和RD或非后接0809的OE。

START脉冲来,A/D转换开始,以EOC作为转换完成的标志使用的是等待方式,所以EOC未连接。

 

2.1.4单片机电路

最小系统。

2.1.5键盘及显示电路的设计

实现键盘数据输入和温度显示。

利用四联数码管显示三位的温度值和一个‘C’代表显示的是温度。

两个键盘按键调整预设温度的高低。

2.1.6输出控制电路的设计

I/O驱动、继电器、指示灯、负载。

测得的温度值高于预设温度,红灯亮,低于则绿灯亮:

接两个发光二极管。

2.2元器件的选择

1.P89L51RD2FN

2.AD0809

3.OP07A

4.MAX232

5.驱动器ULN2003

6.四联数码管MT0546AR

7.继电器HRS2H-S-DC5V-N

8.发光二极管(红、绿色)

9.三极管9012(PNP)、9013(NPN)

11.面包板、连接线、插头座

12.周立功单片机实验箱

13.电阻200Ω×3用于电桥,10kΩ×2,20kΩ×2用于减法器

2.3特殊器件的介绍

2.3.1OP07A

OP07引脚图

OP07A的特点:

超低偏移:

150μV最大。

低输入偏置电流:

1.8nA。

低失调电压漂移:

0.5μV/℃。

超稳定,时间:

2μV/month最大

高电源电压范围:

±3V至±22V

2.3.2ADC0809

1.主要特性

1)8路8位A/D转换器,即分辨率8位。

2)具有转换起停控制端。

3)转换时间为100μs。

4)单个+5V电源供。

5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度。

7)低功耗,约15mW。

2.内部结构

ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟

开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近,寄存器、三态输出锁

存器等其它一些电路组成。

因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各

种微处理器相连,也可单独工作。

输入输出与TTL兼容。

IN0~IN7:

8路模拟电压输入端,用与输入被转换的模拟电压。

D0~D7:

A/D转换后的数据输出端,

与单片机的P0口相接。

A、B、C:

模拟通道地址选择端,A为低位,C为高位。

3.A/D转换完成数据的输送

A/D转换后得到的是数字量的模拟量,这些数据应传诵给单片机进行处理。

数据串的关键是如何确定A/D转换完成。

因为只有确定数据转换完成后,才进行传送。

为此可采用以下三种方式:

定时传送方式

对于一种A时子程序。

A/D转换启动后,就调动这个子程序,延迟时间一到,转换肯定已经完成了。

接着,就可以进行数据传送A/D转换来说,转换时间作为一项技术指标是已知的和固定的。

查询方式

A/D转换芯片表明有转换完成的状态信号,例如ADC0809的E端,因此可以通过查询方式用软件测试EOC的状态,即可知道转换是否完成,若完成,则接着进行数据传送。

中断方式

中断方式ADC0809与8031的中断方式接口电路只需将0809的EOC端经过一非门连接到8031的INTl端即可。

采用中断方式可大大节省CPU的时间,当转换结束时,EOC发出一个脉冲向单片机提出中断请求,单片机响应中断请求,由外部中断1的中断服务程序读A/D结果,并启动0809的下一次转换,外部中断1采用边沿触发方式。

2.3.3ULN2003

ULN200A电路具有以下特点:

1电流增益高(大于1000);

2带负载能力强(输出电流大于500mA);

3温度范围宽(-40~85℃);

4工作电压高(大于50V)。

2.3.4四联数码管(共阴)

四联数码管引脚图

2.4各单元模块的联接

2.4.1模块连接

 

共6个模块。

模块1:

信号调理电路:

电桥+减法器

模块2:

A/D转换器ADC0809

模块3:

单片机89C51或P89L51RD2FN

P0:

AD数据采集;

P1:

数码管段选信号(a,b,c,d,e,f,g);

P2.7:

A/D的OE;

P3.4~P3.5:

指示灯1,指示灯2;

P2.0~P2.3:

数码管位选信号(1,2,3,4);

INT0:

键+;

INT1:

键-。

模块4:

键盘输入:

连接单片机的两个外部中断。

模块5:

共阴四联数码管:

位选P2.0~P2.3,段选P1。

模块6:

控制输出:

接两个指示灯。

3软件设计

3.1开发工具及设计平台

3.1.1Proteus特点

1.Proteus软件提供数千种元器件和多达30多个元件库。

2.在Proteus软件中,理论上同一种仪器可以在一个电路中随意的调用。

3.除了现实存在的仪器外,Proteus还可以以图形的方式实时地显示线路上变化的信号。

4.虚拟仪器仪表具有理想的参数指标,可减少仪器对测量结果的影响。

5.Proteus提供了比较丰富的测试信号用于电路的测试。

这些测试信号包括模拟信号和数字信号。

3.1.2Keil特点

1.全功能的源代码编辑器;

2.器件库用来配置开发工具设置;

3.项目管理器用来创建和维护用户的项目;

4.集成的MAKE工具可以汇编、编译和连接用户嵌入式应用;

5.所有开发工具的设置都是对话框形式的;

6.真正的源代码级的对CPU和外围器件的调试器;

7.高级GDI(AGDI)接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信。

3.1.3部分按键

设定温度与实际温度间的切换数据的显示

 

 

3.1.4C代码编写

#include

#include"absacc.h"

bitflag;//采样标志

unsignedcharcountor;//定时器定时的循环标志

unsignedcharg,s,b,i;

unsignedcharQ=3,p=0;//设置预设温度

unsignedcharm,n;

sbitP34=P3^4;

sbitP35=P3^5;

sbitP30=P3^0;//为蜂鸣器提供一定频率的方波

voidDisplaySecond(unsignedchars,b);//数码管显示函数的声明

voiddelay(void);//延时函数的声明

floata,result=0,result1=0,T;

/*数码管动态显示*/

unsignedcharTab[]={

0x3F,//"0"

0x06,//"1"

0x5B,//"2"

0x4F,//"3"

0x66,//"4"

0x6D,//"5"

0x7D,//"6"

0x07,//"7"

0x7F,//"8"

0x6F,//"9"

0x39,//"C"

};

/*定时器T0定时*/

voidt0_ser()interrupt1using1

{TL0=0xF0;

TH0=0xD8;

P30=!

P30;//蜂鸣器产生的方波

countor++;

if(countor==10)//循环10次达到定时0.1秒

{countor=0;flag=1;}//定时时间到,置采样标志为1,进行采样

}

 

/*采样函数*/

voidsamp()

{

unsignedintc;

XBYTE[0x7FF8]=0;//进行一个写操作,启动A/D转换

delay();

a=XBYTE[0x7FF8];//将A/D转换的结果保存为变量a

result=a*5/256;//将A/D转换结果换算成十进制数

if(result>0.524&&result<1.940)

{T=10.3*result+9.35;}

elseif(result>1.940&&result<3.720)

{T=16.99*result-4.68;}

elseif(result>3.720&&result<4.302)

{T=37.60*result-80.86;}//把电压转换为温度

c=T;

g=c/100;//显示温度的百位

s=c/10;//显示温度的十位

b=c%10;//温度的个位

m=Q*10+p;//预设温度

n=s*10+b;//实际温度

if(n>m)

{P35=1;P34=0;}

else{P35=0;P34=1;}//当实际温度大于预设温度时,红灯亮,反之绿灯亮

}

 

/*外部中断0,预设温度加一*/

voidint0_ser()interrupt0using0

{

delay();

if(INT0==0)

{p++;

if(p==10)

{Q++;p=0;}

}

for(i=0;i<50;i++)

DisplaySecond(Q,p);

}

/*外部中断1,预设温度减一*/

voidint1_ser()interrupt2using2

{

delay();

if(INT1==0)

{p--;

if(p==0)

{Q--;p=9;}

}

for(i=0;i<50;i++)

DisplaySecond(Q,p);

}

 

voidmain()

{TMOD=0x01;//定时器工作方式

TL0=0xF0;

TH0=0xD8;//定时器初值

ET0=1;//定时器中断开放

EA=1;//总允许

TR0=1;//启动定时器T0

EX1=1;//外部中断1开放

EX0=1;//外部中断0开放

PX0=1;//外部中断0优先级置高

PX1=1;//外部中断1优先级置高

IT0=1;//外部中断0为边沿触发方式

IT1=1;//外部中断1为边沿触发方式

while

(1)

{if(flag)

{flag=0;samp();}//采样标准为1时,调用采样函数进行采样

DisplaySecond(s,b);

}

}

 

//延时函数

voiddelay(void)

{

unsignedintj;

for(j=0;j<100;j++);

}

 

//数码管动态显示函数

voidDisplaySecond(unsignedchars,b)

{

P2=0xf1;//数码管1亮

P1=Tab1[g];//显示温度的百位

delay();

P2=0xf0;

P2=0xf2;//数码管2亮

P1=Tab1[s];//显示温度的十位

delay();

P2=0xf0;

P2=0xf4;//数码管3亮

P1=Tab1[b];//显示温度的十位

delay();

P2=0xf0;

P2=0xf8;//数码管4亮

P1=0x39;//显示C

delay();

P2=0xf0;

}

4系统测试

4.1温度与电阻的关系:

4.2温度与电压的关系:

4.3温度分段与电压的拟合曲线:

(11℃到24℃)

4.4温度分段与电压的拟合曲线:

(25℃到35℃)

4.5温度分段与电压的拟合曲线:

(36℃到48℃)

4.6温度分段与电压的拟合曲线:

(49℃到64℃)

 

4.7温度分段与电压的拟合曲线:

(65℃到80℃)

5小结和体会+

这次的电子系统综合设计在理论上不仅用到了单片机的知识,还用到了模电的知识。

然而理论必须联系实际。

在这次的元器件的选择上不仅考虑了其适用功能,还要考虑元件的适用环境。

就像ULN2003APG是用来驱动四位共连数码管的位选与段选的:

因为单片机出来的电流太小,就算能驱动数码管,但数码管的亮度会比较低。

实践总是能帮助理论知识的学习。

通过这次系统设计,我理解了一些以前在理论课上没有注意到的问题:

1.A/D转换中XBYTE[0x7ff8]=0,这句程序是用来给单片机的WR口提供信号,再通过或非门后将信号传给ADC0809的START端,用来启动A/D转换;

2.在单片机与A/D转换的连接方法上有了更多的了解。

三种连接方式:

中断方式、查询方式、延时等待。

其中,中断方式为EOC接非门;查询方式为EOC接到单片机的任一接口,不断查询if(EOC==1);延时等待为EOC悬空,估计A/D转换的时间。

3.对一些管脚的认识更加深刻:

OE=“1”时,读取信号;在平时OE为低电平;

4.继电器的连接与功能问题;

通过这次系统设计,知道了许多设计系统的方法,熟悉了系统设计的一般步骤。

在搭建电路后的原件选择上考虑的方面更加广了。

设计程序时的思路也比以前更加宽了。

在这次的设计中可以是预置温度的显示更加人性化。

在按键按一次后就显示预置温度,接着再按则开始加减预置温度;在调节预置温度时不要显示当前温度;等调节好后,再显示当前温度。

6参考文献

[1]胡宴如,耿苏燕.模拟电子技术基础.北京:

高等教育出版社,2004.213-216.

[2]闫玉德,葛龙,俞虹.单片机微型计算机原理与设计.中国电力出版社,2010.112-154,197-199,.

[3]朱蕴璞.传感器原理与应用.国防工业出版社.

[4]黄锦安.电路.北京:

机械工业出版社,2007.

 

附录:

系统原理图:

软件仿真图:

信号调理电路

控制电路图

AD采集电路与单片机电路

数码管显示图

系统连接图

代码

#include

#include"absacc.h"

bitflag;//采样标志

unsignedcharcountor;//定时器定时的循环标志

unsignedcharg,s,b,i;

unsignedcharQ=3,p=0;//设置预设温度

unsignedcharm,n;

sbitP34=P3^4;

sbitP35=P3^5;

sbitP30=P3^0;//为蜂鸣器提供一定频率的方波

voidDisplaySecond(unsignedchars,b);//数码管显示函数的声明

voiddelay(void);//延时函数的声明

floata,result=0,result1=0,T;

/*数码管动态显示*/

unsignedcharTab1[]={

0x3F,//"0"

0x06,//"1"

0x5B,//"2"

0x4F,//"3"

0x66,//"4"

0x6D,//"5"

0x7D,//"6"

0x07,//"7"

0x7F,//"8"

0x6F,//"9"

0x77,//"A"

0x7C,//"B"

0x39,//"C"

0x5E,//"D"

0x79,//"E"

0x71,//"F"

};

/*定时器T0定时*/

voidt0_ser()interrupt1using1

{TL0=0xF0;

TH0=0xD8;

P30=!

P30;//蜂鸣器产生的方波

countor++;

if(countor==10)//循环10次达到定时0.1秒

{countor=0;flag=1;}//定时时间到,置采样标志为1,进行采样

}

 

/*采样函数*/

voidsamp()

{

unsignedintc;

XBYTE[0x7FF8]=0;//进行一个写操作,启动A/D转换

delay();

a=XBYTE[0x7FF8];//将A/D转换的结果保存为变量a

result=a*5/256;//将A/D转换结果换算成十进制数

if(result>0.524&&result<1.940)

{T=10.3*result+9.35;}

elseif(result>1.940&&result<3.720)

{T=16.99*result-4.68;}

elseif(result>3.720&&result<4.302)

{T=37.60*result-80.86;}//把电压转换为温度

c=T;

g=c/100;//显示温度的百位

s=c/10;//显示温度的十位

b=c%10;//温度的个位

m=Q*10+p;//预设温度

n=s*10+b;//实际温度

if(n>m)

{P35=1;P34=0;}

else{P35=0;P34=1;}//当实际温度大于预设温度时,红灯亮,反之绿灯亮

}

 

/*外部中断0,预设温度加一*/

voidint0_ser()interrupt0using0

{

delay();

if(INT0==0)

{p++;

if(p==10)

{Q++;p=0;}

}

for(i=0;i<50;i++)

DisplaySecond(Q,p);

}

/*外部中断1,预设温度减一*/

voidint1_ser()interrupt2using2

{

delay();

if(INT1==0)

{p--;

if(p==0)

{Q--;p=9;}

}

for(i=0;i<50;i++)

DisplaySecond(Q,p);

}

 

voidmain()

{TMOD=0x01;//定时器工作方式

TL0=0xF0;

TH0=0xD8;//定时器初值

ET0=1;//定时器中断开放

EA=1;//总允许

TR0=1;//启动定时器T0

EX1=1;//外部中断1开放

EX0=1;//外部中断0开放

PX0=1;//外部中断0优先级置高

PX1=1;//外部中断1优先级置高

IT0=1;//外部中断0为边沿触发方式

IT1=1;//外部中断1为边沿触发方式

while

(1)

{if(flag)

{flag=0;samp();}//采样标准为1时,调用采样函数进行采样

DisplaySecond(s,b);

}

}

 

//延时函数

voiddelay(void)

{

unsignedintj;

for(j=0;j<100;j++);

}

 

//数码管动态显示函数

voidDisplaySecond(unsignedchars,b)

{

P2=0xf1;//数码管1亮

P1=Tab1[g];//显示温度的百位

delay();

P2=0xf0;

P2=0xf2;//数码管2亮

P1=Tab1[s];//显示温度的十位

delay();

P2=0xf0;

P2=0xf4;//数码管3亮

P1=Tab1[b];//显示温度的十位

delay();

P2=0xf0;

P2=0xf8;//数码管4亮

P1=0x39;//显示C

delay();

P2=0xf0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2