微机原理项目汇报 - 图文

更新时间:2024-05-12 03:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

机械设备启动的计算机控制技术的实现

班 学 姓 课 程指 导级:09机设2班

号:

名:

名 称:16/32位微机原理

教 师: 史艳国 2012年5月

机械设备的启动是工业生产中一个很常见的现象,而设备的启动往往不是按下按钮说开始就可以

了,很多的大型设备的启动是需要在很多其他设备等条件具备的情况下才可以进行的,比如很多的安全防护是否到位,一些压力值是否正常。如果这些无法保证就启动设备则很容易就造成安全事故,小则损坏设备,大则造成大的经济损失甚至人身伤害伤亡等,其后果不堪设想!因此在启动设备前,我们需要利用一些检测设备对这些需要保证的项进行检测,然后把这些检测结果送到启动设备中,判断是否具备启动条件!而这就需要一个好的启动控制程序,对检测结果进行判断,控制设备的启动。同时若有检测异常项目要能显示出异常项目,并报警,提醒工程人员进行检测!另外,在异常情况下,要能实现设备的停车。本项目就是针对机械设备的启动控制,进行硬件模拟,并实现软件的控制。

前言

目录

1.

项目题目概述及要求 ....................................................................... 错误!未定义书签。 1.1 题目概述 ............................................................................... 错误!未定义书签。 1.2 题目要求 ............................................................................... 错误!未定义书签。 2. 工程背景及解决问题 ....................................................................... 错误!未定义书签。 3. 项目的模拟方案 ............................................................................... 错误!未定义书签。

3.1 启动控制的方案 ................................................................... 错误!未定义书签。 3.2 模拟方案使用的芯片及模块 ............................................... 错误!未定义书签。 3.3 实验接线说明 ....................................................................... 错误!未定义书签。 3.4 实验线路连接图 ................................................................... 错误!未定义书签。 4. 控制程序 ........................................................................................... 错误!未定义书签。

4.1 实验流程图 ........................................................................... 错误!未定义书签。 4.2 启动控制的实验程序代码 ................................................... 错误!未定义书签。 5. 程序调试情况及运行结果分析 ....................................................... 错误!未定义书签。 6. 项目的结论 ....................................................................................... 错误!未定义书签。 感言 ........................................................................................................... 错误!未定义书签。 参考文献 ................................................................................................................................... 33

机械设备启动的计算机控制技术的实现

余凯

(燕山大学 机械工程学院)

摘要:在一种大型机械加工设备的启动时,需要检测气源设备、液压设备、安全阀门和安全装备是否正常。如果四项检测项目均显示正常,则设备正常启动;如果四项检测项目中至少一项不正常,则设备不启动,通过显示屏显示故障所在,并进行警报。利用微机芯片8086,并行接口芯片8255以及显示屏模拟实现上述功能。

关键词:启动控制 显示正异常 汇编语言

1. 项目题目概述及要求

1.1. 项目题目

某大型机械加工设备,启动过程需要检测以下装置:1、给设备供气的气源压力是否正常;2、液压系统的压力是否正常;3、安全门是否关闭;4、安全的装备中的光电传感器工作是否正常。全部正常后气动设备的主电机开始工作。要求用显示器显示各个环节的检测信息,以方便用户查找设备无法正常启动的原因

1.2. 项目要求

能够用检测到的信息控制设备的启动并显示正异常检测项

2. 工程背景及需要解决的问题

随着世界工业水平的发展,工业生产越来越走向自动化、智能化、集成化,各种集成的全自动机械设备随处可见。而机械设备的启动控制则是任何机械设备中一个必经的阶段,则控制程序的优劣关系到生产的效率及安全!很多的大型设备的启动是需要在很多其他设备等条件具备的情况下才可以进行的,比如很多的安全防护是否到位,一些压力值是否正常。如果这些无法保证就启动设备则很容易就造成安全事故,小则损坏设备,大则造成大的经济损失甚至人身伤害伤亡等,其后果不堪设想!因此在启动设备前,我们需要利用一些检测设备对这些需要保证的项进行检测,然后把这些检测结果送到启动设备中,判断是否具备启动条件!这就需要控制程序能够对检测设备输出进行判断,并以此控制机械设备的启动,同时要能显示正异常,能在存在异常项时及时报警,并及时停车。

3. 项目的模拟方案

3.1 启动控制的方案

1用8255作为总的调度,用5个开关分别代表总开关和四个检测项目,用液晶屏和5个LED灯分

别显示出总开关及4个检测项的检测情况!

2若总开关未开启,则灯全不亮!电机不转,蜂鸣器不响。

3总开关开启,检测项正常,则对应的灯亮,液晶屏显示对应项正常,否则对应灯灭,液晶屏显示

对应项异常。全正常则电机启动!

4只要存在检测项不正常,则电机停,蜂鸣器报警!

5循环检测

6用8155及数码管显示日期

3.2 模拟方案使用的芯片及模块

8255芯片、8155芯片 、12864J液晶显示屏 、段数码管 、直流电机、蜂鸣器 、开关、LED灯

3.3实验接线说明

12864J的片选端连接CS1(0F000H); RW连接A0;RS连接A1;CS1/2连接A2;

8255的片选端接CS2(0E000H); PA0--PA4分别连接开关1—5;PC0—PC4分别连接LED灯1—5;同时PC5连接蜂鸣器,PC6接步进电机;

8155的片选端接CS3(0D000H),IO/M接A8,A口接数码管位选B,B口接数码管段选C

液晶显示屏12864J的接线图

8255芯片、LED灯、开关以及蜂鸣器接线图

3.4实验线路连接图

4. 控制程序

4.1 实验流程图

4.2启动控制的实验程序代码

.MODEL TINY WR_COM_AD_L

EQU 0F004H

;写左半屏指令地址

WR_COM_AD_R EQU 0F000H ;写右半屏指令地址 WR_DATA_AD_L EQU 0F006H ;写左半屏数据地址 WR_DATA_AD_R EQU 0F002H ;写右半屏数据地址 RD_BUSY_AD EQU 0F001H ;查忙地址 RD_DATA_AD EQU 0F003H ;读数据地址 X EQU 0B8H ;起始显示行基址

Y EQU 040H

;起始显示列基址

;起始显示行

FirstLine EQU 0C0H .STACK 100 .DATA yu db 5

ledtb db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;数码管换码

;机

yukai1_1 db 10h, 10h,0D0h,0FFh, 90h, 10h, 00h,0FCh

db db db

04h, 04h, 04h,0FEh, 04h, 00h, 00h, 00h 04h, 03h, 00h,0FFh, 80h, 41h, 20h, 1Fh 00h, 00h, 00h, 3Fh, 40h, 40h, 70h, 00h

;械

yukai1_2 db 10h, 10h,0D0h,0FFh, 90h, 18h,0E8h, 08h

db db db

0E8h, 08h,0FFh, 08h, 0Ah, 8Ch, 08h, 00h 04h, 03h, 00h,0FFh, 20h, 11h, 8Fh, 81h 5Fh, 21h, 17h, 38h, 46h, 81h,0E0h, 00h

;设

yukai1_3 db 40h, 40h, 42h,0CCh, 00h, 40h,0A0h, 9Fh

db db db

81h, 81h, 81h, 9Fh,0A0h, 20h, 20h, 00h 00h, 00h, 00h, 7Fh,0A0h, 90h, 40h, 43h 2Ch, 10h, 28h, 26h, 41h,0C0h, 40h, 00h

;计

yukai1_4 db 40h, 40h, 42h,0CCh, 00h, 40h, 40h, 40h

db db db

40h,0FFh, 40h, 40h, 40h, 60h, 40h, 00h 00h, 00h, 00h, 7Fh, 20h, 10h, 08h, 00h 00h,0FFh, 00h, 00h, 00h, 00h, 00h, 00h

;余

yukai2_1 db 80h, 80h, 40h, 20h, 50h, 48h, 44h,0C3h

db db db

44h, 48h, 50h, 20h, 40h,0C0h, 40h, 00h 00h, 40h, 22h, 12h, 1Ah, 42h, 82h, 7Fh 02h, 02h, 0Ah, 13h, 32h, 60h, 00h, 00h

;凯

yukai2_2 db 40h, 5Eh, 50h, 50h, 5Fh, 50h,0F0h, 5Eh

db db db

00h,0FEh, 02h, 02h,0FFh, 02h, 00h, 00h 00h, 7Eh, 42h, 22h, 22h, 12h, 97h, 40h 30h, 0Fh, 00h, 00h, 3Fh, 40h, 70h, 00h db 40h, 20h, 58h, 47h, 54h, 54h, 54h, 54h 54h, 54h,0D4h, 14h, 06h, 04h, 00h, 00h 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h

;气

Yu11_1

db db

db 00h, 00h, 1Fh, 20h, 40h, 80h, 70h, 00h db 10h, 22h, 64h, 0Ch, 80h,0FEh, 02h,0E2h 0A2h,0B2h,0AEh,0A2h,0A2h,0F3h, 22h, 00h 04h, 04h,0FEh, 41h, 30h, 0Fh, 20h, 13h 5Ah, 82h, 7Eh, 02h, 0Ah, 13h, 30h, 00h db 00h, 00h,0FEh, 02h, 82h, 82h, 82h, 82h 0FEh, 82h, 82h, 82h,0C3h, 82h, 00h, 00h 40h, 30h, 0Fh, 40h, 40h, 40h, 40h, 40h 7Fh, 40h, 42h, 44h, 4Ch, 60h, 40h, 00h db 00h, 10h, 10h, 10h, 10h, 10h,0FFh, 10h 10h, 10h, 10h, 10h,0F8h, 10h, 00h, 00h 00h, 80h, 80h, 80h, 60h, 18h, 07h, 00h 20h, 40h, 80h, 40h, 3Fh, 00h, 00h, 00h db 00h, 02h, 02h,0C2h, 02h, 02h, 02h,0FEh 82h, 82h, 82h,0C2h, 83h, 02h, 00h, 00h 40h, 40h, 40h, 7Fh, 40h, 40h, 40h, 7Fh 40h, 40h, 40h, 40h, 40h, 60h, 40h, 00h

db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h

;源

Yu11_2

db db db

;压

Yu11_3

db db db

;力

Yu11_4

db db db

;正

Yu11_5

db db db

;常

Yu11_6

db db db

;气

Yu12_1 db 40h, 20h, 58h, 47h, 54h, 54h, 54h, 54h

db db db

54h, 54h,0D4h, 14h, 06h, 04h, 00h, 00h 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h 00h, 00h, 1Fh, 20h, 40h, 80h, 70h, 00h db 10h, 22h, 64h, 0Ch, 80h,0FEh, 02h,0E2h 0A2h,0B2h,0AEh,0A2h,0A2h,0F3h, 22h, 00h 04h, 04h,0FEh, 41h, 30h, 0Fh, 20h, 13h 5Ah, 82h, 7Eh, 02h, 0Ah, 13h, 30h, 00h db 00h, 00h,0FEh, 02h, 82h, 82h, 82h, 82h 0FEh, 82h, 82h, 82h,0C3h, 82h, 00h, 00h 40h, 30h, 0Fh, 40h, 40h, 40h, 40h, 40h

;源

Yu12_2

db db db

;压

Yu12_3

db db

db 7Fh, 40h, 42h, 44h, 4Ch, 60h, 40h, 00h db 00h, 10h, 10h, 10h, 10h, 10h,0FFh, 10h 10h, 10h, 10h, 10h,0F8h, 10h, 00h, 00h 00h, 80h, 80h, 80h, 60h, 18h, 07h, 00h 20h, 40h, 80h, 40h, 3Fh, 00h, 00h, 00h db 00h, 00h, 7Eh, 92h, 92h, 92h, 92h, 92h 92h, 92h, 92h, 9Fh, 82h,0E0h, 00h, 00h 04h, 04h, 84h, 44h, 3Fh, 04h, 04h, 04h 04h, 04h,0FFh, 04h, 04h, 06h, 04h, 00h db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h db 10h, 22h, 64h, 0Ch, 80h, 04h,0C4h, 34h 05h,0C6h,0BCh, 24h, 24h,0E6h, 04h, 00h 04h, 04h,0FEh, 01h, 02h, 01h,0FFh, 42h 21h, 16h, 08h, 15h, 23h, 60h, 20h, 00h db 00h, 00h,0FEh, 02h, 82h, 82h, 82h, 82h 0FEh, 82h, 82h, 82h,0C3h, 82h, 00h, 00h 40h, 30h, 0Fh, 40h, 40h, 40h, 40h, 40h 7Fh, 40h, 42h, 44h, 4Ch, 60h, 40h, 00h db 00h, 00h,0FEh, 02h, 82h, 82h, 82h, 82h 0FEh, 82h, 82h, 82h,0C3h, 82h, 00h, 00h 40h, 30h, 0Fh, 40h, 40h, 40h, 40h, 40h 7Fh, 40h, 42h, 44h, 4Ch, 60h, 40h, 00h db 00h, 10h, 10h, 10h, 10h, 10h,0FFh, 10h 10h, 10h, 10h, 10h,0F8h, 10h, 00h, 00h 00h, 80h, 80h, 80h, 60h, 18h, 07h, 00h 20h, 40h, 80h, 40h, 3Fh, 00h, 00h, 00h db 00h, 02h, 02h,0C2h, 02h, 02h, 02h,0FEh 82h, 82h, 82h,0C2h, 83h, 02h, 00h, 00h 40h, 40h, 40h, 7Fh, 40h, 40h, 40h, 7Fh

;力

Yu12_4

db db db

;异

Yu12_5

db db db

;常

Yu12_6

db db db

;液

Yu21_1

db db db

;压

Yu21_2

db db db

;压

Yu21_3

db db db

;力

Yu21_4

db db db

;正

Yu21_5

db db

db 40h, 40h, 40h, 40h, 40h, 60h, 40h, 00h

db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h db 10h, 22h, 64h, 0Ch, 80h, 04h,0C4h, 34h 05h,0C6h,0BCh, 24h, 24h,0E6h, 04h, 00h 04h, 04h,0FEh, 01h, 02h, 01h,0FFh, 42h 21h, 16h, 08h, 15h, 23h, 60h, 20h, 00h db 00h, 00h,0FEh, 02h, 82h, 82h, 82h, 82h 0FEh, 82h, 82h, 82h,0C3h, 82h, 00h, 00h 40h, 30h, 0Fh, 40h, 40h, 40h, 40h, 40h 7Fh, 40h, 42h, 44h, 4Ch, 60h, 40h, 00h db 00h, 00h,0FEh, 02h, 82h, 82h, 82h, 82h 0FEh, 82h, 82h, 82h,0C3h, 82h, 00h, 00h 40h, 30h, 0Fh, 40h, 40h, 40h, 40h, 40h 7Fh, 40h, 42h, 44h, 4Ch, 60h, 40h, 00h db 00h, 10h, 10h, 10h, 10h, 10h,0FFh, 10h 10h, 10h, 10h, 10h,0F8h, 10h, 00h, 00h 00h, 80h, 80h, 80h, 60h, 18h, 07h, 00h 20h, 40h, 80h, 40h, 3Fh, 00h, 00h, 00h db 00h, 00h, 7Eh, 92h, 92h, 92h, 92h, 92h 92h, 92h, 92h, 9Fh, 82h,0E0h, 00h, 00h 04h, 04h, 84h, 44h, 3Fh, 04h, 04h, 04h 04h, 04h,0FFh, 04h, 04h, 06h, 04h, 00h

db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h

;常

Yu21_6

db db db

;液

Yu22_1

db db db

;压

Yu22_2

db db db

;压

Yu22_3

db db db

;力

Yu22_4

db db db

;异

Yu22_5

db db db

;常

Yu22_6

db db db

;安

Yu31_1 db 90h, 8Ch, 84h, 84h, 84h, 84h,0F5h, 86h

db db

84h, 84h, 84h, 84h, 84h,0D4h, 8Ch, 00h 00h, 00h, 80h, 84h, 46h, 49h, 28h, 10h

db 10h, 28h, 47h,0C0h, 00h, 00h, 00h, 00h db 80h, 80h, 40h, 20h, 50h, 48h, 44h,0C3h 44h, 68h, 50h, 20h, 40h,0C0h, 40h, 00h 00h, 40h, 40h, 40h, 44h, 44h, 44h, 7Fh 44h, 46h, 44h, 40h, 60h, 40h, 00h, 00h db 00h,0F8h, 01h, 86h,0E0h, 9Ah, 82h,0FAh 42h, 4Ah, 52h, 42h, 02h,0FFh, 02h, 00h 00h,0FFh, 01h, 00h, 7Fh, 00h, 10h, 09h 06h, 1Ah, 21h, 30h, 80h,0FFh, 00h, 00h db 00h,0FCh, 01h, 02h, 06h, 00h, 02h, 02h 02h, 02h, 02h, 02h, 02h,0FFh, 02h, 00h 00h,0FFh, 00h, 00h, 00h, 00h, 00h, 00h 00h, 00h, 00h, 40h, 80h, 7Fh, 00h, 00h db 00h, 02h, 02h,0C2h, 02h, 02h, 02h,0FEh 82h, 82h, 82h,0C2h, 83h, 02h, 00h, 00h 40h, 40h, 40h, 7Fh, 40h, 40h, 40h, 7Fh 40h, 40h, 40h, 40h, 40h, 60h, 40h, 00h

db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h

;全

Yu31_2

db db db

;阀

Yu31_3

db db db

;门

Yu31_4

db db db

;正

Yu31_5

db db db

;常

Yu31_6

db db db

;安

Yu32_1 db 90h, 8Ch, 84h, 84h, 84h, 84h,0F5h, 86h

db db db

84h, 84h, 84h, 84h, 84h,0D4h, 8Ch, 00h 00h, 00h, 80h, 84h, 46h, 49h, 28h, 10h 10h, 28h, 47h,0C0h, 00h, 00h, 00h, 00h db 80h, 80h, 40h, 20h, 50h, 48h, 44h,0C3h 44h, 68h, 50h, 20h, 40h,0C0h, 40h, 00h 00h, 40h, 40h, 40h, 44h, 44h, 44h, 7Fh 44h, 46h, 44h, 40h, 60h, 40h, 00h, 00h db 00h,0F8h, 01h, 86h,0E0h, 9Ah, 82h,0FAh 42h, 4Ah, 52h, 42h, 02h,0FFh, 02h, 00h 00h,0FFh, 01h, 00h, 7Fh, 00h, 10h, 09h

;全

Yu32_2

db db db

;阀

Yu32_3

db db

db 06h, 1Ah, 21h, 30h, 80h,0FFh, 00h, 00h db 00h,0FCh, 01h, 02h, 06h, 00h, 02h, 02h 02h, 02h, 02h, 02h, 02h,0FFh, 02h, 00h 00h,0FFh, 00h, 00h, 00h, 00h, 00h, 00h 00h, 00h, 00h, 40h, 80h, 7Fh, 00h, 00h db 00h, 00h, 7Eh, 92h, 92h, 92h, 92h, 92h 92h, 92h, 92h, 9Fh, 82h,0E0h, 00h, 00h 04h, 04h, 84h, 44h, 3Fh, 04h, 04h, 04h 04h, 04h,0FFh, 04h, 04h, 06h, 04h, 00h db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h

;门

Yu32_4

db db db

;异

Yu32_5

db db db

;常

Yu32_6

db db db

;机

Yu41_1 db 10h, 10h,0D0h,0FFh, 90h, 10h, 00h,0FCh

db db db

04h, 04h, 04h,0FEh, 04h, 00h, 00h, 00h 04h, 03h, 00h,0FFh, 80h, 41h, 20h, 1Fh 00h, 00h, 00h, 3Fh, 40h, 40h, 70h, 00h db 10h, 10h,0D0h,0FFh, 90h, 18h,0E8h, 08h 0E8h, 08h,0FFh, 08h, 0Ah, 8Ch, 08h, 00h 04h, 03h, 00h,0FFh, 20h, 11h, 8Fh, 81h 5Fh, 21h, 17h, 38h, 46h, 81h,0E0h, 00h db 00h, 42h, 24h, 10h,0FFh, 00h, 44h,0A4h 24h, 3Fh, 24h, 34h, 26h, 84h, 00h, 00h 01h, 21h, 21h, 11h, 09h,0FDh, 43h, 21h 0Dh, 11h, 29h, 25h, 43h,0C1h, 41h, 00h db 00h, 00h, 90h, 88h, 44h, 4Bh, 32h, 12h 32h, 4Ah, 46h, 82h, 80h, 80h, 80h, 00h 01h, 01h, 00h,0FFh, 49h, 49h, 49h, 7Fh 49h, 49h, 49h,0FFh, 00h, 01h, 00h, 00h db 00h, 02h, 02h,0C2h, 02h, 02h, 02h,0FEh 82h, 82h, 82h,0C2h, 83h, 02h, 00h, 00h 40h, 40h, 40h, 7Fh, 40h, 40h, 40h, 7Fh

;械

Yu41_2

db db db

;装

Yu41_3

db db db

;备

Yu41_4

db db db

;正

Yu41_5

db db

db 40h, 40h, 40h, 40h, 40h, 60h, 40h, 00h

db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h

;常

Yu41_6

db db db

;机

Yu42_1 db 10h, 10h,0D0h,0FFh, 90h, 10h, 00h,0FCh

db db db

04h, 04h, 04h,0FEh, 04h, 00h, 00h, 00h 04h, 03h, 00h,0FFh, 80h, 41h, 20h, 1Fh 00h, 00h, 00h, 3Fh, 40h, 40h, 70h, 00h db 10h, 10h,0D0h,0FFh, 90h, 18h,0E8h, 08h 0E8h, 08h,0FFh, 08h, 0Ah, 8Ch, 08h, 00h 04h, 03h, 00h,0FFh, 20h, 11h, 8Fh, 81h 5Fh, 21h, 17h, 38h, 46h, 81h,0E0h, 00h db 00h, 42h, 24h, 10h,0FFh, 00h, 44h,0A4h 24h, 3Fh, 24h, 34h, 26h, 84h, 00h, 00h 01h, 21h, 21h, 11h, 09h,0FDh, 43h, 21h 0Dh, 11h, 29h, 25h, 43h,0C1h, 41h, 00h db 00h, 00h, 90h, 88h, 44h, 4Bh, 32h, 12h 32h, 4Ah, 46h, 82h, 80h, 80h, 80h, 00h 01h, 01h, 00h,0FFh, 49h, 49h, 49h, 7Fh 49h, 49h, 49h,0FFh, 00h, 01h, 00h, 00h db 00h, 00h, 7Eh, 92h, 92h, 92h, 92h, 92h 92h, 92h, 92h, 9Fh, 82h,0E0h, 00h, 00h 04h, 04h, 84h, 44h, 3Fh, 04h, 04h, 04h 04h, 04h,0FFh, 04h, 04h, 06h, 04h, 00h db 20h, 18h, 08h, 0Ah,0ECh,0A8h,0A8h,0AFh 0A8h,0A8h,0ECh, 0Ah, 08h, 28h, 18h, 00h 00h, 00h, 00h, 3Eh, 02h, 02h, 02h,0FFh 02h, 22h, 42h, 3Fh, 02h, 00h, 00h, 00h

;械

Yu42_2

db db db

;装

Yu42_3

db db db

;备

Yu42_4

db db db

;异

Yu42_5

db db db

;常

Yu42_6

db db db

.code

start:mov ax,@data mov dx,ax NOP

;显示专业姓名,闪烁五次

chushi:call lcd_init call delaytime call yukai1 call delaytime call yukai2 call delaytime dec yu jnz chushi

;写入8255方式控制字,A口输入,C口输出 mov dx,0e003h

mov al,10010000b

out dx,al

;进行初始化,液晶屏清屏,电机停 call lcd_init

call delaytime mov al,0fdh mov dx,0e002h out dx,al call delaytime

begin:call riqi ;显示日期 call clear

call lcd_init ;清屏

mov dx,0e000h

in al,dx ;由开关输入A口的状态

test al,01h

jz ting ;判断总开关是否开启,未开启则循环判断

jmp start1

ting:mov al,10111111b

mov dx,0e002h out dx,al

jmp begin ;总开关未开启,使电机停,灯全灭! start1:mov al,00000000b mov dx,0e003h

out dx,al ;使第一个灯亮

j11:mov dx,0e000h

in al,dx test al,01h

jz ting ;读入A口状态,再次判断总开关是否开启,未开启则跳到不工作的程

test al,02h

jz j12 ;判断气源压力是否正常 call yu11 ;显示“气源压力正常” call delaytime mov dx,0e003h mov al,00000010b

out dx,al ;使第二个灯亮 jmp j21

j12:call yu12 ;显示“气源压力异常” call delaytime mov dx,0e003h mov al,00000011b

out dx,al ;使第二个灯灭 j21:mov dx,0e000h in al,dx test al,01h

jz ting ;读入A口状态,再次判断总开关是否开启,未开启则跳到不工作的程

test al,04h

jz j22 ;判断液压压力是否正常 call yu21 ;显示液压压力正常 call delaytime mov dx,0e003h mov al,00000100b

out dx,al ;使第三个灯亮 jmp j31

j22:call yu22 ;显示液压压力正常 call delaytime mov dx,0e003h mov al,00000101b

out dx,al ;使第三个灯灭 j31:mov dx,0e000h in al,dx test al,01h

jz j61 ;读入A口状态,再次判断总开关是否开启,未开启则跳到不工作的

程序

test al,08h

jz j32 ;判断安全门是否关闭 call yu31 ;显示安全阀门正常 call delaytime

mov dx,0e003h mov al,00000110b

out dx,al ;使第四个灯亮 jmp j41

j32:call yu32 ;显示安全阀门异常 call delaytime mov dx,0e003h mov al,00000111b

out dx,al ;使第四个灯灭 j41:mov dx,0e000h in al,dx test al,01h

jz j61 ;读入A口状态,再次判断总开关是否开启,未开启则跳到不工作的

程序

test al,10h

jz j42 ;判断机械装备是否正常 call yu41 ;显示机械装备正常 call delaytime mov dx,0e003h mov al,00001000b

out dx,al ;使第五个灯亮 jmp j51

j42:call yu42 ;显示机械装备异常 call delaytime mov dx,0e003h mov al,00001001b

out dx,al ;使第五个灯灭 j51:mov dx,0e000h in al,dx test al,01h

jz j61 ;读入A口状态,再次判断总开关是否开启,未开启则跳到不工作的

程序

and al,00011110b cmp al,00011110b

jnz j62 ;判断所有检测项是否均正常 mov dx,0e003h mov al,00001101b

out dx,al ;所有检测项均正常后,电机启动 mov dx,0e003h mov al,00001011b

out dx,al ;蜂鸣器不响 jmp begin j61:mov al,10111111b mov dx,0e002h

out dx,al ;总开关未开启,使灯全灭,电机不转,蜂鸣器不响 jmp begin j62:mov al,00001010b mov dx,0e003h

out dx,al ;存在检测项不正常,使蜂鸣器报警 mov al,00001100b mov dx,0e003h

out dx,al ;电机停 jmp begin mov ax,4c00h int 21h

;显示日期的子程序

riqi proc push ax push cx push dx push bx

;8155设置,A端口输出,B端口输出

mov dx,0D100h mov al,03h out dx,al mov cx,02ffh shuma:push cx

mov bx,offset LEDtb mov al,2 xlat

mov dx,0d102h out dx,al mov al,01111111b mov dx,0d101h out dx,al call delaytime4 mov al,0 xlat

mov dx,0d102h out dx,al

mov al,10111111b mov dx,0d101h out dx,al call delaytime4 mov al,1 xlat

mov dx,0d102h out dx,al mov al,11011111b mov dx,0d101h out dx,al call delaytime4 mov al,2 xlat

mov dx,0d102h out dx,al mov al,11101111b mov dx,0d101h out dx,al call delaytime4 mov al,0 xlat

mov dx,0d102h out dx,al mov al,11110111b mov dx,0d101h out dx,al call delaytime4 jmp shuma5 shuma1: jmp shuma pop cx dec cx push cx shuma5: mov al,5 xlat

mov dx,0d102h out dx,al mov al,11111011b

mov dx,0d101h out dx,al call delaytime4 mov al,0 xlat

mov dx,0d102h out dx,al mov al,11111101b mov dx,0d101h out dx,al call delaytime4 mov al,6 xlat

mov dx,0d102h out dx,al mov al,11111110b mov dx,0d101h out dx,al call delaytime4 call clear pop cx loop shuma1 pop bx pop dx pop cx pop ax ret riqi endp

;清除数码管位选子程序

clear proc push ax push dx mov dx,0d101h mov al,11111111b out dx,al pop dx pop ax ret clear endp

;延时程序

delaytime4 proc push cx mov cx,20 loop $ pop cx ret delaytime4 endp

;延时程序

DelayTime PROC

MOV LOOP LOOP RET

CX,1000

$ $ NEAR

DelayTime ENDP

;显示“机械设计”

yukai1 proc

lea si,yukai1_1 mov al,2 mov ah,32 call WordDISL lea si,yukai1_2 mov al,2 mov ah,48 call WordDISL lea si,yukai1_3 mov al,2 mov ah,0 call WordDISR lea si,yukai1_4 mov al,2 mov ah,16 call WordDISR ret yukai1 endp

;显示“余凯”

yukai2 proc

lea si,yukai2_1 mov al,4 mov ah,48

call WordDISL lea si,yukai2_2 mov al,4 mov ah,0 call WordDISR ret yukai2 endp

;显示“气源压力正常”子程序

yu11 proc lea si,yu11_1 mov al,0 mov ah,16 call WordDISL lea si,yu11_2 mov al,0 mov ah,32 call WordDISL lea si,yu11_3 mov al,0 mov ah,48 call WordDISL lea si,yu11_4 mov al,0 mov ah,0 call WordDISR lea si,yu11_5 mov al,0 mov ah,16 call WordDISR lea si,yu11_6 mov al,0 mov ah,32 call WordDISR ret yu11 endp

;显示“气源压力异常”子程序

yu12 proc lea si,yu12_1 mov al,0 mov ah,16

call WordDISL lea si,yu12_2 mov al,0 mov ah,32 call WordDISL lea si,yu12_3 mov al,0 mov ah,48 call WordDISL lea si,yu12_4 mov al,0 mov ah,0 call WordDISR lea si,yu12_5 mov al,0 mov ah,16 call WordDISR lea si,yu12_6 mov al,0 mov ah,32 call WordDISR ret yu12 endp

;显示“液压压力正常”子程序

yu21 proc lea si,yu21_1 mov al,2 mov ah,16 call WordDISL lea si,yu21_2 mov al,2 mov ah,32 call WordDISL lea si,yu21_3 mov al,2 mov ah,48 call WordDISL lea si,yu21_4 mov al,2 mov ah,0

call WordDISR lea si,yu21_5 mov al,2 mov ah,16 call WordDISR lea si,yu21_6 mov al,2 mov ah,32 call WordDISR ret yu21 endp

;显示“液压压力异常”子程序

yu22 proc lea si,yu22_1 mov al,2 mov ah,16 call WordDISL lea si,yu22_2 mov al,2 mov ah,32 call WordDISL lea si,yu22_3 mov al,2 mov ah,48 call WordDISL lea si,yu22_4 mov al,2 mov ah,0 call WordDISR lea si,yu22_5 mov al,2 mov ah,16 call WordDISR lea si,yu22_6 mov al,2 mov ah,32 call WordDISR ret yu22 endp

;显示“安全阀门正常”子程序

yu31 proc lea si,yu31_1 mov al,4 mov ah,16 call WordDISL lea si,yu31_2 mov al,4 mov ah,32 call WordDISL lea si,yu31_3 mov al,4 mov ah,48 call WordDISL lea si,yu31_4 mov al,4 mov ah,0 call WordDISR lea si,yu31_5 mov al,4 mov ah,16 call WordDISR lea si,yu31_6 mov al,4 mov ah,32 call WordDISR ret yu31 endp

;显示“安全阀门异常”子程序

yu32 proc lea si,yu32_1 mov al,4 mov ah,16 call WordDISL lea si,yu32_2 mov al,4 mov ah,32 call WordDISL lea si,yu32_3 mov al,4 mov ah,48

call WordDISL lea si,yu32_4 mov al,4 mov ah,0 call WordDISR lea si,yu32_5 mov al,4 mov ah,16 call WordDISR lea si,yu32_6 mov al,4 mov ah,32 call WordDISR ret yu32 endp

;显示“机械装备正常”子程序

yu41 proc lea si,yu41_1 mov al,6 mov ah,16 call WordDISL lea si,yu41_2 mov al,6 mov ah,32 call WordDISL lea si,yu41_3 mov al,6 mov ah,48 call WordDISL lea si,yu41_4 mov al,6 mov ah,0 call WordDISR lea si,yu41_5 mov al,6 mov ah,16 call WordDISR lea si,yu41_6 mov al,6 mov ah,32

call WordDISR ret yu41 endp

;显示“机械装备异常”子程序

yu42 proc lea si,yu42_1 mov al,6 mov ah,16 call WordDISL lea si,yu42_2 mov al,6 mov ah,32 call WordDISL lea si,yu42_3 mov al,6 mov ah,48 call WordDISL lea si,yu42_4 mov al,6 mov ah,0 call WordDISR lea si,yu42_5 mov al,6 mov ah,16 call WordDISR lea si,yu42_6 mov al,6 mov ah,32 call WordDISR ret yu42 endp

;液晶初始化

LCD_INIT PROC NEAR

MOV AL,3EH

CALL WRComL MOV AL,FirstLine CALL WRComL MOV AL,3EH

CALL WRComR

MOV

AL,FirstLine

;初始化左半屏,关显示

;写指令子程序 ;设置起始显示行,第0行;初始化右半屏,关显示

;写指令子程序 ;设置起始显示行,第0行

CALL CALL MOV CALL MOV CALL RET

WRComR

LCDClear ;清屏 AL,3FH AL,3FH

;开显示 ;开显示

WRComL WRComR

LCD_INIT ENDP

;清屏

LCDClear PROC

NEAR

;清左半屏

MOV AL,0 ;起始行,第0行 MOV AH, 0 ;起始列,第0列

MOV CALL CALL LOOP

CX,64

LCDClearL1:PUSH AX

SETXYL ;设置起始显示行列地址

AL,0

WRDATAL LCDClearL2

LCDClearL2:MOV

POP AX INC AX

CMP AL,8 JNZ LCDClearL1 MOV MOV MOV CALL CALL LOOP

;清右半屏

AL,0 ;起始行,第0行 AH,0 ;起始列,第0列 PUSH CX,64

AX

LCDClearR1:

SETXYR ;设置起始显示行列地址 XOR AL,AL WRDATAR LCDClearR2

LCDClearR2:

POP AX INC AL CMP AL,8;共8行 JNZ LCDClearR1 RET

LCDClear ENDP

;显示字体,显示一个数据要占用X行两行位置

;左半屏显示一个字节/字:AL-起始显示行序数X(0-7);AH-起始显示列序数

Y(0-63) ;SI-显示字数据首地址 ByteDisL PROC

MOV CALL RET

NEAR

CX,8 ;显示8个字节数据,用于显示一个英文/号 DispL

NEAR

ByteDisL ENDP WordDisL PROC

MOV CALL RET

CX,16 ;显示16字节数据,用于显示一个汉字 DispL

NEAR

WordDisL ENDP DispL

PROC PUSH PUSH CALL CALL

AX CX

SETXYL ;设置起始显示行列地址 DisplayL ;显示上半行数据

POP CX POP AX INC AL CALL CALL RET

SETXYL ;设置起始显示行列地址 DisplayL ;显示下半行数据

DispL ENDP

;右半屏显示一个字节/字:AL-起始显示行序数X(0-7);AH-起始显示列序数Y(0-63) ;SI-显示字数据首地址 ByteDisR PROC ENAR

MOV CALL RET

CX,8 ;显示8个字节数据,用于显示一个英文/符号 DispR

NEAR

ByteDisR ENDP WordDisR PROC

MOV CALL RET

CX,16 ;显示16字节数据,用于显示一个汉字 DispR

NEAR

WordDisR ENDP DispR

PROC PUSH PUSH CALL CALL

AX CX

SETXYR ;设置起始显示行列地址 DisplayR ;显示上半行数据

POP CX POP AX INC AL CALL CALL RET

SETXYR ;设置起始显示行列地址 DisplayR ;显示下半行数据

DispR ENDP

;显示图形

;显示左半屏一行图形,AL-X起始行序数(0-7),AH-Y起始列地址序数(0-63)

LineDisL PROC

MOV CALL CALL RET

NEAR

CX,64

SETXYL ;设置起始显示行列 DisplayL ;显示数据

LineDisL ENDP LineDisR PROC

MOV CALL CALL RET

;显示右半屏一行图形,AL-X起始行地址序数(0-7),AH-Y起始列地址序数(0-63)

NEAR

CX,64

SETXYR ;设置起始显示行列 DisplayR ;显示数据

LineDisR ENDP

;基本控制

;显示左半屏数据,R7-显示数据个数

DisplayL PROC

LODSB CALL LOOP RET

NEAR

WRDataL ;写左半屏数据 DisplayL

DisplayL ENDP DisplayR PROC

LODSB CALL LOOP RET

NEAR

;显示右半屏数据,R7-显示数据个数

WRDataR ;写左半屏数据 DisplayR

DisplayR ENDP SETXYL PROC

;设置左半屏起始显示行列地址,AL-X起始行序数(0-7),AH-Y起始列序数(0-63)

NEAR

OR AL,X ;行地址=行序数+行基址

CALL MOV CALL RET

WRComL AL,AH

OR AL,Y ;列地址=列序数+列基址

WRComL

SETXYL ENDP SETXYR PROC

CALL MOV CALL RET

;设置右半屏起始显示行列地址,AL-X起始行序数(0-7),AH-Y起始列序数(0-63)

NEAR

OR AL,X ;行地址=行序数+行基址

WRComR AL,AH

OR AL,Y ;列地址=列序数+列基址

WRComR

SETXYR ENDP WRComL PROC

MOV OUT DX,AL IN

AL,DX

;写左半屏控制指令,A-写入指令

NEAR

DX,RD_BUSY_AD

;检查液晶显示是否处于忙状态

DX,WR_COM_AD_L

WRComL1:MOV

TEST RET

AL,80H

JNZ WRComL1

WRComL ENDP WRComR

MOV

NEAR

;写右半屏控制指令,A-写入指令

PROC

DX,RD_BUSY_AD

;检查液晶显示是否处于忙状态

DX,WR_COM_AD_R

OUT DX,AL IN

AL,DX

WRComR1:MOV

TEST RET

AL,80H

JNZ WRComR1

WRComR ENDP WRDataL PROC

MOV OUT DX,AL

;写左半屏数据,A-写入数据

NEAR

DX,WR_DATA_AD_L

WRDataL1:MOV DX,RD_BUSY_AD

IN AL,DX

;检查液晶显示是否处于忙状态

TEST RET

AL,80H

JNZ WRDataL1

WRDataL ENDP WRDataR PROC

MOV OUT DX,AL IN

AL,DX

;写右半屏数据,A-写入数据

NEAR

DX,WR_DATA_AD_R MOV

WRDataR1:

TEST RET

DX,RD_BUSY_AD

AL,80H ;检查液晶显示是否处于忙状态

JNZ WRDataR1

WRDataR ENDP

END START

5. 程序调试情况及运行结果分析

在程序调试过程中,遇到如下的几个问题:

1.在调试过程中,多次出现指针超出范围的问题。

解决:对各个子程序进行检查,先是检查了PUSH、POP语句是否规范,发现没有问题,后来发现在子程序结尾ret语句丢失,添加后运行正常。 2.在调试过程中出现range out的现象

解决:问题在于有条件跳转语句只能在短范围内跳转,不能跳转的范围太大,后来通过在跳转的范围中添加了一些中转站使问题得到解决。 3.在数码管显示,数码管始终无法显示

解决:起初以为问题出在实验箱,换了很多实验箱后问题仍然存在。最后发现是8155方式控制字的问题,其方式控制字与8255不同。

6. 项目的结论

项目的问题最终得到全部解决,通过改变输入,即利用开关控制输入检测项的正异常,程序能够判断检测项的正异常,并可正确显示出正异常项目,直流电机及蜂鸣器均能按照设想工作,数码管正常显示日期。

感言

通过这次项目,最大的感受就是累并快乐着,刚开始做的时候基本是一头雾水,首先对硬件根本不了解,对用软件控制硬件更是无从谈起!因为之前的微机原理实验时,课上的知识还没有学,所以实验本来要达到的熟悉硬件及了解软硬件的结合的目的没有达到!如是,项目开始的时候首先还是先做了下

实验,参照别人的程序,去了解如何用程序控制硬件!但书上对于硬件这一块的介绍还是偏少,软硬件的结合还是在调试过程中慢慢体会到的!之后开始构思整个项目,针对每一块功能进行设计,分块设计程序,分块进行调试。这一过程中,自学了8155,数码管,液晶屏!调试的过程很艰辛,因为程序比较大,加之很多自学的东西也不是特别了解,以及实验箱本身存在的问题,确实花了不少心血,跟着其他班去了很多次机房!做项目的过程中,老师对自己帮助很大,很多东西都是与老师和同学讨论出来的,团队合作能力得到锻炼。同时,查了很多资料,自学的能力也得到提高。这次项目我注意运用了这样一个科学的项目步骤“项目的优化与延伸,可行性可靠性分析,项目的执行,项目的评估”,深有体会,在答辩的时候也跟大家分享了一下!总之,花了不少时间,也学到了不少东西,成果还是不错的。

参考文献

[1] 钱晓捷. 《16/32位微机原理、汇编语言及接口技术》. 第二版,北京:机械工业出版社,2011

年10月.

本文来源:https://www.bwwdw.com/article/lt6g.html

Top