×
单片机 > 单片机程序设计 > 详情

89C51单片机数码管显示

发布时间:2021-12-15 发布时间:
|

数码管显示分为静态数码管显示和动态数码管显示

学习掌握数码管相关的内容,可以从以下三方面入手:

1.数码管电路图

2.译码器

3.进制转化


直接上图


数码管电路图

数码管电路的接法有共阴和共阳两种,这里采用共阴接法

从其中取出一个数码管进行分析

单个数码管

此处为一个8位的数码管,想要数码管显示出想要的数字,则需要对数码管进行高低电平的设置

1为高电平,0为低电平

分别对 a,b,c,d,e,f,g,dp进行1和0的编写,此处可以理解为二进制进行十六进制的转化

如图中所示,数字2的 八位二进制就可以表示为 0101 1011,读数为从dp依次读到a,转化为十六进制则是0x5b

数码管中各个数值对应的字节

0: 0x3f 1: 0x06 2: 0x5b 3: 0x4f 4: 0x66 5: 0x6d 6: 0x7d 7: 0x07

8: 0x7f 9: 0x6f A: 0x77 B: 0x7c C: 0x39 D: 0x5e E: 0x79 F: 0x71

打开电脑中的计算器中的程序员模式就可以进行检验

下面就剩译码器的问题,本次采用的138译码器,译码器的不同可能会有所差别


先来了解下138译码器的电路图

在138译码器中主要是P22,P23,P24管角的问题,三个管角对数码管LED1~8的控制


138译码器

管角定义

管角说明

真值表


看懂138译码器的真值表非常重要,H代表高电平,L代表低电平,当A0,A1,A2同时为L时,Y0(LED1)才会亮

简单代码演示


#include "reg51.h"

typedef unsigned char u8;

typedef unsigned int u16;


sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;


u8 code dizhi[]={0x3f,0x5e};


void main(){

LSC=0;

LSA=0;

LSB=0;

P0=dizhi[0];

}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式