微机原理课程设计报告-北京科技大学_第1页
微机原理课程设计报告-北京科技大学_第2页
微机原理课程设计报告-北京科技大学_第3页
微机原理课程设计报告-北京科技大学_第4页
微机原理课程设计报告-北京科技大学_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京科技大学自动化学院微机原理课程设计

PAGE

-

PAGE

1

-

《微机原理》课程设计报告

时间

2013.12_

学院自动化_

专业班级

_

___

合作者

_

指导教师

___

成绩

_______

摘要

8086是Intel公司设计生产的CPU,是计算机发展史上的里程碑。通过学习8086CPU的工作原理,可以帮助我们理解计算机的工作原理。实践动手能力是电子信息类应用型人才必须具备的基本素质。本次微机原理课程设计,通过设计一个热电偶温度检测器,并将测量得到的数据显示到LCD屏幕上。其中使用到8086,ADC0809,8255,8279,经过一周的练习,锻炼了我们的编写程序能力,逻辑分析能力,解决问题的能力,查找文献的能力。

关键词:8086热电偶ADC0809

Abstract

8086isACPUdesignedbyIntelandamilestoneinthehistoryofthedevelopmentofthecomputer.Studyingtheworkingprincipleof8086CPUcanhelpusunderstandtheworkingprincipleofthecomputer.Practiceabilityisbasicqualitiesofstudentswhomajoredinelectronicandinformation.Themicrocomputerprinciplecourse,wedesignedathermocoupletemperaturedetectoranddisplayedthemeasureddataontheLCDscreen.Itused8086,ADC0809,8255827.Afteraweekofpractice,wepromoteourabilitytowriteprograms,logicanalysisabilityandproblemsolvingskillsandtheabilityofsearchingreference.

KeyWords:8086thermocoupleADC0809

北京科技大学自动化学院微机原理课程设计

PAGE

-

PAGE

2

-

目录

TOC\o"1-3"\h\z

摘要

1

Abstract

1

引言

1

K型热电偶传感器实验

2

1实验内容

2

2实验设备

2

3实验设计原理

2

3.1热电偶原理

2

3.2AD转换电路

3

4设计思路

4

4.1AD转换采集数据

4

4.2数据显示到数码管上

4

4.3数据显示到LCD上

5

4.4报警

5

4.5显示柱形图

5

5程序流程

6

5.1主程序流程图

6

5.2LCD显示程序流程图

7

5.3数码管显示子程序流程图

8

5.4报警子程序流程图

8

5.5柱形图显示程序流程图

9

7实验现象及说明

9

7.1实验结果

9

7.2结果说明

10

8在小组中的任务

11

9实验心得

11

结论

12

参考文献

13

附录

14

1程序清单

14

北京科技大学自动化学院微机原理课程设计

-

PAGE

17

-

引言

《微机原理》课程设计需综合运用所学知识针对一个较为具体的控制对象或过程进行系统设计、硬件选型及软件设计。通过课程设计,可以对理论知识融会贯通,培养同学们的系统设计能力,使同学们达到以下能力训练:

(1)调查研究、分析问题的能力;

(2)使用设计手册、技术规范的能力;

(3)查阅文献的能力;

(4)制定设计方案的能力;

(5)计算机应用的能力;

(6)设计计算和绘图的能力;

(7)语言文字表达的能力。

本组微机原理设计的内容是通过热电偶检测热端温度,并利用模拟电路将信号放大,使用ADC0809将得到的模拟信号转换成数字量,最终显示到相应的设备上。通过仔细的调试,最终完成了整体电路的调试。

K型热电偶传感器实验

1实验内容

连接好电路,编写调试程序。用打火机加热热电偶的测量端,读出冷端和热端的温度差,并显示到液晶屏上。

2实验设备

1、EL-MUT-III实验箱

2、8086CPU板

3、温度传感器模块

3实验设计原理

3.1热电偶原理

热电偶是将两种不同性质的金属导线连接在一起所形成的温度测量装置。其测量原理是利用席贝克效

应(SeedbackEffect),即两种不同性质的金属导线连接在一起形成封闭回路时,若使其中一接点的温度高于另一接点的温度,则在此闭合回路中,即有电流流过。如下图所示:

图1热电偶原理

在热电偶上,两根导线连接在一起的点称为热接点,也称测量点,通常置于待测温度区;而两导线不连接的地方称为冷接点,接测量电路。根据正、负极用材料的不同,热电偶分为B、E、J、K、R、S、T、Y型。本模块中采用的是K型热电偶,其正极为镍铬合金,负极为镍硅合金。与其它类型的热电偶相比,K型热电偶的线性较好,使用方便,因而在工业测量中被广泛使用。K型热电偶的基本测量电路如下图所示。K型热电偶的工作原理见模块说明,其测量电路如下图所示。COUPLER1、COUPLER2为热电偶冷接点的两接线端,COUPLER1为正端。OP07为高阻运算放大器,用于高精度的电压放大。如上图所示,电压增益为500倍。模块上BALANCE电位器对应于图中R6,用于零位调节。J1对应于VOUT1插孔,输出模拟电压。R9电位器用于设置报警电压,当模拟输出大于报警电压时,ALARM灯亮,ALARMOUT输出高电平;否则ALARM灯不亮,ALARMOUT输出低电平。使用时,应先对OP07调零,具体方法如下:将热电偶的两接线端接在模块的两接线端子上,红端接正,蓝端接负。用万用表测VOUT1端的输出电压,使VOUT1=0V。(注:必须在接上热电偶的情况下调零,否则测量误差较大)将测量端置于加热区(或用打火机加热),用A/D采样VOUT1端电压,根据下面K型热电偶的分度表可计算出冷端和热端的温差T1(两刻度之间可用线性插值),用其它方法测出的常温为T0,T0+T1就是测量端的实际温度。

图2K型热电偶电路图

3.2AD转换电路

八路八位A/D实验电路由一片ADC0809,一片74LS04,一片74LS32组成,该电路中,ADIN0—ADIN7是ADC0809的模拟量输入插孔,CS0809是0809的AD启动和片选的输入插孔,EOC是0809转换结束标志,高电平表示转换结束。齐纳二极管LM336-5提供5V的参考电源,ADC0809的参考电压,数据总线输出,通道控制线均已接好,八位双缓冲D/A实验电路由一片DAC0832。一片74LS00,一片74LS04,一片LM324组成,该电路中除DAC0832的片选未接好外,其它信号均已接好,片选插孔标号CS0832。输出插孔标号DAOUT。该电路为非偏移二进制D/A转换电路,通过调节POT3,可调节D/A转换器的满偏值,调节POT2,可调节D/A转换器的零偏值。

图3AD转换电路的原理图

4设计思路

4.1AD转换采集数据

ADC0809是逐位逼近型8通道A/D转换芯片,CMOS工艺制造,双列直插式28引脚封装。由于本次实验时硬件电路使用的是实验箱,所以硬件电路无需设计。ADC0809有8个通道,本次使用的是0通道,片选信号选用CS3,所以地址定义为“CON0809EQU04D0H”。在START端产生一个正脉冲,启动AD转换,并锁存模拟通道地址。由于AD转换需要一定的时间,所以接下来等待一段时间,读取AD转换值。

4.2数据显示到数码管上

数码管电路使用的是8279驱动电路。由于电路已经设计完毕,所以程序开始定义其控制和数字地址:

CON8279EQU0492H

DAT8279EQU0490H

由于数码管显示需要显示的编码,所以先定义编码表。

SEGCODDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

当获取ADC后的信息后,分别提取高四位和低四位的数据,然后到数码管显示表中查找相应的编码,发送到8279,8279驱动数码管便能显示出当前的数据。

4.3数据显示到LCD上

为了减轻总线的负担,驱动LCD的任务给了8255,CPU通过控制8255的输出来控制LCD的显示内容。将PA0~PA7连接到LCD的数据端口上,将PC7连接到BUSY端口上,将PC0连接到LCD的REQ上,将CS8255连接到CS0。首先初始化8255,将A端口设置为输出模式,PC7~PC4设置为输入模式,PC3~PC0设置为输出并复位PC0端口,B端口设置为输出模式。LCD的驱动芯片接收命令来显示字符,有很多种方式,里面包括汉字库等。获取显示位置等数据后,判断是否忙,然后发送数据,等待接收,发送完毕,将相应的数据发送完毕后即可显示相应的字符。

4.4报警

由于在实际应用中往往会加入报警等异常处理环节,本组添加设计了报警功能,当温度超过设定温度时,LED灯开始闪烁。设计原理比较简单,获取数据后与设定数据进行比较,当温度超过设定温度值时,CPU发送命令给8255,让8255B端口输出相应的电平让LED闪烁,达到报警的效果。

4.5显示柱形图

为了直观的显示温度的变化,本组加入了柱形图显示。首先定义了不同温度下的显示字节编码。

GRAF:DB0F3H,01D,17D,80H

DB0F3H,01D,17D,40H

DB0F3H,01D,17D,20H

DB0F3H,01D,17D,10H

DB0F3H,01D,17D,08H

DB0F3H,01D,17D,04H

DB0F3H,01D,17D,02H

DB0F3H,01D,17D,01H

当获取AD值后判断当前的温度等级并获取显示编码,然后显示到液晶屏上即可。

5程序流程

开始

5.1主程序流程图

8255初始化,以及LCD显示“USTB自动化学院,温度:”等

调用柱形图显示程序在液晶屏显示当前温度对应的柱形图

调用报警程序,判断当前是否应该报警

调用LCD显示程序在LCD上显示数据

获取AD转换后的值,并存入寄存器和存储器

启动一次零通道的AD转换,并延时等待

调用数码管显示函数,在数码管上同步显示数据据

图4主程序流程图

5.2LCD显示程序流程图

图5液晶屏显示流程图

5.3数码管显示子程序流程图

开始

8279初始化

获取编码

发送结束

发送数据

N N

Y

图6数码管显示流程图

5.4报警子程序流程图

开始

获取温度

是否报警

关闭LED

闪烁一次LED

图7报警子程序流程图

5.5柱形图显示程序流程图

开始

获取显示编码

发送数据到LCD上

图8柱形图显示子程序

7实验现象及说明

7.1实验结果

经过调试,完成基本的功能,并添加了附加的功能。数码管能与LCD同步显示采集的AD值。当温度超过一定值时,系统通过闪烁LED报警。同时为了方便地查看当前的温度状况,在LCD上显示了柱形图。实际工作状况如下图所示:

图9实物演示效果图

7.2结果说明

由于本次实验采集的是ADC转换后的值,并没有进行AD值和实际温度差值之间的转换,所以图中显示的数据并不是真实的温度值。另一方面,热电偶检测的是热锻和冷端的温度差,所以实际的AD值不光跟热端温度有关,而且跟冷端温度有关。由于热电偶的线性度比较高,所以加热另一端能清楚地看到采集的AD值升高。

8在小组中的任务

本人在本次实验中主要负责程序的编写,注释的添加。另外,在完成基本功能后,我添加了报警功能和柱形图显示功能,并撰写了个人的设计报告。

9实验心得

通过本次实验设计,了解了计算机的基本工作原理,AD转换的基本方式。另外,本次实验是一次综合性的课程设计,熟悉了几种显示设备的使用方法,初步掌握了汇编语言程序设计的方法。在整个设计过程中,我们也遇到了一些问题,比如液晶屏不能正常显示,经过检查是因为连线上了一根。程序中也遇到一些问题,数码管不能和液晶屏同步显示,经过检查,结果是一句程序跳转指令出错了。总之,本次课程设计收获颇多,收获了一些课堂上不能得到的能力和锻炼。

结论

热电偶的热端在温度发生变化以后,由于席贝克响应,热电偶回路中会有电流流过,因此通过模拟电路采集电压信号并进行放大等处理后进行AD转换可以得到数字量,此数字信号跟热电偶两端的温度差有关。通过查表或者拟合公式可以得到实际的温度差值。由于本次使用汇编语言书写程序,所以对浮点数的处理比较复杂,所以只显示了采集的AD值,但是能形象的描述出温度的变化。

参考文献

王忠民著.微型计算机原理.西安:西安电子科技大学出版社,2007.

董洁著.stu_8086课程设计说明.北京.北京科技大学,2013

附录

1程序清单

CON0809EQU04D0H

CON8279EQU0492H

DAT8279EQU0490H

ASSUMECS:CODE

CODESEGMENTPUBLIC

ORG100H

START:JMPSTART1

SEGCODDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;0~9的编码

TEMP0DB00H

;**********************************Init***********************************START1:MOVDX,04A6H;选中控制寄存器

MOVAX,88H;A端口输出,工作在方式0,PC7~PC4输入,B端口输出,PC3~PC0输出

OUTDX,AX;发送命令

MOVAX,70H;

OUTDX,AX;复位PC0

MOVAL,0F4H;清屏命令

CALLCOMD

CALLDELAY;延时等待

MOVSI,OFFSET[TABLE]

MOVCX,183D

WR0:MOVDX,04A4H;写端口C命令

INAX,DX;读端口C的状态

ANDAX,80H;判断BUSY

JNZWR0;忙等待

MOVAL,[SI];给液晶屏发送命令

CALLCOMD;调用发送函数

INCSI;SI+1,传送下一个数据

LOOPWR0

;***********************************************************************

;**********************************main*********************************

MAIN1:MOVDX,CON0809

MOVAX,34H

OUTDX,AX;锁存AD转换通道,为通道0

MOVCX,10H

WAIT1:NOP

NOP

LOOPWAIT1;等待AD转换的完成

MOVDX,CON0809;

INAX,DX;读入温度数据

ANDAX,0FFH;去位

MOVBX,AX;存入BX

MOVDI,OFFSETTEMP0

MOVCS:[DI],BL ;将数据存储起来

MOVTEMP0,BL ;

CALLLCD_DISP;LCD显示

CALLLED_DISP;LED显示

CALLLIGHT ;判断是否报警

CALLZHUXING ;柱形图显示

CALLDELAY ;延时等待

JMPMAIN1;回到主函数入口继续执行

;***********************************************************************

;********************************LED_Display****************************LED_DISP:MOVDI,OFFSETTEMP0

MOVBL,CS:[DI] ;从存储器中读取上次的AD转换值

MOVDI,OFFSETSEGCOD ;获取数码管编码的首地址

MOVAX,08H

MOVDX,CON8279

OUTDX,AX ;让数码管显示16X8字符,左端开始

MOVDX,DAT8279 ;获取数据地址

PUSHBX ;将BX暂时备份

ANDBX,0F0H ;获取高四位编码

MOVCL,4

SHRBX,CL ;逻辑右移4位

ADDDI,BX ;获取编码偏移地址

MOVAL,CS:[DI]

MOVAH,0

OUTDX,AX ;发送数据

NOP

NOP

MOVDI,OFFSETSEGCOD

POPBX

ANDBX,0FH ;获取低四位数据

ADDDI,BX ;添加偏移量

MOVAL,CS:[DI]

MOVAH,0

OUTDX,AX ;发送低四位数据

CALLDELAY ;延时等待

RET

;***********************************************************************

;*******************************lIGHT***********************************

LIGHT:MOVDI,OFFSETTEMP0 ;获取上次ADC的值

MOVBL,CS:[DI]

CMPBL,30H ;跟设定值进行比较

JBLIGHT_OFF ;低于30H的话转移

MOVDX,04A2H ;传送数据

MOVAL,00H ;B端口输出低电平

OUTDX,AL ;写入B端口

CALLDELAY ;延时等待

LIGHT_OFF:MOVDX,04A2H ;传送数据

MOVAL,0FFH ;关闭LED

OUTDX,AL ;写入A端口

RET

;***********************************************************************

;***************************GRAF***************************************

ZHUXING:MOVDI,OFFSETTEMP0 ;获取AD值

MOVAL,CS:[DI]

MOVAH,00H

MOVBL,16D

DIVBL; ;除以16

MOVCL,AL ;获取当前温度等级

SHOW:MOVSI,OFFSET[GRAF] ;获取当前温度对应的显示编码

ADDCL,SI

MOVAL,[CL]

CALLCOMD ;调用COMD显示出来

RET

;***********************************************************************

;************************LCD_DISP**************************************

LCD_DISP:PUSHBX ;暂时备份

ANDBX,0F0H

MOVCL,4

SHRBX,CL ;获取高四位数据

ADDBX,30H ;获取相应的ASCII码

CMPBL,3AH ;如果高于0AH,还得再加上07H

JBT0

ADDBL,07H

T0:MOVCX,03D ;循环3次

MOVSI,OFFSET[TEP1]

T1:MOVDX,04A4H

INAX,DX ;读端口C的状态

ANDAX,80H ;判断BUSY

JNZT1 ;忙等待

MOVAL,[SI] ;给液晶屏发送命令

CALLCOMD ;调用发送函数

INCSI ;SI+1,传送下一个数据

LOOPT1

WR1:MOVDX,04A4H ;读C命令

INAX,DX ;读端口C的状态

ANDAX,80H ;判断BUSY

JNZWR1 ;忙等待

MOVAL,BL ;给液晶屏发送命令

CALLCOMD ;调用发送函数

MOVCX,03D

MOVSI,OFFSET[TEP2]

T2:MOVDX,04A4H ;写端口命令

INAX,DX ;读端口C的状态

ANDAX,80H ;判断BUSY

JNZT2 ;忙等待

MOVAL,[SI] ;给液晶屏发送命令

CALLCOMD ;调用发送函数

INCSI ;SI+1,传送下一个数据

LOOPT2

POPBX

ANDBX,0FH ;获取低四位数据

ADDBX,30H ;获取ASCII码

CMPBL,3AH

JBWR2

ADDBL,07H ;如果超过0AH,还得再添加07H

WR2:MOVDX,04A4H ;读C命令

INAX,DX ;读端口C的状态

ANDAX,80H ;判断BUSY

JNZWR2 ;忙等待

MOVAL,BL ;给液晶屏发送命令

CALLCOMD ;调用发送函数

CALLDELAY

RET

;***********************************************************************

;***********************************************************************

DELAY:MOVCX,03FFFH

DELAY1:NOP

NOP

LOOPDELAY1 ;空循环等待

RET

;***********************************************************************

;**********************************************************************

COMD:MOVDX,04A0H;传送数据

OUTDX,AL;写入A端口

MOVDX,04A6H;写控制字寄存器

MOVAX,71H

OUTDX,AX;PC0置位,拉高PC0

MON:MOVDX,04A4H

INAX,DX;读端口C

ANDAX,80H;判断是否忙碌

JZMON;等待其不忙碌为止,发送数据就结束了

MOVDX,04A6H;写控制寄存器

MOVAX,70H

OUTDX,AX;复位PC0,拉低REQ

RET

;**********************************************************************

TABLE:;DB0F0H,01D,00D,11H,11H;北

;DB0F0H,02D,00D,1EH,09H;京

;DB0F0H,03D,00D,1FH,26H;科

;DB0F0H,04D,00D,1CH,1CH;技

;DB0F0H,05D,00D,14H,53H;大

;DB0F0H,06D,00D,31H,07H;学

DB0F1H,01D,05D,'U'

DB0F1H,02D,05D,'S'

DB0F1H,03D,05D,'T'

DB0F1H,04D,05D,'B'

DB0F0H,03D,00D,37H,34H;自

DB0F0H,04D,00D,16H,0FH;动

DB0F0H,05D,00D,1BH,0FH;化

DB0F0H,06D,00D,31H,07H;学

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论