1、传感与检测技术实验指导书电子与电气工程系前言传感与检测技术实验包括传感与检测技术的五个试验及课程设计部分,我们利用单片机课程设计制作的开发板作为控制平台,然后在配合我们在本课程设计中发给大家的传感器电路板及 A/D、D/A 电路板来完成规定的任务,这样既有效利用了我们大家手头上的资源,也对所学的知识达到了系统的实践练习。系统的架构如图所示。S M A R T M C U - V 1 . 3 单片机开发板传感器电路小板A / D 、 D / A 转换电路小板电源5 V5 V电源电源检测与转换技术课设系统的架构实验所用到的资料(注:不再附文字说明,看图名即知)单片机开发板(见附录)传感器模块开发板
2、电路原理图及 PCBR12D0KQ3J7548VCP9GNOUTA.BWE+1、光敏电阻实验一、实验目的了解光敏电阻光电特性:即供电电压一定时,电流照度的关系。了解光敏电阻的伏安特性:即射入照度一定时,电流偏压的关系。用万用表测试光敏电阻的亮电阻、暗电阻以及光敏电阻在不同光照度下的阻值,根据这些参数绘制出光敏电阻的光照特性曲线。二、实验设备及器件 IBM PC 机 一台 单片机开发板板 一台三、实验内容基本原理:光敏电阻是一种当光照射到材料表面上被吸收后,在其中激发载流子,使材料导电性能发生变化的内光电效应器件。最简单的光敏电阻由一块涂在绝缘基底上的光电导体薄膜和两个电极所构成。当加上一定电压
3、后,光生载流子在电场的作用下沿一定的方向运动,在电路中产生电流,这就达到了光电转换的目的。四、实验步骤:1、了解实验原理。2、根据图接线。3、检查接线是否正确4、关闭光强开关,记下电流表的读数(暗电流) ,照度表读数,并将记录mA +VCC 1 2 3 4 1、光电导体膜 2、电极 3、绝缘基底 4、电路符号 分析数据。5、根据所得结果作出照度-电流曲线。6、画出参考曲线。2、红外光电传感器试验一、实验目的了解红外通讯知识,能够应用红外进行无线控制设计,了解光电转速传感器测量转速的原理及方法。二、实验设备及器件 IBM PC 机 一台 单片机开发板板 一台 传感器模块开发板 一台三、实验内容传
4、感器电路板上的红外光电传感器是反射式发射接收一体化红外光电传感器,当有浅色障碍物遮挡时传感器输出信号会发生变化,可以通过电路板上的LED 指示进行观测,可以测量转速、位置等变化量。试验时可以通过万用表和示波器来测量传感器的参数和性能,记录这些参数并通过分析可以对红外光电器件有一个直观的认识,也可以把它的输出直接送给单片机开发板,通过单片机进行对象的测量和控制。使用单片机的串口发送并接收数据,TxD 接到红外发送管,RxD 接到红外接收头,实现无线通讯。 红外收发电路四、 实验要求 通过实验掌握红外通讯的基本原理。 五、 实验步骤 1 B2 区 X2 插入 20MHz 的晶振。 2 将 B2 区
5、的 1/512 频率输出端接到 D3 区的 DCLK。(约为 39KHz,用于信号调制) 3 将 A2 区的 RXD、TXD 分别连接到 D3 区的 DREC、DSEND。 4 用短路器将 D3 区 JP9 短接(D3 区电路供电电源)。 5 将 A2 区的 P10 连接到 D1 区的 LED1。 6 下载程序并运行,使用较厚的白纸挡住红外发射管红外信号,使其反射到接收头,观察 LED1 是否点亮。 红外收发实验示意图 说明:一般红外接收模块的解调频率为 38KHz,当它接收到 38KHz左右的红外信号时将输出低电平,但连续输出低电平的时间是有限制的(如 100mS),也就是说发送数据的低电平
6、宽度是有限制的。 注意:发送管应与接收头平行,否则接收头可能接收不到来自发射管的反射光。 七、实验参考程序 /* * 文件名:DP_51PRO_IRDA.C * 功能:DP_51PRO 实验仪红外收发实验。使用串口发送数据经调制后从红外管输出, * 并通过红外接收模块把接收到的数据返回串口接收端,通过判断接收到的数 * 据来控制 LED 灯的亮或灭。 */ #include #define uint8 unsigned char #define uint16 unsigned int sbit LED_CON = P10; / 定义 LED 控制口 /* * 名称:UART_SendByte(
7、) * 功能:向串口发送一字节数据。 * 入口参数:dat 要发送的数据 * 出口参数:无 */ void UART_SendByte(uint8 dat) SBUF = dat; / 发送数据 while(TI =0); / 等待发送完毕TI = 0; / 清零 TI 标志 /* * 名称:UART_RcvByte() * 功能:接收一字节串口数据。 * 入口参数:dat 接收变量的地址指针 * 出口参数:返回 0 表示没有数据,返回 1 表示接收到数据 */ uint8 UART_RcvByte(uint8 *dat) if(RI =0) return(0); / 若没有接收到数据则返回
8、0 *dat = SBUF; / 取得接收的数据 RI = 0; / 清除 RI 标志 return(1); /* * 名称:UART_Init() * 功能:串口初始化。模式为 1 位起始位,8 位数据位,1 位停止位,波特率为 9600。 * 入口参数:无 * 出口参数:无 * 说明:晶振为 11.0592MHz,使用 T1 作为波特率发生器。 */ void UART_Init(void) SCON = 0x50; TMOD = 0x20; TH1 = 0xFD;TR1 = 1; /* * 名称:main() * 功能:主函数,初始化串口后不断地发送及接收数据,若接收到所发送的数据则 *
9、 点亮 LED。 */ int main(void) uint8 i; uint16 j; uint8 rcv_dat; uint8 count; UART_Init(); while(1) count = 0; / 计数变量清零 for(i=0; i40) LED_CON = 0; / 若接收到 0x5A 的个数大于 40个时, 点亮 LED else LED_CON = 1; / 否则熄灭 LEDfor(j=0; j500; j+); return(0); 3、霍尔传感器试验一、实验目的了解磁电式测量转速的原理,通过测量磁场来检测一些物理量,如:转速,位置等。实验时通过万用表的测量来记录霍
10、尔传感器的性能参数,也可以把它的输出直接送给单片机开发板,通过单片机进行对象的测量和控制。二、实验设备及器件 IBM PC 机 一台 单片机开发板板 一台 传感器模块开发板 一台三、实验内容传感器电路板上的霍尔传感器是美国霍尼韦尔公司的 A3144 或 A44E,属于开光型霍尔传感器,输出为 OC 形式,和 UGC3020 结构一样,但驱动电流更大,可以达到 200MA 可以直接驱动继电器控制大功率负载。前端主要是通过测量磁场来检测一些物理量,如:转速,位置等。实验时通过万用表的测量来记录霍尔传感器的性能参数,也可以把它的输出直接送给单片机开发板,通过单片机进行对象的测量和控制。基本原理:基于
11、电磁感应原理,N 匝线圈所在磁场的磁通变化时,线圈中感应电势发生变化,因此当转盘上嵌入 N 个磁棒时,每转一周线圈感应电势产生 N 次的变化,通过放大、整形和计数等电路即可以测量转速。四、实验步骤:1、根据图 9 将磁电式转速传感器安装于磁电架上,传感器的端面对准转盘上的磁钢并调节升降杆使传感器端面与磁钢之间的间隙大约为 23。2、首先在接线以前,合上主机箱电源开关,将主机箱中的转速调节电源224旋钮调到最小(逆时针方向转到底)后接入电压表(显示选择打到 20档) ;然后关闭主机箱电源,将磁电式转速传感器、转动电源按图 9 所示分别接到主机箱的相应电源和频率转速表(转速档)上。磁电转速传感器实
12、验安装、接线示意图3、合上主机箱电源开关,在小于 12范围内(电压表监测)调节主机箱的转速调节电源(调节电压改变电机电枢电压),观察电机转动及转速表的显示情况。4、从 2开始记录每增加相应电机转速的数据(待电机转速比较稳定后读取数据);画出电机的(电机电枢电压与电机转速的关系)特性曲线。实验完毕,关闭电源。4、AD 转换实验一、实验目的1. 掌握 AD 转换与单片机的接口方法。2. 了解 AD 芯片 ADC0809 转换性能及编程。3. 通过实验了解单片机如何进行数据采集。二、实验设备及器件 IBM PC 机 一台 单片机开发板板 一台 传感器模块开发板 一台数字万用表 一台 ADC0809
13、PACK 模块 一套三、实验内容利用实验板上的 ADC0809 做 AD 转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,并用发光二极管显示。四、实验电路连线A/D,D/A 转换模块PCB 图 REF+1Analog2-3GND4CS5t6LK7V8T9JA/D 电路图五、实验说明1. AD 转换器大致有三类:一是双积分 AD 转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近 AD 转换器,精度、速度、价格适中;三是并行 A/D 转换器,速度快,价格也昂贵。2. 本实验用的 ADC0809 属第二类,是八位 AD 转换器。每采集一次一般需 100
14、s, AD 转换结束后会自动产生 EOC 信号。本程序是用查询方式读入 AD 转换结果。实验系统具有 8 路 A/ D 通道(模拟量输入端为IN0、IN1IN7) ,地址分别为 FF80 FF87H,状态口地址 FF91H, FF91H 的D0 位输入的是 EOC 信号,D0=0 表示未转换完,D0=1 表示转换完毕,可以读入转换好的数据了。实现转换的过程是:先向某一路通道写入任意数从而启动转换,然后从 FF91H 读入EOC 状态进行判断,若转换完成,则读入数据即可。A/D 转换部分的参考程序如下:MOV DPTR,#0FF80H ;选中通道 0(D 2D1D0=000)MOVX DPTR,
15、A ;启动转换MOV DPTR,#0FF91HTEST: MOVX A,DPTR ;读入状态JNB ACC.0,TEST ;判断 EOC 状态, EOC=0 继续查询MOV DPTR,#0FF80H ;EOC=1,转换完毕MOVX A,DPTR ;读入数据3转换得到的二进制数字量通过 P1 口送到发光二极管显示。六、参考程序框图否是A/D 转换参考程序框图开始读入状态信息启动 A/D 转换数据输出显示A/D 转换完毕?5、 DA 转换实验一、实验目的1. 了解 D/A 转换的基本原理。2. 了解 D/A 转换芯片 0832 的性能及编程方法。3. 了解单片机系统中扩展 D/A 转换的基本方法。
16、二、实验设备及器件 IBM PC 机 一台 DP-51PROC 单片机综合仿真实验板 一台 DAC0832 PACK 模块(选配件) 一套三、实验内容1. 利用 DAC0832 将任意 1 字节数字量转换成电压模拟量,用电压表测量输出电压。2. 编制程序产生锯齿波、三角波,用示波器观看。四、实验电路连线实验板结构及电路图如所示。 234678JULMVCREFB9GN0IOTSWXP中五、实验说明1、 D/A 转换是把数字量转换成模拟量的变换,实验板上 D/A 电路输出的是模拟电压信号。本实验系统具有 2 路 D/A (输出为 Vo1、V o2) ,采用单缓冲方式,数据口地址 FF90H,控制
17、口地址 FF91H,其中 FF91H 的 D1 位输出正跳变信号控制 CH0 路 D/A,FF91H 的 D2 位输出正跳变信号控制 CH1 路 D/A,实现转换的过程是:先将要转换的数字量写入 FF90H 口(用 MOVX 指令) ,然后将正跳变控制信号经 FF91H 口送出(用 MOVX 指令) ,使 0832 缓冲器打开,开始 D/A 转换。 任意 1 字节数(如设为 7FH)D/A 转换的参考程序如下:MOV DPTR,#0FF90HMOV A,#7FH ;待转换的数字量送 AMOVX DPTR,A ;然后送 FF90H 口MOV DPTR,#0FF91HMOV A,#0FDH ;控制
18、位 D1=0 送 AMOVX DPTR,A ;然后送 FF91H 口MOV A,#0FFH ;控制位 D1=1 送 AMOVX DPTR,A ;然后送 FF91H 口(即 D1 位得到一个正跳变)2、 要产生锯齿波、三角波,比较简单的方法是表格法:先产生这二个波形的数据表格,然后依次查表得到波形中一点的数字量,送 D/A 转换,得到模拟量的电压信号,再送示波器显示。这种表格法对输出较复杂的波形(如正弦波或其他任意波形)是非常有用的。产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。也可用教材中的编程法:用一段程序来产生锯齿波或三角波,3、 DA 转换取值范围为一个
19、周期,在一个周期数据点越多,精度越高些。本例采用的数据点为 256 点周期,即最小数字量为 0,最大为255(FFH) 。4、 8 位 DA 转换器的输入数据 N 与输出电压 Vo1的关系为Vo1= -Vref*N256 (V ref为参考电压,V ref= -5V)六、参考程序框图(表格法)否是表格法产生锯齿波、三角波参考程序框图开始表格首地址送 DPTR置循环计数初值查表得到波形数据修改表指针、修改计数值一周期数据转换完毕?送 D/A 转换6、1WIRE 总线集成温度传感器18B20 实验一 实验目的 熟悉数字温度传感器 DS18B20 的使用方法和工作原理,了解单总线的读写控制方法。 二
20、 实验设备及器件 IBM PC 机 一台 DP-51PROC 单片机综合仿真实验仪 一台 18B20 及附属芯片 一套 三 实验原理及内容利用导体电阻随温度变化的特性。热电阻用于测量时,要求其材料电阻温度系数大,稳定性好,电阻率高,电阻与温度之间最好有线性关系。常用铂电阻和铜电阻,铂电阻在 0-630.74C 以内。在一些测量精度要求不高且温度较低的场合,一般采用铜电阻,可用来测量-50C+150C 的温度。当两种不同的金属组成回路,如两个接点有温度差,就会产生热电势,这就是热电效应。被测点称工作端,将其置于被测温度场,以相应电路就可间接测得被测温度值,与显示仪表的接点称为冷端(也称自由端)
21、,冷端可以是室温值或经补偿后的 0C、25C。 Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 “一线总线”接口的温度传感器。 适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通信。DS18B20 支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组网多点测温。DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。温度范围55125,在-10+85时精度为0.5。可
22、编程的分辨率为 9 12 位, 对应的可分辨温度分别为 0.5、 0.25、 0.125和 0.0625,可实现高精度测温。在 9 位分辨率时最多在 93.75ms 内把温度转换为数字,12 位分辨率时最多在 750ms 内把温度值转换为数字,速度更快。测量结果直接输出数字温度信号,以“一线总线“串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力。负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 相关电路: DS18B20 引脚如图所示,1 脚为地,2 脚为数据输出和命令输入端,3 脚为电源。四 实验要求 熟悉单总线方式的工作原理及应用,初步了解温度传感器
23、的使用技巧。 五 实验步骤 1. 18B20 单总线数字温度传感器, 用户可以在进行单总线和温度采集等相关实验。电路如图所示,DQ 为控制信号输入端,JP12 为电源控制。2. 运行编写好的软件程序,完成多次温度采集并记录采集到的温度数据。3. 使用温度计测量环境的实际温度与实验数据相比较,判断采集数据的准确度。 六、实验参考程序 TEMPER_L EQU 36H ;存放读出温度低位数据 TEMPER_H EQU 35H ;存放读出温度高位数据 TEMPER_NUM EQU 60H ;存放转换后的温度值 FLAG1 BIT 00H DQ BIT P3.3 ;一线总线控制端口 ORG 8000H
24、 LJMP MAIN ORG 8100H MAIN: MOV SP,#70H LCALL GET_TEMPER ;从 DS18B20 读出温度数据 LCALL TEMPER_COV ;转换读出的温度数据并保存 SJMP $ ;完成一次数字温度采集 ;以下为 DS18B20 单总线操作子程序;读出转换后的温度值 GET_TEMPER: SETB DQ ;定时入口 BCD: LCALL INIT_1820 JB FLAG1,S22 LJMP BCD ;若 DS18B20 不存在则返回S22: LCALL DELAY1 MOV A,#0CCH ;跳过 ROM 匹配 0CCH LCALL WRITE_
25、1820 MOV A,#44H ;发出温度转换命令 LCALL WRITE_1820 NOP LCALL DELAY LCALL DELAY CBA: LCALL INIT_1820 JB FLAG1,ABC LJMP CBA ABC: LCALL DELAY1 MOV A,#0CCH ;跳过 ROM 匹配 LCALL WRITE_1820 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;READ_1820 RET;读 DS18B20 的程序,从 DS18B20 中读出一个字节的数据 READ_1820: MOV R2,#8 ;读
26、取 8 个位,一个字节 RE1: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 ;延时 DJNZ R3,$ MOV C,DQ ;读取一个位MOV R3,#23 ;延时 DJNZ R3,$ RRC A DJNZ R2,RE1 RET ;写 DS18B20 的程序 WRITE_1820: MOV R2,#8 ;读取 8 个位,一个字节 CLR C WR1: CLR DQ MOV R3,#6 ;延时 DJNZ R3,$ RRC A MOV DQ,C ;发送一个位 MOV R3,#23 ;延时 DJNZ R3,$ SETB DQ
27、NOP DJNZ R2,WR1 SETB DQ RET ;读 DS18B20 的程序,从 DS18B20 中读出两个字节的温度数据 READ_18200: MOV R4,#2 ;将温度高低位从 DS18B20 中读出 MOV R1,#36H ;低位存入 36H(TEMPER_L),高位存入 35H(TEMPER_H)RE00: MOV R2,#8 ;读取 8 个位,一个字节 RE01: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 ;延时 DJNZ R3,$ MOV C,DQ ;读取一个位 MOV R3,#23 ;延时 D
28、JNZ R3,$RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET ;将从 DS18B20 中读出的温度数据进行转换 TEMPER_COV: MOV A,#0F0H ANL A,TEMPER_L ;舍去温度低位中小数点后的四位温度数值 SWAP A MOV TEMPER_NUM,A MOV A,TEMPER_L JNB ACC.3,TEMPER_COV1 ;四舍五入温度值 INC TEMPER_NUM TEMPER_COV1: MOV A,TEMPER_H ANL A,#07H SWAP A ADD A,TEMPER_NUM MOV TEMP
29、ER_NUM,A ;保存变换后的温度数据 LCALL BIN_BCD RET ;将 16 进制的温度数据转换成压缩 BCD 码 BIN_BCD:MOV DPTR,#TEMP_TAB MOV A,TEMPER_NUM MOVC A,A+DPTR MOV TEMPER_NUM,A RET TEMP_TAB: DB 00H,01H,02H,03H,04H,05H,06H,07H DB 08H,09H,10H,11H,12H,13H,14H,15H DB 16H,17H,18H,19H,20H,21H,22H,23H DB 24H,25H,26H,27H,28H,29H,30H,31H DB 32H,
30、33H,34H,35H,36H,37H,38H,39H DB 40H,41H,42H,43H,44H,45H,46H,47H DB 48H,49H,50H,51H,52H,53H,54H,55H DB 56H,57H,58H,59H,60H,61H,62H,63H DB 64H,65H,66H,67H,68H,69H,70H,71H DB 72H,73H,74H,75H,76H,77H,78H,79H DB 80H,81H,82H,83H,84H,85H,86H,87H DB 88H,89H,90H,91H,92H,93H,94H,95HDB 96H,97H,98H,99H ;DS18B20
31、初始化程序 INIT_1820: SETB DQ NOP CLR DQ MOV R0,#80H TSR1: DJNZ R0,TSR1 ;延时 SETB DQ MOV R0,#25H ;96US TSR2: DJNZ R0,TSR2 JNB DQ,TSR3 LJMP TSR4 ;延时 TSR3: SETB FLAG1 ;置标志位,表示 DS1820 存在 LJMP TSR5 TSR4: CLR FLAG1 ;清标志位,表示 DS1820 不存在 LJMP TSR7 TSR5: MOV R0,#06BH ;200US TSR6: DJNZ R0,TSR6 ;延时TSR7: SETB DQ RET
32、;重新写 DS18B20 暂存存储器设定值 RE_CONFIG: JB FLAG1,RE_CONFIG1 ;若 DS18B20 存在,转 RE_CONFIG1 RET RE_CONFIG1: MOV A,#0CCH ;发 SKIP ROM 命令 LCALL WRITE_1820 MOV A,#4EH ;发写暂存存储器命令 LCALL WRITE_1820 MOV A,#00H ;TH(报警上限)中写入 00H LCALL WRITE_1820 MOV A,#00H ;TL(报警下限)中写入 00H LCALL WRITE_1820 MOV A,#7FH ;选择 12 位温度分辨率LCALL WRITE_1820 RET ;延时子程序 DELAY: MOV R7,#00H MIN: DJNZ R7,YS500 RET YS500: LCALL YS500US LJMP MIN YS500US: MOV R6,#00H DJNZ R6,$ RET DELAY1: MOV R7,#20H DJNZ R7,$ RET ; END附录:SMART MCU_V1.4 单片机开发板 PCB 图