微机原理课设模拟热水器.docx
《微机原理课设模拟热水器.docx》由会员分享,可在线阅读,更多相关《微机原理课设模拟热水器.docx(19页珍藏版)》请在冰点文库上搜索。
微机原理课设模拟热水器
微机原理课设模拟热水器
宁夏大学微机原理课程设计报告
微机原理课程设计报告
1
宁夏大学微机原理课程设计报告
摘要
随着技术的发展和进步,微型计算机的应用在各行各业迅猛发展,它已经成为每个专业技术人员必备的基础。
本系统设计的温度显示是以8086微处理器为CPU,用ADC0809进行采样值的模数转换,将不同温度值送入8255中,。
8255做可编程并行接口现实温度的电路,并将分离后的温度值得个位,十位,百位分别送入LED数码管进行精确显示。
在此系统中,8255的功能是对LED数码管进行温度的读入,并进行位选和段选。
当延时达到一定时间后,CPU即处理,使LED显示器显示当前的温度。
程序由以下模块组成:
系统共有4个功能模块,分别为:
主控模块,A/D转换模块,显示模块,延时模块。
关键词:
微型计算机,热水器,8255,A/D转换
2
宁夏大学微机原理课程设计报告
第1章设计原理
1.1设计原理
模拟热水器系统的总体设计原理是:
首先利用模数转换芯片ADC0809实现由模拟量转化为数字量,通常要经历采样,量化,编码三个步骤,将温度模拟量转换为数字量。
再将转换出来的数字量通过CPU系统总线送给可编程并行通信接口芯片8255来实现读写操作,然后将数据通过LED数码显示管来显示出当前温度。
具体做法是为了实现精确的表示出当前的温度值,显示温度的百位,十位,个位。
我们先在数据段开辟一显示缓冲区,用来存储当前温度,初始化我们所要应用的芯片8255,ADC0809后,主程序开始,为了将温度模拟量转化为数字量,启动AD采样,读AD采样结果,将结果送变量。
为了显示温度的百位,十位,个位,将样值分离,在通过8255的A口进行段选,B口进行位选。
为了得到良好的显示效果,本程序调用了一段精确的延时程序,使各位在时间显示上有短暂的间隔。
最后通过LED数码管显示出来,通过调节滑动变阻器改变温度,再显示,有此循环,就形成了精确的温度显示系统。
1.2设计环境及设备
1、设计环境:
PC机一台、windows98系统、实验箱、导线若干。
2、设计所用设备:
ADC0809:
用来模数转换。
8255并口:
用做接口芯片LED数码显示管相连。
LED:
三个LED用于显示温度的百位、十位、个位。
1.3设计系统框图
模拟热水器系统总框图,如图1.1所示。
3
宁夏大学微机原理课程设计报告
CPU系统总线
A/D采样值8255芯片LED数码管显示
图1.1系统框图1.4硬件接线图
在实验箱上按照模拟热水器温度显示硬件接线图将传输线对应连接起来,芯
片82555中PB0至PB7口与LED数码管的A至Dp相连,是为了实现七段数码管
的段选,PA0至PA2与LED的X6至X4相连,是为了实现位选,X4为百位的显示、
X5为十位的显示、X6为个位的显示,如图1.2所示。
系统总线芯片8255数码管显示单元
D0PB0AXD0
D1PB1BXD1
D2PB2CXD2
D3PB3DXD3
D4PB4EXD4
D5PB5FXD5
D6PB6GXD6
D7PB7DXD7P
A0PA0X1XA1
A1PA1X2XA2PA2X3
WRIOW#
RDPC0IOR#LED0PC1
IOY0CSLED1
+5V
XD0D0
XD1D1XD2D2
XD3D310KXD4D4IN0
XD5D5XD6D6
XD7D7
IOW#WRA
IOR#RDB
C
CLKCLK4
宁夏大学微机原理课程设计报告
ADC0809芯片
图1.2实验接线图
1.5设计流程图
主程序的流程图是对整个程序的逻辑的图象表示。
首先是设置8255的各个端口地址。
接着初始化8255、AD0809芯片,然后进行AD采样、结果转存、数制转换、温度显示、比较报警。
开始
初始化8255
启动AD采样
读取采样结果
对采样结果进行制式转化并存储
显示温度
把温度与设定小于最小大于最大的最大和最小低温警示高温警示灯亮
的限值相比,灯亮
5
宁夏大学微机原理课程设计报告
第2章设计所用芯片
2.18255芯片的内部结构及引脚
2.1.18255外部引线
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具
有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:
方式0—基本输入/输出方式
方式1—选通输入/输出方式
方式2—双向选通输入/输出方式
8255引脚图如图3.1所示,各引脚功能如下。
D7~D0——与CPU侧连接的八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器选择输入信号;
PA7~PA0——A口外设双向数据线;
PB7~PB0——B口外设双向数据线;
PC7~PC0——C口外设双向数据线;
RESET——复位输入信号。
图2.18255引脚图
6
宁夏大学微机原理课程设计报告
2.1.28255工作方式
这些工作方式分别为工作方式0,工作方式1和工作方式2。
1:
工作方式0,又称为基本工作方式。
在此方式下,可分别将A口的8条线,B口的8条线,C口高4位对应的4条线和C口的低四位对应的四条线定义为输入或输出。
故它们的输入输出共有16种不同的组合,如表3-1所示。
表2-1工作方式表
A组B组
A口(PA0---PA7)C口(PC4---PC7)B口(PB0---PB7)C口(PC0---PC3)
入入入入
入入入出
入入出入
入入出出
入出入入
入出入出
入出出入
入出出出
出入入入
出入入出
出入出入
出入出出
出出入入
出出入出
出出出入
出出出出
2:
工作方式1,既选通输入输出方式。
在这种方式下,A口和B口仍作为数据的输出口和输入口,同时还要利用C口的某些位作为控制和状态信号。
3:
工作方式2,又称双向输入输出方式。
这种方式只有8255的口A才有。
在A口工作于双向输入输出方式时,要利用C口的5条线才能实现。
因此,B口只能工作在工作方式0或工作方式1,而C口剩下的3条线可以作为输入输出线使用或B口方式1下的控制线。
7
宁夏大学微机原理课程设计报告
2.1.38255的控制字
8255的控制字格式,如图2.2所示。
76543210
控制C口抵4位1:
输入
0:
输出
控制B口8位
1:
输入
0:
输出方式选择0:
方式01:
方式1控制C口高4位
0:
输出
1:
输入
控制A口8位
0:
输出功能控1:
输入制方式选择0:
位操00:
方式0作01:
方式1
1:
方式1X:
方式2图2.28255的控制字格式图选择
说明:
当控制字bit7,1时,控制字的bit6,bit3这4位用来控制A组,即A口的8位和C口的高4位,而控制字的低3位bit2,bit0用来控制B组,包括B口的8位和C口的低4位。
2、8255端口地址,如表3-2所示。
表2-28255端口地址
信号线寄存器编址
IOY3A口60H
B口61H
C口62H
控制寄存器63H
8
宁夏大学微机原理课程设计报告
2.2ADC08098255芯片的内部结构及引脚
2.2.1ADC0809外部引线
ADC0809转换器由一个8路单端模拟信号多路开关电路、地址锁存与译码、
电路A/D转换器和三态输出锁存缓冲器组成,其引脚图,如图2.3所示。
D0~D7——输出数据线;
IN0~IN7——8路模拟电压输入端;
ADDA,ADDB,ADDC——路地址输入;
ADDA——最低位,ADDC—最高位;
STALT——启动信号输入端,下降沿有效;
ALE——路地址锁存信号,用来锁存ADDA`ADDC的地址输入,上升沿有
效;
EOC——变换结束状态信号,高电平表示一次变换已结束;
OE——读允许信号,高电平有效;
CLK——时钟输入端;
REF(+),REF(-)——参考电压输入端;
VCC——5V电源输入;
GND——地。
图2.3ADC0809引脚图
9
宁夏大学微机原理课程设计报告
ADC0809由两部分组成:
模拟多路开关和A/D转换器。
其核心是8位A/D转换器,它采用逐次逼近法,对8路模拟开关的一路进行转换。
模拟多路包括8路模拟开关和3位锁存器与译码器,根据3位输入地址(ADDA.ADDB.ADDC)选择8路模拟输入当中的一路送到A/D转换器,如图3.4所示。
图324ADC0809内部结构图
3.2.2ADC0809工作方式
ADC0809的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址译码选通8路模拟输入之一到比较器。
STALT上升沿将逐次逼近储存器复位,下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变成高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用做申请中断。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上,如表3-3所示。
表2-3ADC0809工作方式表
ADDC、ADDB、ADDA000001010011100101110111
选中通道IN0IN1IN2IN3IN4IN5IN6IN7
10
宁夏大学微机原理课程设计报告
第3章(具体模块设计
3.1概述
本系统设计的温度显示以8088微处理器作为CPU,用ADC0809进行采样值的模数转换,通过调节ADC0809中的滑动变阻器来改变温度的值,将每次改变的不同温度值送入8255中。
8255做可编程并行接口显示温度的电路,并将分离后的温度值的个位、十位、百位分别送入LED数码管进行精确显示。
在此系统中,8255的功能是对LED数码管进行温度的读入、并进行位选和段选。
8255工作于方式0,每隔一段时间,8255的输出端就会输出一个脉冲的信号,此信号接LED数码管进行显示。
,当延时达到一定时间后,CPU即处理,使LED显示器上的显示当前温度。
程序由以下模块组成:
系统共有4个功能模块,分别为,主控模块,A/D转换模块,显示模块,延时模块。
3.2具体模块设计
1、主程序模块
主控模块是系的核心模块,对8255控制端口进行初始化并读接口。
定义数据段变量并为其分配空间,以便对温度值进行查表并显示。
写控制字地址,并将其读入端口中。
实现代码如下:
DATASEGMENT
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
VALUEDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
SSTACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,80H
MOVDX,MY8255_CON
OUTDX,AL
2、A/D转换模块
A/D转换模块送入主控模块的子功能模块。
首先启动A/D转换信号采用脉脉冲形式,脉冲下降沿有效。
ALE为地址锁存允许,当输入通路选择地址线状态稳定后,利用此信号上升沿,将地址线的状态锁存入芯片的地址锁存器中(通常ALE与START引脚短接,由同一脉冲信号进行控制)。
转换结束信号EOC在
11
宁夏大学微机原理课程设计报告
转换结束时由低电平变为高电平,该信号也可用作中断请求信号。
ENABLE为输出允许,此信号为高电平时,接通“三态输出锁存器”,将转换结果送至计算机数据总线或I/O接口数据总线。
A/D转换时钟脉冲CLOCK需要由外部电路提供。
实现代码如下:
LP:
MOVDX,640H
OUTDX,AL
CALLADDLY
INAL,DX
3、分离并显示模块
分离模块是将采样得到的温度值的百位、十位、个位分离出来并分别送入到显示模块中。
在此模块中运用除法将商放入百位,再将余数用同样的方法进行分离,商为十位,余数为个位,最后把所得到的三个数分别放入指针所指的内存单元中。
显示模块是将内存单元中所存的三个数值送到LED显示的功能模块,LED数据管是由六个字节构成,本系统只用三个字节分别显示温度的百位、十位和个位。
利用8255的A端口和B端口分别进行段选和位选,使用之前先对两个端口进行初始化。
实现代码如下:
MOVSI,1000
MOVAH,00H
MOVBL,100
DIVBL
MOV[SI],AL
MOVAL,AH
MOVAH,00H
MOVBL,10
DIVBL
MOV[SI+1],AL
MOV[SI+2],AH
MOVBX,OFFSETDTABLE
MOVDI,0000H
MOVAL,[SI]
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
MOVDX,MY8255_A
OUTDX,AL
MOVAL,0FBH
12
宁夏大学微机原理课程设计报告
MOVDX,MY8255_B
OUTDX,AL
CALLDISPDLY
MOVBX,OFFSETDTABLE
MOVAL,[SI+1]
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
MOVDX,MY8255_A
OUTDX,AL
MOVAL,0FDH
MOVDX,MY8255_B
OUTDX,AL
CALLDISPDLY
MOVBX,OFFSETDTABLE
MOVAL,[SI+2]
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
MOVDX,MY8255_A
OUTDX,AL
MOVAL,0FEH
MOVDX,MY8255_B
OUTDX,AL
CALLDISPDLY
JMPLP
5、延时模块
延时模块分为两部分:
A/D延时和显示延时。
在A/D延时中,主要是为了
使系统有充分的时间进行模数转换。
在显示延时中,主要实现将温度的百位、十
位、个位有足够的时间送入LED数码管显示单元中显示。
A/D延时实现代码如下:
ADDLY:
PUSHCX
PUSHAX
MOVCX,100HA5:
MOVAX,0800HA6:
DECAX
13
宁夏大学微机原理课程设计报告
JNZA6
LOOPA5
POPAX
POPCX
RET
显示延时实现代码如下:
DISPDLY:
PUSHCX
MOVCX,0FFHT1:
MOVAX,009FHT2:
DECAX
JNZT2
LOOPT1
POPCX
RET
14
宁夏大学微机原理课程设计报告
附录源代码
MY8255_AEQU0600HMY8255_BEQU0602HMY8255_CEQU0604HMY8255_CONEQU0606H
SSTACKSEGMENTSTACK
DW16DUP(?
)
SSTACKENDS
DATASEGMENT
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
VALUEDB?
XDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
SSTACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,80H;初始化8255
MOVDX,MY8255_CON
OUTDX,AL
LP:
MOVDX,640H;启AD采样
OUTDX,AL
15
宁夏大学微机原理课程设计报告
CALLADDLY;调用延时程序
INAL,DX;读取采样结果
MOVX,AL
MOVSI,1000
MOVAH,00H;制式转化
MOVBL,100;取出百位存入[SI]中
DIVBL
MOV[SI],AL
MOVAL,AH;取出十位存入[SI+1]
MOVAH,00H
MOVBL,10
DIVBL
MOV[SI+1],AL
MOV[SI+2],AH;将个位存入[SI+2]
MOVBX,OFFSETDTABLE;显示部分,取DTABLE的偏移地址
MOVDI,0000H
MOVAL,[SI]
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
MOVDX,MY8255_B;取8255B口的地址
OUTDX,AL
MOVAL,0FBH
MOVDX,MY8255_A;取8255A口的地址
OUTDX,AL
CALLDISPDLY;调用延时子程序
MOVBX,OFFSETDTABLE
MOVAL,[SI+1]
ANDAX,00FFH
ADDBX,AX
16
宁夏大学微机原理课程设计报告
MOVAL,[BX]
MOVDX,MY8255_B
OUTDX,AL
MOVAL,0FDH
MOVDX,MY8255_A
OUTDX,AL
CALLDISPDLY
MOVBX,OFFSETDTABLE
MOVAL,[SI+2]
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
MOVDX,MY8255_B
OUTDX,AL
MOVAL,0FEH
MOVDX,MY8255_A
OUTDX,AL
CALLDISPDLY
MOVAL,X;采样值与设定值的比较BJ:
CMPAL,64H;采样值与最大限值的比较,超温警示灯LED0亮
JGEBJ1
JLBJ2
JMPLP
BJ1:
MOVDX,MY8255_C
OUTDX,AL
JMPLP
BJ2:
CMPAL,1EH;采样值与最小限值的比较,超温警示灯LED1亮
JLBJ3
JMPLP
BJ3:
MOVDX,MY8255_C
17
宁夏大学微机原理课程设计报告
OUTDX,AL
JMPLP
时子程序ADDLY:
PUSHCX;延
PUSHAX
MOVCX,100H
A5:
MOVAX,0800HA6:
DECAX
JNZA6
LOOPA5
POPAX
POPCX
RET
DISPDLY:
PUSHCX
MOVCX,002FHT1:
MOVAX,00FFHT2:
DECAX
JNZT2
LOOPT1
POPCX
RET
CODEENDS
ENDSTART
18
宁夏大学微机原理课程设计报告
19