微机大作业—— 24秒倒计时器
题 目:24秒倒计时器
院 (系):
专 业:计算机科学与技术
学生姓名:
学 号:
课 号:
任课老师:
2022年 05月 01 日
链接:https://pan.baidu.com/s/12kV_p61_MnAS5ejj6Ej8vA?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.
评分项目 |
优秀 |
良好 |
中 |
及格 |
不及格 |
|
原理图设计 |
||||||
运行效果 |
||||||
报告规范性 |
||||||
报告内容 |
||||||
大作业成绩评定 |
||||||
微机大作业—— 24秒倒计时器相关推荐
- VHDL:24秒倒计时器的设计(代码完整,结构清晰,很容易看懂)
要求: 1.分频器的设计与实现. 输入为4Hz的时钟,输出为1Hz的时钟. 2.设计24秒倒计时器. (1)输入为固定频率脉冲.使能端.复位端,输出为计时状态(用8421码表示). (2)用VHDL编 ...
- 【毕业设计】51-基于Multisim的篮球比赛24秒倒计时计时器的设计(仿真工程+相关芯片资料+答辩论文)
typora-root-url: ./ [毕业设计]51-基于Multisim的篮球比赛24秒倒计时计时器的设计(仿真工程+相关芯片资料+答辩论文) 文章目录 typora-root-url: ./ ...
- STC8H8K系列汇编和C51实战——秒倒计时器(可自行设定初值)(51版)
秒倒计时器(可自行设定初值)(51版) 一.题目 二.代码 总结 系列文章--STC8H8K系列汇编51实战 一.题目 在实验箱上利用单片机定时器/计数器(工作于中断方式)设计一个秒倒计时器,用数码管 ...
- STC8H8K系列汇编和C51实战——秒倒计时器(51版)
秒倒计时器(51版) 一.题目 二.代码 总结 系列文章--STC8H8K系列汇编51实战 一.题目 在实验箱上利用单片机定时器/计数器(工作于中断方式)设计一个秒倒计时器,用数码管显示秒数,从100 ...
- c语言篮球24秒计时器编程,篮球24秒比赛计时器功能简介
篮球24秒比赛计时器是篮球比赛中不可或缺的一种应用专用工具,伴随着全球篮球赛的水准日渐提升,大伙儿对计时器的规定也愈来愈高,因而篮球24秒比赛计时器在销售市场必须下应时而生. 篮球24秒比赛计时器的原 ...
- 24秒篮球计时器mulisim12.0_奥尼尔力量有多恐怖?325磅体重把整个篮球架子拦腰折断...
大鲨鱼奥尼尔做为NBA历史最顶尖的中锋之一,在本世纪初带领湖人完成20世纪唯一一个三连冠.巅峰时期的奥尼尔可谓完完全全统治联盟内线的攻防,大鲨鱼恐怖的力量也让无数中锋望而却步.今天,过人君便带领大家看 ...
- 记录微机大作业-----流水灯
前排提醒:仅为完成作业而做 通过BV1F64y1k74V此视频进行学习 题目描述: 用8个发光二极管演示一个跑马灯程序,要求用一个LED显示当前哪个二极管被点亮.要求使用8253提供定时中断信号,用8 ...
- 60秒倒计时器 秒表 c语言程序,用单片机设计一个两位LED显示的秒表,按下计时键时,进行60s倒计时显示...
满意答案 w86586tk3y 2017.09.25 采纳率:57% 等级:8 已帮助:214人 #include sbit P3_5 =P3^5; unsigned char code dis ...
- 时序逻辑电路的设计(二) -- 篮球比赛24秒倒计时电路(附Multisim)
一.实验任务及要求 1. 设计要求 篮球比赛中,进攻一方取得球权后双方开始比赛,若24秒到,该进攻一方仍然没有投球时,需要交换发球权.本实验要求设计一个24秒违例计时器(倒计时方式),当计时24秒时间 ...
- 象棋快棋赛电子裁判计时器的设计——《数字逻辑与数字系统设计》实验大作业设计报告
数电Github资源 <数字逻辑与数字系统设计>实验大作业设计报告 实验题目 象棋快棋赛电子裁判计时器的设计 实验难度 ★★ 成员 姓名 班号 学号 1 郭茁宁 1837101 11837 ...
最新文章
- 通过SQL存储过程删除过期的数据库Bak备份文件
- Elasticsearch5.x 升级-插件
- Java相对路径读取文件
- 隋唐5s与linux的关系,我与Linux
- 三十分钟掌握STL(Using STL)
- Eclipse For JavaSE安装、配置、测试
- html 盒子重叠,CSS3 box-shadow用于重叠的div
- 智能手机上最没有用的功能是什么?
- shell 中的参数替换
- transform对定位元素的影响
- spring + ehcache 配置
- 蜘蛛侠天堂,打死我mac键盘
- 查找算法——二分查找
- 乘客网上订票系统MVC
- 超简单教程——Linux下自制OCR文字识别
- halcon分割区域的方法
- 以实例说明,网吧组网方案详解!(转)
- arcmap武汉市各个行政区域的森林覆盖率和水体覆盖率
- UVA - 12304(B - 2D Geometry 110 in 1!)计算几何板子
- 迅捷路由器设置找不到服务器,迅捷(fast)路由器怎么设置?