小白自学c51笔记之数码管2

发布者:温柔的爱情最新更新时间:2022-04-19 来源: eefocus关键字:C51  数码管 手机看文章 扫描二维码
随时随地手机看文章

1.动态数码管原理:

先上个原理图:

在这里插入图片描述

数码管其实就是多个led组成的(小数点也是一个),如上图,一个8加上小数点就是一个数码管,一共八个led,上图是八个数码管。

数码管按接法不同可分为共阴极和共阳极数码管。字面意思,共阴极就一个数码管的八段led阴极连一起,共阳极就一个数码管的八段led阳极阳极连一起。

声明一下,我的数码管是共阴极的。

下面是两张静态数码管(我觉得动态数码管就是把下面两张图片里GND和VCC去掉而接到其他管口上):

共阴:

在这里插入图片描述

共阳:

右上角是5v,即VCC高压,图为静态数码管

右上角是5v,即VCC高电压

只要控制a~g,dp的电压就可以控制led亮暗。


而动态数码管不同,如第一张图有八个数码管,如果都像静态数码管一样则需8×8=64个管口控制,所以动态数码管利用动态扫描原理来达到不同数码管亮不同数字(或字母:A,b,C,d,E,F)的目的。


动态扫描,看字面意思,扫描,是一个数码管一个数码管亮的且每次只亮一个,但因为人眼有视觉暂留,所以只要通过适当延时使亮的那段时间足够短以至于下一个数码管亮时上个数码管在我们眼中还是亮的就可以达到我们的目的——它们一起亮。


这样我们就可以用八个管口控制哪个数码管亮,用八个管口控制该数码管亮哪几段led,总共用了16个大大减少所需管口数。再加上38译码器,3通道输入,8通道输出,只需3+8=11个管口便可控制八个数码管。


这里有两个概念,段选和位选。


位选:“位”,顾名思义,选择哪个位置的数码管亮。


段选:“段”,选择已被选中的数码管哪几“段”led亮。


看开头给出的原理图,可知P0八个口控制段选(具体哪个口控制哪段led从图中很容易就可以看出来),先通过D74HC245是为了增加驱动,单片机电流不够数码管会很暗(有人说共阴极的电流才会不够,共阳极就可以直接驱动,我不太懂,待查)。要想知道位选由单片机哪个口控制还有一张图:

在这里插入图片描述

由之前已知的此芯片功能,我们可以通过控制P2^2,P2^3,P2^4口输入值来控制Y0(上横线)~Y7(上横线)哪个输出低电压,输出低电压的那个口连接的数码管就算被选中了。


想让该数码管发光,接下来段选那边肯定要输高电压了,由此确定P0口的值。


2.动态数码管编程:


#include

sbit  LSA=P2^2;

sbit  LSB=P2^3;

sbit  LSC=P2^4;

unsigned int code smgduan[16]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  //共阴极数码管表,分别对应让数码管显示0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F;这是c语言中数组定义和初始化


void delay(unsigned int i)    //自定义函数delay

{

    while(i--);

}

void bigdisplay()     //自定义函数bigdisplay

{

  unsigned int i;

for(i=0;i<8;i++)     //c语言中for语句

{

switch(i)     //c语言中switch语句 ,此处为了处理亮第几个数码管问题——位选

  {

   case 0:LSA=0,LSB=0,LSC=0;break;     //i的值与哪个case后相同就执行哪条语句,再由真值表知38译码器输出状态,最后知亮第几个数码管 (编程时思维方向与此相反)

   case 1:LSA=1,LSB=0,LSC=0;break;

   case 2:LSA=0,LSB=1,LSC=0;break;

   case 3:LSA=1,LSB=1,LSC=0;break;

   case 4:LSA=0,LSB=0,LSC=1;break;

   case 5:LSA=1,LSB=0,LSC=1;break;

   case 6:LSA=0,LSB=1,LSC=1;break;

   case 7:LSA=1,LSB=1,LSC=1;break;

  }

  P0=smgduan[i];     //给P0赋值,值为上面smgduan数组中第i个数,注意:从0开始算;c语言中数组用法;若将这一条语句中i换成i+8最终效果图在下面。

  delay(100);     //调用函数delay来延时,延时不能太短也不能太久

  P0=0x00;     //P0全归零,不然亮第二个数码管时会有干扰,产生重影

}

}


void main()     //主函数

{

  while(1)     // 1一直符合循环条件,一直循环{}内语句

{

bigdisplay(); //调用上面编好的函数bigdisplay,如果不自定义函数bigdisplay,也可直接在主函数main中写程序

}

}


效果:

1.原来的代码:

在这里插入图片描述

2.将上面代码中指定的i换掉之后:记得从右往左看

关键字:C51  数码管 引用地址:小白自学c51笔记之数码管2

上一篇:小白自学c51笔记之独立按键
下一篇:小白自学c51笔记之数码管1——D74HC245和D74HC138

推荐阅读最新更新时间:2024-11-11 11:36

数码管显示小数点
数码管的小数点单独有一位来控制,这就是物理世界和数字世界的神奇之处,数码管用来显示数字和字母的led段有7个,再加上小数点共8个,正好对应一个字节的位数,这样使用单片机的一个口正好可以全部操作,通过 http://www.cnblogs.com/coloregg/p/3565486.html 可以看到点是单独位来操作,比如显示2.,只需将数字2对应的二进制数第1位改为1即可,在实际中,我们将要带点显示的数字和0x80相或就可以,其原理如下: 共阴极(1亮0灭): DP G F E D C B A 0 1 0 1 1 0 1 1 = 0x5B 1 0 0 0
[单片机]
单片机中级项目13丨矩阵按键数码管移位显示
单片机中级项目13丨矩阵按键数码管移位显示 /******************************************************************************* * 实 验 名 : 动态显示数码管实验 * 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1 * 实验效果 : 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。 * 注 意 : *******************************************************************************/ #include reg51.h #def
[单片机]
#C51串口通讯3-#一串数据#中断即时解析用户自定义协议
前言 1.上一章(中断定时+超时接收)的逻辑,适用于协议较为复杂的情况,即中断判断接收结束,数据放置缓冲区,主函数中解析数据。 2.实际开发中,用户自定义协议的帧头是可预见的,包括数据长度等。 3.本章测试使用中断即时解析自定义协议 提示:以下是本篇文章正文内容,下面案例可供参考 一、场景 示例一串数据:固定帧头区(AA 66 AA )+数据类型(01/02)+数据区+和校验+异或校验 其中,01LED,02蜂鸣器 ,数据区为工作时间,低位在前高位在后 二、编程实现 1.知识点 a.“状态机”的算法思想 状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。 包括:State(状态)、Event(事件)、
[单片机]
#<font color='red'>C51</font>串口通讯3-#一串数据#中断即时解析用户自定义协议
数码管显示数字之C语言模拟
#define N 10 //最多可以输入10个数字 #i nclude stdio.h int check(char array ,int n) { //检查输入是否全为数字 int i; for(i=0;i n;i++) if(array '0'||array '9') return -1; return 1; } main() { char alpha ={{'*','*','*','*'},{'*',' ',' ','*'},{'*&
[单片机]
单片机静态办法点亮数码管电路图解
  电路只驱动一个数码管,该数码管为共阴管,公共端接地,段管直连到单片机的P2口,所用单片机为AT89C52,电路图如下所示:   经过昨日对数码管的阐明,咱们知道假定要害亮一个共阴型的数码管,只需求把公共端连到低电平,段管给高电平就能够,如下图所示。   所以看程序:   第4行:共阴数码管的字段表;   第17行:for循环,循环10次,操控数码管的闪现内容;   第19行:将所要闪现的内容送给数码管;
[单片机]
单片机静态办法点亮<font color='red'>数码管</font>电路图解
c51串口通信程序
//------------------------------------------------------------------------------------------------------------------- //程序名称:串口通信程序 //功能:实现单片机与PC之间的串口通信,PC向单片机发送,单片机返回PC所发的内容 //硬件连接:单片机的P3.0 P3.1经max232电平转化后与PC串口相连 //测试情况:本程序已经由我亲自上机测试,确保无误 //----------------------------------------------------------------------------
[单片机]
C51编译器-高级编程技巧(4)-寄存器的应用
Register Usage寄存器应用 汇编程序可以在改变当前寄存器组中所有寄存器和ACC,B,DPTR以及PSW中的内容。当在汇编程序中调用C函数时,要注意这些寄存器都有可能被C函数改变。 Overlaying Segments段覆盖 如果程序在连接和定位过程中执行了覆盖过程,那么每个汇编子程序都有一个独一无二的程序段是非常重要的。这对于在段覆盖过程中,根据各个不同的段的计算函数之间的偏移是很必要的。当出情以下情况时,汇编子程序的数据区可以包括在覆盖分析之中: (1)所有的段名都用Cx51命名规则命名。 (2)每个使用局部变量的汇编函数都指定一个数据段。这个数据段可能被其他函数在传递数时访问。参数必须依次序存放。 Exa
[单片机]
8位单片机体系的直接软件构架(C51系列)
1.启动文件的编制 $ NOMOD51 ;Ax51宏汇编器控制命令:禁止预定义的8051 ;自定义上电后需要初始化的储存区域 ;间接寻址区IDATA起始地址固定为0 IDATALEN EQU 8OH ;指定需要初始化的IDATA区长度(以字节为单位) XDATASTART EQU OH ;需要初始化的外部直接寻址区XDATA的起始地址 XDATALEN EQU OH ;指定需要初始化的XDATA区长度(以字节为单位) PDATASTART EQU OH ;指定需要初始化的页寻址区PDATA起始地址 PDATALEN EQU OH ;指定需要初始化的PDATA
[单片机]

推荐帖子

PLC到底是什么呢?
PLC到底是什么呢?PLC到底是什么呢?百度:)PLC英文全称ProgrammableLogicController,中文全称为可编程逻辑控制器,定义是:一种数字运算操作的电子系统,专为在工业环境应用而设计的。還有一種說法,電力線通信(PowerLineCommunication),信息工程學中,在傳送電力的電線上同時傳送的信息。PLC就是可编程逻辑控制器PLC就是可编程逻辑控制器
dataidz RF/无线
【2024 DigiKey创意大赛】+ 用于车速估算的空速表制作
一、作品简介2SMPP03是一款气压计,这款气压计在外接空速管的基础上,可以作为空速计来使用。一般此类应用都会被应用在航模上,而我想到这种用法其实在汽车工业上也可以大有作为。汽车在隧道等GPS信号不佳的地方行驶时,对于里程和位置的估计,只能依靠转速表,陀螺仪,加速度计等传感器进行测量。这些传感器都有一个共同的问题,就是测不准,会受到其他因素干扰:比如里程表会受到胎压影响,惯性传感器会受到路面情况干扰等。因此需要多个传感器参与,使用不同的方法来测量,并将数据通过算法进行融合,以此减少
顺竿爬 DigiKey得捷技术专区
MSP430 Main Memory Bootloader 介绍
在MSP430G2xx中实际上具有一个ROM版本的BSL(Bootloader),但是这个BSL仅仅支持外部MCU通过UART进行在线升级,而且而且所有的协议全部固化,无法进行修改或者更改其他接口方式进行升级操作。所以这个需要一个可以在主程序中运行的Bootloader,可以让外部MCU进行用户自定义的升级操作。同时TI也提供了一个基于MSP430G2553的参考例程,可以通过如下链接进行下载。http://software-dl.ti.com/msp430...test/in
fish001 微控制器 MCU
终于可以踏上回家的行程,我兴奋啊!祝福兄弟姐妹们新年快乐!全家幸福!
终于可以踏上回家的行程,我兴奋啊!祝福兄弟姐妹们新年快乐!全家幸福!终于可以踏上回家的行程,我兴奋啊!祝福兄弟姐妹们新年快乐!全家幸福!我明天了。哈哈哈。还在上班,一路顺风。呵呵,回家吃多点,eeworld明年更加需要你!亢奋中!!!!!!!~~~~~~~~~~大家都回家过年了,我还要留守呢!!呵呵。。。祝大家新年快乐!!新年大展宏图啊!!!12号才回家,羡慕ing痛苦的是还要上班更痛苦的整个,放假了还要加班JFand祝福····2rd祝福大家,
renkes 嵌入式系统
摄像头的寿命有多久?
:这要看摄像头本身的电路设计而定,如有些以COMS为基础的摄像头使用上一般都比以CCD为基础的摄像头寿命要短;COMS的摄像头有些甚至使用几个月便告终正寝,而CCD摄像头若配合品质优良的供电器皆可持续通电使用几个月,甚至数年都没什么问题。  一般摄像头的工作温度为―10度~50度,所以在这个范围之外,是有可能导致摄像头故障或暂时失灵的。摄像头的寿命有多久?
intebank 安防电子
采用BL8301的高性能ppfc镇流器(T8 36W)
500){this.resized=true;this.width=500;this.alt=\'这是一张缩略图,点击可放大。\\n按住CTRL,滚动鼠标滚轮可自由缩放\';this.style.cursor=\'hand\'}\"resized=\"true\">小弟初来乍到,特发一量产的镇流器给大虾们看看。欢迎大哥大姐、弟弟妹妹来砸砖。最好斑竹加精!!!该镇流器具有预热启动以及漏气保护、换灯自启动等功能,参数如下:PF0.9(220V的时候可以调到0.95以上)THD1
zbz0529 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved