《微机原理课程设计报告K型热电偶传感器实验.doc》由会员分享,可在线阅读,更多相关《微机原理课程设计报告K型热电偶传感器实验.doc(26页珍藏版)》请在三一办公上搜索。
1、微机原理课程设计报告时 间 2013.12 _学 院 自动化 _专业班级 _姓名 _学号 合 作 者 _指导教师 _成 绩 _摘要 8086是Intel公司设计生产的CPU,是计算机发展史上的里程碑。通过学习8086CPU的工作原理,可以帮助我们理解计算机的工作原理。实践动手能力是电子信息类应用型人才必须具备的基本素质。本次微机原理课程设计,通过设计一个热电偶温度检测器,并将测量得到的数据显示到LCD屏幕上。其中使用到8086,ADC0809,8255,8279,经过一周的练习,锻炼了我们的编写程序能力,逻辑分析能力,解决问题的能力,查找文献的能力。关键词:8086 热电偶 ADC0809Ab
2、stract8086 is A CPU designed by Intel and a milestone in the history of the development of the computer. Studying the working principle of 8086 CPU can help us understand the working principle of the computer. Practice ability is basic qualities of students who majored in electronic and information.
3、 The microcomputer principle course ,we designed a thermocouple temperature detector and displayed the measured data on the LCD screen. It used 8086, ADC0809, 8255827.After a week of practice, we promote our ability to write programs, logic analysis ability and problem solving skills and the ability
4、 of searching reference.Key Words:8086 thermocouple ADC0809目录摘要1Abstract1引言1K型热电偶传感器实验21 实验内容22 实验设备23 实验设计原理23.1 热电偶原理23.2 AD转换电路34 设计思路44.1 AD转换采集数据44.2 数据显示到数码管上44.3 数据显示到LCD上54.4 报警54.5 显示柱形图55 程序流程65.1 主程序流程图65.2 LCD显示程序流程图75.3 数码管显示子程序流程图85.4 报警子程序流程图85.5 柱形图显示程序流程图97 实验现象及说明97.1 实验结果97.2 结果说明
5、108 在小组中的任务119 实验心得11结论12参 考 文 献13附 录141 程序清单14引言微机原理课程设计需综合运用所学知识针对一个较为具体的控制对象或过程进行系统设计、硬件选型及软件设计。通过课程设计,可以对理论知识融会贯通,培养同学们的系统设计能力,使同学们达到以下能力训练:(1)调查研究、分析问题的能力;(2)使用设计手册、技术规范的能力;(3)查阅文献的能力;(4)制定设计方案的能力;(5)计算机应用的能力;(6)设计计算和绘图的能力;(7)语言文字表达的能力。本组微机原理设计的内容是通过热电偶检测热端温度,并利用模拟电路将信号放大,使用ADC0809将得到的模拟信号转换成数字
6、量,最终显示到相应的设备上。通过仔细的调试,最终完成了整体电路的调试。K型热电偶传感器实验1 实验内容连接好电路,编写调试程序。用打火机加热热电偶的测量端,读出冷端和热端的温度差,并显示到液晶屏上。2 实验设备1、EL-MUT-III 实验箱2、8086CPU 板3、温度传感器模块3 实验设计原理3.1 热电偶原理热电偶是将两种不同性质的金属导线连接在一起所形成的温度测量装置。其测量原理是利用席贝克效应(Seed back Effect),即两种不同性质的金属导线连接在一起形成封闭回路时,若使其中一接点的温度高于另一接点的温度,则在此闭合回路中,即有电流流过。如下图所示:图1 热电偶原理在热电
7、偶上,两根导线连接在一起的点称为热接点,也称测量点,通常置于待测温度区;而两导线不连接的地方称为冷接点,接测量电路。根据正、负极用材料的不同,热电偶分为B、E、J、K、R、S、T、Y 型。本模块中采用的是K 型热电偶,其正极为镍铬合金,负极为镍硅合金。与其它类型的热电偶相比,K 型热电偶的线性较好,使用方便,因而在工业测量中被广泛使用。K 型热电偶的基本测量电路如下图所示。K 型热电偶的工作原理见模块说明,其测量电路如下图所示。COUPLER1、COUPLER2 为热电偶冷接点的两接线端,COUPLER1 为正端。OP07 为高阻运算放大器,用于高精度的电压放大。如上图所示,电压增益为500
8、倍。模块上BALANCE 电位器对应于图中R6,用于零位调节。J1 对应于VOUT1 插孔,输出模拟电压。R9 电位器用于设置报警电压,当模拟输出大于报警电压时,ALARM 灯亮,ALARM OUT 输出高电平;否则ALARM 灯不亮,ALARM OUT 输出低电平。使用时,应先对OP07 调零,具体方法如下:将热电偶的两接线端接在模块的两接线端子上,红端接正,蓝端接负。用万用表测VOUT1 端的输出电压,使VOUT1=0V。(注:必须在接上热电偶的情况下调零,否则测量误差较大) 将测量端置于加热区(或用打火机加热),用A/D 采样VOUT1 端电压,根据下面K 型热电偶的分度表可计算出冷端和
9、热端的温差T1(两刻度之间可用线性插值),用其它方法测出的常温为T0,T0+T1就是测量端的实际温度。图2 K型热电偶电路图3.2 AD转换电路八路八位A/D 实验电路由一片ADC0809,一片74LS04,一片74LS32 组成,该电路中,ADIN0ADIN7是ADC0809 的模拟量输入插孔,CS0809 是0809 的AD 启动和片选的输入插孔,EOC 是0809 转换结束标志,高电平表示转换结束。齐纳二极管LM336-5 提供5V 的参考电源,ADC0809 的参考电压,数据总线输出,通道控制线均已接好,八位双缓冲D/A 实验电路由一片DAC0832。一片74LS00,一片74LS04
10、,一片LM324 组成,该电路中除DAC0832 的片选未接好外,其它信号均已接好,片选插孔标号CS0832。输出插孔标号DAOUT。该电路为非偏移二进制D/A 转换电路,通过调节POT3,可调节D/A 转换器的满偏值,调节POT2,可调节D/A 转换器的零偏值。图3 AD转换电路的原理图4 设计思路4.1 AD转换采集数据ADC0809是逐位逼近型8通道A/D转换芯片,CMOS工艺制造,双列直插式28引脚封装。由于本次实验时硬件电路使用的是实验箱,所以硬件电路无需设计。ADC0809有8个通道,本次使用的是0通道,片选信号选用CS3,所以地址定义为“CON0809 EQU 04D0H”。在S
11、TART端产生一个正脉冲,启动AD转换,并锁存模拟通道地址。由于AD转换需要一定的时间,所以接下来等待一段时间,读取AD转换值。4.2 数据显示到数码管上数码管电路使用的是8279驱动电路。由于电路已经设计完毕,所以程序开始定义其控制和数字地址: CON8279 EQU 0492HDAT8279 EQU 0490H由于数码管显示需要显示的编码,所以先定义编码表。SEGCOD DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H 当获取ADC后的信息后,分别提取高四位和低四位的数据,然后到数码管显示表中查找相应的编码
12、,发送到8279,8279驱动数码管便能显示出当前的数据。4.3 数据显示到LCD上为了减轻总线的负担,驱动LCD的任务给了8255,CPU通过控制8255的输出来控制LCD的显示内容。将PA0PA7连接到LCD的数据端口上,将PC7连接到BUSY端口上,将PC0连接到LCD的REQ上,将CS8255连接到CS0。首先初始化8255,将A端口设置为输出模式,PC7PC4设置为输入模式,PC3PC0设置为输出并复位PC0端口,B端口设置为输出模式。LCD的驱动芯片接收命令来显示字符,有很多种方式,里面包括汉字库等。获取显示位置等数据后,判断是否忙,然后发送数据,等待接收,发送完毕,将相应的数据发
13、送完毕后即可显示相应的字符。4.4 报警由于在实际应用中往往会加入报警等异常处理环节,本组添加设计了报警功能,当温度超过设定温度时,LED灯开始闪烁。设计原理比较简单,获取数据后与设定数据进行比较,当温度超过设定温度值时,CPU发送命令给8255,让8255B端口输出相应的电平让LED闪烁,达到报警的效果。4.5 显示柱形图为了直观的显示温度的变化,本组加入了柱形图显示。首先定义了不同温度下的显示字节编码。GRAF: DB 0F3H,01D,17D,80H DB 0F3H,01D,17D,40H DB 0F3H,01D,17D,20H DB 0F3H,01D,17D,10H DB 0F3H,0
14、1D,17D,08H DB 0F3H,01D,17D,04H DB 0F3H,01D,17D,02H DB 0F3H,01D,17D,01H当获取AD值后判断当前的温度等级并获取显示编码,然后显示到液晶屏上即可。5 程序流程开始5.1 主程序流程图8255初始化,以及LCD显示“USTB自动化学院,温度:”等调用柱形图显示程序在液晶屏显示当前温度对应的柱形图调用报警程序,判断当前是否应该报警调用LCD显示程序在LCD上显示数据获取AD转换后的值,并存入寄存器和存储器启动一次零通道的AD转换,并延时等待调用数码管显示函数,在数码管上同步显示数据据图 4 主程序流程图5.2 LCD显示程序流程图图
15、5 液晶屏显示流程图5.3 数码管显示子程序流程图开始8279初始化获取编码发送结束发送数据NNY图6 数码管显示流程图5.4 报警子程序流程图开始获取温度是否报警关闭LED闪烁一次LED图7 报警子程序流程图5.5 柱形图显示程序流程图开始获取显示编码发送数据到LCD上图8 柱形图显示子程序7 实验现象及说明7.1 实验结果经过调试,完成基本的功能,并添加了附加的功能。数码管能与LCD同步显示采集的AD值。当温度超过一定值时,系统通过闪烁LED报警。同时为了方便地查看当前的温度状况,在LCD上显示了柱形图。实际工作状况如下图所示:图9 实物演示效果图7.2 结果说明由于本次实验采集的是ADC
16、转换后的值,并没有进行AD值和实际温度差值之间的转换,所以图中显示的数据并不是真实的温度值。另一方面,热电偶检测的是热锻和冷端的温度差,所以实际的AD值不光跟热端温度有关,而且跟冷端温度有关。由于热电偶的线性度比较高,所以加热另一端能清楚地看到采集的AD值升高。8 在小组中的任务本人在本次实验中主要负责程序的编写,注释的添加。另外,在完成基本功能后,我添加了报警功能和柱形图显示功能,并撰写了个人的设计报告。9 实验心得通过本次实验设计,了解了计算机的基本工作原理,AD转换的基本方式。另外,本次实验是一次综合性的课程设计,熟悉了几种显示设备的使用方法,初步掌握了汇编语言程序设计的方法。在整个设计
17、过程中,我们也遇到了一些问题,比如液晶屏不能正常显示,经过检查是因为连线上了一根。程序中也遇到一些问题,数码管不能和液晶屏同步显示,经过检查,结果是一句程序跳转指令出错了。总之,本次课程设计收获颇多,收获了一些课堂上不能得到的能力和锻炼。结论热电偶的热端在温度发生变化以后,由于席贝克响应,热电偶回路中会有电流流过,因此通过模拟电路采集电压信号并进行放大等处理后进行AD转换可以得到数字量,此数字信号跟热电偶两端的温度差有关。通过查表或者拟合公式可以得到实际的温度差值。由于本次使用汇编语言书写程序,所以对浮点数的处理比较复杂,所以只显示了采集的AD值,但是能形象的描述出温度的变化。参 考 文 献1
18、 王忠民著. 微型计算机原理. 西安:西安电子科技大学出版社,2007.2 董洁著. stu_8086课程设计说明 .北京.北京科技大学,2013附 录1 程序清单 CON0809 EQU 04D0H CON8279 EQU 0492H DAT8279 EQU 0490H ASSUME CS:CODE CODE SEGMENT PUBLIC ORG 100H START: JMP START1 SEGCOD DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;09的编码 TEMP0 DB 00H;*Init*
19、START1: MOV DX, 04A6H ;选中控制寄存器 MOV AX, 88H ;A端口输出,工作在方式0,PC7PC4输入,B端口输出,PC3PC0输出 OUT DX, AX ;发送命令 MOV AX, 70H ; OUT DX, AX ;复位PC0 MOV AL, 0F4H ;清屏命令 CALL COMD CALL DELAY ;延时等待 MOV SI,OFFSETTABLE MOV CX, 183D WR0: MOV DX, 04A4H ;写端口C命令 IN AX, DX ;读端口C的状态 AND AX, 80H ;判断BUSY JNZ WR0 ;忙等待 MOV AL, SI ;给
20、液晶屏发送命令 CALL COMD ;调用发送函数 INC SI ;SI+1 ,传送下一个数据 LOOP WR0;*;*main* MAIN1: MOV DX, CON0809 MOV AX, 34H OUT DX, AX ;锁存AD转换通道,为通道0 MOV CX, 10H WAIT1: NOP NOP LOOP WAIT1 ;等待AD转换的完成 MOV DX, CON0809 ; IN AX, DX ;读入温度数据 AND AX, 0FFH ;去位 MOV BX, AX ;存入BX MOV DI,OFFSET TEMP0 MOV CS:DI,BL;将数据存储起来 MOV TEMP0,BL;
21、 CALL LCD_DISP ;LCD显示 CALL LED_DISP ;LED显示 CALL LIGHT;判断是否报警 CALL ZHUXING;柱形图显示 CALL DELAY;延时等待 JMP MAIN1 ;回到主函数入口继续执行;*;*LED_Display* LED_DISP: MOV DI,OFFSET TEMP0 MOV BL,CS:DI;从存储器中读取上次的AD转换值 MOV DI,OFFSET SEGCOD;获取数码管编码的首地址 MOV AX, 08H MOV DX, CON8279 OUT DX, AX ;让数码管显示16X8字符,左端开始 MOV DX, DAT8279
22、;获取数据地址 PUSH BX;将BX暂时备份 AND BX, 0F0H;获取高四位编码 MOV CL,4 SHR BX,CL;逻辑右移4位 ADD DI,BX ;获取编码偏移地址 MOV AL,CS:DI MOV AH,0 OUT DX,AX ;发送数据 NOP NOP MOV DI,OFFSET SEGCOD POP BX AND BX,0FH ;获取低四位数据 ADD DI,BX ;添加偏移量 MOV AL,CS:DI MOV AH,0 OUT DX, AX ;发送低四位数据 CALL DELAY;延时等待 RET;*;*lIGHT* LIGHT: MOV DI,OFFSET TEMP0
23、;获取上次ADC的值 MOV BL,CS:DI CMP BL,30H;跟设定值进行比较 JB LIGHT_OFF;低于30H的话转移 MOV DX, 04A2H ;传送数据 MOV AL,00H;B端口输出低电平 OUT DX, AL ;写入B端口 CALL DELAY;延时等待 LIGHT_OFF: MOV DX, 04A2H ;传送数据 MOV AL,0FFH;关闭LED OUT DX, AL ;写入A端口 RET;*;*GRAF* ZHUXING: MOV DI,OFFSET TEMP0;获取AD值 MOV AL,CS:DI MOV AH,00H MOV BL,16D DIV BL;除以
24、16 MOV CL,AL;获取当前温度等级 SHOW: MOV SI,OFFSETGRAF;获取当前温度对应的显示编码 ADD CL,SI MOV AL,CL CALL COMD;调用COMD显示出来 RET;*;*LCD_DISP* LCD_DISP: PUSH BX;暂时备份 AND BX, 0F0H MOV CL,4 SHR BX,CL;获取高四位数据 ADD BX,30H ;获取相应的ASCII码 CMP BL,3AH;如果高于0AH,还得再加上07H JB T0 ADD BL,07H T0: MOV CX,03D;循环3次 MOV SI,OFFSETTEP1 T1: MOV DX,
25、04A4H IN AX, DX ;读端口C的状态 AND AX, 80H ;判断BUSY JNZ T1 ;忙等待 MOV AL, SI ;给液晶屏发送命令 CALL COMD ;调用发送函数 INC SI ;SI+1 ,传送下一个数据 LOOP T1 WR1: MOV DX, 04A4H ;读C命令 IN AX, DX ;读端口C的状态 AND AX, 80H ;判断BUSY JNZ WR1 ;忙等待 MOV AL, BL ;给液晶屏发送命令 CALL COMD ;调用发送函数 MOV CX,03D MOV SI,OFFSETTEP2 T2: MOV DX, 04A4H ;写端口命令 IN A
26、X, DX ;读端口C的状态 AND AX, 80H ;判断BUSY JNZ T2 ;忙等待 MOV AL, SI ;给液晶屏发送命令 CALL COMD ;调用发送函数 INC SI ;SI+1 ,传送下一个数据 LOOP T2 POP BX AND BX,0FH ;获取低四位数据 ADD BX,30H ;获取ASCII码 CMP BL,3AH JB WR2 ADD BL,07H;如果超过0AH,还得再添加07H WR2: MOV DX, 04A4H ;读C命令 IN AX, DX ;读端口C的状态 AND AX, 80H ;判断BUSY JNZ WR2 ;忙等待 MOV AL, BL ;给
27、液晶屏发送命令 CALL COMD ;调用发送函数 CALL DELAY RET;*;* DELAY: MOV CX, 03FFFH DELAY1: NOP NOP LOOP DELAY1;空循环等待 RET;* ;* COMD: MOV DX, 04A0H ;传送数据 OUT DX, AL ;写入A端口 MOV DX, 04A6H ;写控制字寄存器 MOV AX, 71H OUT DX, AX ;PC0置位,拉高PC0 MON: MOV DX, 04A4H IN AX, DX ;读端口C AND AX, 80H ;判断是否忙碌 JZ MON ;等待其不忙碌为止,发送数据就结束了 MOV DX
28、, 04A6H ;写控制寄存器 MOV AX, 70H OUT DX ,AX ;复位PC0,拉低REQ RET ;* TABLE: ;DB 0F0H,01D,00D,11H,11H ;北 ;DB 0F0H,02D,00D,1EH,09H ;京 ;DB 0F0H,03D,00D,1FH,26H ;科 ;DB 0F0H,04D,00D,1CH,1CH ;技 ;DB 0F0H,05D,00D,14H,53H ;大 ;DB 0F0H,06D,00D,31H,07H ;学 DB 0F1H,01D,05D,U DB 0F1H,02D,05D,S DB 0F1H,03D,05D,T DB 0F1H,04D,
29、05D,B DB 0F0H,03D,00D,37H,34H ;自 DB 0F0H,04D,00D,16H,0FH ;动 DB 0F0H,05D,00D,1BH,0FH ;化 DB 0F0H,06D,00D,31H,07H ;学 DB 0F0H,07D,00D,34H,1AH ;院 DB 0F0H,02D,01D,46D,34D ;温 DB 0F0H,03D,01D,22D,40D ;度 DB 0F1H,08D,20D,: DB 0F3H,11D,17D,60H,0F3H,12D,17D,00H DB 0F3H,11D,18D,91H,0F3H,12D,18D,0F4H DB 0F3H,11D,19D,60H,0F3H,12D,19D,0CH DB 0F3H,11D,20D,6CH,0F3H,12D,20D,04H