计算机硬件技术报告文档格式.docx
《计算机硬件技术报告文档格式.docx》由会员分享,可在线阅读,更多相关《计算机硬件技术报告文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
ADC0809与8255的连接以及8086与8255的连接。
刘卿材主要负责:
查阅资料,8086内置程序设计,协助完成实验运行
四、设计方案:
温度信息由温度传感器测量并转换成微安级的电流信号,经过运算放大电路将温度传感器输出的小信号进行跟随放大,输入到A/D转换器(ADC0809)转换成数字信号输入主机。
数据经过标度转换后,通过数码管将温度显示出来。
5、硬件原理图(包括芯片的选型介绍)
系统器件选择
1系统扩展接口的选择
本次设计采用的是8086微处理器,选择8255A可编程并行接口作为系统的扩展接口,8255A的通用性强,适应灵活,通过它CPU可直接与外设相连接。
2温度传感器与A\D转换器的选择
系统选用温度传感器AD590构成测温系统。
AD590是一种电压输入、电流输出型集成温度传感器,测温范围为-55℃~150℃,非线性误差在±
0。
30℃,其输出电流与温度成正比,温度没升高1K(K为开尔文温度),输出电流就增加1uA。
其输出电流I=(273+T)uA。
设计中串联电阻的阻值选用2KΩ,所以输出电压V+=(2730+10T)MV.另外,为满足系统输入模拟量进行处理的功能,对其再扩展一片ADC0809,以进行模拟—数字量转化。
但是在proteus中AD590无法选取,所以通过使用滑动变阻器来实现。
3显示接口芯片
为满足本次设计温度显示的需要,我们选择了8279芯片,INTEL8279芯片是一种通用的可编程的键盘、显示接口器件,单个芯片就能完成键盘键入和LED显示控制两种功能。
备注:
系统硬件接线应尽量以插接形式连接,这样便于多用途使用和故障的检查和排除。
8086微处理器及其体系结构
8086CPU的编程结构
编程结构:
是指从程序员和使用者的角度看到的结构,亦可称为功能结构。
从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。
8086CPU的内部功能结构如图2-1所示:
图2-18086/8088CPU内部功能结构图
执行部件(EU)
功能:
负责指令的执行。
组成:
包括①ALU(算术逻辑单元)、②通用寄存器组和③标志寄存器等,主要进行8位及16位的各种运算。
总线接口部件(BIU)
负责与存储器及I/O接口之间的数据传送操作。
具体来看,完成取指令送指令队列,配合执行部件的动作,从内存单元或I/O端口取操作数,或者将操作结果送内存单元或者I/O端口。
它由①段寄存器(DS、CS、ES、SS)、②16位指令指针寄存器IP(指向下一条要取出的指令代码)、③20位地址加法器(用来产生20位地址)和④6字节(8088为4字节)指令队列缓冲器组成。
系统各部分功能模块介绍
温度测量电路设计
温度测量电路要实现的目标是:
将0~120度通过传感器测量,运算放大器放大的0~5V的电压信号。
ADC0809与8255的连接
模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。
为了减少输入噪声其他通道直接接地。
ADC0809的数据线D0-D7与8255的PB0-PB7相连接。
其片选CS与8086的地址/数据总线AD14相连接。
图3-3ADC0809与8255的连接图
8086的可编程外设接口电路
8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。
控制线RESET用来使8255A复位。
CS和地址线A1及A0用于芯片选择和通道寻址。
8086的可编程外设接口电路图
LED显示电路设计
LED显示电路
报警电路设计
当温度低于80度时,绿灯亮;
当温度高于80度时,红灯亮。
报警电路
系统整体硬件电路设计
软件设计
设计的目的是以8086微处理器为控制器,将温度传感器输出的小信号经过放大和低通滤波后,送至A/D转换器;
微控制器实时采集、显示温度值(要求以摄氏度显示).
6、程序清单
CASDEQU209H
Z827EQU212H
D8279EQU210H
LEMDMODEQU00H;
左边输入,8位显示外部译码8位显示
LEDFEQEQU38H;
扫描频率
LEDCLSEQU0C1H;
清除显示RAM
Z8255EQU21BH
Z8255AEQU218H
Z8255CEQU21AH
COUNTEQU8
DATASEGMENT
DATA1DB4DUP(?
MESS1DB‘ENTEDANYKEYTOBEGIN!
’,0DH,0AH,’$’
MESS2DB10,13,’ENTERANYKEYCANEXITTODOS!
’,0DH,0AH,’$’
MESS3DB10,13,’INPUTTHETEMPERATUREVALUE:
’,’$’
MESS4DB10,13,’INPUTVALUEERROR!
’0DH,0AH,’$’
MESS5DB10,13,’INPUTANEWTEMPERATUREVALUE:
’,’$’
MESS6DB10,13,’***LETPA0=0TOADJUSTTHETEMPERATUREVALUE!
***’,0DH,0AH,’$’
MESS7DB10,13,‘***LETPA0=1TOINPUTANEWTEMPERATUREVALUE!
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H
DATAENDS
STACKSEGMENTSRACK
STADW50DUP(?
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAH,09H;
显示提示信息1
MOVDX,OFFSETMESS1
INT21H
MOVAH,09H;
显示提示信息6
MOVDX,OFFSETMESS6
INT21H
显示提示信息7
MOVDX,OFFSETMESS7
MOVAH,08H
显示提示信息3
MOVDX,OFFSETMESS3
CALLINPUT;
输入设置的温度值存DATA1
OK:
MOVDX,Z8255;
设置A口为输入,C口为输出
MOVAL,92H
OUTDX,AL
MOVDX,Z8255C
MOVAL,00H
OUTDX,AL
CALLDELAY
MOVDX,Z8279;
初始化8279
MOVAL,LEDMOD
MOVAH,09H
MOVDX,OFFSETMESS2;
显示提示信息2
BEGIN:
MOVBX,0
MOVCL,COUNT
MOVCH,0
BB:
MOVDX,CSAD;
启动AD
MOVAX,0
CALLDELAY
INAL,DX;
采样AD值
ADCBX,AX;
求平均值
LOOPBB
MOVAX,BX
RCRAX,1
RCRAX,
CALLCHANGTOBCD;
转化为十进制的温度值
MOVDI,OFFSETDATA1
MOV[DI+3],AL
CALLDIS
MOVBL,[DI+2]
MOVAL,[DI+3]
CMPAL,BL
JBUP
MOVDX,Z8255A
INAL,DX
ANDAL,01H
JZDOWN
MOVAH,09H
MOVDX,OFFSETMESS5
CALLINPUT
JMPBEGIN
UP:
MOVAL,40H
JMPAA
DOWN:
AA:
MOVDX,Z8255C
MOVAH,0BH
CMPAL,0
JZCC
MOVAX,4C00H
CC:
JMPBEGIN
DELAYPROCNEAR
PUSHCX
MOVCX,0F00H
LOOPS
POPCX
RET
DELAYENDP
INPUTPROCMEAR;
温度值的设置子程序
MOVAH,1H
INT21H
MOVDI,OFFSETDATA1
MOV[DI],AL
MOVBH,AL
MOVAL,1L
MOV[DI+1],AL
MOVBL,AL
ANDBH,0FH
RCLBH,1
ORBL,BH
MOVAL,BL
CMPAL,76H;
输入温度大于76H则显示错误提示信息
JAERR
MOV[DI+2],AL
INPUTENDP
ERR:
显示错误提示信息
MOVDX,OFFSETMESS4
MOVAX,4C00H
CHANGETOBCDPROCNEAR;
BCD码转换子程序
MOVBL,3
MULBL
MOVBL,10
DIVBL
AAM;
非压缩BCD码乘法调整指令
MOVBL,AL
MOVAL,AH
MOVCL,04H
RORAL,CL
XORAL,BL
RET
CHANGETOBCDENDP
DISPROCNEAR;
显示子程序
MOVAL,0FH
PUSHAX
MOVDX,Z8279
MOVAL,90H
OUTDX,AL
POPAX
PUSHBX
LEABX,LED
XLAT
POPBX
MOVDX,D8279
CALLDELAY
MOVAL,BL
MOVCL,04H
RORAL,CL
ANDAL,0FH
DISENDP
CODEENDS
ENDSTART
七、运行结果
给温度传感器设置10度时,电压表显示值为0.43V,绿灯亮,仍符合要求。
LED显示值为022。
以此类推当给温度传感器输入20,30,40度时;
当改变温度传感器温度值,使LED显示为080时,绿灯亮。
当LED显示大于80度时,红灯亮,此时报警指示电路工作正常。
结果分析
根据仿真结果可以看出,温度测量电路和A/D转换电路以及报警灯电路均显示正常,只有LED显示结果与理论值有误差,正常情况下LED上显示值和温度传感器输入值是一样的,然而仿真时,0度对应的是002,1度对应的是004,10度对应的是022,显示数以2为基准跳变。
因此我首先想到的是程序问题,在程序中加一个除2的语句,但LED显示仍无大变化。
因此造成LED显示错误可能有其他原因
汇编语言程序
CSBITP1.7
CLKBITP1.0
DOBITP1.1
AD_TMPEQU30H
AD_TMP_1EQU31H
AD_TMP_2EQU32H
AD_TMP_3EQU33H
AD_TMP1EQU34H
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
CLRP2.0
START:
LCALLAD_CONV
LCALLDISPLAY
LJMPSTART
AD_CONV:
SETBCS
CLRCLK
NOP
CLRCS
SETBCLK
MOVR0,#08H
AD_READ:
MOVC,DO
RLCA
DJNZR0,AD_READ
MOVAD_TMP,A
DISPLAY:
MOVA,AD_TMP
MOVDPTR,#TAB1
MOVCA,@A+DPTR
CJNEA,#80,S1
SJMPS3
S1:
JNCS2
SJMPS4
S2:
CLRP3.0
S3:
SETBP3.0
S4:
MOVB,#100
DIVAB
MOVAD_TMP_1,A
MOVA,B
MOVB,#10
MOVAD_TMP_2,A
MOVAD_TMP_3,B
MOVDPTR,#TAB
MOVA,AD_TMP_1
MOVP0,A
SETBP2.1
LCALLDLY
CLRP2.1
MOVA,AD_TMP_2
SETBP2.2
CLRP2.2
MOVA,AD_TMP_3
SETBP2.3
CLRP2.3
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH
TAB1:
DB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
DB19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34
DB35,36,37,38,39,40,41,42,43,44,45,46,47,48,49
DB50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66
DB67,68,69,70,71,72,73,74,75,76,77,78,79,80
DB81,82,83,84,85,86,87,88,89,90,91,92,93
DB94,95,96,97,98,99,100,101,102,103,104,105,106
DB107,108,109,110,111,112,113,114,115,116
DB117,118,119,120
DLY:
MOVR4,#2
D1:
MOVR3,#248
DJNZR3,$
DJNZR4,D1
END
八、结论
本设计采用的单片机是作为现代工业中最常用的集成芯片。
具有体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好、易于推广应用等显著优点,通过软件逻辑控制实现对温度的控制和调节。
本文的温度控制系统,只是单片机广泛应用于各行各业中的一例。
本设计中应用了许多单片机芯片和单片机常用的外部设,单片机芯片如:
ADC0809,8255,8086等。
单片机外部设备如:
温度检测元件AD590,键盘和显示系统中的LED显示器等。
该系统的主要优点如下:
一、本系统本着简单可靠的原则完成了设计要求,尽量做到线路简单,充分利用软件编程,安装比较灵活而且价格较低。
二、在系统的硬件和软件设计中,都加有安全设计部分,避免加热过高造成设备的损坏。
同时,该系统在测量过程中会带来系统误差。
参考文献
[1]戴梅蕚《微型计算机技术及应用》2007清华大学出版社
[2]武锋《单片机应用系统设计---系统配置与接口技术》1998.8北京航空航天大学出版社
[3]何克忠《计算机控制系统》2002清华大学出版社
[4]朱善君《汇编语言程序设计》1998.3清华大学出版社
[5]颜永军《protel99电路设计与应用》2001.1国防工业出版社