C51 静态数码管 个人笔记

显示器介绍

单片机系统中常用的显示器有:

  • LED(Light Emitting Diode):发光二极管显示器
  • LCD(Liquid Crystal Display)液晶显示器
  • TFT 液晶显示器等。

LED显示器有两种显示结构:

  • 段显示(7段、米字型等)
  • 点阵显示(5×8、8×8点阵等)

我们这里用八段led数码管,静态数码管
LED数码管根据LED的不同接法可以分为2类

  • 共阴
  • 共阳

共阴共阳电路图

显示数字和字母表

共阳

0 1 2 3 4 5 6 7 8 9 A B C D E F 无显示
0xC0 0xF9 0xA4 0xB0 0x99 0x92 0x82 0xF8 0x80 0x90 0x88 0x83 0xC6 0xA1 0x86 0x8E 0xFF

共阴

0 1 2 3 4 5 6 7 8 9 A B C D E F 无显示
0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f 0x77 0x7c 0x39 0x5e 0x79 0x71 0x00

例如共阴的数字1 :
0000 0110
hgfe dcba

代码

#include <reg51.h>
typedef unsigned int u16;		 
typedef unsigned char u8;
#define delaytime 50000000
#define led P0
 
//这里用的静态数码管是共阳的

 //RAM 占用少,存在flash 里面:code
 //共阴的表,main中取反用
u8 code ledSegment  [16] = {	0x3f,	0x06,	0x5b,	0x4f,	0x66,	0x6d,
						0x7d,	0x07,	0x7f,	0x6f,	0x77,
						0x7c,	0x39,	0x5e,	0x79,	0x71};
void delay(u16 i)
{
	while(i--);
}


void main(void)
{
	int i=0;
	while(1)
	{
	 	led = ~ledSegment[i];
		delay(delaytime);
		i = (i+1)%16;
	}
}
posted @ 2018-11-05 10:06  YuQiao0303  阅读(327)  评论(0编辑  收藏  举报