北工大电子工程设计报告(小型温度控制系统)

更新时间:2024-05-29 14:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电子工程设计报告

题目:温度测量系统/闭环温度控制系

统设计

专业:电子科学与技术 小组:第14小组 姓名学号:王宁12023110 高洁 12023112

指导教师:张印春 完成日期:2014.12.20

电子工程设计Ⅱ实验报告 120231班14组

目录

中文摘要..................................................................... 2 关键词 ...................................................................... 2 1 课题背景................................................................... 3 1.1 课题背景 .............................................................. 3 1.2 设计概述 .............................................................. 3 2 简单电路的模块化设计与实现 ................................................. 4 2.1 单片机应用电路设计与实现............................................... 4 2.1.1基本要求 ........................................................... 4 2.1.2设计方案 ........................................................... 4 2.1.3单片机系统的调试 ................................................... 6 2.1.4调试中遇到的问题 ................................................... 8 2.2模/数转换电路设计与实现 ................................................ 8 2.2.1实验要求 ........................................................... 8 2.2.2设计方案 ........................................................... 8 2.2.3电路主要参数计算 .................................................. 10 2.2.4 模数转换电路模块的调试 ........................................... 11 2.3显示与键盘控制电路设计与实现 .......................................... 12 2.3.1基本要求: ........................................................ 12 2.3.2设计方案: ........................................................ 12 2.3.3显示模块模块的调试 ................................................ 14 2.3.4键盘模块的调试 .................................................... 16 2.4数/模(D/A)转换电路设计与实现 .......................................... 19 2.4.1基本要求: ........................................................ 19 2.4.2设计方案 .......................................................... 19 2.4.3数模转换模块的调试 ................................................ 21 3 整体电路的调试与功能实现 .................................................. 23 3.1环境温度显示功能的实现 ................................................ 23 3.2闭环温度控制功能的实现 ................................................ 23 附录 ....................................................................... 25

1

电子工程设计Ⅱ实验报告 120231班14组

中文摘要

本电子工程设计的任务是完成一套小型的温度测量与控制系统。这个系统需要完成非电量到电量信号转换、信号处理、数据采集、数据处理、人机交互、数据通信、控制等设计工作,几乎覆盖一般电子系统的所有设计环节。其中包含有三个阶段。本报告为第二阶段内容,在第一阶段电源模块、变送器模块,驱动器模块的基础上,又包含:

单片机模块的设计与实现; 数模转换模块的设计与实现; 模数转换模块的设计与实现; 键盘显示模块的设计与实现。

在上述七个模块的基础上,通过软件设计完成环境温度的显示与闭环温度控制两大功能。并通过键盘很方便的进行两大功能的自由切换和目标控制温度的设定。

本报告针对以上模块分别详细给出了设计要求、方案设计、电路设计、原理分析、电路调试、电路故障等方面的内容,以完整反映实验过程。

关键词

【关键词】 单片机;温度;闭环控制

2

电子工程设计Ⅱ实验报告 120231班14组

1 课题背景

1.1 课题背景

在化工、石油、冶金等生产过程的物理过程和化学反应中,温度往往是一个很重要的量,需要准确地加以控制。因此以温度作为被控制量的反馈控制系统广泛的应用于其他领域,是用途很广的一类工业控制系统。温度控制系统常用来保持温度恒定或者使温度按照某种规定的程序变化。

目前,温度控制系统是应用最广泛的闭环控制系统,不但走进了工厂,而且走进了千家万户,为老百姓服务。本课程通过对闭环温度控制系统的设计与实现,逐步掌握系统的设计方法与设计流程,掌握单片机应用系统的设计与调试,并锻炼在调试中发现问题、解决问题的能力。

1.2 设计概述

本报告所涉及的小型温度控制系统为教学实验系统,所以只提出功能、指标和采用元件的设计要求。

(1)温度控制范围: (2)测温元件:

0℃~100℃

半导体温度传感器AD592

(3)温度控制执行元件: 半导体制冷片 (4)核心控制部件:

C8051F系列单片机

小型温度控制系统基本组成如图所示:

图1. 1 系统整体功能框图

3

电子工程设计Ⅱ实验报告 120231班14组

需要说明的是本报告是在第一阶段——简单电路的模块化实现的基础上,通过更加复杂电路的设计与实现,并配合相关软件设计,共同完成温度控制任务。一般来说一个比较复杂的电路系统,可以按照电路实现的功能或电路的类型分为若干个模块。其中有些模块与其它模块之间的界面清晰,入口参数和出口参数明确,能够独立工作,这类电路模块可以称之为独立电路模块。为了简化系统电路的设计工作,并且使系统便于组装、调试,这类电路模块可以单独进行设计、实现和调试、检测。

本阶段的设计任务仍然采取模块化的方法,分模块进行设计与焊接、调试。这样可以有效降低模块设计的难度,分模块调试,也是调试更加方便,降低了系统失败的风险。本阶段上上阶段已完成电源模块、变送器模块和驱动器模块的设计与实现的基础上。继续完成单片机模块、AD模块、DA模块、键盘显示模块的设计与实现。并在各模块的基础上完成软件设计,实现环境温度的采集与显示,环境温度的闭环控制两大功能,成功完成了预期目标。

2 简单电路的模块化设计与实现

2.1 单片机应用电路设计与实现

2.1.1基本要求

片选信号: 6个 地址信号: 4个 数据总线: AD0~AD7 控制信号: WR,RD 安装: 独立电路板结构

2.1.2设计方案

采用以MCS-51(C8051F023)为核心的单片机做为控制芯片。MCS-51系列单片机有众多性能优异的兼容产品、成熟的开发环境、世界上最大的单片机客户群、高性价比、畅通的供货渠道,是初学者的首选机型。

本电路直接采用成品单片机最小系统版,最小系统版内置晶振与复位电路,可以简化设计,方便焊接,也增加了设计与实现的成功率。是单片机模块更加可

4

电子工程设计Ⅱ实验报告 120231班14组

靠。

U1+5C310uFR18.2K403130299VCCEA/VPALE/PPSENRESETP00P01P02P03P04P05P06P073938373635343332+5C122pCY111.059805119X118C222pX2P10P11P12P13P14P15P16P17P20P21P22P23P24P25P26P27123456782122232425262728RXDTXINTD0INT120GND1011121314151617T0T1WRRD 图2. 1典型的51单片机的最小系统电路图

本次设计采取总线结构,把单片机的P1口作为数据总线接口,P1、P2口联合使用作为地址总线接口。通过总线结构设计,可以有效减轻软件设计难度,也是单片机控制的多个功能部件更加协调一致的工作。

图2. 2 单片机总线设计框图

如图2.2所示,控制系统在数据/地址传输上采用数据/地址分离设计;在控制上采用部分译码电路。

数据/地址分离电路设计:单片机模块P3口为数据/地址复用端口,为了得到低8位地址,采用74LS373锁存器构成典型的数据/地址分离电路。

地址译码电路设计:采用74LS138构成部分译码电路。

5

具体电路图如下:

2.1.3单片机系统的调试

单片机模块安装接口如图2.4所示。

电子工程设计Ⅱ实验报告 120231班14组

调试平台:电子工程设计训练调试台

图2. 3单片机系统设计电路图

为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,

图2. 4 单片机模块装结构图

6

电子工程设计Ⅱ实验报告 120231班14组

调试内容:地址译码电路输出检测 适用电路:部分地址译码电路 测试设备:JTAG适配器 单片机应用系统板 150MHz数字双踪示波器

调试方法:1、检查电路连线无误后,将电路板安装在测试台上

2、断开译码电路负载,运行测试程序,检查各输出引脚是否有输出, 各个输出之间相对位置关系是否正确;

3、用示波器观察CS0~ CS5引脚,应有图示的波形输出。如果没有输出或者彼此关系错乱,都表明电路中存在故障。

CS0 ~ CS5输出波形图如图2.5所示:

CS0: CS1: CS2: CS3:

图2. 5 单片机模块调试波形图

调试程序:

#include \#include \#include \

#define C1 XBYTE[0x0000] #define C2 XBYTE[0x2000] #define C3 XBYTE[0x4000] #define C4 XBYTE[0x6000] #include \void main(void) {

Init_Device();

while(1)

7

电子工程设计Ⅱ实验报告 120231班14组

{C1=0; C2=0; C3=0; C4=0;}}

2.1.4调试中遇到的问题

刚开始调试的时候,我们直接用程序观察模拟温度的变化,发现出错。紧接着就用示波器观察CS0~CS5的波形,但是并没有得到正确的波形,CS1常为高,CS3和CS5的波形也是不对。后又检查电路,发现线路接线正确,又检查线路通断,发现我们的电路板本身应该相连接的暗线部分没有连通。随后进行了补救式的焊接,焊接问题这次应该解决了,我们就进行了又一次的测试,结果发现仍然是没有完全改善,CS1仍旧是常为高。这次我们检查了138、244和00这三片,发现不是芯片的问题,最后寻求老师帮助,检查得出结论,我们的单片机第6脚是坏掉的,这才导致CS1总是有问题。换了一个备用单片机,问题迎刃而解,最终得到正确波形。完成了单片机模块的设计与调试。

表2. 1 常见故障及原因

故障现象 输出全部没有变化 输出全部没有变化 输出全部没有变化 输出全部没有变化 输出关系混乱 对应引脚无输出 故障原因 74LS373未接电源 74LS373漏接+5V 74LS373漏接地线 未接ALE或ALE无效 AD0 ~ AD3接错 AD0 ~ AD3漏接

2.2模/数转换电路设计与实现

2.2.1实验要求

输入信号范围: 0V~+5V 分辨率: 8bit 精度: 1LSB 转换时间: < 1ms 安装: 独立电路板结构

2.2.2设计方案

本次设计AD转换电路采用芯片ADC0804,芯片主要参数如下: 工作电压:+5V,即VCC=+5V。

模拟输入电压范围:0~+5V,即0≤Vin≤+5V。

8

电子工程设计Ⅱ实验报告 120231班14组

分辨率:8位,即分辨率为1/2=1/256,转换值介于0~255之间。 转换时间:100us(fCK=640KHz时)。 转换误差:±1LSB。

参考电压:2.5V,即Vref=2.5V。

模数转换器,是将模拟电信号转变成计算机能识别的数字信号。在模数转换中,应根据测量精度要求,考虑转换电路的精度和分辨率,并力求降低成本。模数转换有多种方法可以实现,如采用电压/频率变换器,以频率或脉宽来计算温度,也可以采用A/D变换器或其它方法。如采用A/D变换器,应考虑转换器输入阻抗和变送器输出阻抗对信号的衰减可能引起的测试误差,并尽量降低这一误差。板间连接应注意保护。根据课设要求,温度0~100 的变化是用电压0~5V表示的,转成数字表示,即0~FFH。

AD电路模块电路图如图2.6所示

图2. 6

AD模块工作的时序图如图2.7所示。

图2. 7

9

电子工程设计Ⅱ实验报告 120231班14组

2.2.3电路主要参数计算

(1) 转换精度:

A/D转换器也采用分辨率和转换误差来描述转换精度。

分辨率是指引起输出数字量变动一个二进制码最低有效位(LSB)时,输入模拟量的最小变化量。他反映了A/D转换器对输入模拟量微小变化的分辨能力。在最大输入电压一定时,位数越多,量化单位越小,分辨率越高。

转换误差通常用输出误差的最大值形式给出,常用最低有效位的倍数表示,反映A/D转换器实际输出数字量和理论输出数字量之间的差异。

(2) 转换时间:

转换时间是指转换控制信号(vL)到来,到A/D转换器输出端得到稳定的数字量所需要的时间。转换时间与A/D转换器类型有关,並行比较型一般在几十个纳秒,逐次比较型在几十个微秒,双积分型在几十个毫秒数量级。

实际应用中,应根据数据位数、输入信号极性与范围、精度要求和采样频率等几个方面综合考虑A/D转换器的选用。

(3) 8位数模转换电路主要技术指标:

分辨率 --- 8位:表示能够分辨的最小电压变化

VrefVi?V??Data?8

2

DATA 为 1 时的 Vi 表示最小电压变化

误差 --- ±1LSB

转换时间 --- 100微秒

为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,模数装换模块安装接口如图2.8所示。

10

电子工程设计Ⅱ实验报告 120231班14组

图2. 8 模数转换电路安装结构图

2.2.4 模数转换电路模块的调试

改变设置温度,运行A/D测试程序,检查模/数转换结果。一般为0~5伏特之间改变,相应数为0~255.

调试源程序为: #include \#include \#include \

#define CS1 XBYTE[0x2000] #define TIMER 0x8000 #include \void delay(void); void main(void) {

unsigned char x; Init_Device(); }

11

while(1) { CS1=x; delay(); x=CS1; delay(); }

电子工程设计Ⅱ实验报告 120231班14组

void delay(void) {

unsigned int i; for(i=0;i

一般故障检测方法为:

查数据线是否漏接, 若A/D转换结果数值不随设置温度正比变化检查数据线是否错接;查Vin(-)是否接GND;查 Vin(+) 是否有变化,如无变化,逆向检查直至变送器输出。

若电源连接正常,查CLK-IN引脚是否有锯齿波信号输出,若没有输出检查相关元件连接是否正确,若频率过高(正常约为640KHz)检查元件参数是否有误。如果元件连接及元件参数无误仍无信号输出,则ADC0804损坏。

若CLK-IN引脚有正常的锯齿波信号输出,可修改测试程序,将延时子程序或延时函数去掉,加快程序循环的时间,检查转换控制信号、和数据读取控制信号WR/RD是否正常。

若上述控制信号正常,则可能是ADC0804损坏。

2.3显示与键盘控制电路设计与实现

2.3.1基本要求:

1、4 位7 段数码显示,前 3 位含小数点 2、0 ~ 9数字输入键及若干功能设置按键控制 3、独立电路板安装结构

2.3.2设计方案:

单片机与LED显示器有两种接口方法。

动态显示电路方案:电路简单,成本低,控制程序复杂,适用于显示位数较多的场合。可使用智能芯片8279完成。

本阶段我们用74LS273 设计显示数据输出电路,然后用74LS244设计键盘状态读入电路,最后设计出总的实验电路图,显示模块的电路原理图如图2.9所示。

12

电子工程设计Ⅱ实验报告 120231班14组

图2. 9 显示模块电路原理图

矩阵键盘电路方案:按键较多时,成本低,控制程序较直读电路复杂,适用于显示位数较多的场合。键盘电路的电路图如图2.10所示。

图2. 10 键盘模块电路图

键盘模块工作的时序图如图2.11所示。

图2. 11键盘模块工作时序图

13

电子工程设计Ⅱ实验报告 120231班14组

为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,键盘显示模块安装接口如图2.12所示。

图2. 12 键盘显示模块安装结构图

2.3.3显示模块模块的调试

(1)显示电路模块调试源程序: #include \#include \#include \

#define DP1 XBYTE[0x0000] #define DP2 XBYTE[0x0001] #define DP3 XBYTE[0x0002] #define DP4 XBYTE[0x0003] #define TIMER 0x8000 #include \

unsigned char table[ ]={0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90}; void delay(void);

void display(unsigned char x,y); void main(void) {

14

电子工程设计Ⅱ实验报告 120231班14组

unsigned char i,num=0; Init_Device(); DP1=DP2= DP3=DP4=0xff; while(1) {

for(num=0;num<10;++num)

{

i++;

if(i<=4) display(i,num); else { i=1; display(i,num);} delay( ); } } }

在使用了这个程序之后发现,显示模块出现了问题,于是在张老师的帮助下,帮我们修改了程序,这才在一周实验的最后结尾部分查出了问题。程序如下: #include \#include \

#include \

#define DP1 XBYTE[0x0000] #define DP2 XBYTE[0x0001] #define DP3 XBYTE[0x0002] #define DP4 XBYTE[0x0003] #define TIMER 0x8000 #include \

unsigned char data table1[]={0x10,0xF9,0x0A,0x09,0xE1,0x05,0x04,0xD9,0x00,0x01}; unsigned char data table2[]={0x04,0xAF,0xC0,0x82,0x23,0x12,0x10,0x8F,0x00,0x02}; unsigned char data table3[]={0x40,0xF5,0x82,0x81,0x31,0x09,0x08,0xE5,0x00,0x01}; unsigned char data table4[]={0x04,0xEE,0x58,0x4A,0xAA,0x0B,0x01,0x6E,0x00,0x02}; void display(unsigned char x,unsigned char y) {

DP3=table3[x]; DP4=table4[y]; }

void main(void) { unsigned char l_val,r_val,r_state,temp,conter,x,c;

15

电子工程设计Ⅱ实验报告 120231班14组

int key;

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); } } } } }

(2)显示模块故障检测方法:

运行显示模块测试程序,如果电路工作正常,在4个数码管上应有数字 0-9 滚动显示。否则,说明电路存在故障,可以根据故障现象,按照下面的方法进行检查。

全黑:数码管未接电源, 74LS237未接电源或地, 74LS237触发控制信号(CK)不正常, 数据线全部漏接

全亮:74LS237的CLR引脚未接高电平

,乱显示且无规律、无变化:74LS237触发控制信号(CK)不正常 二次译码信号线上无信号:一次译码信号线漏接或信号线上无信号, 二次译码电路74LS138的E2、E3连接错误, 二次译码电路74LS138漏接电源或地线, 地址信号( 74LS138 的A、B、C输入)不正常, 访问地址错误

2.3.4键盘模块的调试

运行键盘控制电路的测试程序,如果电路工作正常,在键盘上每按 1 个键,都会通过 2 位数码显示管,显示相应的行编码和列编码。否则,说明电路存在

16

电子工程设计Ⅱ实验报告 120231班14组

故障。

调试源程序如下 #include \#include \#include \

#define DP1 XBYTE[0x7000] #define DP2 XBYTE[0x7100] #define DP3 XBYTE[0x7200] #define DP4 XBYTE[0x7300] #define TIMER 0x8000 #include %unsigned

char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void display(unsigned char x,unsigned char y) { DP3=table[x]; DP4=table[y]; }

void main(void){

unsigned char l_val,r_val,r_state,temp,cont,x,c; int key;

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(cont=1,temp=0x01;cont<6;++cont,temp=temp<<1)

if((r_state&temp)!=0) {

r_val=cont;

l_val=x;

17

电子工程设计Ⅱ实验报告 120231班14组

display(l_val,r_val); } } } } }

用此程序我们发现虽然显示部分已经没问题了,但是键盘部分又出现了问题,幸好有张老师的帮助,老师在百忙之中帮我们修改程序,检查问题,之后我又细细检查电路,发现是由于抄写电路图时的粗心,导致线路接错。

调试时修改的程序如下:

#include \#include \

#include \

#define DP1 XBYTE[0x0000] #define DP2 XBYTE[0x0001] #define DP3 XBYTE[0x0002] #define DP4 XBYTE[0x0003] #define TIMER 0xff #include \

unsigned char data table1[]={0x10,0xF9,0x0A,0x09,0xE1,0x05,0x04,0xD9,0x00,0x01}; unsigned char data table2[]={0x04,0xAF,0xC0,0x82,0x23,0x12,0x10,0x8F,0x00,0x02}; unsigned char data table3[]={0x40,0xF5,0x82,0x81,0x31,0x09,0x08,0xE5,0x00,0x01}; unsigned char data table4[]={0x04,0xEE,0x58,0x4A,0xAA,0x0B,0x01,0x6E,0x00,0x02}; void delay(void);

void display(unsigned char x,unsigned char y); void main(void) {

unsigned char i=0,num=0; Init_Device(); //while(1)

DP1=DP2=DP3=DP4=0xff; while(1) { for(num=0;num<9;++num) { i++; if(i<=4) display(i,num); else { i=1; display(i,num); } delay( ); delay( ); delay( );

18

电子工程设计Ⅱ实验报告 120231班14组

delay( ); } } }

void display(unsigned char x,unsigned char y) {

if(x==1) DP1=table1[y];

else if(x==2) DP2=table2[y]; else if(x==3) DP3=table3[y]; else DP4=table4[y]; }

void delay(void) {

unsigned char data i,j; for(i=0;i

}

2.4数/模(D/A)转换电路设计与实现

2.4.1基本要求:

输入范围: 00H ~ 0FFH 对应输出: -10V~+10V 误差: 1%FSR 响应时间: < 1ms 电源供电: +5V,±12V 安装: 独立电路板结构

2.4.2设计方案

D/A的作用是把输入的模拟信号转化为数字信号。有电流开关型、脉宽调制型等。在这里,我们采用DAC0832构成D/A电路。 DAC0832是8 位乘算型电流输出的典型产品,具有MCU兼容接口,使用方便,价格低,能满足设计要求。数模转换器是整个控制系统将计算机输出的数字信号转化成模拟信号的重要部件,它的特性直接影响温度转换的精度。其转换的精度主要由数模转换器的位数和Vref。

DAC0832工作原理及特性如图2.13所示:

19

电子工程设计Ⅱ实验报告 120231班14组

图2. 13模数装换工作原理

IIIIIIout1? D0?8?D1?7?D2?6????D7?1?8?D0?20?D1?21?D2?22????D7?27?22222 IVref??DATA??DATA 8228?R

数模转换电路如图2.14所示:

图2. 14 数模转换模块电路图

原理分析:

DAC0832的Iout1和Iout2作为输入信号输入到LM358的输入端。由电流-电压转换电路可知:LM358的1

号管脚输出为: Vout1 ??Vref 8?DATA ,此管脚作为输2入信号输入到U2BLM358的反相输入端。则U2BLM358输出端输出为:

20

电子工程设计Ⅱ实验报告 120231班14组

V= -Vout1*R3/R1-5*R3/R2

取电阻参数:R1=5K,R2=10K,R3=20K。

因为Vout1的取值为(-5V—0V),R3/R1=4,故-Vout1*R3/R2的范围为(0V—20V),又因为-5*R3/R2=-10V所以总输出范围:

V={0—20V}-10V={-10V—10V}。

为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,数模装换模块安装接口如图2.15所示。

图2. 15 数模转换模块安装结构图

2.4.3数模转换模块的调试

调试平台:电子工程设计训练调试台 调试内容:地址译码电路输出检测 适用电路:数/模转换电路板 测试设备:JTAG适配器 单片机应用系统板 数/模转换电路板 150MHz数字双踪示波器 (1)调试方法:

1、检查电路连线无误后,将电路板安装在测试台上

21

电子工程设计Ⅱ实验报告 120231班14组

2、断开电路负载,运行测试程序,检查各节点信号是否正确。如果有问题,按照故障诊断预案进行诊断分析,并且排除故障。

3、用示波器观察LM3587号管脚。 正确的输出波形如图2.16所示

图2. 16 数模转换测试波形图

(2)调试程序: #include \#include \#include \

#define CS2 XBYTE[0x4000] #define TIMER 0x8000 #include \void delay(void); void main(void) { unsigned char x; Init_Device(); while(1)

{ ++x; CS2=x; /*delay();*/ } }

void delay(void)

{ int i;for(i=0;i

(3)故障检查:

根据第二级运放输出信号波形判断故障原因 部分节点无信号或全部节点无信号的故障原因: 第二级运放无信号输出:连线有误或运放损坏

二级运放皆无信号输出:连线有误或未接电源或运放损坏或D/A电路故障 断开第一级运放输出与Rfb的连线,测量Iout1引脚有锯齿波输出为运放损

22

电子工程设计Ⅱ实验报告 120231班14组

坏,否则为D/A电路故障

调试中遇到的问题:

调试时由于接线问题,没能获得正确波形。纠正接线问题后,发现输出波形正确但是幅值不对。经细心观察,实际输出波形为正确波形幅值的0.1倍,初步判断为示波器的衰减探头打到了X10位置。检查示波器探头,果不其然。纠正错误后波形输出终于正常。

3 整体电路的调试与功能实现

在分模块电路设计完成之后,就要进行整系统联合的功能调试,整体调试主要实现两个功能。分别是环境温度显示功能和闭环温度控制功能。通过整体功能的调试与实现,进一步深化对系统设计的理解,增强系统调试能力与发现问题、解决问题的能力。

3.1环境温度显示功能的实现

调试过程:连接电路并运行程序。观察测温系统数字显示,应跟随调试台设置温度变化并与调试台设置温度接近。若测量温度与设置温度相差过大的调试,则需调整变送器。调试台设置低端温度,变送器进行零点校准,调试台设置高端温度,变送器进行满度校准。

调试源程序见附录一。

3.2闭环温度控制功能的实现

调试过程:连接电路并运行程序。

通过键盘切换到环境温度显示功能。观察测温系统数字显示,应跟随调试台设置温度变化并与调试台设置温度接近。若测量温度与设置温度相差过大的调试,则需调整变送器。调试台设置低端温度,变送器进行零点校准,调试台设置高端温度,变送器进行满度校准。

通过键盘切换到闭环温度控制功能。通过键盘设定目标控制温度,观察实际温度时候能变化到目标控制温度。可以通过改变程序来调节控制精度。

调试源程序见附录二。

23

电子工程设计Ⅱ实验报告 120231班14组

4 收获和体会

第二阶段我们一共完成了测温系统中的单片机,A/D转换,D/A转换,显示键盘电路一共四块电路板。虽然有了第一阶段的一些经验积累,没有那么手忙脚乱,但是这四块板子的难度相比第一阶段来说是更加的高。第二阶段我们主要面临的问题有以下几点。

第一点就是电路板需要焊接的线数量非常大,非常密集。这就意味着排线的难度大幅增加,同时在焊接过程中很容易出现失误。在单片机这块的焊接中,我们就出现了把芯管脚搞反,结果在插针焊接的时候错了很多,要更改起来特别困难。另外在显示键盘电路这块板子上,一开始四个数码管只有两个亮,我们以为是数码管的问题,但更换之后问题依然存在。于是再进行电路检查,查了三四遍线路都认为没有问题这让我们觉得非常奇怪,后来在和其他组同学的电路板对比之后发现少了两根地线没有接,还是我们焊接时候的粗心大意造成的。

最让我们组头痛的就是测温系统,将6块板子组合在一起进行测试。在之前我们每块板子单个都通过了测试,可是没有想到进行测温系统测试的时候竟然没有成功。经过推断我们认为问题肯定是出现在单片机上,但是不论是查线还是测试输出波形都查不出问题所在。在我们非常着急头痛走投无路的时候,老师给予了我们巨大的帮助。

除此之外,我们也有一些做的自认为比较好的方面,比如我们的布局安排还算是比较清晰,我们的线路对比起其他组的算是清晰的了。

我们不光是动手能力增强了,在检查电路故障这一点上,我们的信心大有提升,能力也有增强。

本学期电子工程设计课程圆满结束,在这学期我们第一次尝试去完成一个功能完善的电子系统。在这个过程中遇到了诸多的困难,但我们都顽强的克服了,我们的动手能力得到了锻炼,让我们明白纸上的电路转换为实际的系统,需要付出百倍的努力和耐心才能实现。也让我们更加敬仰在历史长河中那些为人类做出贡献的电子工程师。

最后还要感谢张印春老师的耐心教导和帮助。我们两个女生的组做起这样动手能力强的实验来讲,本来就不是我们的强项,幸好张老师的耐心教导和不厌其烦的帮助,我们脆弱的板子才坚强的存活了下来。虽然我们实验做的不是最出色的,但小小的进步都令我们兴奋与感动,非常感谢张老师!

24

电子工程设计Ⅱ实验报告 120231班14组

附录

附录一、环境温度显示源程序

#include \#include \

#include \#include \

#define DP1 XBYTE[0x0000] #define DP2 XBYTE[0x0001] #define DP3 XBYTE[0x0002] #define DP4 XBYTE[0x0003] #define CS1 XBYTE[0x2000] #define TIMER 0x8000

unsigned char data table1[]={0x10,0xF9,0x0A,0x09,0xE1,0x05,0x04,0xD9,0x00,0x01}; unsigned char data table2[]={0x04,0xAF,0xC0,0x82,0x23,0x12,0x10,0x8F,0x00,0x02}; unsigned char data table3[]={0x40,0xF5,0x82,0x81,0x31,0x09,0x08,0xE5,0x00,0x01}; unsigned char data table4[]={0x04,0xEE,0x58,0x4A,0xAA,0x0B,0x01,0x6E,0x00,0x02}; void delay(void);

void display(unsigned int x,unsigned int y); void main(void) { unsigned int x,y=0,z=0,num=0; Init_Device();

DP1=DP2=DP3=DP4=0xFF;

while(1) { CS1=x; delay(); x=CS1; delay(); if(x==255) { display(1,1); display(2,0); display(3,0); } else{ x=(x*100)/255; display(1,0) ;

y=x/10;num=3;display(num,y); delay();

25

电子工程设计Ⅱ实验报告 120231班14组

z=x;num=4;display(num,z); delay(); } } }

void display(unsigned int x,unsigned int y) { if(x==1) DP1=table1[y];

else if(x==2) DP2=table2[y]; else if(x==3) DP3=table3[y]; else DP4=table4[y]; }

void delay(void) {

unsigned int i;

for(i=0;i

附录二、温度闭环控制源程序

#include \#include \#include \#define XBYTE[0x0000]

#define XBYTE[0x0001]

#define XBYTE[0x0002]

#define XBYTE[0x0003]

#define XBYTE[0x2000]

#define

XBYTE[0x4000]

#define

KEY_WR

XBYTE[0x0005]

DP1

#define

KEY_RD

XBYTE[0x0004]#define TIMER

DP2 0x8000

#include \

DP3

Unsigned

char

table[]={0xC0,0xF9,0xA4,0xB0,0x99,0

DP4 x92,0x82,0xF8,0x80,0x90};

unsigned

char

C2 table_doc[]={0x40,0x79,0x24,0x30,0x1

9,0x12,0x02,0x78,0x00,0x10};

CS2

26

电子工程设计Ⅱ实验报告 120231班14组

unsigned char convert(unsigned

char a);

unsigned char key_scan(void); void delay(void); void main(void) { Init_Device();

DP1=DP2=DP3=DP4=0xFF;

CS2=0x81;

while(1){ /*测温程序段*/ DP3=DP4=0xFF; r=0; e=0;

C2=dr;

delay(); dr=C2;

delay();

dr=dr*100/255; hr=dr/10; lr=dr; if(hr>9) {hr=9;

if(lr<1) lr=9;}

display(hr,lr); delay();delay();delay(); /*测温程序段*/

unsigned char num1,num2; unsigned char dp[4]; unsigned char output,input; signed char dnum;

DP1=DP2=DP3=DP4=0xff; Init_Device(); aa:keyboard(dp);//Set and

display the aimed temperature

num1=dp[3]*10+dp[4];

do{

C1=input; delay();

input=C1; num2=(input*100)/256;

display(1,num2/10);

display(2,num2);//Display current temperature

dnum=num1-num2; if(dnum>0) {

if(dnum>1) output=255;

else output=128-dnum; } else {

if(dnum<-1) output=0; else output=128-dnum; }

25

电子工程设计Ⅱ实验报告 120231班14组

C2=output;//Output C2

}while(dnum!=0); goto aa; } } }

unsigned char keyboard(unsigned char *dp)

{

unsigned col,row,r_state,temp,c,i=1;

int key; do {

key=0x0004;

for(row=0;row<4;row++,key++)

{

c=XBYTE[key]; if(r_state=~c&0x1f) {

for(col=0,temp=0x01;col<4;++col,temp=temp<<1)

if((r_state&temp)!=0) {

i++;

if(keymatrix[row][col]=='A') return 0;

26

dp[3+i%2]=keymatrix[row][col];

display(3+i%2,keymatrix[row][col]);

delay();delay();delay();delay(); delay();delay();delay();delay(); } } } }while(1); }

char

unsigned char key_scan(void) {

unsigned

char

l_val,r_val,r_state,temp,conter,x,c;

unsigned char re_key=0; unsigned int tab=0;

int key;

Init_Device(); while(1) {

key=0x0008;

for(x=1;x<5;x++,key=key+2)

{

c=XBYTE[key]; if(r_state=~c&0x1f) {

电子工程设计Ⅱ实验报告 120231班14组

{

unsigned char ret; switch(a) {

case 11: ret=0;break;

case 12: ret=1;break; case 13: ret=2;break; case 14: ret=3;break; case 21: ret=4;break; case 22: ret=5;break;

for(conter=1,temp=0x01;conter<6;+

+conter,temp=temp<<1)

if((r_state&temp)!=0)

{

r_val=conter;

l_val=x;

re_key=10*l_val+r_val; tab=1;

break; case 23: ret=6;break;

case 24: ret=7;break; case 31: ret=8;break; case 32: ret=9;break; default: break;

} } if(tab==1)

{

} return ret; }

void delay(void)

{ unsigned long int i; for(i=0;i<0x8000;++i) ; } void

display(unsigned

char

break; }

}

if(tab==1)

{ break; }

} }

unsigned char convert(unsigned char a)

27

x,unsigned char y)

{

DP1=table1[x];

DP2=table2[y];

return re_key;

}

电子工程设计Ⅱ实验报告 120231班14组

void delay(void) {

unsigned char data i,j;

for(i=0;i

附录三、参考文献

1、《模拟电子技术基础》 童诗白 清华大学出版社 2010年11月 2、《数字电子技术》 江捷 机械工业出版社 2010年10月 3、《电子工程设计训练任务书》 北京工业大学出版社 2012年9月

28

电子工程设计Ⅱ实验报告 120231班14组

void delay(void) {

unsigned char data i,j;

for(i=0;i

附录三、参考文献

1、《模拟电子技术基础》 童诗白 清华大学出版社 2010年11月 2、《数字电子技术》 江捷 机械工业出版社 2010年10月 3、《电子工程设计训练任务书》 北京工业大学出版社 2012年9月

28

本文来源:https://www.bwwdw.com/article/omy6.html

Top