数码管简单操作(keil5)

数码管每一个位从0亮到f再跳入下一位,再全部位都一起从0亮到f

#include <STC15F2K60S2.H>
#include <intrins.h>
int i,j;
unsigned char code num[16]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x88,0x80,0xc6,0xc0,0x86,0x8e};//0123456789abcd
/*************************************************/
void initsystem(unsigned char i)
{
	switch(i)
	{
		case 4:
			P2=0X8f&(P2|0xe0);//打开y4锁存器
		break;
		case 5:
			P2=0xbf&(P2|0xe0);//打开y5锁存器
		break;
		case 6:
			P2=0xdf&(P2|0xe0);//打开y6锁存器
		break;
		case 7:
			P2=0xff&(P2|0xe0);//打开y7锁存器
		break;
		case 0:
			P2=0x1f&(P2|0xe0);//关闭锁存器
		break;
	}
}
/*******************************************/
void Delay100ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 5;
	j = 52;
	k = 195;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
/*****************************************************************/
void SMG_change()//每位从0亮到f,再全部从o亮到f。
{
	for(i=0;i<8;i++)
	{
	initsystem(6);
	P0=0x01<<i;
		for(j=0;j<16;j++)
		{
		initsystem(7);
		P0=num[j];
		Delay100ms();
		Delay100ms();
		Delay100ms();
		}
	}
		initsystem(6);
		P0=0xff;
		for(j=0;j<16;j++)
		{
		initsystem(7);
		P0=num[j];
		Delay100ms();
		Delay100ms();
		Delay100ms();
		}
}
/*********************************************************************/
void main()
{
	initsystem(4);//开y4
	P0=0xff;//关灯
	initsystem(0);//关y4
	initsystem(5);//开y5
	P0=0x00;//关继电器蜂鸣器
	initsystem(0);//关y5
	while(1)
	{
		SMG_change();
	}
}
上一篇:KEIL5软件安装步骤(全图文,全网最详细)


下一篇:keil5软件安装以及keil环境配置