微机原理课程设计报告.docx

上传人:b****6 文档编号:4273523 上传时间:2022-11-28 格式:DOCX 页数:16 大小:54.58KB
下载 相关 举报
微机原理课程设计报告.docx_第1页
第1页 / 共16页
微机原理课程设计报告.docx_第2页
第2页 / 共16页
微机原理课程设计报告.docx_第3页
第3页 / 共16页
微机原理课程设计报告.docx_第4页
第4页 / 共16页
微机原理课程设计报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

微机原理课程设计报告.docx

《微机原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。

微机原理课程设计报告.docx

微机原理课程设计报告

一.任务及要求:

 

1.加热炉的炉温可以在60℃~180℃之间任意调节; 2.系统每隔3秒钟检测一遍炉温(三个炉子); 

3.利用六位七段码显示器实时显示加热炉的炉号和实际温度,显示值为十进制数值。

显示器的右三位显示加热炉的炉号,左三位显示实际值。

程序启动运行之后即开始循环显示,每次显示时间为3秒钟; 

4.分别记录各加热炉的实际炉温数据,轮流显示。

每检测一次即保存一次,循环刷新; 

5.对应各加热炉扩展功能按键。

功能键按下后不影响检测功能,仅影响显示功能。

具体要求如下:

 

⑴在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度。

如果此时按下另外功能键则不起作用,既不会改变当前显示。

只有再次按下同一个功能键之后才能使系统回到循环显示方式状态; 

⑵在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度,如果此时按下另一个功能键,则会改变当前显示,即应显示与后一次按下的功能键对应的加热炉的炉号和炉温。

只有连续按下同一个功能键两次才能回到循环显示方式状态;6.扩展发光二极管担任报警功能,当温度超过200℃即点亮发光二极管报警,并显示错误号“EF”,当温度低于50℃,点亮发光二极管报警,并显示错误号“E0”。

二.基本工作原理及说明 

1.系统硬件连接参考“多加热炉炉温检测系统硬件参考图”。

 

⑴硬件部分为PD32实验系统或8051单片机实验系统。

包括0809、8253、8259、8255、数据存储器62256、七段码显示器及其驱动电路、按键和报警部分。

图中虚线为需要连接的连线; 

⑵加热炉的实际温度用电压表示,由电位器给出。

模拟量电压经A/D转换器0809转换成数字量。

0809的输入通道选用IN0、IN1、IN2、IN3、„。

A/D采样结束后由EOC信号发出中断请求。

0809的译码地址为3C0H。

通道0~7分别为3C0H,3C4H,3C8H,3CCH,3D0H,3D4H,3D8H,3DCH。

A/D采样结束后由EOC信号发出中断请求;

⑶PD32实验系统中利用8253提供定时服务。

8253的译码地址控制口:

30C H, 

计数器1:

300H,计数器2:

304H,计数器3:

308H; 

8051单片机实验系统中利用单片机内部定时器提供定时; ⑷PD32实验系统中利用8259提供中断服务。

偶地址:

3A0H,奇地址:

3A8H; 8051单片机实验系统中利用单片机内部定时中断和外部中断为系统提供中断服务; 

⑸PD32实验系统中利用74LS273驱动七段码显示器。

位地址:

360H,段地址:

340H; 

8051单片机实验系统中利用驱动芯片驱动七段码显示器; 

⑹PD32实验系统中利用74LS245驱动报警发光二极管。

地址:

340H8051单片机实验系统中利用P1口驱动报警发光二极管; 

⑺数据存储器62256不需连接,地址范围08000H~0FFFFH; 

⑻PD32实验系统中功能键连到8259的中断端; 

8051单片机实验系统中功能键利用P1口和外部中断1实现中断检测;

 ⑼实际温度由电位器给出,可由外部调节。

电压范围0~5V; 

2.检测系统应用软件主要包括:

 ⑴主程序; 

⑵A/D转换中断服务子程序;

 ⑶定时器中断服务子程序; 

⑷代码转换子程序; 

⑸显示子程序; 

⑹按键中断服务子程序;

 3.程序流程图; 

4.多加热炉炉温检测系统硬件图。

 

 

三、源程序

.486

DATASEGMENTAT0USE16

;8255各个端口的地址

PORTAEQU203H

PORTBEQU207H

PORTCEQU20BH

CONTROLPORTEQU20FH

;七段码地址

WEIEQU360H

DUANEQU340H

;8253各个端口地址

DS0EQU300H

DSIEQU304H

DS2EQU308H

DSCEQU30CH

;8259端口地址

OPORTEQU3A0H

JPORTEQU3A8H

;0809地址

ADPORTEQU3C0H

ADPORTIEQU3C4H

ADPORI2EQU3C8H

;中断向量

ZDIROEQU20H;定时器中断

ZDLR1EQU24H;AD中断

ZDIR2EQU28H;开笑1中断

ZDIR3EQU2CH;开关2中断

ZDIR4EQU30H;开关3中断

;定义数据缓冲区

ORG4000H

DATA4ADDB3DUP(?

);AD转换后的数据存储处

DATA4LEDDB18DUP(?

);十六进制列BCD的显爪数据存储处

DATAENDS

CODESEGMENTUSE16

ORG2000H

ASSUMECS:

CODE,DS:

DATA,ES:

DATA

BEG:

CLI

JMPSTART

TABDB3FH,06H.5BH,4FH,66H,6DH,7DH.07H,7FH,67H,77H,7CI-L39H,5EH.79H,71H;段码表

;AD转换中断用

ADATANWDWDATA4AD

ADPTNWDW3C0H;通道口内存保留

;显示程序用

LEDNWDWDATA4LED

;定时中断用

TIMEDB150;设置计数值

;开关中断用

SWH1DB0FFH

SWH2DB0FFH

SWH3DB0FFH

START:

MOVAX,DATA

MOVDS,AX

MOVAX,0

MOVSS,AX

MOVSP,1000H

MOVAL,0C0H

MOVDX,WEI,

OUTDX,AL

INITA8259:

MOVAL,00010011B;ICWI;写入ICW1

MOVDX,OPORT

OUTDX,AL

MOVAL,00001000B;写入ICW2

MOVDX,JPORT

OUTDX,AL

MOVAL,00000001B;写入ICW4

MOVDX,JPORT

OUTDX,AL

MOVAL,11100000B;写入OCW1屏蔽字

MOVDX,JPORT

OUTDX,AL

MOVAL,20H;清ISR

MOVDX,OPORT

OUTDX.AL

INITLA8255:

MOVAL,10000000B;A、B、C口都工作于方式0,都为输出MOVDX,CONTROLPORT

OUTDX,AL

MOVAL,0FFH

MOVDX,PORTA

OUTDX,AL

INITIA8253:

MOVDX,DSC

MOVAL,00110110B;方式3二进制计数

OUTDX,AL

MOVDX,DS0

MOVAL,60H;计数初值设为0EA60H/6000D

OUTDX,AL

MOVAL,0EAH

OUTDX,AL

;中断向量初始化

MOVDI,ZDIR0

MOVAX,OFFSETTIMER

STOSW

MOVAX,SEGTIMER

STOSW

MOVDI,ZDIRI

MOVAX,OFFSETADPROC

STOSW

MOVAX,SEGADPROC

STOSW

MOVDI,ZDIR2

MOVAX,OFFSETSWITCH1

STOSW

MOVAX,SEGSWITCH1

STOSW

MOVDI,ZDIR3

MOVAX,OFFSETSWITH2

STOSW

MOVAX,SEGSWITH2

STOSW

MOVDI,ZDIR4

MOVAX,OFFSETswitcb3

STOSW

MOVAX,SEGSWITCH3

STOSW

MOVDX,ADPORT;启动ADC

OUTDX.AL

;炉号初始化

MOVDX,4003H

MOVBYTEPTR[DI],0

INCDI

MOVBYTEPTR[DI],0

INCDI

MOVBYTEPTR[DI],1

ADDDI,4

MOVBYTEPTR[DI],0

INCDI

MOVBYTEPTR[DI],0

INCDI

MOVBYTEPTR[D1],2

ADDDL4

MOVBYTEPTR[DI],0

INCDI

MOVBYTEPTR[DI],0

INCDI

MOVBYTEPTR[DI],3

AGAIN:

STI

CALLCZBCD

CALLDISP

JMPAGAIN

;一一拆字十六进制转BCD码一一

CZBCDPROC

PUSHBx

PUSHCX

PUSHAX

LEASI,DATA4AD;AD转换后的数据存储处

LEADI,DATA4LED;十六进制到BCD的显示数据存储处ADDDI,2

CZ0

MOVAL,[SI]

CMPAL,11H;与60比较

JBEST0

CMPAL,0DDH;与180比较

JAEST1

JMPCZ00

ST0:

MOVBYTEPTR[DI+1],0EH

MOVBYTEPTR[DI+2],00H

JMPCZ00

ST1:

MOVBYTEPTR[DI+1],0EH

MOVBYTEPTR[DI+2],0FH

JMPCZ00

CZ00:

MOVBX,1EH;转换为实际温度值

MULBX

MOVDL,51

DIVDL

ADDAX,50

MOVAH,00H

MOVBL,0AH

MOVCX,3

CZ1:

DIVBL

MOV[DI],AH

DECDI

MOVAH,00H

LOOPCZ1

ADDDI,9

INCSI

CMPSI,4002H:

AD转换后的数据存储处是否到头JBECZ0

POPAX

POPCX

POPBX

RET

CZBCDENDP

DISPPROC

PUSHDX

PUSHCX

PUSHBX

PUSHAX

LEABX,TAB;段码表

MOVSI,LEDNW

MOVAH,0C1H

DISP1:

MOVDX,WEI

MOVAL,AH

OUTDX.AL;位输山

MOVDX,DUAN

MOVAL,[SI]

XLAT

OUTDX,AL;段输出

MOVCX,0200H

LOOP$

INCSI

SALAH.1

ORAH,0C0H

CMPAH,0C0H

JNZDISP1

POPAX

POPBX

POPCX

POPDX

RET

DISPENDP

一一AD采样程序一一

ADPROCPROC

PUSHAX

PUSHSI

PUSHDX

MOVDX,[ADPTNW];A/D通道0

CMPDX,3c8H;到第三号炉rr?

JBENEXT

MOV【ADPTNW],3COH;就置数据区7号炉端口

NEXT:

MOVSI,[ADATANW]

CMPSI,4002H

JBENEXT2

MOV[ADATANW),4000H

JMPCHU

NEXI2:

INAL,DX

MOV[SI],AL

ADD[ADPTNW],4

INC[ADATANW]

CMPAL,11H;是否在60和180之间JBEBAOJIN

CMPAL,0DDH

JAEBAOJIN

JMPOK

CMPSI,4000H

JZOK

CMPSI,4001H

JZOK1

CMPSI,4002H

JZOK2

BAOJIN:

CMPSI,4000H

JZBAOJIN1

CMPSI,4001H

JZBAOJIN2

CMPSI,4002H

JZBAOJIN3

JMPCHUQU

BAOJINl:

MOVDX,203H:

报警1MOVAX,0FEH

OUTDX,AL

JMPCHUQU

BAOJIN2:

MOVDX,207H:

报警2MOVAX,0FDH

OUTDX,AL

JMPCHUQU

BAOJIN3:

MOVDXT,20BH;报警3MOVAX,OFCH

OUTDX,AL

JMPCHUQU

OK:

MOVDX,203H;解除报警MOVAX,0FFH

OUTDX,AL

OK1:

MOVDX,207H

OUTDX,AL

OK2:

MOVDX,20BH

OUTDX,AL

CHUQU:

MOVDX,[ADPTNW];启动ADCOUTDX,AL

CHU:

MOVAL,20H

MOVDX,OPORT

OUTDX,AL

POPDX

POPSI

POPAX

IRET

ADPROCENDP

一一定时器中断

TIMERPROC

PUSHAX

PUSHDX

MOVAL,[TIME]

DECAL

MOV[TIME],AL

CMPAL,0;是否到0

JNZEND0

CMP[SWH1],0:

判断是否有按键按下JZENDD

CMP[STWH2],0

JZENDDCMP[SWH3],0

JZENDD

MOVAX,[LEDNW];

CMPAX,400FH;JAEDALE;

ADDAX,6;MOV[LEDNW],AX;

JMPENDD;DALE:

MOV[LEDNW],4003H;改变显示参数ENDD:

MOVDX,ADPORT;到了开A/DOUTDX,AL;

MOV[TIME],150;

END0:

MOVAL,20H

MOVDX,OPORT

OUTDX,AL

POPDX

POPAX

IRET

TIMERENDP

一——开关l的中断———一

SWITCH1PROC

NOTSWHI

CMPSWHI,O

JNZBACK1

MOV[LEDNW],4003H;第1次按T'

BACK1:

MOVAL,20H

MOVDX,OPORT

OUTDX,AL

STI

IRET

SWITCH1ENDP

——一一开关2的中断——

SWITH2PROC

NOTSTWH2

CMPSTWH2,0

JNZBACK2

MOV[LEDNW],4009H;是第1次按下

BACK2:

MOVAL,20H

MOVDX,OPORT

OUTDX,AL

STI

IRET

SWITH2ENDP

一一·一开关3的中断——一一

SWITCH3PROC

NOTSWH3

CMPSWH3,0

JNZBACK3

MOV[LEDNW],400FH;是第1次按下

BACK3:

MOVAL,20H

MOVDX,OPORT

OUTDX,AL

STI

IRET

SWITCH3ENDP

CODEENDS

ENDBEG

 

定时器中断服务子程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1