当前位置:文档之家› 北京工业大学电子工程设计--二阶实验报告

北京工业大学电子工程设计--二阶实验报告

电子工程设计第二阶段报告小型温度测量与控制系统专业:通信工程小组: 10组成员:刘志斌 12024228 高培元 12024215指导教师:**完成日期:2014.12.20摘要:第一阶段我们已经完成了电源板和变送器。

本学期的第二阶段要求是完成这个系统中单片机,A/D,D/A转换电路和显示与键盘控制电路部分。

温度控制系统总体概述(一)、总述电子工程设计训练是一门综合理论知识,实践操作,电子电路系统的设计、实现、调试、故障排查等方面的综合性训练。

第一阶段只完成了电源以及变送器部分。

本阶段工作量非常大,需要完成单片机,数模,模数转换电路和显示与键盘控制电路部分,并且完成测温系统的测试。

(二)设计任务与要求一、设计任务设计、制作并调试单片机,数模,模数转换电路和显示电路共四个模块。

二、设计要求1.单片机:具有独立电路板结构。

片选信号:6个,地址信号:4个,数据总线:AD0~AD7,I/O口线:P3口,P1口。

2.数/模(D/A)转换电路:具有独立电路板结构。

输入范围:00H ~ 0FFH,对应输出:-10V~+10V,电源供电:+5V,±12V。

3.模/数(A/D)转换电路: 独立电路板结构输入信号范围:0V~+5V分辨率:8bit精度:1LSB转换时间:< 1ms4.显示与键盘控制电路:4 位7 段数码显示,前 3 位含小数点独立电路板安装结构0 ~ 9数字输入键及若干功能设置按键控制(三)单片机应用电路一、电路设计方案1.芯片介绍MCS-51系列单片机有众多性能优异的兼容产品、成熟的开发环境、世界上最大的单片机客户群、高性价比、畅通的供货渠道,是初学者的首选机型。

8051是MCS-51系列单片机早期产品之一,内建一次性可编程只读存储器 ( PROM ) ,只需要很少的外围元件即可组成最小系统。

所以我们选择8051作为我们的单片机2.安装结构3.电路方案的确定通过比较,我们最后选定相对容易实现的部分地址译码,无总线驱动的方案,因为这样可以简化电路。

电路图如下:二、电路的调试$include (C8051F020.inc)LOOP: LCALL Init_DeviceMOVX A , @DPTRMOV DPTR, #0000HMOVX A , @DPTRMOV DPTR, #2000H MOVX A , @DPTRMOV DPTR, #4000H MOVX A , @DPTRMOV DPTR, #6000H MOVX A , @DPTRSJMP LOOP$include (Init_Device.inc)END正确输出波形如图所示:用示波器观察C1~ C4引脚,应有图示的波形输出。

如果没有输出或者彼此关系错乱,都表明电路中存在故障。

3.原理及功能分析(1)电路工作原理①C8051的P3口为数据/地址复用端口,为了得到低8位地址,需要数据/地址分离电路。

C8051通过A13、A14、A15三口输出信号给74LS138 译码器,经过芯片译码后输出6个片选信号,当输出相应地址时输出相应片选。

译码器的E1、E2口接低,E3口接高,7、9两口制空。

②C8051接收信号后需要数据/地址分离电路,而74LS373锁存器便充当了这一功能。

373从8051的D0~D7口接收到信号后将信号分离,数据信号从锁存器的Q0~Q3口输出,地址信号从锁存器的D0~D7口输出。

(四) 数/模(D/A)转换电路一、电路设计方案1、DAC8032芯片介绍数模转换器是整个控制系统将计算机输出的数字信号转化成模拟信号的重要部件,它的特性直接影响温度转换的精度。

其转换的精度主要由数模转换器的位数和V ref结合电子工程设计的实际要求,结合高性价比的原则我们选择了8位2、安装结构3、电路的选择输出方式:与数字量成比例的电流输出/与数字量成比例的电压输出/数字量和参考电压的相乘输出。

二、电路主要参数计算D/A 转换器用于将数字量转换成模拟量,他的输入粮食数字量D ,输出量为模拟量V O ,要求输出的模拟量与输入的数字量成正比,即:O R V D V =⨯其中V R 为基准电压。

11212002222n n n i n n i i D d d d d -----==+++=∑将D 带入O R V D V =⨯得到:12n i O i Ri V d V-==∑。

三、电路调试运行D/A 测试程序数/模数据显示窗口将有相应,数据显示,数据为从00—FF 顺序递增并不断循环。

另外输出管脚会有锯齿波。

测试程序如下:$include (C8051F020.inc) LCALL Init_Device MOV DPTR,#4000H ABC: MOVX @DPTR,AINC A CALL DELAY JMP ABC DELAY: MOV R7,#01HJJJ: MOV R6,#20H DJNZ R6,$ DJNZ R7,JJJ RET$include (Init_Device.inc) END输出波形如图:(五) 模/数(A/D)转换电路一.ADC0804芯片介绍芯片参数:工作电压:+5V,即VCC=+5V。

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

分辨率:8位,即分辨率为1/2=1/256,转换值介于0~255之间。

转换时间:100us(fCK=640KHz时)。

转换误差:±1LSB。

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

二.安装结构原理说明:模数转换器,是将模拟电信号转变成计算机能识别的数字信号。

在模数转换中,应根据测量精度要求,考虑转换电路的精度和分辨率,并力求降低成本。

模数转换有多种方法可以实现,如采用电压/频率变换器,以频率或脉宽来计算温度,也可以采用A/D变换器或其它方法。

如采用A/D变换器,应考虑转换器输入阻抗和变送器输出阻抗对信号的衰减可能引起的测试误差,并尽量降低这一误差。

板间连接应注意保护。

根据课设要求,温度0~100 C的变化是用电压0~5V表示的,转成数字表示,即0~FFH。

3.电路的选择、二、电路主要参数计算(1)8位数模转换电路主要技术指标:分辨率--- 8位:表示能够分辨的最小电压变化DATA 为1 时的Vi 表示最小电压变化误差 --- ±1LSB转换时间--- 100微秒三、电路调试调试程序如图:$include (C8051F020.inc)LCALL Init_DeviceABC: MOV DPTR,#2000HMOVX @DPTR,ACALL DELAYMOV DPTR,#2000HMOVX A,@DPTRCALL DELAYJMP ABCDELAY: MOV R7,#02HJPP: MOV R6,#0HDJNZ R6,$DJNZ R7,JPPRET$include (Init_Device.inc)8 2 refiVDataVV⨯=≈∑END结果在示波器上显示锯齿波,波形在-10V~+10V上即可。

(六)显示与键盘控制电路一、电路设计方案基本显示控制方式有静态和动态两种,我们选择了静态电路显示控制方式与矩阵键盘电路方案。

静态显示电路方案:使用的元件多,成本相对较高。

但每位独立控制,程序设计比较简单,适用于显示位数较少的场合。

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

2.安装结构3.电路的选择静态显示电路方案:使用的元件多,成本相对较高。

每位独立控制,程序设计比较简单,适用于显示位数较少的场合。

使用74LS273,采用此方案。

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

采用此方案。

原理图如下:二.电路调试(1)显示电路模块调试按照图进行电源板焊接完毕,而后再次认真查线一遍然后再开始测试。

测试时,将电源板,单片机,显示电路正确连接。

按正确加电顺序供电,如果一切正常可以开始进一步的测试。

运行显示模块测试程序,如果电路工作正常,在4个数码管上应有数字 0-9 滚动显示。

否则,说明电路存在故障。

调试程序如图:#include "C8051F020.h"#include "absacc.h"#include "data_define.c"#define DP1 XBYTE[0x0000]#define DP2 XBYTE[0x0001]#define DP3 XBYTE[0x0002]#define DP4 XBYTE[0x0003]#define TIMER 0x8000#include "Init_Device.c"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){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( );}}}void display(unsigned char x,y){ if (x=1) DP1=table[y];else if(x=2) DP2=table[y];else if(x=3) DP3=table[y];else DP4=table[y];}void delay(void){ unsigned int i;for(i=0;i<TIMER;++i);}(1)键盘控制模块调试:运行键盘控制电路的测试程序,如果电路工作正常,在键盘上每按 1 个键,都会通过 2 位数码显示管,显示相应的行编码和列编码。

否则,说明电路存在故障。

调试程序如图:#include "C8051F020.h"#include "absacc.h"#include "data_define.c"#define DP1 XBYTE[0x0000]#define DP2 XBYTE[0x0001]#define KEY_WR XBYTE[0x0002]#define KEY_RD XBYTE[0x0003]#define linescan1 0xfe#define linescan2 0xfd#define linescan3 0xfb#define linescan4 0xf7#define TIMER 0x8000#include "Init_Device.c"unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void display(unsigned char x,y);void main(void){unsigned char l_val,r_val,r_state,temp,conter;DP1 = DP2 = 0xff;Init_Device();while(1){for( l_val = 1;l_val < 5;++l_val ){switch( l_val ){case 1: KEY_WR = linescan1; break;case 2: KEY_WR = linescan2; break;case 3: KEY_WR = linescan3; break; case 4 : KEY_WR = linescan4;}if(r_state=~KEY_RD&0x1f)for(r_val=1,temp=1; r_val<6;++r_val,temp=temp<<1)if((r_state&temp)!=0) display(l_val,r_val); }}}void display(unsigned char x,y){DP1=table[x];DP2=table[y];}(七)温度测量1.内容与原理2.实验程序如下:#include "C8051F020.h"#include "absacc.h"#include "data_define.c"#include "Init_Device.c"#define DP1 XBYTE[0x2000]#define DP2 XBYTE[0x2001]#define DP3 XBYTE[0x2002]#define DP4 XBYTE[0x2003]#define KEY_WR XBYTE[0x2004]#define KEY_RD XBYTE[0x2005]#define ADC XBYTE[0x0000]#define DAC XBYTE[0x4000]#define linescan1 0xfe#define linescan2 0xfd#define linescan3 0xfb#define linescan4 0xf7#define TIMER 0x8000unsigned char data table []={0xC0,0xF9,0XA4,0XB0,0x99,0x92,0x82,0Xf8,0x80,0x90}; unsigned char key[4][4]={0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f'};void delay(void);void main(void){unsigned char l_val,r_val,r_state,temp,conter;unsigned char b=0,key_test;unsigned char x=0,target,now;int y=0,z=0; //wenduint shiwei,gewei; //jianpanint diff1=128;DP1=DP2=DP3=DP4=0xff;Init_Device();while(1){ADC=x;delay();x=ADC;x=(x*100)/256;y=x%10;DP4=table[y];z=(x/10);DP3=table[z];for(l_val=1;l_val<5;++l_val){switch(l_val){case 1: KEY_WR=linescan1; break;case 2: KEY_WR=linescan2; break;case 3: KEY_WR=linescan3; break;default: KEY_WR=linescan4;}if(r_state=~KEY_RD&0x0f)for(conter=1,r_val=1,temp=1;conter<5;++conter,++r_val,temp=temp<<1) if((r_state&temp)!=0){key_test=key[r_val-1][l_val-1];switch(key_test){case 'd': b=0;break; //十位case 'a': b=1;break; //个位case 'b': b=2;break; //开始}if(b==0){if(r_val==1&&l_val==1){shiwei=0;DP1=table[0];}if(r_val==1&&l_val==2){shiwei=1;DP1=table[1];}if(r_val==1&&l_val==3){shiwei=2;DP1=table[2];}if(r_val==1&&l_val==4){shiwei=3;DP1=table[3];}if(r_val==2&&l_val==1){shiwei=4;DP1=table[4];}if(r_val==2&&l_val==2){shiwei=5;DP1=table[5];}if(r_val==2&&l_val==3){shiwei=6;DP1=table[6];}if(r_val==2&&l_val==4){shiwei=7;DP1=table[7];}if(r_val==3&&l_val==1){shiwei=8;DP1=table[8];}if(r_val==3&&l_val==2){shiwei=9;DP1=table[9];}}if(b==1){if(r_val==1&&l_val==1){gewei=0;DP2=table[0];}if(r_val==1&&l_val==2){gewei=1;DP2=table[1];}if(r_val==1&&l_val==3){gewei=2;DP2=table[2];}if(r_val==1&&l_val==4){gewei=3;DP2=table[3];}if(r_val==2&&l_val==1){gewei=4;DP2=table[4];}if(r_val==2&&l_val==2){gewei=5;DP2=table[5];}if(r_val==2&&l_val==3){gewei=6;DP2=table[6];}if(r_val==2&&l_val==4){gewei=7;DP2=table[7];}if(r_val==3&&l_val==1){gewei=8;DP2=table[8];}if(r_val==3&&l_val==2){gewei=9;DP2=table[9];}}}target=shiwei*10+gewei;now=z*10+y;if(b==2){if(target>now)diff1=255;else if(target<now)diff1=0;elsediff1=128;}DAC=diff1;delay();}}}void delay(void){unsigned int i;for(i=0;i<TIMER;++i);}3.调试过程:连接电路并运行程序。

相关主题