标签: 单片机 C51 数码管

在之前的文章中我们学习了单片机是如何点亮一盏LED灯,并且让LED灯玩出花样本章我们把前面所学习到的内容融合起来,实现如题数码管显示,数码显示的自然就是数字了,本章节目标 -- 数码管显示数字。

功能概述

数码管显示的单片机的基础功能,数码管具有动态显示,和静态显示两种状态,其显示的原理就是利用人眼睛的视觉暂留现象,通过控制单片机IO快速刷新数码管的显示内容,达到人们眼中所见的稳定不变的显示。

显示原理

1.数码管通常有一位或多位一体,其中一位数码管中由8段LED灯组合而成,每段分别命名为a,b,c,d,e,f,g,dp,通过控制单片机的8个IO给这8个管脚施加不同的电压电位,就可以使其中的LED发光,从而组成不同的显示状态如0~9甚至是字母A~H都可以。

2.数码管由8个LED组成,将8个LED的其中一端并联到一起就形成了一个公共端,如果被并联的一端都是由LED的负极组成的话,那么这种数码管就称之为共阴极数码管,反之被并联的一端都是由LED的正极组成的话,这种数码管就称之为共阳极数码管。

3.多位一体数码管,多位一体数码管可以视作由多个一位数码管组成的数码管,通过高速扫描每一个位的端口,利用人眼的视觉暂留现象实现在人眼中多位同时显示的效果,这种方式称之为位选也叫位的选择。

电路连接

将一位数码管的a,b,c,d,e,f,g,dp端口分别与单片机的P00~P07相连,将数码管的公共端与电源地连接,这是个共阴极数码管,所以公共端是要连接到电源地的,那么这个数码管的驱动电位则为高电位驱动,单片机的IO输出高电位就能够点亮这个数码管。

程序设计

首先根据电路连接,P00~P07分别对应数码管的a,b,c,d,e,f,g,dp,即:

以共阴极数码管为例,根据共阴极数码管高电平点亮原则,可以以此计算出每个数字所代表的16进制位码。

首先数字0的位码应该怎么计算?这里我们首先就要看当数字0点亮时,数码管中应该是哪些LED段亮起哪些段是熄灭的:

根据以上两个例子,呢么是不是可以以此类推出剩下的数字码:

当然,不同的接法有不同的字码计算方法,不同的数码管的管脚排列也不一定相同,还要根据实际使用中来进行分辨和计算,本例中的字码如下:

数码管从0-9顺序显示数字,功能实现代码:

include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

void delay(uint n) //定义延时函数

{

uint x,y;

for(x = n;x>0;x--)

for(y = 110;y>0;y--);

}

uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xef,0xf6}; // 数字0-9

void main()

{

P0=0xff;  //P0口初始化高电平,时数码管初始熄灭状态

while(1)

{

P0 = table[i];

delay(1000);   //延时约1s

i++;

if(i>9) i = 0; // 从0-9显示后,再从0开始

}

}

总结

总体而言实现一位数码管显示数字,并按一定的规律显示其内容,相对来说还是比较简单的,实际上还是上一章流水灯中所用到的知识,本章的重点还是在于理解数码管位码的计算提取,大家可以根据本章所学到的内容举一反三,下一章中我们将要进一步使用数码管实现更具有挑战性的效果。

面向单片机编程(三)- 数码管显示相关推荐

  1. 单片机学习笔记————51单片机实现带数码管显示的象棋比赛专用计时器

    一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...

  2. c51时钟数码管显示流程图_基于单片机89C51的数码管显示时钟设计.doc

    基于单片机89C51的数码管显示时钟设计 基于单片机的数字时钟 摘 要单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉.但是却很少知道它的内部结构以及工作原理.由单片 ...

  3. 51单片机双机串口数码管显示排队叫号仿真设计( proteus仿真+程序+报告+讲解视频)

    51单片机双机串口数码管显示排队叫号仿真设计 1.主要功能: 2.仿真 3.程序 4.设计报告 1.1 设计背景与意义 1.2 设计目的 1.3 设计要求及内容 1.4 本文结构安排 2 总体设计方案 ...

  4. 单片机学习笔记————51单片机实现带数码管显示的加法简易计算器

    一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...

  5. 单片机入门——动态数码管显示

    前言 在实际应用中通常都需要显示多位数值,如果采用静态数码管显示就不够好,因此就需要采用另外一种显示方式,即数码管动态显示.开发板上板载2 个四位一体的共阴数码管,接下来我们就来介绍下如何使用51 单 ...

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

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

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

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

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

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

  9. 51单片机静态动态数码管显示

    51单片机静态动态数码管显示 通过此实训了解动态数码管的显示原理,掌握编码方法.共阴极和其阴极数码管的不同之处及常用设计方法. 实训设备 这里使用的377锁存器模块控制的数码管下面就是电路图 显示内容 ...

  10. 基于单片机病房呼叫系统数码管显示房号设计-基于单片机工业生产现场的光照强度控制设计-基于单片机多功能智能台灯设计-基于单片机二维码LCD显示设计-基于单片机多功能时钟闹钟万年历控制系统设计【毕设分享】

    1641基于单片机病房呼叫系统数码管显示房号设计 设计思路:此设计实现的功能通过按键模拟房号,当按键按下时会将房号编号发送到数目管上进行显示,并通过声光进行提示.包含的电路有:数码管显示电路.按键电路 ...

最新文章

  1. MongoDB 分页查询的方法及性能
  2. Spring Bean 装配和依赖注入
  3. python文件输出-python 文件的输入输出
  4. 菜鸟教程python位运算符_NumPy 位运算
  5. C++:18---const关键字(附常量指针、指针常量、常量指针常量)
  6. 7 centos 时钟跟物理机同步_centos7上使用chrony自动同步时间
  7. andorid actionBar
  8. iwlist/iwconfig/iw命令
  9. TongWeb和Tomcat的区别
  10. QT实现界面多语言切换
  11. date_sub函数
  12. O2O优惠券核销-数据分析
  13. 五金行业:强行业性的进销存系统具体看三项
  14. 时间序列的数据分析(七):数据平稳性
  15. 阅读笔记之《DisenQNet: Disentangled Representation Learning for Educational Questions》
  16. Java网站开发中的DAO是什么意思
  17. 苹果系统java小游戏_Mac自带小游戏怎么玩?
  18. LINUX解压缩TAR.GZ文件命令
  19. 马里奥游戏 java
  20. 如何利用状态机编程实现启保停控制(含Stateflow模型介绍)

热门文章

  1. VGG (Visual Geometry Group)
  2. 鱼书P70--mnist.py的导入和应用
  3. 搭建自己的NAS 系统
  4. 造成数据泄露的主要原因是什么?
  5. 哈尔滨星际探险机器人_[第26期]Jimu机器人星际探险
  6. 360n4s普通版Android7,360手机N4S骁龙版是什么意思 360N4S骁龙版与普通版的区别有哪些...
  7. 解决 vendor.js 过大的问题
  8. dpdk-20.11 编译和安装
  9. JavaEE1(4/23)
  10. kubernetes 节点维护 cordon, drain, uncordon