⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scanled.c

📁 利用STC89C52制作一个万年历,文件包含原理图(Cadence-Allegro),PCB示意图及整个源程序,经调试可用,希望对于编程初学者有帮助.
💻 C
字号:
/***********************************************/
/*	显示器扫描子程序                           */
/*	DSBUF0显示位选,0~3=千~个				   */
/*	DSBUF1显缓,高/低半字千/百				   */
/*	DSBUF2显缓,高/低半字十/个                  */
/*	DSFL显示位闪烁控制,FLON闪烁总控制位,1~闪   */
/***********************************************/
void Scanled(void)					//显示扫描
{	
	uchar byte,skip=1;
	if(FLON)							//要闪烁否?
	{	
		if(DSBUF0&0X40)					//暗时段?0.32S交替
		{	
			if(!((DSFL^DSBUF0)&0X03))
			{		
				skip = 0;
				Out_595(10);
			}
		}
	}
	if(skip)
	{
		if(DSBUF0&0X02)					//由显示位选取显示数
		{ 
			byte = DSBUF2;
		}
		else
		{
			byte = DSBUF1;
		}
		if(DSBUF0&0X01)
		{	
			byte = byte&0X0F;
			Out_595(byte);
		}
		else
		{
			byte = (byte>>4)&0X0F;
			Out_595(byte);
		}
	}
	if(DSBUF0&0X02)						//DSBUF0确定位选输出
	{
		if(DSBUF0&0X01)
		{	
			V1 = 1;						//个位
			V2 = 1;
			V3 = 1;
			V4 = 0;
		}
		else
		{
			V1 = 1;						//十位
			V2 = 1;
			V3 = 0;
			V4 = 1;
		}
	}
	else
	{
		if(DSBUF0&0X01)
		{
			V1 = 1;						//百位
			V2 = 0;
			V3 = 1;
			V4 = 1;
		}
		else
		{
			V1 = 0;						//千位
			V2 = 1;
			V3 = 1;
			V4 = 1;
		}
	}
	DSBUF0++;	
}

//输出至HC595,数码管显示
void Out_595(unsigned char byte)
{
	uchar num,i; 
	num=tab[byte];
	CP_ST = 0;
	for(i=0;i<8;i++)
	{
		CP_SH = 0;
		if(num&0X80)                      //送数据  
			DS = 1;
		else
			DS = 0;
		CP_SH = 1;
		num=num<<1;
	}
	CP_ST = 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -