微机原理课程设计实验报告

时间:2024.4.7

河北科技大学

课程设计报告

学生姓名:       学 号:            

专业班级:                          

课程名称:                          

学年学期:                         

指导教师:                          

年  月

课程设计成绩评定表


目 录

一、课程设计的目的……………………………………………………1

二、设计题目……………………………………………………………1

三、设计内容要求………………………………………………………2

四、设计成员及分工……………………………………………………2

五、课程设计的主要步骤………………………………………………2

六、课程设计原理及方案………………………………………………3

七、实现方法……………………………………………………………3

八、实施结果……………………………………………………………8

九、总结…………………………………………………………………8

十、体会感受……………………………………………………………8

一、  课程设计的目的

课程设计是以自己动手动脑,亲手设计与调试的。它将基本技能训练、基本工艺知识和创新启蒙有机结合,培养我们的实践和创新能力。课程设计的意义,不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力。作为信息时代的大学生,基本的动手能力是一切工作和创造的基础和必要条件。

课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。

《微机原理及应用》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。

通过课程设计实践,不仅要培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能以图纸和说明书等表达设计思想和结果的能力。培养学生事实求是和严肃认真的工作态度。

通过设计过程,要求学生熟悉和掌握微机系统的软件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的系统方案论证设计、编程、软件调试、查阅资料、编写说明书等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练的熟练掌握微机系统的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的软件调试方法和步骤,熟悉微机系统的软件开发工具的使用方法。

二、  设计题目

字符串动画显示

三、  设计内容要求

1、菜单

内容包括:①输入字符串;②字符串动画显示;③退出。

2、输入字符串

选择该项后,可以输入一个字符串。该字符串即为动画显示时所显示的字符串。

3、字符串动画显示

所显示字符串在一矩形框内从无到有,一半从左另一半从右向中间移动,当两半相遇时停止移动,当按下R键后重复从两边到中间移动的动作,直到按下Q键,停止字符串动画显示返回到主菜单。

4、在主菜单中选择退出项,则结束程序返回DOS。

四、  设计成员及分工

我主要负责程序的生成和初步调试

五、  程设计的主要步骤

课程设计可以分为硬件设计和软件设计两个部分,其设计过程可以归纳为以下所述的四个步骤:

1.总体设计

本阶段的任务是通过调查研究,查阅资料来初步确定系统结构的总体方案,其中主要涉及到硬件和软件的功能划分。

应用系统中硬件和软件具有一定的互换性,即某些功能既可以用硬件实现也可以用软件实现。一般说来,用硬件实现的优点是可以提高系统的工作速度,但会增加电路的复杂性和硬件成本;而用软件代替某些硬件的功能可以使电路简化,便于修改设计,降低硬件成本,但软件工作量增大。

总体设计时,必须在硬件和软件之间权衡,分工明确,然后分头开始设计

2.硬件设计过程

利用实验箱的硬件资源,结合课程设计题目,设计硬件原理图,搭建硬件电路。

3.软件设计过程

(1)采用模块化程序结构设计软件,可将整个软件分成若干功能模块。

(2)画出程序流程图。

(3)根据流程图,编写源程序。

(4)上机调试程序

4.软、硬件联调

六、  课程设计原理及方案


主程序流程图

七、  实现方法

CODE    SEGMENT

ASSUME   CS:CODE,DS:CODE

START: MOV   AX,CODE

MOV   DS,AX

MOV AX,0B800H

MOV   ES,AX

CLD

AGAIN: MOV  AX,3

INT   10H

LEA DX,MENU

MOV AH,9

INT 21H

INPUT:

MOV AH,0

INT 16H

CMP AL,'1'

JNZ CP2

CALL SUB01

JMP INPUT

CP2:CMP AL,'2'

JNZ CP3

CALL SUB02

JMP AGAIN

CP3:CMP AL,'3'

JNZ INPUT

LEA DX,MESG

MOV AH,9

INT 21H

MOV AH,1

INT 21H

MOV   AH,4CH

INT   21H

DELAY   PROC   

PUSH     CX

PUSH     DX

MOV      DX,1000

D1:MOV   CX,0FFFFH

    LOOP $

DEC      DX

JNZ      D1

POP      DX

POP      CX

RET

DELAY   ENDP

SUB01:

MOV AX,0E0DH

INT 10H

MOV AL,0AH

INT 10H

LEA DX,STR

MOV AH,0AH

INT 21H

MOV AX,0E0AH

INT 10H

RET

SUB02:

CMP STR+1,2

JNB Y2

JMP QUIT

Y2:CALL LINE

@Y2:

XOR AX,AX

MOV CNT1,AX

MOV CNT5,AX

MOV DL,60-2

MOV AL,STR+1

SUB DL,AL

MOV DH,0

MOV CNT3,DX

MOV BL,AL

INC AL

SHR AL,1

CBW

MOV CNT2,AX

SUB BL,AL

MOV BH,0

MOV CNT4,BX

Y3:

MOV BP,ES

PUSH DS

POP ES

MOV DI,1000H

MOV CX,CNT1

JCXZ U1

MOV AL,20H

REP STOSB

U1:LEA SI,BUF

MOV CX,CNT2

REP MOVSB

MOV CX,CNT3

JCXZ U2

MOV AL,20H

REP STOSB

U2:MOV CX,CNT4

REP MOVSB

MOV CX,CNT5

JCXZ U3

MOV AL,20H

REP STOSB

U3:

SHOW:

MOV ES,BP

MOV AH,0AH

MOV SI,1000H

MOV DI,LEFT

MOV CX,60-2

PPP:

LODSB

STOSW

LOOP PPP

CALL DELAY

CMP CNT3,0

JZ @INPUT

INC CNT1

INC CNT5

DEC CNT3

CMP CNT3,0

JZ KK2

DEC CNT3

KK2: JMP Y3

@INPUT:

MOV AH,0

INT 16H

CMP AH,10H

JZ SSS

CMP AH,13H

JNZ @INPUT

CMP CNT3,0

JNZ @REP

JMP @Y2

@REP:JMP Y3

SSS:

MOV STR+1,0

QUIT:

LEA SI,CNT1

XOR AX,AX

MOV CX,5

KK3:MOV [SI],AX

INC SI

INC SI

LOOP KK3

XOR DI,DI

MOV CX,80*25

MOV AX,720H

REP STOSW

RET

LINE:

MOV DI,(18*80+10)*2

MOV AL,201

MOV AH,0EH

STOSW

MOV CX,60-2

MOV AL,205

REP STOSW

MOV AL,187

STOSW

ADD DI,20*2

MOV AL,186

STOSW

MOV LEFT,DI

MOV CX,60-2

MOV AL,20H

REP STOSW

MOV RIGHT,DI

MOV AL,186

STOSW

ADD DI,20*2

MOV AL,200

STOSW

MOV CX,60-2

MOV AL,205

REP STOSW

MOV AL,188

STOSW

RET

MENU   DB   5   DUP(0AH)

DB   31 DUP(' '),'MAIN MENU',0DH,0AH

DB   25 DUP(' '),201,21 DUP(205),187,0DH,0AH

DB   25 DUP(' '),186,' 1.INPUT A STRING ...',186,0DH,0AH

DB   25 DUP(' '),186,' 2.DISPLAY MODEL ... ',186,0DH,0AH

DB   25 DUP(' '),186,' 3.RETURN TO DOS ... ',186,0DH,0AH

DB   25 DUP(' '),200,21 DUP(205),188,0DH,0AH

DB   28 DUP(' '),'CHOICE(1,2,3):$'

MESG DB 0DH,0AH,0DH,0AH,9,'PRESS ANY KEY TO EXIT ...$'

CNT1 DW 0

CNT2 DW 0

CNT3 DW 0

CNT4 DW 0

CNT5 DW 0

NUM DW 2

LEFT DW 0

RIGHT DW 0

STR DB 21

DB 0

BUF DB 0DH,20 DUP(0)

CODE    ENDS

END    START

八、  实施结果

所显示字符串在一矩形框内从无到有,一半从左另一半从右向中间移动,当两半相遇时停止移动,当按下R键后重复从两边到中间移动的动作,直到按下Q键,停止字符串动画显示返回到主菜单。

九、  总结

总的来说,在整个设计的过程中,对文件的知识有了相当程度的了解掌握,基本上学会了对图的操作等。在对文件的自学过程中也认识 ,在学习的过程中要灵活的把所学的知识运用到实践当中,并且还要巩固练习和运用,这样才可以牢牢的记住。试验也对数据结构的知识进行了复习,尤其是结构体的定义、地址与引用的合理使用以及记录指针的使用也认识到数据结构在实践运用中的重要性,在对程序不断的修改和逐步改进提升的过程中,积累了不少经验,为在以后的学习和实践应用奠定了一定的基础。

十、  体会感受

通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。

在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。

不可否认,本程序存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的工作也有指导作用。我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的。

这次课程设计受益非浅,学到了不少知识,同时也认识到自身的不足,需要加强自身训练,学以致用,学会自我总结,吸取教训,积累经验,在学习和实践中来不断的提升自己。


第二篇:微机原理 课程设计


电子信息工程专业

微机原理课程设计报告

课题名称:出租车计价器   

学生班级:  自动化1班   

学生学号:     

   学生姓名:      

指导教师:

成绩评定:                  

20##年   元 月    1日

摘  要

当有人乘车时,司机按“开始键START”同时开动汽车。通过转速传感器装置,这个装置可以在车轮转动时产生源脉冲,源脉冲经过修整后,送至具有计数和显示功能的主体模块。其中显示部分有三个部分:里程显示、价格显示、以及等时显示。要求设定里程从零开始计,价格从起步价(可以设定为5元)开始计,而且在不大于起步里程(设定为5公里)时,价格一直是起步价5元,若超过起步里程,计价显示在原有起步价基础之上然后加上相应的里程费用。设单位里程一公里价格2元。当在运作过程中是由于红灯或者客人需要的有效等待时,主题模块30S如果没有检测到脉冲信号,则计价显示工作,并且每隔30S计价器就增加一元。这便是出租车计价器的原理和设计思路。

关键词:

模块化设计  8086CPU  汇编程序设计

目录

摘要................................................................................................................................. 2

关键字............................................................................................................................. 2

正文................................................................................................................................. 3

前言................................................................................................................................. 3

本论................................................................................................................................. 3

一、开题论证.......................................................................................................... 3

二、系统整体论证................................................................................................... 4

三、硬件方案选择部分........................................................................................... 4

四、软件编写部分................................................................................................... 5

五、整体测试情况................................................................................................. 18

结论和感想.................................................................................................................... 19

谢辞............................................................................................................................... 20

参考文献....................................................................................................................... 20

正文

前言

微机原理与接口技术是一门理论结合实践的专业基础课,同时也是考研的考察科目。可以毫不夸张的说,学好学精微机原理,在就业时就有了非常大的优势。为了让我们更好的掌握汇编语言和各种芯片的特点和功能,安排了我们这次课程设计。8086 CPU及其相应的外围可编程芯片实现对计价器主体功能的实现是本次试验的目的,需要充分考虑了星研电子ES-PCI环境下的硬件条件,我负责这次设计的统筹环节,并负责书写报告。

本论

一、    开题论证:

设计满足的基本要求包括:

1、里程显示 价格显示(起步价以及起步价之后的里程费用的显示)

2、等时收费

3、复位。

当有人乘车时,司机按“开始键START”,且开动汽车。通过转速传感器装置,这个装置可以在车轮转动时产生源脉冲,源脉冲经过修整后,送至具有计数和显示功能的主体模块。其中显示部分有三个部分:里程显示、价格显示、以及等时显示。要求设定里程从零开始计,价格从起步价(可以设定为5元)开始计,而且在不大于起步里程(设定为5公里)时,价格一直是起步价5元,若超过起步里程,计价显示在原有起步价基础之上然后加上相应的里程费用。设单位里程一公里价格2元。当在运作过程中是由于红灯或者客人需要的有效等待时,主题模块30S如果没有检测到脉冲信号,则计价显示工作,并且每隔30S计价器就增加一元。增强功能可以设计白天黑夜转换、语音提示功能。

由基本要求,初步设想可以实现基本功能。

出租车上的具有多位显示的计价器(基于单片机)

二、    系统整体论证:

根据星研实验环境下,包括怎么样去实现开题要求,在现有的实验室条件下能否演示,或者能否演示其中的主体功能。只能根据已学知识利用16位CPU及其相应的外围可编程控制芯片实现。

三、    硬件方案选择部分:

1.脉冲产生电路包括光电式霍尔式也可以用一个固定的脉冲

2.计数器采用8253计数结束中断方式

3.中断控制器采用8259A

4.显示控制部分用两种选择采用8255控制显示或者8279控制显示

5.显示器件 数码管 LCD

最后经过相关的论证可以绘制出所要的硬件原图:

说明:

以8086CPU为核心,其通过相应的地址线与译码器相连实现对外围芯片的片选(在星研ESPCI硬件环境下片选可以直接实现),通过低地址数据线完成和外围芯片的数据传输(对外围芯片的初始化编程、程序监控),计数器采用计数中断结束方式计数,根据现实条件设定一个初始值N,当有N个脉冲通过CLK1时,8253OUT1向8259输出一个脉冲,此时8259向CPU发送一个中断请求,CPU处理中断子程序,对8255进行控制,并通过8255控制显示。

四、    软件编写部分:

1.系统流程图

         

说明:

本程序应用8255作为总控制,其中PA口接按键(启动控制),PB接8位数码管的显示部分,而PC口接位选,其中PC口高4位显示价钱,低4位显示里程。采用8253技术,其中计数器T0,T1与1MHZ产生1HZ信号,接IR0计数;08H中断始终计数TIME(时间),而09H为信号接收时中断,将里程(COUNT)+1,并将时间(TIME)清0;若无信号输入,09H将不产生中断,此时即为等待状态,08H中断TIME++,当达到30s时,价钱增加2元,并将TIME清0循环。

2.源代码及其注释

.MODEL   TINY

PCIBAR3  EQU  1CH        ; 8位I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RAM板卡上的8237提供基地址)

Vendor_ID        EQU 10EBH    ;厂商ID号

Device_ID         EQU 8376              ;设备ID号

DLYC2       EQU 200      ;显示时间系数

.STACK      100       

.DATA

COM_ADDR     DW  00B3H

T0_ADDR          DW  00B0H

T1_ADDR          DW  00B1H

COM_ADD       DW  00F3H       ;控制口偏移量

PA_ADD            DW  00F0H       ;PA口偏移量

PB_ADD            DW  00F1H       ;PB口偏移量

PC_ADD            DW  00F2H       ;PC口偏移量

IO8259_0   EQU      0E00H   ;待定***********************

IO8259_1   EQU      0E01H   ;*****************************

OLDOA1      DD     ?   ;存放原08H中断地址

OLDOA2      DD     ?   ; 存放原09H中断地址

COUNT     DW   00H    ;里程计数

TIME      DW   00H     ;时间计数

DDBB1   DW  4 DUP (0)   ;存放里程计数值

DDBB2   DW  4 DUP(0)   ;存放价钱计数值

IO_Bit8_BaseAddress DW       ?

msg0                  DB    'BIOS不支持访问PCI     $'

msg1                  DB    '找不到Star PCI9052板卡 $'

msg2                  DB    '读8位I/O空间基地址时出错$'

TB           DB 40H,79H,24H,30H,19H

             DB 12H,02H,78H,00H,18H

.CODE

START:      MOV         AX,@DATA

                   MOV         DS,AX

                   NOP

                   CALL        InitPCI

                   CALL         ModifyAddress       ;根据PCI提供的基地址,将偏移地址转化为实地址

        CLI          ;关中断

        CALL    I8255A           ;8255A初始化

CALL    RD08             ;读出08H中断向量

CALL    WRITE08          ;写入08H中断向量

CALL    RD09             ;读出09H中断向量

CALL    WRITE09          ;写入09H中断向量

CALL    I8259             ;开放用户中断

STI                       ;开中断

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

MOV     DX,PA_ADD       ;按键扫描                       

IN      AL,DX

AND    AL,0FFH

CMP     AL,0FFH

JNZ       BB

COUNT  DW  00H         ;清零

TIME    DW  00H  

BB:

MOV     DX,COM_ADDR

MOV     AL,34H

OUT     DX,AL                         ;计数器T0设置在模式2状态,二进制计数

MOV     DX,T0_ADDR

MOV     AL,00H

OUT     DX,AL

MOV     AL,10H

OUT     DX,AL                         ;CLK0/1000

MOV     DX,COM_ADDR

MOV     AL,76H

OUT     DX,AL                         ;计数器T1为模式3状态,输出方波,二进制计数

MOV     DX,T1_ADDR

MOV     AL,00H

OUT     DX,AL

MOV     AL,10H

OUT     DX,AL                         ;CLK1/1000

                             ;OUT1输出频率为1S的方波

MOV     DX,COM_ADDR

MOV     AL,10110000B

OUT     DX,AL

MOV     DX,T2_ADDR

MOV     AL,00H

OUT      DX,AL

MOV     DX,T2_ADDR

MOV     AL,10H

OUT      DX,AL

           

CALL      BCDTO1;将记录数放在存储器BBDD1中

CALL      DISP1; 调用动态显示,PC低四位显示里程

MOV     AX, COUNT

MOV     BX, 02H

MUL     AX, BX

CALL     B2TOBCD;将二进制转换为BCD码

MOV       BX,0006H ;赋予起步价6元

CMP       AX,BX   ; 若计数值小于6元,交换AX,BX

JA        TT

XCHG      AX,BX       

                     

TT:      CALL      BCDTO 2 ;将记录数分别放入存储器BBDD2中

        CALL      DISP2   ;调用动态显示,PC高四位显示价钱

        CALL      RESTER08H ;恢复08H,09H型中断

        CALL      RESTER09H

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

DL20ms   PROC        NEAR       

                   PUSH        AX   

                   PUSH        DX   

                   MOV         DX,20                 ;延时20ms

                   MOV         AH,0FFH            ;星研公司提供的软中断

                   INT   21H 

                   POP  DX   

                   POP  AX   

                   RET          

DL20ms             ENDP       

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

I8255A   PROC

         MOV     DX,COM_ADD

         MOV     AL,10010000B     ;PA输入,PB PC输出

         OUT     DX,AL

         MOV     DX, PC_ADD

         MOV     AL,0FFH   ;关数码管

         OUT     DX,AL                            

         RET

I8255A   ENDP

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

RD08    PROC

        MOV   AH,35H

        MOV   AL,0AH

        INT     21H

        MOV   WORD PTR OLD0A1,BX

        MOV   WORD PTR OLD0A1+2,ES

        RET

RD08    ENDP

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

WRITE08        PROC

               PUSH    DS

               MOV     AX,@CODE

               MOV     DS,AX

               MOV     DX,OFFSET SERVICE1

               MOV     AX,2508H

               INT     21H

               POP     DS

               RET

WRITE08        ENDP

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

RD09           PROC

               MOV   AH,35H

               MOV   AL,09H

               INT     21H

               MOV   WORD PTR OLD0A2,BX

               MOV   WORD PTR OLD0A2+2,ES

               RET

RD09           ENDP

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

WRITE09        PROC

               PUSH    DS

               MOV     AX,@CODE

               MOV     DS,AX

               MOV     DX,OFFSET SERVICE2

               MOV     AX,2509H

               INT     21H

               POP     DS

               RET

WRITE09       ENDP

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

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

I8259           PROC

               MOV    AL,12H ;单级使用,边沿触发,不需要设计ICW4

               OUT    0E00H ,AL;

               MOV    AL,0A0H;普通EOI循环方式,IR0最低级

OUT           0E00H,AL;

               RET

I8259          ENDP

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

SERVICE 1       PROC

               PUSH     AX

               PUSH     DS

               MOV      AX,@DATA

               MOV      DS,AX

               INC       TIME

               MOV     AX,TIME

               MOV     BX,30

               CMP     AX,BX

               JNA      AA1

               TIME   DW  00H

               INC     COUNT  ;相当于价钱加2元

AA1            MOV      AL,20H

               OUT      0E00H,AL    ;中断结束中断地址    

               POP      DS

POP            AX            

               IRET

SERVICE1        ENDP                                  

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

SERVICE 2       PROC

               PUSH     AX

               PUSH     DS

               MOV     AX,@DATA

               MOV     DS,AX

               INC      COUNT

               MOV     AX,COUNT

               MOV     BX,4500

               CMP     AX,BX

               JNA      AA1

               COUNT   DW  00H

               MOV     AX,COUNT

 AA2:          CALL     B2TOBCD

               MOV      AL,20H

               OUT      0E00H,AL    ;中断结束中断地址    

               POP      DS

POP      AX            

               IRET

SERVICE2       ENDP                              

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

RESTER08H      PROC 

               PUSH    DS

               MOV    DX,WORD PTR OLDOA1

               MOV    DS,WORD PTR OLDOA1+2

               MOV    AH,25H

               MOV    AL,08H

               INT     21H

               POP    DS

               RET

RESTER08H      ENDP

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

RESTER09H      PROC 

               PUSH    DS

               MOV    DX,WORD PTR OLDOA2

               MOV    DS,WORD PTR OLDOA2+2

               MOV    AH,25H

               MOV    AL,09H

               INT     21H

               POP    DS

               RET

RESTER09H      ENDP

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

B2TOBCD       PROC     NEAR

               CMP      AX,9999         ;AX>9999,则CF置1

               JBE      TRAN

               STC     

               JMP      EXIT

TRAN:          PUSH     CX     

               PUSH     DX 

               SUB      DX,DX              ;DX清0

               MOV      CX,1000         ;计算千位数

               DIV      CX

               XCHG     AX,DX           ;商在DX中,余数在AX中

               MOV      CL,4

               SHL      DX,CL         ;DX左移4位

               MOV      CL,100         ;计算百位数

               DIV      CL

               ADD      DL,AL          ;百位数加到DL中,DX左移4位

               MOV      CL,4

               SHL      DX,CL

               XCHG     AL,AH          ;余数保留在AL中

               SUB      AH,AH

               MOV      CL,10          ;计算十位数

               DIV      CL

               ADD      DL,AL          ;十位数加到DL中,DX左移4位

               MOV      CL,4

               SHL      DX,CL

               ADD      DL,AH          ;加个位数

               MOV      AX,DX          ;结果送到AX中

               POP      DX

               POP      CX

 EXIT1:        RET

 B2TOBCD       ENDP              

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

BCDTO          PROC      NEAR    

                MOV     SI,OFFSET DDBB

                MOV     BH,00H

                MOV     BL,AL

                MOV     CL,04H

                ROR     BX,CL

                MOV     [SI+1],BL   ;将记录数十位放在其中            

                SHR      BH,CL

                MOV      [SI],BH   ;将记录数个位放在其中

                SUB     BH,BH

                MOV     BL,AH

                MOV     CL,04H

                ROR     BX,CL

                MOV     [SI+3],BL   ;将记录数千位放在其中

                SHR      BH,CL

                MOV      [SI+2],BH  ;将记录数百位放在其中

                RET

BCDTO          ENDP

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

DISP1           PROC         NEAR

                MOV     SI,OFFSET DDBB1 

                MOV      AL,[SI]            ;显示个位

                MOV      BX,OFFSET TB

                XLAT     TB

                MOV      DX,PB_ADD        ;用PB口做动态扫描     

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,0FEH          ;用PC口低位显示

                OUT      DX,AL

                MOV      CX,DLYC2

LP0:            LOOP      LP0

                MOV      AL,  0FFH

                OUT      DX,AL             

                INC       SI

                MOV      AL,[SI]            ;显示百位

                MOV      BX,OFFSET TB

                XLAT      TB

                MOV      DX,PB_ADD            ;用PB口做动态扫描  

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,0FDH          ;用PC口低位显示

                OUT      DX,AL

                MOV      CX,DLYC2

LP1:            LOOP     LP1

                MOV      AL,  0FFH

                OUT      DX,AL             

                INC      SI

                MOV      AL,[SI]            ;显示百位

                MOV      BX,OFFSET TB

                XLAT     TB

                MOV      DX,PB_ADD ;用PB口做动态扫描  

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,0FBH          ;用PC口低位显示

                OUT      DX,AL

                MOV      CX,DLYC2 

LP2:            LOOP     LP2

                MOV      AL,  0FFH

                OUT      DX,AL             

                INC      SI

                MOV      AL,[SI]            ;显示千位

                MOV      BX,OFFSET TB

                XLAT     TB

                MOV      DX,PB_ADD       ;用PB口做动态扫描  

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,0F7H          ;用PC低位显示

                OUT      DX,AL

                MOV      CX,DLYC2 

LP3:            LOOP     LP3

                MOV AL,0FFH

                OUT DX,AL

                RET

DISP1           ENDP                  

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

DISP2           PROC         NEAR

                MOV     SI,OFFSET DDBB2 

                MOV      AL,[SI]            ;显示个位

                MOV      BX,OFFSET TB

                XLAT     TB

                MOV      DX,PB_ADD       ;用PB口做动态扫描     

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,0EFH          ;用PC口高位显示

                OUT      DX,AL

                MOV      CX,DLYC2

LP0:            LOOP     LP0

                MOV      AL,  0FFH

                OUT      DX,AL             

                INC      SI

                MOV      AL,[SI]            ;显示百位

                MOV      BX,OFFSET TB

                XLAT     TB

                MOV      DX,PB_ADD        ;用PB口做动态扫描  

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,0DFH          ;用PC口高位显示

                OUT      DX,AL

                MOV      CX,DLYC2

LP1:            LOOP      LP1

                MOV      AL,  0FFH

                OUT      DX,AL             

                INC       SI

                MOV      AL,[SI]            ;显示百位

                MOV      BX,OFFSET TB

                XLAT     TB

                MOV      DX,PB_ADD        ;用PB口做动态扫描  

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,0BFH          ;用PC口高位显示

                OUT      DX,AL

                MOV      CX,DLYC2 

LP2:            LOOP      LP2

                MOV      AL,  0FFH

                OUT      DX,AL             

                INC       SI

                MOV      AL,[SI]            ;显示千位

                MOV      BX,OFFSET TB

                XLAT      TB

                MOV      DX,PB_ADD       ;用PB口做动态扫描  

                OUT      DX,AL

                MOV      DX,PC_ADD       ;用PC口做位选

                MOV      AL,7FH          ;用PC口高位显示

                OUT      DX,AL

                MOV      CX,DLYC2 

LP3:            LOOP     LP3

                MOV AL,0FFH

                OUT DX,AL

                RET

DISP2     ENDP                         

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

START1:             CALL         IfExit                           

                   JZ     START1

                   JMP Exit 

                                   

IfExit                  PROC        NEAR

                       PUSH        AX

                       PUSH        DX

                       MOV         AH,06H

                       MOV         DL,0FFH

                       INT         21H

                       POP      DX

                       POP      AX

                       RET

IfExit                  ENDP

InitPCI               PROC        NEAR

                 MOV         AH,00H

                 MOV         AL,03H

                 INT       10H                    ;清屏

                       MOV         AH,0B1H

                       MOV         AL,01H

                       INT       1AH

                       CMP    AH,0

                       JZ         InitPCI2

                       LEA      DX,msg0

InitPCI1:      MOV         AH,09H

                       INT       21H

                       JMP     Exit

InitPCI2:      MOV         AH,0B1H

                       MOV         AL,02H

                       MOV         CX,Device_ID

                       MOV         DX,Vendor_ID

                       MOV         SI,0

                       INT       1AH

                       JNC      InitPCI3             ;是否存在Star PCI9052板卡

                       LEA     DX,msg1

                       JMP        InitPCI1

InitPCI3:      MOV         DI,PCIBAR3

                       MOV         AH,0B1H

                       MOV         AL,09H

                       INT        1AH                    ;读取该卡PCI9052基地址

                       JNC      InitPCI4

                   LEA      DX,msg2

                   JMP     InitPCI1

InitPCI4:  AND     CX,0FFFCH

                   MOV         IO_Bit8_BaseAddress,CX

                   RET

InitPCI      ENDP

ModifyAddress         PROC        NEAR

                           ADD   COM_ADDR,CX

                           ADD   T0_ADDR,CX

                           ADD  T1_ADDR,CX

                ADD  COM_ADD,CX     

                           ADD   PA_ADD,CX

                           ADD   PB_ADD,CX

                           ADD  PC_ADD,CX 

                           RET

ModifyAddress         ENDP

Exit:                  MOV         AH,4CH

                           INT   21H          

                     END     START

连线说明:               

3.运行情况

在星研上进行编译,0  wrong  0  waring,程序正确。

五、    整体测试情况:

在理想的情况下,功能可以实现。当有源脉冲的时候,送至具有计数和显示功能的主体模块。其中显示部分有三个部分:里程显示、价格显示、以及等时显示。价格从起步价(可以设定为5元)开始计,而且在不大于起步里程(设定为5公里)时,价格一直是起步价5元,若超过起步里程,计价显示在原有起步价基础之上然后加上单位里程一公里价格2元。当在运作过程中需要等待时,主题模块30S如果没有检测到脉冲信号,则计价显示工作,并且每隔30S计价器就增加一元。

结论和感想

在紧锣密鼓的实验设计中,两个星期的时间转眼就过去了,在这两个星期里,我们把实验室当成我们的自己的家,每天都按时去那里进行着课程设计,有时因为设计进程有了新点子而高兴不已,有时因为程序出错而困惑着急,但是最终还是在王老师和张老师的指导下顺利的完成了设计,感谢老师对我们的悉心指导,我们铭记在心。

两周前,刚刚学完微机原理的我们,对于许多知识还只是停留在较浅的理解,许多问题还没有弄懂。两周里,我们充分感受到了课程设计的意义和团体工作的效率,我们对于8251、8253、8255、8259等芯片的功能和使用有了新的了解,对于8086CPU以及汇编程序也有了进一步的掌握,更学会了团队合作,学会了自学。

这次课程设计我主要是负责统筹工作,在xx同学设计硬件时出谋划策,并负责制图。xxx的软件部分我负责了资料的收集程序的整理,最后负责了报告的书写和整理排版。我们收获颇丰,期待下一次的课程设计,期待下一次的合作。

谢辞

感谢审阅本报告的老师的指导并提出意见,再次致谢!

参考文献

周荷琴版《微机原理与接口技术》                    中国科技大学出版社                                 王敬生主编的《微机原理与接口技术实验指导书》      合肥学院电子信息与电                                                                               

                                                  气工程系

王萍主编的《微机原理应用实践》                    机械工业出版社    

李恩林 陈斌生主编的《微机接口技术300例》         机械工业出版社

马群生 温冬婵等编著的《微计算机技术》             清华大学出版社

更多相关推荐:
微机原理课程设计报告

微机原理课程设计设计报告姓名朱文斋班级学号30905020xx教师张荣标20xx年1月5日微机原理课程设计一目的结合微型计算机原理课程的学习进一步巩固已学的知识同时针对计算机原理知识的具体应用学会对系统中DOS...

数字钟_接口课设报告_8086微机原理与接口技术课程设计

接口技术基础实验报告学院计算机科学与技术学院班级计091学号09130220xx姓名曹恒楼指导老师顾晖时间20xx616接口技术课程设计目录数字钟的设计31设计需求分析与解决方案311设计需求分析3111题目要...

微机原理课程设计报告

微机原理课程设计报告设计名称:LED七段数码管数字钟学院:电子信息学院班级:电科091提交时间:20##年6月15日一:设计内容设计的电路功能是实现时钟的24进制计时并显示在数码管上,通过按键可对时钟的时、分、…

微机原理课程设计总结

南京航空航天大学微机原理课程设计数据采集系统中断法微机原理课程设计数据采集系统中断法南京航空航天大学微机原理课程设计数据采集系统中断法一课设目的进一步掌握微机原理知识了解微机在实时采集数据的应用学习掌握编程和程...

微机原理课程设计报告

课程设计报告纸数据采集系统三中断法一实验目的进一步掌握微机原理知识了解微机在实时采集过程中的应用学习掌握编程和程序调试方法二实验内容1用中断法将ADC0809通道0外接05V电压转换成数字量后在七段LED数码管...

微机原理课程设计报告(电子时钟)

微机原理课程设计报告1设计目的培养和锻炼在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力通过课程设计要求熟悉和掌握微机系统的软件硬件设计的方法设计步骤得到微机开发应用方面的初步训练掌握825...

微机原理课程设计报告

微机原理课程设计设计报告课程设计题目LCD液晶和LED点阵显示应用学院名称专业班级姓名指导教师完成日期20xx年6月28日目录一系统功能和结构2二核心技术介绍2三硬件电路连线图3四软件开发流程图5五设计体会及总...

微机原理课程设计报告

微机原理课程设计报告题目名称流水彩灯的设计学生姓名专业年级指导教师时间20xx年12月28日课程设计报告书目录设计报告书目录一设计任务111设计题目要求112设计目的113设计环境1二设计思路1三设计过程231...

微机原理课程设计

课程设计报告20xx20xx年度第一学期课程微机原理及应用题目动画显示显示三角形并倒置院系控制与计算机工程学院班级自动化1004姓名学号20xx0903011020xx09040134指导教师程海燕设计周数一周...

微机原理课程设计报告

武汉理工大学微机原理与接口技术课程设计说明书1设计任务及要求11设计任务采用汇编语言设计一个运行于计算机的小鸟动画程序在屏幕上显示一只小鸟当按下按键S时小鸟开始飞行当按下按键B时小鸟开始发声当按下按键P时小鸟暂...

微机原理课程设计报告(电子秒表)

微机原理课程设计报告一设计目的培养和锻炼在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力通过课程设计要求熟悉和掌握微机系统的软件硬件设计的方法设计步骤得到微机开发应用方面的初步训练掌握825...

微机原理课程设计报告---抢答器的设计123

微机原理及接口技术课程设计报告小组成员20xx年06月23日1设计目的1了解竞赛抢答器的设计原理和方法2掌握定时计数器并行接口芯片和中断控制的工作原理与使用方法2所用元器件180X86系列微机一台2定时计数器并...

微机原理课程设计报告(35篇)