7段数码管

在学习本本章之前,你必须对7段数码管有基本了解。

硬件电路

下图中的电路使用了网络标签(线上深棕色的字),标记相同网络标签的导线是连在一起的。这种绘图方式很常用,会让整个图形更简洁。

软件代码

要让数码管显示数字,必须采用数码管各位轮流闪烁的方式(详见7段数码管)。

#include <Reg52.h >   
 char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0-9
 void disp(int n,int m,int x);
 
 void delay(int i)
{
	int x,y,z;
	for(x=i;x>0;x--)
	for(y=255;y>0;y--)
	for(z=255;z>0;z--);
}	

void main()
{
	while(1)
	{
		disp(123,456,789);
	}
}

void disp(int n,int m,int x)
{
	P2 = 0xFF;//1111 1111
	P0 = table[n/1000];
	delay(1);

	P2 = 0xFB;//1111 1011
	P0 = table[n/100];
	delay(1);
	
	P2 = 0xF7;//1111 0111
	P0 = table[n/10%10];
	
	delay(1);
	
	P2 = 0xF3;//1111 0011
	P0 = table[n%10];
	
	delay(1);

	P2 = 0xFF;
	P0= table[m/100];
	
	delay(1);
	
	P2 = 0xFB;
	P0 = table[m/10%10];
	
	delay(1);
	
	P2 = 0xF7;
	P0 = table[m%10];
	
	delay(1);
	
	P2 = 0xF3;
	P0 = table[x/100]; 
	
	delay(1);
	
	P2 = 0xFF;
	P0 = table[x/10%10];
	delay(1);
	
	P2 = 0xFB;
	P0 = table[x%10]; 
	delay(1);
}

 
============================找指导老师布置任务吧==============================