北京工业大学电子工程设计二阶实验报告.docx
《北京工业大学电子工程设计二阶实验报告.docx》由会员分享,可在线阅读,更多相关《北京工业大学电子工程设计二阶实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
![北京工业大学电子工程设计二阶实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/3/b61d36fe-04a0-45cf-9933-f573e1b58678/b61d36fe-04a0-45cf-9933-f573e1b586781.gif)
北京工业大学电子工程设计二阶实验报告
电子工程设计报告
题目:
温度测量系统/闭环温度控制系
统设计
专业:
电子科学与技术
小组:
7
:
学号:
袁彬11023221
赖力11023222
指导教师:
高新
完成日期:
2013.12.12
一、摘要3
二、设计任务与要求3
(二)、设计要求4
(三)单片机5
(一)、电路工作原理及主要元件的功能5
(二)、电路的调试9
四数/模(D/A)转换电路10
(一)、电路工作原理及主要元件功能10
(二)、电路主要参数计算12
(三)、电路调试12
五、模/数(A/D)转换电路13
(一)、ADC0804芯片介绍13
(二)、电路主要参数计算14
(三)、电路调试15
六、电路显示与键盘控制电路16
(一)、电路工作原理16
(二).电路调试19
七、温度测量22
八、心得体会25
九、附录26
一、摘要
在上学期我们完成了温度控制系统的第一阶段,在这一阶段,我们完成了焊接包括电源板、驱动器和变送器在的一些工作。
也为我们这次的第二阶段做好了准备。
通过上学期的准备,我们对焊接电路已经基本上熟练掌握了,对一些电路的原理和设计也都达到了必要的要求,正是基于此我们目前已经完成了第二阶段的所有容。
下面就主要介绍一下我们第二阶段的工作。
二、设计任务与要求
设计小型温度测量与控制系统---典型电子系统
驱动器
数/模转换器
后向通道
1.电路设计
⑴核心单元—单片机应用电路
⑵模拟量接口—A/D、D/A电路
⑶人机交互单元—显示、键盘控制电路
2.程序设计
⑴控制模/数转换进行温度数据采集
⑵控制数/模转换改变控温元件工作状态,进行温度控制。
⑶控制键盘与显示器,进行控制温度设定和测量温度显示。
⑷将温度数据转换为显示温度数值的算法程序。
(5)控制温度精确、平稳变化的的算法程序。
3.系统联调
⑴电路系统联调,配合测试程序实现基本的测温、控温功能。
⑵程序联调,通过电路系统实现精确、平稳的温度控制
4.本学期关注的重点
⑴设计并实现了一个能够精确、稳定控制温度的系统。
⑵知道了一个典型的电子系统应该具备哪些主要功能
⑶知道了一个典型电子系统的设计实现过程和工作方法。
⑷知道如何设计测试方法、创造测试条件,对设计完成的电路模块或电路系统进行测试,使电路或系统的功能、指标充分展现。
⑸设计组装的电路系统出现故障,能够根据电路或系统的工作原理、自己掌握的专业知识以及积累的经验,快速确定故障围和故障原因。
⑹掌握电路的设计方法,通过设计、计算实现电路设计要求。
(二)、设计要求
1.温度测量围:
0°C~+100°C。
2.温度测量误差:
不大于±2°C
3.单片机:
具有独立电路板结构。
片选信号:
4个,
地址信号:
4个,
数据总线:
AD0~AD7,
I/O口线:
P3口,P1口。
4.数/模(D/A)转换电路:
具有独立电路板结构。
输入围:
00H~0FFH,
对应输出:
-10V~+10V,
误差:
1%,响应时间:
<1ms,
电源供电:
+5V,±12V。
5.模/数(A/D)转换电路:
独立电路板结构
输入信号围:
0V~+5V
分辨率:
8bit
精度:
1LSB
转换时间:
<1ms
6.显示与键盘控制电路:
4位7段数码显示,
前3位含小数点独立电路板安装结构
0~9数字输入键及若干功能设置按键控制
(三)单片机
(一)、电路工作原理及主要元件的功能
1,芯片的介绍和参数
MCS-51系列单片机性能优异,因此单片机芯片采用MCS-51系列中的89C51。
在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚。
下面按其引脚功能分为四部分叙述这40条引脚的功能。
1)主电源引脚VCC和VSS:
VCC——(40脚)接+5V电压;
VSS——(20脚)接地。
2)外接晶体引脚XTAL1和XTAL2:
XTAL1(19脚)接外部晶体的一个引脚。
在单片机部,它是一个反相放大器的输入端,这个放大器构成了片振荡器。
当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。
在单片机部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到部时钟发生器的输入端;对XHMOS,此引脚应悬浮。
3)控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP:
RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
ALE/PROG(30脚):
当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
因此,它可用作对外输出的时钟,或用于定时目的。
PSEN(29脚):
此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA/VPP(31脚):
当EA端保持高电平时,访问部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有部程序存储器。
输入/输出(I/O)引脚P0、P1、P2、P3(共32根):
P0口(39脚至32脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
P1口(1脚至8脚):
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个LS型的TTL负载。
对8052、8032,P1.0引脚的第二功能为T2定时/计数器的
P2口(21脚至28脚):
是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
P3口(10脚至17脚):
是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。
2、电路方案的比较、选择和确定
全部地址参与译码,产生的控制信号对应唯一地址。
部分地址参与译码,产生的控制信号对应某一地址区域,而不是唯一地址。
部分地址参与译码,产生的控制信号对应某一地址区域,而不是唯一地址。
三种电路方案
(1)部分地址译码、带有总线驱动电路,产生的控制信号对应某一地址区域。
图示部分地址译码、带有总线驱动电路
(2)部分地址译码、无总线驱动电路
图示部分地址译码,无总线驱动电路
(3)直接选通、不要低8位地址和驱动电路
因为这个方案的片选信号与地址之间并不是线性关系,所以使用
该方案需要熟练掌握片选信号与地址之间的关系计算。
(4)电路方案的确定
通过比较,我们最后选定相对容易实现的部分地址译码,无总线驱动的方案,
因为这样可以简化电路。
电路图如下:
单片机的安装结构图如下图所示:
(二)、电路的调试
1.按照电路图将电路板焊接完毕,过程中需要严格检查焊接线路是否正确,避免出现错误。
2.测试时,将电源板放到相应位置。
将单片机正确插入,然后将仿真头与单片机电路连接(注意缺口标志要对应)再把仿真器连好。
3.断开译码电路负载,运行测试程序,检查各输出引脚是否有输出,各个
输出之间相对位置关系是否正确;以下是单片机测试的程序:
#include"C8051F020.h"
#include"absacc.h“
#include"data_define.c"
#defineCS0XBYTE[0x0000]
#defineCS1XBYTE[0x2000]
#defineCS2XBYTE[0x4000]
#defineCS3XBYTE[0x6000]
#defineCS4XBYTE[0x8000]
#defineCS5XBYTE[0xA000]
#include"Init_Device.c"
voidmain(void)
{
Init_Device();
while
(1)
{CS0=0;CS1=0;CS2=0;CS3=0;CS4=0;CS5=0;}
}
正确输出波形如图所示:
用示波器观察C1~C4引脚,应有图示的波形输出。
如果没有输出或者彼此关系错乱,都表明电路中存在故障。
四数/模(D/A)转换电路
(一)、电路工作原理及主要元件功能
1、DAC8032芯片介绍
数模转换器是整个控制系统将计算机输出的数字信号转化成模拟信号的重要部件,它的特性直接影响温度转换的精度。
其转换的精度主要由数模转换器的位数和Vref。
根据结合电子工程设计的实际要求,结合高性价比的原则我们选择了8位D/A转换器DAC0832。
单片集成D/A转换器产品种类繁多,按其部电路结构一般可分为两类:
一类集成芯片部只集成了转换网络和模拟电子开关;另一类则集成了组成D/A转换器的所有电路。
本实验选用DA0832,各引脚名称及作用如下:
D7~D0:
具有三态特性数字信号输出。
GND:
信号地。
CS:
低电平有效的片选端。
WR:
写信号输入,低电平启动D/A转换。
RD:
读信号输入,低电平输出端有效。
VREF:
参考电平输入,决定量化单位。
2、原理说明
(1)、数模转换电路,可以将数字电量转换成模拟电量。
在数模转换中,应根据转换要求,考虑输出电压的分辨率和精度。
(2)、数模转换有多种方法可以实现,在满足要求的情况下,应力求降低成本。
可以采用频率/电压变换的方法,也可以采用D/A变换器或其它方法,如采用D/A变换器,建议使用DAC0832。
(00-FF)数字对应于(-10V~+10V)电压。
3.电路的选择
输出方式:
与数字量成比例的电流输出/与数字量成比例的电压输出/数字量和参考电压的相乘输出。
我们组选择的电路如图:
本实验要求模数转换电路的输出电压为-10V~+10V电压。
因此,在DA的外围电路上,我们连接了一个放大器。
放大器的作用是将DAC0832的输出电流转化成电压,通过合理调整两个滑动变阻器的阻值,可以调整输出电压的大小,即使D/A的输出从0~5V变为-10V~10V。
安装结构图
(二)、电路主要参数计算
D/A转换器用于将数字量转换成模拟量,他的输入粮食数字量D,输出量为模拟量VO,要求输出的模拟量与输入的数字量成正比,即:
其中VR为基准电压。
其中,
,
,…,
是输入的数字量代码;n是输入数字量的位数。
将D带入
得到:
。
该式说明,将输入的每一位数字量转换为与其相应的模拟量,把各位对应的模拟量相加就可得到该数字两所对应的模拟量。
D/A转换器的模拟输出与数字量输入成正比。
(三)、电路调试
调试方法:
断开电路负载,运行测试程序,检查各节点信号是否正确。
1.焊接完毕,而后再次认真查线一遍然后再开始测试。
2.测试时,将电源板,单片机,数模电路正确连接。
按正确加电顺序供电,如果一切正常可以开始进一步的测试。
3.运行D/A测试程序数/模数据显示窗口将有相应,数据显示,数据为从00—FF顺序递增并不断循环。
另外输出管脚会有锯齿波。
测试程序如下:
#include"C8051F020.h"
#include"absacc.h"
#include"data_define.c"
#defineC3XBYTE[0x4000]
#defineTIMER0x8000
#include"Init_Device.c"
voiddelay(void);
voidmain(void)
{
unsignedcharx;
Init_Device();
while
(1)
{++x;C3=x;delay();}
}
voiddelay(void)
{
inti;
for(i=0;i}
用示波器测量芯片的7号管脚
输出波形如图:
如果出现上述的波形图,就间接地证明电路板调试成功。
五、模/数(A/D)转换电路
(一)、ADC0804芯片介绍
芯片参数:
工作电压:
+5V,即VCC=+5V。
模拟输入电压围:
0~+5V,即0≤Vin≤+5V。
分辨率:
8位,即分辨率为1/28=1/256,转换值介于0~255之间。
转换时间:
100us(fCK=640KHz时)。
转换误差:
±1LSB。
参考电压:
2.5V,即Vref=2.5V。
1.原理说明
模数转换器,是将模拟电信号转变成计算机能识别的数字信号。
在模数转换中,应根据测量精度要求,考虑转换电路的精度和分辨率,并力求降低成本。
模数转换有多种方法可以实现,如采用电压/频率变换器,以频率或脉宽来计算温度,也可以采用A/D变换器或其它方法。
如采用A/D变换器,应考虑转换器输入阻抗和变送器输出阻抗对信号的衰减可能引起的测试误差,并尽量降低这一误差。
板间连接应注意保护。
根据课设要求,温度0~100
的变化是用电压0~5V表示的,转成数字表示,即0~FFH。
2.电路的选择
常用A/D电路的特点:
积分型:
将电压转换成脉宽信号或频率,由定时器/计数器获得数字值。
优点:
分辨率高;缺点:
转换速率极低
逐次比较型:
由比较器和DA转换器通过逐次比较逻辑构成,经n次比较而输出数字值。
优点:
速度较高、功耗低,在<12位分辩率时价格便宜
并行比较型:
用多个比较器,仅作一次比较而实行转换。
优点:
转换速率极高;分辩率高时电路规模大、价格也高,只适用于低分辨率高速场合
压频转换型:
将模拟信号转换成频率,然后用计数器将频率转换成数字量,从理论上讲其分辨率几乎可以无限增加。
优点:
分辩率高、功耗低、价格低;但是需要外部计数电路共同完成AD转换
(二)、电路主要参数计算
(1)转换精度:
A/D转换器也采用分辨率和转换误差来描述转换精度。
分辨率是指引起输出数字量变动一个二进制码最低有效位(LSB)时,输入模拟量的最小变化量。
他反映了A/D转换器对输入模拟量微小变化的分辨能力。
在最大输入电压一定时,位数越多,量化单位越小,分辨率越高。
转换误差通常用输出误差的最大值形式给出,常用最低有效位的倍数表示,反映A/D转换器实际输出数字量和理论输出数字量之间的差异。
(2)转换时间:
转换时间是指转换控制信号(vL)到来,到A/D转换器输出端得到稳定的数字量所需要的时间。
转换时间与A/D转换器类型有关,並行比较型一般在几十个纳秒,逐次比较型在几十个微秒,双积分型在几十个毫秒数量级。
实际应用中,应根据数据位数、输入信号极性与围、精度要求和采样频率等几个方面综合考虑A/D转换器的选用。
(3)8位数模转换电路主要技术指标:
分辨率---8位:
表示能够分辨的最小电压变化
DATA为1时的Vi表示最小电压变化
误差---±1LSB
转换时间---100微秒
(三)、电路调试
调试方法:
调整变送器电路在正常工作状态,连接变送器输出至模/数转换电路输入。
运行测试程序,改变调试台温度设置值,检查单片机采集到的数据是否正确,如果不正确按照故障诊断预案进行诊断分析,并且排除故障。
改变设置温度,运行A/D测试程序,检查模/数转换结果。
在调试台上通过+10按键不断改变温度数值。
模/数转换电路
调试程序如图:
#include"C8051F020.h"
#include"absacc.h"
#include"data_define.c"
#defineC2XBYTE[0x2000]
#defineTIMER0x8000
#include"Init_Device.c"
voiddelay(void);
voidmain(void)
{
unsignedcharx;
Init_Device();
while
(1){C2=x;delay();x=C2;delay();}
}
voiddelay(void)
{
unsignedchari;
for(i=0;i}
在调试台上通过旋转调温按钮不断改变温度数值
六、电路显示与键盘控制电路
(一)、电路工作原理
1.电路的选择
单片机与LED显示器有两种接口方法。
动态显示电路方案:
电路简单,成本低,控制程序复杂,适用于显示位数较多的场合。
可使用智能芯片8279完成。
以下为动态显示原理图
静态显示电路方案:
使用的元件多,成本相对较高。
每位独立控制,程序设计比较简单,适用于显示位数较少的场合。
使用74LS273,采用此方案。
键盘接口方法
矩阵键盘电路方案:
按键较多时,成本低,控制程序较直读电路复杂,适用于显示位数较多的场合。
采用此方案。
原理图如下:
最终我们的电路方案如图所示:
(二).电路调试
键盘/显示电路
(1)显示电路模块调试
按照图进行电源板焊接完毕,而后再次认真查线一遍然后再开始测试。
测试时,将电源板,单片机,显示电路正确连接。
按正确加电顺序供电,如果一切正常可以开始进一步的测试。
运行显示模块测试程序,如果电路工作正常,在4个数码管上应有数字0-9滚动显示。
否则,说明电路存在故障。
显示电路的编程流程如图:
试程序如图:
#include"C8051F020.h"
#include"absacc.h"
#include"data_define.c"
#include"Init_Device.c"
#defineADCXBYTE[0x0000]
#defineDP1XBYTE[0x0001]
#defineDP2XBYTE[0x0002]
#defineTIMER0x8000
unsignedchartable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
voiddelay(void);
voiddisplay(unsignedcharx,unsignedchary);
voidmain(void)
{
unsignedcharx=0,y=0,z=0,num=0;
DP1=DP2=0xff;
Init_Device();
while
(1)
{
ADC=x;
delay();
x=ADC;
x=(x*100)/256;
y=x%10;num=2;display(num,y);
z=x/10;num=1;display(num,z);
}
}
voiddisplay(unsignedcharx,unsignedchary)
{
if(x==1)DP1=table[y];
elseDP2=table[y];
}
voiddelay(void)
{
unsignedinti;
for(i=0;i}
键盘控制模块调试:
运行键盘控制电路的测试程序,如果电路工作正常,在键盘上每按1个键,都会通过2位数码显示管,显示相应的行编码和列编码。
否则,说明电路存在故障。
汇编程序流
调试程序如图:
#include"C8051F020.h"
#include"absacc.h"
#include"data_define.c"
#defineDP1XBYTE[0x7000]
#defineDP2XBYTE[0x7100]
#defineDP3XBYTE[0x7200]
#defineDP4XBYTE[0x7300]
#defineTIMER0x8000
#include"Init_Device.c"
unsignedchartable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
voiddisplay(unsignedcharx,unsignedchary)
{
DP3=table[x];
DP4=table[y];
}
voidmain(void)
{
unsignedcharl_val,r_val,r_state,temp,conter,x,c;
intkey;
DP1=DP2=DP3=DP4=0xff;
Init_Device();
while
(1)
{
key=0x0004;
for(x=1;x<5;x++,key++)
{
c=XBYTE[key];
if(r_state=~c&0x1f)
{
for(conter=1,temp=0x01;conter<6;++conter,temp=temp<<1)
if((r_state&temp)!
=0)
{
r_val=conter;
l_val=x;
display(l_val,r_val);
}
}
}
}
}
七、温度测量
1.容与原理
2.实验程序如下:
#include"C8051F020.h"
#include"absacc.h"
#include"data_define.c"
#defineC0XBYTE[0x0000]
#defineC1XBYTE[0x2000]
#defineC2XBYTE[0x4000]
#defineDP1XBYTE[0x0000]
#defineDP2XBYTE[0x0001]
#defineDP3XBYTE[0x0002]
#defineDP4XBYTE[0x0003]
#defineTIMER0x8000
#include"Init_Device.c"
unsignedchartable[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsignedcharkeymatrix[4][4]={0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'};
voiddisplay(unsignedcharx,unsignedchary)
{
if(x==1)DP1=table[y];
elseif(x==2)DP2=table[y];
elseif(x==3)DP3=table[y];
elseD