微机原理跑马灯课设报告

时间:2024.4.27

 微机原理

课程设计说明书

设计题目:跑马灯

学    院  计算机科学与工程学院

          专    业  计算机科学与技术专业

班    级                       

学    生                       

学    号                       

同组者                         

指导教师                       

             

      2014        春季   学期


目录

一、 实验简介............................................................. 3

1、基本要求................................................................................. 3

2、设计提示................................................................................. 3

3、进一步设计要求.................................................................... 3

二、 实验原理............................................................. 3

1、 实验原理描述...................................................................... 3

2、8254芯片................................................................................ 4

2.1、8254芯片组成部分..................................................... 4

2.2、8254芯片工作方式..................................................... 4

3、8255芯片................................................................................ 5

3.1、8255芯片的组成部分................................................. 5

3.2、8255芯片工作方式..................................................... 6

4、实验原理图............................................................................. 7

三、 实验流程图与源程序........................................ 7

1、 流程图................................................................................... 7

1.1、     主程序流程图......................................................... 8

1.2 Appmain 子程序流程图................................................ 8

1.3 灯跳转阶段流程图...................................................... 10

2、源程序(见附录).................................................................... 11

四、 实验结果与测试.............................................. 11

五、 实验提高与扩展.............................................. 11

六、 个人心得与体会.............................................. 12

附录.............................................................................. 13

一、实验简介:

1、基本要求:

采用8254精确定时,LED的点亮规律为LED7--->LED0,每一个LED的点亮时间间隔由逻辑电平开关K1、K2、K3选择,K1的时间间隔为0.5s,K2的时间间隔为1.0s,K3的时间间隔为1.5s。当主机键盘按下任意键时停止演示。

2、设计提示:

采用8255的A口接LED灯,B口接逻辑电平开关K1、K2与K3。在8254的中断服务程序中完成对灯的控制,主程序检测灯的变化,改变点亮LED的时间间隔。

3、进一步设计要求:

将LED的点亮规律变为LED7--->LED0--->LED7。

二、实验原理:

1、实验原理描述:

     该实验中跑马灯采用8255和8254芯片来实现,利用8254芯片来做定时器,采用8254的方式3(方波发声器),因此在8254芯中采用级联的方法,以此来控制跑马灯中实现0.5s,1.0s,1.5s的效果片;在8255芯片中将A口当做输出口连接LED灯,B口一个输入口来掌控三个逻辑开关的打开与关闭,选择三种不同的时间间隔,C7口作为另一个输入口连接着8254芯片的OUT1口来读从8254芯片传来的三种不同大小的频率之一,以此来实现具有三种不同时间间隔跳转的跑马灯。

2、8254芯片:

2.1、8254芯片组成部分:

(1)数据总线缓冲器:

数据总线缓冲器是一个三态、双向8位寄存器主要作用是与cpu进行数据交换,8位数据线D7~D0与CPU的系统数据总线连接,构成CPU和8254之间信息传送的通道,CPU通过数据总线缓冲器向8254写入控制命令、计数初始值或读取计数值。

(2)读写逻辑:

读写逻辑是芯片的控制部分,编程人员通过控制信号的选择来选择芯片的工作方式。读/写控制逻辑用来接收CPU系统总线的读、写控制信号和端口选择信号,用于控制8254内部寄存器的读/写操作。

(3)控制字寄存器:

控制寄存器是一个只能写不能读的8位寄存器,系统通过指令将控制字写入控制寄存器,设定8254的不同工作方式。

(4)计数器;

8254内部有三个结构完全相同而又相互独立的16位减“1”计数器,每个计数器有六种工作方式,各自可按照编程设定的方式工作。

2.2、8254芯片工作方式:

8254芯片共有六种工作方式,分别对应与六种不同的用途。

(1)方式0:计数结束中断方式,写入N后开始计数计数器为0 ,OUT输出H.

(2)方式1:可编程单稳态,外部GATE触发 OUT输出单拍负脉冲宽度N个CLK.

(3)方式2:速率发生器,每N个CLK输一个宽度为一个CLK周期的负脉冲 ,不断重复.

(4)方式3:方波发生器,N=偶,N/2个1,N/2个0N=奇,(N+1)/2个1,(N-1)/2个0 不断重复.

(5)方式4:软触发选通,写入N后开始计数计数器为0,OUT输出一个宽度为CLK周期的负脉冲.

(6)方式5:硬触发选通,写入N后GATE上升沿,开始计数计数器为0 ,写入N后GATE上升沿,开始计数计数器为0 ,OUT输出一个宽度为CLK,周期的负脉冲,OUT输出一个宽度为CLK,周期的负脉冲.

本次课设中,只是使用到了8254的工作方式3,将其当做一个方波发生器来使用,为8255提供固定频率的方波信号,8255以此来控制灯的点亮情况。使用8254的计数0和计数器1来进行级联,从out1中输出方波信号。

3、8255芯片:

3.1、8255芯片的组成部分:

 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。

(一)与CPU连接部分:

根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:

(1)数据总线DB:编号为D0~D7,用于8255与CPU传送8位数据。

(2)地址总线AB:编号为A0~A1,用于选择A、B、C口与控制寄存器。

(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。

(二)与外设接口部分:

根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。各通道的引脚编号如下:

(1)A口:编号为PA0~PA7,用于8255向外设输入输出8位并行数据。

(2)B口:编号为PB0~PB7,用于8255向外设输入输出8位并行数据。

(3)C口:编号为PC0~PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。

(三)控制器:

8255将3个通道分为两组,即PA0~PA7与PC4~PC7组成A组,PB0~PB7与PC0~PC3组成B组。相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:

(1)A组控制器:控制A口与上C口的输入与输出。

(2)B组控制器:控制B口与下C口的输入与输出。

3.2、8255芯片工作方式:

    8255芯片共有三种不同的工作方式

方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路

方式1:选通输入输出方式适用于查询和中断方式的接口电路

方式2:双向选通传送方式

适用于与双向传送数据的外设

适用于查询和中断方式的接口电路

4、实验原理图:

三、实验流程图与源程序:

1、流程图:

1.1、      主程序流程图:

     

1.2 Appmain 子程序流程图:

1.3 灯跳转阶段流程图:

2、源程序:

.model small

.586

.stack

.data

  p8255a=288h          ;A口地址

  p8255b=p8255a+1      ;B口地址

  p8255c=p8255a+2      ;C口地址

  p8255Ctrl=p8255a+3   ;控制口地址

  p8254a=280h          ;通道0地址

  p8254b=p8254a+1      ;通道1地址

  p8254c=p8254a+2      ;通道2地址

  p8254Ctrl=p8254a+3   ;控制口地址

  msg   db 'Press anykey to Exit',0dh,0ah,'$'

.code  

main    proc  

  mov   ax,@data

  mov   ds,ax             ;建立数据段 

  mov dx,offset msg

  mov ah,09h  ;显示字符串

  int    21h

  call  init8255

  call  Appmain

 

    mov ah,4ch ;返回DOS

    int 21h

    ret

main  endp

init8255   proc

      mov dx,p8255Ctrl       ;控制口地址

      mov al,8ah             ;设置8255为B,C口输入,A为输出

      out dx,al              ;控制字:10001010B

      ret

init8255   endp

Appmain proc

      mov dx,p8255b          ;检测B口状态

      in  al,dx

      mov cl,al

test:mov cl,al

    cmp al,01h

      jnz judge1

initk0:mov dx,p8254Ctrl      ;初始化计数器0,1,实现定时0.5s

      mov al,36h

      out dx,al

      mov dx,p8254a

      mov ax,500

      out dx,al

      mov al,ah

      out dx,al

      mov dx,p8254Ctrl

      mov al,76h

      out dx,al

      mov dx,p8254b

      mov ax,1000

      out dx,al

      mov al,ah

      out dx,al

      mov   bl,80h           ;点亮L7        

change:mov dx,p8255a       

      mov   al,bl

      out   dx,al       ;输出

next:mov   dx,p8255c

      in    al,dx

      and   al,80h

      jnz   hight       ;判断是否c口为下降沿

      cmp ah,1

      jnz next

      mov ah,0

      jmp x

hight:mov ah,1

      jmp next

x:

      mov  dl,0ffh      ;直接控制台IO,相当于C中while(!kbhit())

      mov  ah,06h       ;等待按键

      int     21h       ;al=输入字符

      jnz     done      ;若无按键,则继续

      mov   al,bl

      cmp al,01h        ;判断是否到达L0

      jz change1    

      mov dx,p8255a       

    

      out   dx,al       ;输出

      ror bl,2

      mov dx,p8255b     ;检测B口状态

      in  al,dx

      cmp al,cl

      jnz  test

      jmp next

change1:mov dx,p8255a       

      mov   al,bl

      out   dx,al       ;输出

next1:mov   dx,p8255c

      in    al,dx

      and   al,80h

      jnz   hight1      ;判断是否c口为下降沿

      cmp ah,1

      jnz next1

      mov ah,0

      jmp out1

hight1: mov ah,1

      jmp next1

out1:

      ;mov dx,offset msg

      ;mov ah,09h  ;显示字符串

      ;int    21h

      mov  dl,0ffh      ;直接控制台IO,相当于C中while(!kbhit())

      mov  ah,06h       ;等待按键

      int     21h       ;al=输入字符

      jnz     done      ;若无按键,则继续

     

      mov   al,bl

      cmp al,80h

      jz change

      mov dx,p8255a       

    

      out   dx,al       ;输出

      rol  bl,1

     

      mov dx,p8255b   ;检测B口状态

      in  al,dx

      cmp al,cl

      jnz  test

      jmp next1

     

judge1:cmp al,02h

       jnz judge2

initk1:mov dx,p8254Ctrl ;初始化计数器0,1,实现定时1s

      mov al,36h

      out dx,al

      mov dx,p8254a

      mov ax,100

      out dx,al

      mov al,ah

      out dx,al

      mov dx,p8254Ctrl

      mov al,76h

      out dx,al

      mov dx,p8254b

      mov ax,10000

      out dx,al

      mov al,ah

      out dx,al

      mov   bl,80h           ;点亮L7

      jmp   next

judge2:cmp al,04h

       jnz judgeelse

judgeelse:

    mov dx,p8254Ctrl ;初始化计数器0,1,实现定时1s

      mov al,36h

      out dx,al

      mov dx,p8254a

      mov ax,100

      out dx,al

      mov al,ah

      out dx,al

      mov dx,p8254Ctrl

      mov al,76h

      out dx,al

      mov dx,p8254b

      mov ax,10000

      out dx,al

      mov al,ah

      out dx,al

      mov   bl,80h           ;点亮L7

      jmp   next

initk2:mov dx,p8254Ctrl      ;初始化计数器0,1,实现定时1.5s

      mov al,36h

      out dx,al

      mov dx,p8254a

      mov ax,1500

      out dx,al

      mov al,ah

      out dx,al

      mov dx,p8254Ctrl

      mov al,76h

      out dx,al

      mov dx,p8254b

      mov ax,1000

      out dx,al

      mov al,ah

      out dx,al

      mov   bl,80h           ;点亮L7

      jmp   next

done:      

      ret

Appmain endp

end main

四、实验结果与测试:

在这次试验中共有四种结果出现:

1.开关K0闭合:

  七个灯相互间隔0.5s从L7开始依次被点亮,当L0被点亮时,又跳转到L7继续循环;

2.开关K1闭合:

  七个灯相互间隔1.0s从L7开始依次被点亮,当L0被点亮时,又跳转到L7继续循环;

3.开关K2闭合:

  七个灯相互间隔1.5s从L7开始依次被点亮,当L0被点亮时,又跳转到L7继续循环;

4.除了以上三种外其他开关闭合情况:

 默认七个灯相互间隔1.0s从L7开始依次被点亮,当L0被点亮时,又跳转到L7继续循环.

  总之,以上四种情况均实现了LED灯从LED7依次跳转到LED0。

五、实验提高与扩展:

对该实验所做的改进和提高之处有两处:

1、实现了LED7--->LED0--->LED7

   实验基本要求为实现从LED7变化到LED0即可,我们在实现这个基本要求的基础上还实现了当LED灯被依次点亮到L0时,又从L0依次跳转到LED7。

2、错误处理

   除了题目要求中的K0,K1,K2三个逻辑开关闭合的情况外,我们还对这三种情况除外的所有情况均进行了处理,在程序中默认出现其他情况后均跳转到1.0s的状态,使LED灯依次按照间隔1.0s来点亮。

六、个人心得与体会:

 在本次课设中,我总共有以下六处体会:

 1、在这次实验中,我们是两个人一组的合作实验,所以我们都有着自己的任务。我的任务是分析题目,设计原理图,连接电路以及测试效果。

     2、本次课设在上学期所学的微型计算机的基础上,提出了比较高的起点和要求,充分检查了我们对理论知识的的掌握程度和实践动手的能力。即不但巩固了原有的理论知识,还在设计过程中锻炼了我们的思维能力,以及全局的思想。

     3、通过本次课设的设计,我们进一步了解和掌握了各种理论知识,如微机的汇编语言的程序设计方法;8254和8255两种芯片的工作原理以及各种工作方式;以及两种芯片对实现跑马灯的作用。

     4、在这次课设中,我们也遇到了不少的错误,在刚开始时对两种芯片的不透彻理解,导致我们走了不少弯路;还有在实现三种时间间隔的效果时,我们没有想到运用8254芯片接口之间的级联来实现,浪费了我们不少的时间;在编写程序的过程中,我们因为锻炼的次数较少,编写程序时比较吃力;在审题时不够仔细,在最初未实现从L0又再次跳转到L7这一步。虽然我们遇到了问题,但是经过我们询问老师,以及与同学不停的探讨,这些问题都有了很好的解决,所以本次课程不仅加强了我们对知识的在学习,还让我们加强了与同学之间的思想交流。

     5、在本次实验中,我们还有做的不足的地方,就是在老师验收时,被检查出我们缺少了错误处理这个功能,经过老师的点拨,我们也最终对各种各种不同的错误有了比较好的处理方法,所以它还让我们学会了全面的思考问题,把所有可能出现的结果都实现化。

6、这次课设,再次告诉我,做实验或是其他事情,都要有足够的细心和耐心。在实验过程中,总会碰到许多实际的问题,因此,我们不仅要有比较扎实的基础知识,还要有比较强的心里素质。当实验的结果无法与理论值相一致时,不要烦躁,泄气,而是应该和自己的情绪交流,理清思路,分析导致出错的原因。必要时,可以把自己的想法和老师交流,请老师给予提示和指导。

附录

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

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

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

河北科技大学课程设计报告学生姓名学号专业班级课程名称学年学期指导教师年月课程设计成绩评定表目录一课程设计的目的1二设计题目1三设计内容要求2四设计成员及分工2五课程设计的主要步骤2六课程设计原理及方案3七实现方...

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

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

微机原理课程设计报告

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

微机原理课程设计总结

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

微机原理课程设计报告

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

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

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

江苏大学 《微机原理》课程设计报告

《微机原理》课程设计报告班级:姓名:学号:一、目的结合微机原理课程的学习,进一步巩固所学只是,掌握汇编语言的编程要领,熟悉汇编程序上机过程以及进行程序调试。二、设计任务,程序清单,流程图任务1(具体题目要求):…

西电微机原理课程设计报告(11级)

基于8088的微机最小系统设计与应用一引言微机发展概述1微型计算机的发展历史第一台微型计算机19xx年罗伯茨用8080微处理器装配了一种专供业余爱好者试验用的计算机牛郎星Altair第一台真正的微型计算机19x...

微机原理与接口技术课程设计(报告)

湖南科技大学信息与电气工程学院微机原理与接口技术课程设计报告题目基于DA转换器DAC0832的波形发生器设计专业电子信息工程班级电子3班姓名血色的天泪学号120xx303xx指导老师曾照福陈君李劲1信息与电气工...

微机原理与接口技术课程设计实验报告4-8255并行接口应用实验报告

8255并行接口应用实验报告实验目的1掌握8255的工作方式和应用编程2掌握8255的典型应用电路接法实验设备及器件PC机一台TDPIT实验仪器一套实验内容及步骤1基本输入输出实验编写程序使8255的A口为输出...

微机原理与接口技术课程设计报告

微机接口技术课程设计设计报告题目实时钟显示与定时控制设计专业班级学号姓名指导老师设计时间20xx年6月19日到20xx年6月25号1设计任务说明通过本课程设计综合应用接口技术各汇编语言程序设计技术在PC机上实现...

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