控制数码管的动态显示


文章目录

  • 控制数码管的动态显示
    • 一、动态显示与静态显示的比较
      • 1.什么是动态显示
      • 2.什么是静态显示
      • 3.优缺点对比
    • 二、如何控制多只数码管
      • 1.电路图
      • 2.代码
      • 3.程序分析
    • 三、控制多只数码管的方法

本次实验任务如下:

一、动态显示与静态显示的比较

1.什么是动态显示

  • 驱动电路可以使数码管正常显示数据,数码管的驱动方式有两种:动态显示驱动和静态显示驱动。
  • 动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起。
  • 另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
  • 当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。

2.什么是静态显示

  • 静态显示驱动静态驱动也称直流驱动。
  • 静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动。

3.优缺点对比

驱动类型 优点 缺点
动态显示驱动 可以控制多个数码管 占用资源少 节省电能 程序相对复杂
静态显示驱动 编写程序简单 显示亮度高 控制的数码管数量有限 占用资源过大

二、如何控制多只数码管

1.电路图

  • 利用触发器作为中间环节来控制数码管。
  • U2为段位触发器,控制数码管的显示。
  • U3为位选触发器,控制数码管的选择。
  • P0口作为数据的输出口。

2.代码

     ORG 0000HLJMP MAINORG 30H
;..................................................
;               数码管DS0显示‘0’
;..................................................
MAIN:   MOV  P0,#0C0H   ;段选数据0CLR    P1.0       ;选中U2为段选芯片,将U2的Ē写为低电平CLR  P1.2       ;时序引脚CKL为低电平,为接受数据做准备SETB P1.2       ;时序为上升沿,即将数据传送给U2SETB P1.0       ;关闭U2,使得U2不在接受数据MOV   P0,#0FEH   ;位选数据由P0口给出,选择DS0数码显示CLR  P1.1       ;选中U3位选芯片,将U3的Ē写为低电平CLR   P1.2       ;时序引脚CKL为低电平,为接收数据做准备SETB P1.2       ;时序为上升沿,即将数据传送给U3SETB P1.1       ;关闭U3,使得U3不在接收数据///LCALL DELAY       ;延时一段时间MOV  P0,#0FFH    ;关闭数码管,为下一个数码管显示做准备CLR    P1.0       ;选中U3位选芯片,将U3的Ē写为低电平CLR   P1.2       ;时序引脚CKL为低电平,为接收数据做准备SETB P1.2       ;时序为上升沿,即将数据传送给U3SETB P1.1       ;关闭U3,使得U3不在接收数据///
;..................................................
;               数码管DS1显示‘1’
;..................................................MOV  P0,#0F9HCLR  P1.0CLR     P1.2SETB P1.2SETB P1.0MOV   P0,#0FDHCLR     P1.1CLR     P1.2SETB P1.2SETB P1.1///LCALL DELAYMOV  P0,#0FFHCLR    P1.1CLR     P1.2SETB P1.2SETB P1.1///
;..................................................
;               数码管DS1显示‘2’
;..................................................MOV  P0,#0A4HCLR  P1.0CLR     P1.2SETB P1.2SETB P1.0MOV   P0,#0FBHCLR     P1.1CLR     P1.2SETB P1.2SETB P1.1///LCALL DELAYMOV  P0,#0FFHCLR    P1.1CLR     P1.2SETB P1.2SETB P1.1///
;..................................................
;               数码管DS1显示‘3’
;..................................................MOV  P0,#0B0HCLR  P1.0CLR     P1.2SETB P1.2SETB P1.0MOV   P0,#0F7HCLR     P1.1CLR     P1.2SETB P1.2SETB P1.1///LCALL DELAYMOV  P0,#0FFHCLR    P1.1CLR     P1.2SETB P1.2SETB P1.1///
;..................................................
;               延时程序
;..................................................
DELAY:  MOV  R7,#200    ;延时子程序DJNZ R7,$RET              ;返回主程序END

3.程序分析

  • 程序分为两个部分:主程序、子程序。
  • 主程序中又分四部分,分别是控制四个数码管的显示。
  • 子程序的作用是延时。

三、控制多只数码管的方法

  • 由上面的实验,我们得知,多只数码管的显示是通过段选和位选一起控制的。
  • 段选程序控制数码管的显示。
  • 位选程序控制数码管的选择。
  • 段选和位选程序如下:
;*****段选程序*********CLR P1.0CLR P1.2MOV P0,#0B0HSETB P1.2SETB P1.0
;*****位选程序*********CLR P1.1CLR P1.2MOV P0,#0F7HSETB P1.2SETB P1.1
  • 在来一个前面程序的精简版----使用查表发实现
;**************数码管动态显示‘0,1,2,3’*********************
ORG 0000H
LJMP MAIN
ORG 30H
;............................................................
;                 初始化定义
;............................................................
MAIN:   MOV R0,#0;段选数据指针MOV R1,#0FEH    ;段选数据初始化MOV DPTR,#TAB   ;“0~9”数据表
;............................................................
;                   主程序
;............................................................;****改变段码和位码****LOOP:  MOV A,R0    ;数据指针RO给累加器AMOVC A,@ A+DPTR   ;将数据表中指针所对应的数据传送给AMOV P0,A  ;数据传给数码管各段CLR P1.0CLR   P1.2SETB P1.2SETB P1.0MOV P0,R1 ;将位选数据传送给P0口,点亮所需数码管CLR P1.1CLR P1.2SETB P1.2SETB P1.1LCALL DELAY   ;延时一段时间MOV P0,#0FFH ;关闭数码管,为下一个数码管显示做消CLR P1.1CLR P1.2SETB P1.2SETB P1.1;****改变段码和位码****INC R0   ;数据指针加1,指向下一个数据地址MOV A,R1    ;位选数码管左移,准备得下一个数码管点亮RL AMOV R1,ACJNE R1,#0EFH,LOOP   ;判断DS3数码管是否点亮结束LJMP MAIN    ;循环本程序
;............................................................
;               延时程序
;............................................................
DELAY:  MOV R7,#200 ;延时子程序DJNZ R7,$RET  ;返回主程序指令
;............................................................
;               数码管数据表
;............................................................
TAB:    DB 000H,0F9H,0A4H,0B0H,099H ;0-9数据表DB 092H,082H,0F8H,080H,090HEND

时间:2018年10月19日13:28:43


-END-

单片机实验----控制数码管的动态显示相关推荐

  1. 51单片机控制系统的人机交互接口设计【51单片机与LED数码管的动态显示接口案例分析】

    本章节利用Keil uVision5和ISIS 7 Professional两个软件来进行仿真实验. [例]运用51单片机实现8位8段数码管的动态显示,LED数码管的段选数据由51单片机的P0口控制, ...

  2. Proteus:单片机锁存器控制数码管亮灭

    题目概述: 单片机锁存器控制数码管亮灭. 编程: #include <reg51.h> sbit dula=P1^0; sbit wela=P1^1; void main() { whil ...

  3. 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...

    基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...

  4. 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...

  5. 51单片机按键控制数码管0~9_AT89C51单片机数字电子钟的设计

    一. 设计目的与要求 设计目的:通过设计,培养运用已学知识解决实际问题的能力.查阅资料的能力.自学能力和独立分析问题.解决问题的能力和能通过独立思考. 设计要求:设计一个时.分可调的数字电子钟.断电后 ...

  6. 51单片机——共阳数码管的动态显示(有一个小问题)

    51单片机--数码管的动态显示 数码管的原理图及基本原理 例题(附代码) 数码管的原理图及基本原理 原理图 怎么工作的我就不介绍了,具体看我这个专栏中以前的博客 基本原理 动态显示实质上就是轮流点亮单 ...

  7. 键盘与显示实验程序c语言,51单片机按键控制数码管程序

    单片机数码管应用,数码管扫描 #include #define uint unsigned int #define uchar unsigned char uchar c; sbit p10=P1^0 ...

  8. 51单片机按键控制数码管0~9_51单片机外部中断

    前面为大家介绍的点亮LED灯.数码管.按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯.操作数码管,那可真是大才小用了.这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将 ...

  9. 51单片机按键控制数码管0~9_对于常用的数码管,你有多熟悉?

    数码管是嵌入式开发中比较常用的一个模块,本篇文章根据查阅的资料以及学习笔记整理成文,尽可能详尽的讲解常用数码管原理和使用方法.有不足和疏忽的地方,请不吝指正. 一.工作原理数码管是一种半导体发光器件, ...

最新文章

  1. Amazon AWS云计算服务平台概述
  2. Linux内核之浅谈内存寻址
  3. oracle协议适配器错误00530,oracle监听程序无法启动(TNS-12560: TNS: 协议适配器错误,TNS-00530: 协议适配器错误)...
  4. Flex 3 metadata tags 标签
  5. VC2008以资源形式实现多语言版本
  6. An error occured executing the microsoft VC++ runtime installer
  7. 前轮转向最大角度设计原来_转向不足是怎么回事?我们怎么去改变这种特性
  8. ad17 linux 版本,Altium Designer这些不同版本的软件之间的区别有多大呢?
  9. 用C语言显示所有Ascll表
  10. PuTTY/PuttyGen介绍
  11. c语言编写墓碑上的字符,恶的大写字母是什么
  12. 桌面文件不见了怎么办?3个详细教程
  13. 远程计算机怎么桌面显示不全,桌面显示不全怎么设置
  14. 聊聊cortex的Backoff
  15. Weakly-Supervised Physically Unconstrained Gaze Estimation论文翻译
  16. java毕业设计——基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现(毕业论文+程序源码)——智能在线考试信息管理系统
  17. 《联盟-互联网时代的人才变革》读后感
  18. C语言新手记:数列分段
  19. BMS数据格式规范【BMS Format Specification】
  20. 课程预约小程序制作功能介绍

热门文章

  1. 长尾关键词优化 如何有效的去做长尾关键词
  2. iOS快速集成支付宝(完善版)
  3. jquery实现诗句竖排,逐句显示
  4. 使用Mybatis动态生成MySQL表
  5. Axure之手机屏保滑动效果的实现
  6. 要求员工对企业忠诚度高?凭什么?
  7. 工程化软件开发的原则和实践浅谈(PPT)
  8. NLog日志框架-输出文件数量与大小控制
  9. python raise用处_raise是更好的return
  10. android ActionBar介绍