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

📄 display.c

📁 基于51单片机系统
💻 C
📖 第 1 页 / 共 2 页
字号:
			LED_DCLK2 = 0;

			if(Data2_1 & 0x0001)
			{
				LED_DIN2 = 1;
			}
			else
			{
				LED_DIN2 = 0;
			}

			LED_DCLK2 = 1;

			Temp = Data2_1>>1;
			Data2_1 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK2 = 0;

			if(Data1_1 & 0x0001)
			{
				LED_DIN2 = 1;
			}
			else
			{
				LED_DIN2 = 0;
			}

			LED_DCLK2 = 1;

			Temp = Data1_1>>1;
			Data1_1 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK2 = 0;

			if(Data0_1 & 0x0001)
			{
				LED_DIN2 = 1;
			}
			else
			{
				LED_DIN2 = 0;
			}

			LED_DCLK2 = 1;

			Temp = Data0_1>>1;
			Data0_1 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;	
	}
	else
	{
		Data3_2 |= Hundred;
		Data2_2 |= Decade;
		Data1_2 |= One;
		Data0_2 |= Tenth;

		switch(Channel)			// 确定要选通的驱动芯片
		{
			case 10:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 0;
				LED_A0 = 0;
				break;
			case 12:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 0;
				LED_A0 = 1;
				break;
			case 14:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 1;
				LED_A0 = 0;
				break;
			case 16:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 1;
				LED_A0 = 1;
				break;
		}

		for(i=0; i<12; i++)      // 更新数码管显示 
		{
			LED_DCLK2 = 0;

			if(Data3_2 & 0x0001)
			{
				LED_DIN2 = 1;
			}
			else
			{
				LED_DIN2 = 0;
			}

			LED_DCLK2 = 1;

			Temp = Data3_2>>1;
			Data3_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK2 = 0;

			if(Data2_2 & 0x0001)
			{
				LED_DIN2 = 1;
			}
			else
			{
				LED_DIN2 = 0;
			}

			LED_DCLK2 = 1;

			Temp = Data2_2>>1;
			Data2_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK2 = 0;

			if(Data1_2 & 0x0001)
			{
				LED_DIN2 = 1;
			}
			else
			{
				LED_DIN2 = 0;
			}

			LED_DCLK2 = 1;

			Temp = Data1_2>>1;
			Data1_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK2 = 0;

			if(Data0_2 & 0x0001)
			{
				LED_DIN2 = 1;
			}
			else
			{
				LED_DIN2 = 0;
			}

			LED_DCLK2 = 1;

			Temp = Data0_2>>1;
			Data0_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;	
	}
}

void UpdateVoltage_3(unsigned char Channel, unsigned int Result)	// 数码管17-21显示更新 
{
	unsigned int Data3_1 = 0x0f00;
	unsigned int Data2_1 = 0x0e00;
	unsigned int Data1_1 = 0x0d80;
	unsigned int Data0_1 = 0x0c00;

	unsigned int Data3_2 = 0x0b00;
	unsigned int Data2_2 = 0x0a00;
	unsigned int Data1_2 = 0x0980;
	unsigned int Data0_2 = 0x0800;

	unsigned char Hundred;
	unsigned char Decade;
	unsigned char One;
	unsigned char Tenth;

	unsigned int  Temp;
	unsigned char i;

	Hundred = Result/0x0333;    // 计算百位数值
	
	Result %= 0x333;
	Decade = Result/0x52;		// 计算十位数值

	Result %= 0x52;
	One = Result/0x08;			// 计算个位数值

	Result %= 0x08;
	Tenth = Result*1.22;         // 计算小数位数值

	if(Channel%2)
	{
		Data3_1 |= Hundred;		// 准备要发送的数据
		Data2_1 |= Decade;
		Data1_1 |= One;
		Data0_1 |= Tenth;

		switch(Channel)			// 确定要选通的驱动芯片
		{
			case 17:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 0;
				LED_A0 = 0;
				break;
			case 19:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 0;
				LED_A0 = 1;
				break;
			case 21:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 1;
				LED_A0 = 0;
				break;
		}

		for(i=0; i<12; i++)		  // 更新数码管显示 
		{
			LED_DCLK3 = 0;

			if(Data3_1 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data3_1>>1;
			Data3_1 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK3 = 0;

			if(Data2_1 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data2_1>>1;
			Data2_1 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK3 = 0;

			if(Data1_1 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data1_1>>1;
			Data1_1 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK3 = 0;

			if(Data0_1 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data0_1>>1;
			Data0_1 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;	
	}
	else
	{
		Data3_2 |= Hundred;
		Data2_2 |= Decade;
		Data1_2 |= One;
		Data0_2 |= Tenth;

		switch(Channel)			// 确定要选通的驱动芯片
		{
			case 18:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 0;
				LED_A0 = 0;
				break;
			case 20:
				LED_A3 = 0;
				LED_A2 = 0;
				LED_A1 = 0;
				LED_A0 = 1;
				break;
		}

		for(i=0; i<12; i++)      // 更新数码管显示 
		{
			LED_DCLK3 = 0;

			if(Data3_2 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data3_2>>1;
			Data3_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK3 = 0;

			if(Data2_2 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data2_2>>1;
			Data2_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK3 = 0;

			if(Data1_2 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data1_2>>1;
			Data1_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;
		
		for(i=0; i<12; i++)
		{
			LED_DCLK3 = 0;

			if(Data0_2 & 0x0001)
			{
				LED_DIN3 = 1;
			}
			else
			{
				LED_DIN3 = 0;
			}

			LED_DCLK3 = 1;

			Temp = Data0_2>>1;
			Data0_2 = Temp;
		}
		
		LED_E = 0;
		LED_E = 1;	
	}
}

void WrongAlarm(unsigned char Channel)	  // 使数码管闪烁,显示错误 
{
	unsigned int Data;
	unsigned int Temp;
	unsigned char i, m;

	if(Channel==21)
	{
		Data = 0x06f0;
	}
	else
	{
		if(Channel%2)
		{
			m = Channel + 1;
			
			if(g_State[m]==0x00)
			{
				Data = 0x06f0;		
			}
			else
			{
				Data = 0x06ff;
			}
		}
		else
		{
			m = Channel - 1;
			
			if(g_State[m]==0x00)
			{
				Data = 0x060f;		
			}
			else
			{
				Data = 0x06ff;
			}
		}
	}

	if(Channel<9)
	{
		for(i=0; i<12; i++)
		{
			LED_DCLK1 = 0;
	
			if(Data & 0x0001)
			{
				LED_DIN1 = 1;
			}
			else
			{
				LED_DIN1 = 0;
			}
	
			LED_DCLK1 = 1;
	
			Temp = Data>>1;
			Data = Temp;
		}
	}
	else
	{
		if((Channel>9)&&(Channel<17))
		{
			for(i=0; i<12; i++)
			{
				LED_DCLK2 = 0;
		
				if(Data & 0x0001)
				{
					LED_DIN2 = 1;
				}
				else
				{
					LED_DIN2 = 0;
				}
		
				LED_DCLK2 = 1;
		
				Temp = Data>>1;
				Data = Temp;
			}	
		}
		else
		{
			for(i=0; i<12; i++)
			{
				LED_DCLK3 = 0;
		
				if(Data & 0x0001)
				{
					LED_DIN3 = 1;
				}
				else
				{
					LED_DIN3 = 0;
				}
		
				LED_DCLK3 = 1;
		
				Temp = Data>>1;
				Data = Temp;
			}
		}
	}

	LED_E = 0;
	LED_E = 1;
}

void ReturnFine(unsigned char Channel)		// 使数码管停止闪烁,恢复正常 
{
	unsigned int Data;
	unsigned int Temp;
	unsigned char i, m;

	if(Channel==21)
	{
		Data = 0x0600;
	}
	else
	{
		if(Channel%2)
		{
			m = Channel + 1;
			
			if(g_State[m]==0x00)
			{
				Data = 0x0600;		
			}
			else
			{
				Data = 0x060f;
			}
		}
		else
		{
			m = Channel - 1;
			
			if(g_State[m]==0x00)
			{
				Data = 0x0600;		
			}
			else
			{
				Data = 0x06f0;
			}
		}
	}
	
	if(Channel<9)
	{
		for(i=0; i<12; i++)
		{
			LED_DCLK1 = 0;
	
			if(Data & 0x0001)
			{
				LED_DIN1 = 1;
			}
			else
			{
				LED_DIN1 = 0;
			}
	
			LED_DCLK1 = 1;
	
			Temp = Data>>1;
			Data = Temp;
		}
	}
	else
	{
		if((Channel>9)&&(Channel<17))
		{
			for(i=0; i<12; i++)
			{
				LED_DCLK2 = 0;
		
				if(Data & 0x0001)
				{
					LED_DIN2 = 1;
				}
				else
				{
					LED_DIN2 = 0;
				}
		
				LED_DCLK2 = 1;
		
				Temp = Data>>1;
				Data = Temp;
			}	
		}
		else
		{
			for(i=0; i<12; i++)
			{
				LED_DCLK3 = 0;
		
				if(Data & 0x0001)
				{
					LED_DIN3 = 1;
				}
				else
				{
					LED_DIN3 = 0;
				}
		
				LED_DCLK3 = 1;
		
				Temp = Data>>1;
				Data = Temp;
			}
		}
	}

	LED_E = 0;
	LED_E = 1;
}

void ControlDisplay(unsigned int Value)		// 更新控制控制数码管的显示 
{
	unsigned int Temp;
	unsigned char i;

	for(i=0; i<12; i++)
	{
		LED_DCLK3 = 0;

		if(Value & 0x0001)
		{
			LED_DIN3 = 1;
		}
		else
		{
			LED_DIN3 = 0;
		}

		LED_DCLK3 = 1;

		Temp = Value>>1;
		Value = Temp;
	}

	LED_A3 = 1;
	LED_A2 = 0;
	LED_A1 = 1;
	LED_A0 = 0;
	LED_E = 0;
	LED_E = 1;	
}

⌨️ 快捷键说明

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