1.数码管介绍
LED数码管:数码管是一种简单,价格便宜的显示器,是由多个发光二极管封装在一起组成“8”字型的器件
2.数码管引脚定义:
(1)单位
公共端:阳极接高电频,阴极接低电频能发光
3.练习:编写代码
单个数码管显示数字
#include <REGX52.H>
void main()
{
P2_4=1;
P2_3=0;
P2_2=1;
P0=0x7D;
while(1)
{
}
}
由上图,点亮第三位的数码管,为LED6接口,对应138译码器中的横杠Y5,所以需要根据8421转换一下变成101,即4+1=5,接通横杠Y5,再传到对应的数码管引脚上。
(1)数码管的A~G段和小数点依次点亮
(2)数码管依次显示0~9
(3)重复(1)步骤反复循环
#include <REGX52.H>
unsigned char SMGNoDot_CA[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x99};
void Deplay(unsigned int t)
{
while(t--);
}
//移位操作
// 0xff << 2, 原来:1111 1111 ,--->左移两位-->1111 1100
void DisPlaySMG()
{
char i;
for(i=1; i<=8; i++)
{
P1=0xff <<i;
Deplay(4000); //让每个字段依次显示
}
for(i=0;i<10;i++)
{
P1=SMGNoDot_CA[i];
Deplay(4000); //依次显示0-9
}
}
void main()
{
while(1)
{
DisPlaySMG();
}
}
(2)四位一体
有12个引脚,相较于一位的数码管,多分出来几个单元,它们的公共端单独的引出来(上图的12 9 8 6)未选的端口全部连在一起 A段连在一起 B段连在一起 C段连在一起 D段连在一起
数码管不能在同一时刻显示多个数字,要想达到多个数字的效果需要靠显示频率来制造一种视觉残留的效果(动态数码管显示)。即数码管直接扫描,会占用较多cpu
需要靠延时函数进行消影