为什么74162用共阴极数码管0到9只能加到9

3663人阅读
转自我的博客:
数码管,其实就是8个发光二极管按顺序排列而成的,所以让数码管显示特定的数字,只需要将该亮的二极管点亮,不该亮的灭了就好了。为了达到这个目的,就得参考电路图了,51HEI开发板的电路图在我的相册里有,但是整张贴出来就太大了,所以这里只显示部分。电路图如下:
乍一看这张图比较明显的就是最左边的单片机和两个锁存器U1和U2的引脚信息了,从D00到D07,两个锁存器是共用的,D00对应输出Y1和X1,D07对应输出Y8和X8。锁存器,从它的名字大概就可以知道它的用途了!其作用就是有的引脚输入改变的时候输出保持之前的状态,达到锁和存的效果(我目前的理解是这样的,不理解的可以上网搜官方解释)。查查74HC573是怎么用的,表格如下:
图中引脚1代表输出使能,11引脚代表锁存使能。锁存器嘛,打开锁存,让输出使能引脚处于低电平,锁存使能引脚输入高电平,传入对应的D,然后再使锁存使能引脚处于低电平,这样就能让输出保持不变。使用的过程就是打开锁,传数据,关锁保持。
说完了锁存器,回到第一张电路图,途中的锁存器1号引脚都接地,自然是低电平,11号引脚分别对应单片机的D26和D27,所以控制U1和U2就靠这2个引脚啦!
按道理说,8个数码管,应该有8*8=64根线才对啊,而第一张图中只有24个引脚,里面肯定有复用的引脚,所以不知道内部电路是没办法写滴,还好51HEI给的资料比较全。
2个LED管的内部电路如下:&
& & & &ABCDEFG &DP总共8个二极管,分别由11、7、4、2、1、10、5、3引脚控制,而1这8个引脚对应第一个图中的Y1到Y8,12、9、8、6呢则有两组,一组是共阴极的数码管,一组是共阳极的数码管。12、9、8、6呢则对应X1到X8,有2个,一组是X1到X4,一组是X4到X8,X1到X4是共阴极的,X5到X8是共阳极的。本实验只让共阴极的DIG1那个数码管显示数据,把别的都关掉。那只要12(X1)引脚输入低电平,986输入高电平,其他的都不会亮了,让DIG1显示什么数字,就由Y1到Y7来决定了。
经计算,让DIG1显示0到9还有小数点的表格如下:
table[11]={ 0x3f, 0x30, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x80
最终代码如下:#include
typedef unsigned char uint8;
typedef unsigned int
D24 = P2^4;
D25 = P2^5;
U1 = P2^6;
//U1锁存器的开关
U2 = P2^7;
//U2锁存器的开关
table[11]={ 0x3f, 0x30, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x80
void main(void)
uint8 counter = 0;
uint8 offset = 0;
TH0 = 0x3C;
TL0 = 0xB0;
TMOD = 0x01;
//计时模式选01模式
//关闭8X8点阵LED
if(TF0==1)
//每次计时是50ms,达到50ms后计时器0的溢出位位1,进行软件清零和计时器初始化.
counter++;
TH0 = 0x3C;
//12MHZ的晶振算出来是从15536开始计时,十六进制就是 0x3CB0
TL0 = 0xB0;
//高位取0x3C,低位取0xB0
if(counter==20)
//20*50ms=1000ms=1s
counter=0;
P0 = table[offset++];
if(offset==11)
offset = 0;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:71439次
积分:1114
积分:1114
排名:千里之外
原创:38篇
评论:13条
(1)(3)(1)(3)(1)(2)(23)(5)(2)(1)单片机数码管如何从1显示到9?
单片机数码管如何从1显示到9?
百度知道知数码
把 数码管的 1-9 的 对应的码算出来就好了例如:#include &AT89X51.H&//数字0-9的字形码unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};unsvoid delay02s(void);void main(void){ P1_0=0;//选通第一位数码管 while(1) { &for(dispcount=0;dispcount&10;dispcount++) &{ & P0=table[dispcount]; & delay02s(); &} }} void delay02s(void){unsigned char i,j,k;for(i=20;i&0;i--)for(j=30;j&0;j--)for(k=248;k&0;k--);}补充:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机(本文内容由百度知道网友出家人词悲贡献)
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百度知道知数码
百家号 最近更新:
简介: 标准发烧友,玩转数码圈。
作者最新文章

我要回帖

更多关于 数码管0到9 的文章

 

随机推荐