1. 数码管的显示器及其接口

单片机系统中 常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、TFT液晶显示器。本文主要是关于LED显示器的说明。

LED显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5x8、8x8点阵等)。

LED数码管根据接法可以分为共阴和共阳。

如下图中,左边是共阴接法,右边是共阳接法。共阴表示8个led的阴极接到一起,共阳是8个led的阳极接到一起。

显示数字或字符时需要编码。如果是共阴接法,那么a/b/c/d/e/f/g/dp为高电平时对应的led就会亮,编码0~F分别是:

2. 数码管静态显示原理

LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入依次字形码后,显示字形可一直保持,知道送入新字形码为止,这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。

如下为proteus仿真静态数码管,共阳极,显示0.


typedef unsigned char u8;// code保存数据到寄存器中 共阴极码表
u8 code segment[] = {0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};#define LCDP1    P1
void show_LCD_static_P1()
{LCDP1 = (~segment[0])&0x7f;  // 共阳极显示while(1){}
}

3. 数码管动态显示原理

动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。点亮数码管采用动态扫描显示。松台扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以选择限流电阻时应该略小于静态显示电路中的。

4. 操作实践

如下是普中51-单核-A2板子上的数码管模块原理图,可以看到,右上有8个数码管用来显示字符,这8个数码管一端分别与LED1~LED8连接,另一端与P0口连接,所以通过控制P0口来显示我们需要的字符;LED1~LED8通过74HC138译码器与P2^2、P2^3、P2^4连接,这三个IO口控制是哪一个LED可以显示。

静态数码管显示,第一个数码管显示字符F

sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
#define LCD P0typedef unsigned char u8;// code保存数据到寄存器中
u8 code segment[] = {0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};void show_LCD_static()
{// LED1显示字符FP22 = 1;P23 = 1;P24 = 1;P0 =  segment[15];while(1){}
}

显示结果:

动态数码管显示,从第一个数码管开始依次显示0,1,2,3,4,5,6,7

#include "LCD.h"
#include "reg51.h"
#include "delay.h"sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
#define LCD P0typedef unsigned char u8;// code保存数据到寄存器中
u8 code segment[] = {0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};void show_P0_0()
{u8 i;for(i=0;i<8;i++){switch(i){case 0:P22 = 1; P23 = 1; P24 = 1; break;case 1:P22 = 0; P23 = 1; P24 = 1; break;case 2:P22 = 1; P23 = 0; P24 = 1; break;case 3:P22 = 0; P23 = 0; P24 = 1; break;case 4:P22 = 1; P23 = 1; P24 = 0; break;case 5:P22 = 0; P23 = 1; P24 = 0; break;case 6:P22 = 1; P23 = 0; P24 = 0; break;case 7:P22 = 0; P23 = 0; P24 = 0; break;     }P0 = segment[i];delay_ms(500);  // delay.h中的延时函数P0 = 0;}
}

显示结果:

上图的连接中左边的数码管1对应的是74HC138的15pin,即Y0,也就是74HC138的ABC都是0的时候输出对应的是Y0,正好对应的是代码中P22=P23=P24=0时,显示7.

【单片机】【数码管】数码管显示相关推荐

  1. STC89C52单片机 点亮两个数码管,可以显示 00——10 共 11 个数字

    手动显示 #include <reg52.h>//包含51头文件 #include <intrins.h>//包含移位标准库函数头文件#define uint unsigned ...

  2. 单片机c语言数码显示实验报告,单片机动态显示技术实验报告.doc

    桂林电子科技大学 实验报告 开 课 单 位 适用年级.专业 机械 课 程 序 号 课 程 代 码 实 验 名 称 <动态显示技术> 动态显示技术实验报告 一.实验目的 1.掌握动态显示技术 ...

  3. c语言数码管流动显示一个数,51单片机数码管动态显示 - 数码管动态扫描显示01234567程序(三种方案)...

    数码管动态扫描显示01234567程序二--51单片机动态显示共阳数码管01234567 原理图 c语言程序 程序如下: #include #define uint unsigned int #def ...

  4. 51单片机c语言显示hello,51单片机控制动态数码管显示12345和HELLO字样的设

    1.实验任务 如图4.13.1所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示"12345"字样:当开关接低电平 ...

  5. 51单片机控制动态数码管的显示

    动态数码管的显示 学会设计静态数码管的显示后,我们可以在各个静态数码管显示之间加入延时函数,写进while(1)循环内,这样就能实现动态数码管的显示.根据以前的内容,我们先生成延时函数,然后写一个简单 ...

  6. 单片机学习笔记-数码管的显示

    单片机学习笔记-数码管的显示 数码管的显示 1.首先我们来看一下开发板的原理图 由管脚分配可知,数码管的末端(也就是LED端),是由74138译码器来控制的. 2.下面是数码管显示的函数 这里我们使用 ...

  7. 51单片机入门——动态数码管显示详解

    51单片机:动态数码管显示 - 模块图 - 显示原理 – 消抖 静态数码管技术 + 人眼视觉停留 显示原理类似于以前的 胶片机放影视,也就是只要我切换的速度足够快你就看不出来其实我是一次次显示的(滑稽 ...

  8. 【51单片机】七段数码管显示实验+详细讲解

    [51单片机]七段数码管显示实验 前言 一.兵马未动,粮草先行--认识七段数码管 1.关于显示器 2.七段数码管 3.七段数码管的结构 4.数码管显示方法 二.数码管显示程序 1.静态显示 效果 2. ...

  9. 51单片机c语言按键扫描程序,单片机按键扫描数码管显示C语言程序

    电子科学与技术 单片机按键扫描数码管显示C语言程序 按键扫描数码管显示程序共定义了6个键的功能:K1.K2.K3.K4以及K5.K8组成的一对复合键,其中K2,K3为连击键,K5为上档键.在正常工作模 ...

最新文章

  1. 19.04.27--作业 打字游戏
  2. 【BZOJ-1113】海报PLA 单调栈
  3. 「2019 嵌入式智能国际大会」 399 元超值学生票来啦,帮你豪省 2600 元!
  4. 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)
  5. 实时获取浏览器滚动条高度(兼容写法)
  6. sqoop job入门 与sqoop增量导入
  7. 探索关系抽取中的多变知识
  8. SaaSBase:什么是SAP(思爱普) ERP?
  9. 无刷直流电机计算转速
  10. 异步十二进制加法计数器(统一使用上升沿触发的D触发器)
  11. String.indexOf 用法
  12. 字节跳动实习生转正工资_上海实习 | 字节跳动 广告设计实习生
  13. pyhton——爬小说网站(顶点最强国防生)
  14. 计算机翻译图片,扫描图片翻译在线翻译方法(纯干货~)
  15. sqlite3, IntegrityError: UNIQUE constraint failed when inserting a value
  16. 记录学习 - spring5
  17. 手游直播正在连接推流服务器,游戏直播时Airplay投屏卡死完美解决方案
  18. Spreadtrum_Android_8805和8810环境搭建和源码编译V1.0.1_Word文档
  19. 发布产品并了解用户行为(1)
  20. 想多活几年吗??在中国到底什么能吃什么不能吃!(转)

热门文章

  1. Vuex中的actions的参数
  2. 为什么你不能体面地做自己
  3. Java中多态的表现形式
  4. Freeswitch服务+语音网关设备发送短信功能
  5. Excel:单元格提取数字,并求和
  6. 【PC工具】压缩包密码破解工具,暴力破解压缩包密码,zip密码获取
  7. rss 是什么?有什么用?
  8. Java电商秒杀系统性能优化(一)——电商秒杀系统框架回顾
  9. 关于PLC控制系统中电动机过载保护方法的探究
  10. Celery分布式任务队列学习记录