实验02_Proteus仿真数码管显示报告
一、原理总结
利用两个寄存器 R4 和 R5 来存储两个数码管的显示数字,R4 用来存储前一个数码管显示数字,而 R5 用来存储后一个数码管显示数字,利用左移操作 RLC 取 A 中首位放入 C 中,然后将 C 输入到数码管中,使用 R0 来控制循环,对于 R4 和 R5 重复上述过程各自重复8次,使得当数码管中每位都有数据时,数码管便会显示,之后使用停顿函数使数码管上数字停留一段时间。
二、程序分析
图示部分:

代码部分:
; Reset Vector
org 0000h
jmp Start
;====================================================================
; CODE SEGMENT
;====================================================================
org 0100h
TAB : DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;是用来存储0-15这16个数据,之后使用A来寻址
PAUSE: ;停顿函数 ;R1是第一层嵌套循环,R2是第二层嵌套循环,当R2不为0时跳转,为0时不跳转,执行DJNZ R1,D1使得R1- -,当R1不为0时跳转,为0时不跳转。
MOV R1,#255 ;R1是第一层嵌套循环
D1: MOV R2,#255 ;R2是第二层嵌套循环
D2: DJNZ R2,D2 ;当R2不为0时跳转,为0时不跳转,执行DJNZ R1,D1使得R1- -
DJNZ R1,D1 ;当R1不为0时跳转,为0时不跳转
RET
LED: ;数码管亮灯函数
MOV R0,#8 ;将8赋值给R0,8位左移
MOV A,R5 ;R5代表右边的LED的数
MOVC A,@A+DPTR ;A是偏移地址,是从DPTR中寻址
LOOP1:
RLC A ;A左移,将A中高位放入C中
CLR P1.4 ;传输C到数码管中
MOV P1.5,C
SETB P1.4
DJNZ R0,LOOP1 ;若R0为0,也即是执行完8次循环,不跳转,否则跳转
MOV R0,#8 ;和上面同理
MOV A,R4
MOVC A,@A+DPTR
LOOP2:
RLC A
CLR P1.4
MOV P1.5,C
SETB P1.4
DJNZ R0,LOOP2
MOV R6,#0 ;使用停顿函数,构成3层循环,使停顿时间延迟
S1: LCALL PAUSE
INC R6
CJNE R6,#10,S1 ;循环次数为10次
RET
START:
MOV p0,A ;将p0置为0,使上面的数码管不显示
MOV DPTR,#TAB ;将TAB首地址赋给DPTR
MOV R4,#0 ;赋初值为0
MOV R5,#0 ;赋初值为0
JMP XUNHUAN
A1: MOV C,P1.0 ;当开关不闭合时,持续显示一个数字
JC XUNHUAN
MOV C,9 ;当9号接口传输数据时,复位
JC FUWEI
INC R5 ;R5++
CJNE R5,#16,XUNHUAN ;当R5为16时要对R4++,而R5<16时跳转
MOV R5,#0
INC R4
CJNE R4,#16,XUNHUAN ;当R4为16时重新执行START,而R5<16时跳转
JMP FUWEI
XUNHUAN:
LCALL LED
JMP A1
FUWEI:
MOV R4,#0
MOV R5,#0
JMP A1
JMP START
;====================================================================
END
三、思考题
- MCS51中有哪些可存取的单元,存取方式如何?它们之间的区别和联系有哪些?
MCS51可存取单元分为三种:
1、片内外统编址的64K的程序存储器地址空间
2、256B的片内数据存储器的地址空间
3、64K 片外数据存储器的地址空间
在访问三个不同的逻辑空间时,应采用不同形式的指令以访问不同的存储器空间的选通信号。程序代码存放于程序存储器中,使用MOVC指令访问。数据存储器是随机存取方式,访问片内RAM用MOV指令,访问片外RAM用MOVX指令,用于存放程序执行的中间结果和过程数
2. 说明MOVC指令的使用方法。
MOVC是累加器与程序存储区之间的数据传送指令。它比MOV指令多了一个字母“C”,这个“C”就是“Code”的意思,翻译过来就是“代码”的意思,就是代码区(程序存储区)与A之间的数据传送指令。它可以用于内部程序存储区(内部ROM)与A之间的数据传送,也可以 用于外部程序存储区(外部ROM)与A之间的数据传送。因为程序存储区内外统一编址,所以一条指令就可以了。
3. MCS51的指令时序是什么样的,哪类指令的执行时间较长?
MCS -51的时序单位有四个,分别是节拍、状态、机器周期和指令周期。
MCS51指令系统中,按指令的长度和执行所需的机器周期分为六种时序:
单字节指令单机器周期。单字节指令双机器周期
双字节指令单机器周期。双字节指令双机器周期
三字节指令双机器周期。单字节指令四机器周期
机器周期越长,执行时间越长。所以其中需要四个机器周期的指令执行时间最长。
1. 在本实验中,能否控制显示数码的亮度?如何实现
可通过更改延时子程序内容或增加调用延时子程序次数,来控制通电时间的长短进而控制显示数码管的亮度。若通电时间缩短,则亮度降低。即扫描速度越快,亮度越低。
### 四、问题分析
一、遇到问题:
- 不理解为什么使用 RLC 而非使用 RRC ;
- 在不进行初始化p0的话,会导致上面的数码管显示一个 “8” ;
二、解决方法:
- 是由于本题图中的数码管是反接的,而又由于高位要对应高位,所以需要使用 RLC 来使之高位对高位,低位对低位
- 是由于器件本身的性质决定,51单片机本身对p0是输出高电平的,所以会导致上面的数码管显示一个 “8” ,所以在初始化时要赋值为0
实验02_Proteus仿真数码管显示报告的更多相关文章
- 实验02_Proteus仿真数码管显示代码
一.原理总结 利用两个寄存器R4和R5来存储两个数码管的显示效果,R4是前一个数码管显示所需,而R5是后一个数码管显示所需,利用左移操作RLC来使之每一位被依次输入到C中,然后将C输入到LED中(当L ...
- verilog实验1:基于FPGA蜂鸣器演奏乐曲并数码管显示
一.实验任务 利用FPGA进行代码开发,使蜂鸣器演奏出乐曲<生日快乐>,将音调显示在数码管.原理为蜂鸣器为交流源蜂鸣器,在引脚上加一定频率的方波就可以发声,而且发声的频率由所加方波决定.这 ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验六:数码管模块
实验六:数码管模块 有关数码管的驱动,想必读者已经学烂了 ... 不过,作为学习的新仪式,再烂的东西也要温故知新,不然学习就会不健全.黑金开发板上的数码管资源,由始至终都没有改变过,笔者因此由身怀念. ...
- AVR单片机8位数码管显示的程序实现
AVR单片机8位数码管显示的程序实现 转载:http://www.sohu.com/a/117255149_119709 2016-10-26 16:30 我们接着来完成 数码管的显示实验.现在我 ...
- 基于小脚丫的ADC081S101 电压采集595数码管显示
RTL结构图 采集模块运用SPI 通讯 MISO方式收集数据 module ad_collect(input sddata,input rst_n,output reg cs,output reg s ...
- Verilog HDL那些事_建模篇笔记(实验七:数码管电路驱动)
1.同步动态扫描 多个数码管的显示采用的是同步动态扫描方法,同步动态扫描指的是:行信号和列信号同步扫描,是一种并行操作. 2.数码管驱动电路实现思路 如果要求数码管显示我们想要的数字,首先需 ...
- 单线制DS18B20温度传感器LED数码管显示当前的温度值
/******************************************* 程序功能:利用单线制DS18B20温度传感器 LED数码管显示当前的温度值 ***************** ...
- 数码管显示“0~F”的共阳共阴数码管编码表
嵌入式设备中数码管显示“0~F”的方式是:定义了一个数组,里面含有16个元素,分别代表0~F,这样可以方便以后的调用.共阳极数码管编码表:unsigned char table[]={0xc0,0xf ...
- 音响音箱/恒温壶/电量显示/电子数字时钟等LED数码管显示驱动IC-VK1640B 8段12位/12段8位显示
市面上最常用的数码管为七段/八段显示,八段数码管比七段数码管多一个发光二极管单元(比七段数码管多一个点),又按能显示多少个"8"可分为1位.2位.4位等等.数码管又分为共阳极驱动/ ...
随机推荐
- Stream流中的常用方法foeEach和Stream流中的常用方法filter
延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用.(除了中介方法外,其余方法均为延迟方法) 终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似Stri ...
- 当我们谈论算法我们在谈论什么:由疫情核酸检测想到的分治算法(Divide-and-Conquer)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_159 北京的疫情一波未平一波又起,由此看来,战"疫"将是一场旷日持久的战争,绝不能掉以轻心.轻易言胜.病毒随时 ...
- 一般处理程序ashx接入微信服务器配置
首先在威信后台填写服务器相关配置,这里按照说明直接填写就好了.配置提交前在需要在我们服务端先准备号接受微信请求的url,对请求内容做验证. 1.准备接口配置信息 A.服务器URL 该URL用于开发者接 ...
- BZOJ4569 [Scoi2016]萌萌哒(并查集,倍增)
类似\(ST表\)的思想,倍增\(log(n)\)地合并 你是我家的吗?不是就来呀啦啦啦.还有要来的吗?没了!那有多少个家就映射多少答案呀 倍增原来这么好玩 #include <iostream ...
- (原创)【MAUI】在窗口(页面)关闭后获取其返回值
一.前言 作为一名 Winform 和 WPF 的老用户,没想到 MAUI 上变化那么大. 就像传统的窗口,我弹出一个模式窗口,关闭窗口后是可以获取到窗口的返回值的,即: DialogResult.后 ...
- jsp获取下拉框组件的值
jsp获取下拉框组件的值 1.首先,写一个带有下拉框的前台页 1 <%@ page language="java" contentType="text/html; ...
- Rust实战系列-基本语法
本文是<Rust in action>学习总结系列的第二部分,更多内容请看已发布文章: 一.Rust实战系列-Rust介绍 " 主要介绍 Rust 的语法.基本类型和数据结构,通 ...
- cad开发动态块对应的界面
为了使设计人员更加容易的操作动态块, 应经可能对动态块的制作制定相关的规范, 如动态块的属性 => 类的属性 动态块操作名称(作为变量名,后台数据库的字段) 动态块操作描述 (作为注释,后台数 ...
- HPC+时代,携手亚马逊云科技,共赴数字化升级的星辰大海!
高性能计算(HPC)和云计算曾是两个"平行世界",各自演绎着精彩,却鲜有交集. 传统上,HPC主要应用于大规模计算,如天气预报.石油勘探.药物研发等.这些任务通常借助超级计算机或计 ...
- const修饰符总结
1.什么是const? const就是constant的缩写,意思是"恒定不变的",它是定义只读变量的关键字,或者说const是定义常变量的关键字,常类型的变量或对象的值是不能被更 ...