微机大作业—— 24秒倒计时器

题    目:    24秒倒计时器               

院 (系):                                     

专    业:    计算机科学与技术         

学生姓名:                                      

学    号:                                         

课    号:                                         

任课老师:                                      

2022年 05月 01 日

链接:https://pan.baidu.com/s/1VfZzDvOhQLLL2biilIQSTQ?pwd=6666 
提取码:6666

一、方案设计

1. 设计内容

2. 设计思路

24秒倒计时器以8086微处理器作CPU,用8253做定时器,接中断控制器8259的IR0,向CPU申请中断,并用8259A的中断服务程序完成倒计时的计算,向8255的B端口输出数据,再由数码管动态显示数据。

其中:

(1)数字显示模块用并行接口8255的B口驱动两个数码管(7SEG-BCD)的接口,控制其实现倒计时的显示。

(2) 时钟控制模块用定时计数器8253提供定时中断,使用计数器0,间隔1s的自动产生一次中断,中断控制器8259提供中断服务,在中断服务程序中并完成时间倒计时的处理。

(3)使用3-8译码器(74LS1138)完成接口芯片地址译码。

二、系统实现

1. 原理图设计

说明:该系统使用74LS138进行端口译码,其中Y0接8255的正在上传…重新上传取消 ,Y2接8259的 ,Y4接8253的 ,8253的OUT0接8259的IR0,8253的CLK0接外部输入频率为1MHz。

原理图的连接如下所示:

2. 功能实现

程序设计思路:

系统使用汇编程序代码实现,为了便于书写和记忆,在数据段定义的多个变量,方便后期编写代码使用。系统程序包括各个芯片的初始化、中断向量表定义以及中断服务程序INT0。

8255的端口、控制字地址和工作方式的定义:

8259初始化命令字和操作命令字的定义:

8253定时计数器和控制字地址的定义:

子程序int0使用数值的定义:

CNT DB 00000100B  ;用于个位显示

D   DB 00H        ;用于个位数值的判断

FLAG DB 00100000B ;用于十位数值的显示

2.1 系统程序设计

第一步:完成数据段的定义

第二步:初始化各个芯片,循环等待中断响应。

    初始化8255的原理:

   正在上传…重新上传取消

代码:

正在上传…重新上传取消

显示数码管初始化:

正在上传…重新上传取消

8259初始化原理:

正在上传…重新上传取消

正在上传…重新上传取消

正在上传…重新上传取消

代码:

正在上传…重新上传取消

定义中断向量表:

   当有一个中断的时候就要调用一个函数,这个函数的地址存放在中断向量表里 ,中断向量表的地址等于中断类型码乘以四。

正在上传…重新上传取消

8253初始化原理:

正在上传…重新上传取消

代码:

正在上传…重新上传取消

8253的初始化要设置计数器0,在OUT0自动发出周期为1S的方波,接8259的IR0,即每隔1s产生一次中断。

系统程序流程图如下所示:

正在上传…重新上传取消

 完整的代码参见2.3部分。

4.中断服务程序INT0模块设计

24秒倒计时的个位和十位分开处理:

第一步:个位初始为4,十位初始为2。

第二步:个位减一,如果个位减到0则十位减一。

第三步:将个位和十位的值放到AL里,若如果个位减到0则十位减一,个位变为10;若个位和十位都为零,重新初始化。

第四步:将AL的值写入到B端口进行输出,数码管连接B端口,一个数码管连接低四位显示个位数字,一个数码管连接高四位显示十位数字。

中断服务程序流程图:

    正在上传…重新上传取消

正在上传…重新上传取消

5.程序源代码

DATA   SEGMENT       ;数据段         

      PORTA EQU 60H

      PORTB EQU 62H

      PORTC EQU 64H

      CS8255 EQU 66H

      ; A口工作方式0 输入  B口工作方式0 输出

      REGIS EQU 10010000B  

     

     

      ICW1 EQU 68H

     

      ICW2 EQU 6AH

      ICW3 EQU 6AH

      ICW4 EQU 6AH

     

      OCW1 EQU 6AH

      OCW2 EQU 68H

      OCW3 EQU 68H

     

      CNT DB 00000100B  ;用于个位显示

      D   DB 00H        ;用于个位数值的判断

      FLAG DB 00100000B ;用于十位数值的显示

      ;8253 寄存器

      COUNT0  EQU  70H

      COUNT1  EQU  72H

      COUNT2  EQU  74H

      CS_8253 EQU  76H 

DATA   ENDS

EXTRA  SEGMENT    ;   ;附加段

EXTRA  ENDS

STACK  SEGMENT  PARA  STACK  ‘STACK’   ;堆栈段

STAPN  DB     100 DUP (00H) ;定义100字节空间

TOP    EQU  LENGTH  STAPN

STACK  ENDS

          

          

CODE   SEGMENT          

MAIN   PROC   FAR        ;过程定义语句

              ;说明4个段寄存器分别与哪些段有关

       ASSUME  CS:CODE, DS:DATA,ES:EXTRA,SS:STACK

START:

        MOV AX,DATA

        MOV DS,AX   

       

        MOV AX, EXTRA

        MOV ES,AX

       

        MOV AX,STACK

        MOV SS,AX

       

        ; 此处输入代码

        ; 初始化8255

        MOV DX,CS8255

        MOV AL,REGIS

        OUT DX,AL

       

        ; 显示计数的初始值

        MOV AL,CNT

        ADD AL,FLAG  

       

        MOV DX,PORTB

        OUT DX,AL

       

        ; 对8259 初始化

       

        MOV DX,ICW1

        MOV AL, 00010011B

        OUT DX,AL

       

        MOV DX,ICW2

        MOV AL,60H

        OUT DX,AL

       

        MOV DX,ICW4

        MOV AL,00000001B

        OUT DX,AL

       

        MOV DX,OCW1

        MOV AL,11111000B

        OUT DX,AL

       

        ;定义中断向量表

        MOV AX,00H

        MOV ES,AX

       

        MOV BX, 60H*4

        MOV AX,OFFSET INT0

        MOV ES:[BX],AX

       

        MOV AX,CS

        MOV ES:[BX+2],AX  

       

       

        ; 8253 初始化

        ; 定时器0

        MOV DX,CS_8253

        MOV AL,00110001B

        OUT DX,AL

       

        MOV DX, COUNT0

        MOV AL,00H

        OUT DX,AL

       

        MOV AL,10H

        OUT DX,AL 

       

       

        STI

       

  L1:

       JMP L1     

       

  

       

        RET

MAIN   ENDP       ;MAIN过程结束

INT0 PROC    

    

     CLI 

     MOV AL,CNT

     DEC AL

     MOV CNT,AL 

     ADD AL,FLAG

     MOV D,AL

     AND D,00001111B

     CMP D,0

     JA X1

     CMP FLAG,00010000B

     JE  X2  

     CMP FLAG,00100000B

     JE  X3

    

   X2:

      MOV AL,CNT

      ADD AL,FLAG

      MOV FLAG,00000000B

      MOV CNT,10

      JMP X1

  

   X3: 

      MOV AL,CNT

      ADD AL,FLAG

      ;AND FLAG,11011111B

      ;ADD FLAG,00010000B 

      MOV FLAG,00010000B

      MOV CNT,10

      JMP X1

      

    

     X1: CMP AL,00000000B  

         JA  X5

         MOV AL,10000000B

         MOV CNT,00000101B 

         MOV FLAG,00100000B

    

   X5:

     MOV D,AL

     MOV DX,PORTA

     IN  AL,DX 

     CMP AL,11111111B

     JE X6

     MOV AL,10000000B

     MOV CNT,00000101B 

     MOV FLAG,00100000B

     JMP X7

    

  

  X6:MOV AL,D

  X7:MOV DX,PORTB

     OUT DX,AL

    

     MOV DX,OCW2

     MOV AL,20H

     OUT DX,AL 

    

     ;重置8253

    

     MOV DX,COUNT0

     MOV AL,00H

     OUT DX,AL

     MOV AL,10H

     OUT DX,AL

    

    

     STI

   

    IRET

INT0 ENDP

CODE   ENDS             ;代码段结束

    END   MAIN   ;整个源代码结束

         

           

三、仿真结果分析及总结

     仿真结果如图所示:

正在上传…重新上传取消

本次作业实现结果:完成了一个篮球比赛用的24秒倒计时器,计时开始和计时过程可控,随时可以暂停和开始倒计时,也可以清零后重新在24s开始倒计时,并且可以循环倒计时。计时为零时点亮一个发光二级管。仿真使用8253提供定时中断信号,用8259控制中断请求,8255连接2位数码管。

仿真运行方法:

双击8086微处理器,弹出窗口

正在上传…重新上传取消

总结:

本次作业历时一个星期左右后完成,前前后后修改了很多次,解决了很多问题。通过本次大作业,我学到了很多东西,比如学会了并且较熟练地掌握了如何使用protues完成简单的仿真,提高了自己的实践和动手能力;复习了8086微处理器、8255芯片、8259芯片、8253芯片的基础知识。

第一步是复习老师上课所讲授的内容,复习每个芯片的基础知识。

第二步是在网上分别找到对应芯片的讲解和仿真视频,学会如何在protues上找到对应器件以及基础的连线方式等等。

第三步是确定题目和使用芯片,一边在emu8086上写汇编代码,一边在在protues进行仿。

改进:1.不能实时调整时间,让数码管显示任意时间。

       2.代码的编写不够简洁,易懂。

       3.可以再添加更多的功能,使系统更完整。

四、参考文献

[1]马瑞, 高美蓉. 基于Proteus和8086的电子时钟设计与仿真[J]. 办公自动化, 2021, 26(19):3.

[1]钟鹏程. 基于Proteus的篮球赛24秒倒计时器设计与仿真[J]. 科技风, 2019(11):3.

评分项目

优秀

良好

及格

不及格

原理图设计

运行效果

报告规范性

报告内容

大作业成绩评定

  • 21
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机,可实现篮球比赛时间倒计时24倒计时、100和60倒计时、)比赛时间、24倒计时和比赛节数等功能,内附文档说明。 (1)时钟模块 时钟模块用于实现篮球比赛时间倒计时(计时精度为0.1)、24倒计时、100和60倒计时。 (2)按键模块 按键模块共需要9个按键开关,其中8个半径为4厘米圆形按键分别为:减一分钟、加一分钟、启动/继续、暂停、5分钟、节数、60、100;1个手握式开关24位复位键,每个按键可随意摆放,方便操作。 (3)显示模块 显示模块中显示屏采用LED数码管显示屏,正方体四面显示屏上每面显示屏包含25厘米的8个七段数码管,1个数码管显示比赛的节数为第一行,5个数码管显示比赛时间为第二行,2个数码管显示24为第三行。正方形显示屏包含15厘米的3个七段数码管,用于显示100或60。 (4)声音模块 声音模块中有6个音响串联,可实现比赛开始时发出短哨声、每小节比赛结束发出笛声、24倒计时递减到零时发出长哨声。 (5)控制器 控制器中有4个存储器,分别存储比赛时间倒计时24倒计时、100和60倒计时。控制器不断地从时钟模块中提取时钟信号与存储器相比较,使存储器中时间以0.1递减并同时在显示模块中显示时间倒计时。控制器随时监视着按键模块和时钟模块,当有按键按下,控制器接受到按键模块后控制时钟模块和控制存储器,并同时通过控制器在显示模块中显示时间和比赛节数;当存储器中的时间到达特殊的时间点时,由控制器来调出相对应的音频并在声音模块中发出声音。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值