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

📄 display_isr.c

📁 基于SPMC75的变频电机驱动例子,相当于一个简单的变频器. 望对变频器开发的工程式师有一定的帮助!
💻 C
字号:

//========================================================================
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//             (C) COPYRIGHT 2004 SUNPLUS TECHNOLOGY CO.
//                    ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================================

//========================================================================
// Filename: Display_ISR.c
// Author: Lianshu  Mou (email: Lianshu@sunnorth.com.cn)
// Date: 2004/12/22
// Description: 
// Reference:
// Revision:
//      2004/12/22      First version
//========================================================================
#include "Spmc75_regs.h"
#include "mcMACRO.h"
#include "Option.h"
#include "Display.h"
#include "BCD-BIN.h"
#include ".\SPWM_Lib\SPWM_ISR.h"
#include "Backup_VAR.h"

extern unsigned int F_Temp;
extern unsigned int DC_BUS_Voltage;
extern unsigned int Moto_Current;

struct
{
	int Display_state;
	int Dis_Num;
	int Err_Num;
} Dis_set;

//=================================================================================================
// ----Function: void CD_Data_Dis(unsigned int Data);
// -Description: 数据显示转换和格式化输出显示
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
void CD_Data_Dis(unsigned int Data)
{
	LED_Dis_fill(14,0,0);		//显示" d "
	Data = BIN_BCD(Data);		//数据转换
	LED_Dis_fill(Data&0x0f,3,0);
	Data = Data >> 4;
	LED_Dis_fill(Data&0x0f,2,0);
	Data = Data >> 4;
	if((Data&0x0f) == 0)
		LED_Dis_fill(0xff,1,2);
	else LED_Dis_fill(Data&0x0f,1,0);
}

//=================================================================================================
// ----Function: void Data_Dis_ISR(unsigned int Data,int Data_Q,int DF);
// -Description: Q格式数据显示服务
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
void Data_Dis_ISR(unsigned int Data,int Data_Q,int DF)
{
	unsigned int Temp;
	Temp = DIV16(Data,Data_Q);		//获取整数
	Data = Data - Temp*Data_Q;		//获取小数部分的数据
	Temp = BIN_BCD(Temp);			
	Data = BIN_BCD(Data);			//数据转换
	switch(DF)
	{
		case 0: 
			LED_Dis_fill(Temp&0x0f,3,0);//显示整数部分
			Temp = Temp >> 4;
			LED_Dis_fill(Temp&0x0f,2,0);
			Temp = Temp >> 4;
			LED_Dis_fill(Temp&0x0f,1,0);
			Temp = Temp >> 4;
			LED_Dis_fill(Temp&0x0f,0,0);
		break;
		case 1:
			LED_Dis_fill(Temp&0x0f,2,1);//显示整数部分,并显示小数点
			Temp = Temp >> 4;
			LED_Dis_fill(Temp&0x0f,1,0);
			Temp = Temp >> 4;
			LED_Dis_fill(Temp&0x0f,0,0);
			if(Data_Q > 10)
				LED_Dis_fill((Data>>4)&0x0f,3,0);
			LED_Dis_fill((Data)&0x0f,3,0);
		break;
		case 2:
			LED_Dis_fill(Temp&0x0f,1,1);
			Temp = Temp >> 4;
			LED_Dis_fill(Temp&0x0f,0,0);//显示整数部分,并显示小数点
			LED_Dis_fill((Data>>4)&0x0f,2,0);
			LED_Dis_fill(Data&0x0f,3,0);
		break;
		case 3:
			LED_Dis_fill(Temp&0x0f,0,1);//显示整数部分,并显示小数点
			LED_Dis_fill((Data>>8)&0x0f,1,0);
			LED_Dis_fill((Data>>4)&0x0f,2,0);
			LED_Dis_fill(Data&0x0f,3,0);
		break;
		default: break;
	}
}

//=================================================================================================
// ----Function: void Display_ISR(void);
// -Description: 根据相应的显示设置填充相应的信息
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
void Display_ISR(void)
{
	int DF_Temp,Data_Q;
	unsigned int Dis_Data;
	if(SPMC75_Return_Moto_state() == STOP)
	{
		LED_Dis_fill(LED_Dis_Buffer[4]&0xfbff,4,2);
		LED_Dis_fill(LED_Dis_Buffer[4]|0x0004,4,2);		//灭运行灯
	}
	else LED_Dis_fill(LED_Dis_Buffer[4]|0x0400,4,2);		//点亮运行灯,并闪动
	if(Dis_set.Display_state == 0)
	{	//正常的信息显示,根据显示信息源设置显示信息
		LED_Dis_Buffer[4] |= 0x007b;
		switch(Dis_set.Dis_Num)
		{
			case 0:													//显示频率
				if(SPMC75_Return_Moto_state() == STOP) Dis_Data = F_Temp;
				else Dis_Data = SPMC75_Return_Currently_F();
				LED_Dis_fill(LED_Dis_Buffer[4]&0xfdfd,4,2);			//点亮频率灯
				Data_Q = 100;
				if(Dis_Data > 9999) DF_Temp = 1;
				else DF_Temp = 2;
			break;
			case 1://显示电流
				LED_Dis_fill(LED_Dis_Buffer[4]&0xfefe,4,2);			//点亮电流灯
				Dis_Data = Moto_Current;
				Data_Q = 100;
				DF_Temp = 2;
			break;
			case 2://显示电压
				LED_Dis_fill(LED_Dis_Buffer[4]&0xdfdf,4,2);			//点亮电压灯
				Dis_Data = DC_BUS_Voltage;
				Data_Q = 10;
				DF_Temp = 1;
			break;
			case 3://显示负载率
				LED_Dis_fill(LED_Dis_Buffer[4]&0xdddd,4,2);			//点亮频率和电压灯
				Dis_Data = MUL_DIV(Moto_Current,100,Rating_Current);
				Data_Q = 1;
				DF_Temp = 0;
			break;
				default: break;
		}
		Data_Dis_ISR(Dis_Data,Data_Q,DF_Temp);
	}
	else if(Dis_set.Display_state == 1)
	{//显示错误信息
		switch(Dis_set.Err_Num)
		{
			case 1:	//过流
				LED_Dis_fill(0xff,0,2);
				LED_Dis_fill(0xff,1,2);
				LED_Dis_fill(21,2,0);	//"o"
				LED_Dis_fill(13,3,0);	//"c"
			break;
			case 2:	//过压
				LED_Dis_fill(0xff,0,2);
				LED_Dis_fill(0xff,1,2);
				LED_Dis_fill(21,2,0);	//"o"
				LED_Dis_fill(26,3,0);	//"u"
			break;
			case 3:	//欠压
				LED_Dis_fill(0xff,0,2);
				LED_Dis_fill(0xff,1,2);
				LED_Dis_fill(19,2,0);	//"L"
				LED_Dis_fill(26,3,0);	//"u"
			break;
			case 4:	//过载
				LED_Dis_fill(0xff,0,2);
				LED_Dis_fill(22,1,0);	//"o"
				LED_Dis_fill(19,2,0);	//"L"
				LED_Dis_fill(23,3,0);	//"p"
			break;
			case 5:	//外部报警
				LED_Dis_fill(0xff,0,2);
				LED_Dis_fill(22,1,0);	//"o"
				LED_Dis_fill(19,2,0);	//"L"
				LED_Dis_fill(15,3,0);	//"E"
			break;
			case 6:	//额定电流没设定
				LED_Dis_fill(16,0,0);	//"F"
				LED_Dis_fill(10,1,0);	//"A"
				LED_Dis_fill(19,2,0);	//"L"
				LED_Dis_fill(19,3,0);	//"L"
			break;
			default: break;
		}
	}
	else if(Dis_set.Display_state > 1)
		LED_Dis_fill(LED_Dis_Buffer[4]&0xfff7,4,2);
	LED_Dis_TimeISR();										//显示中断服务
}

⌨️ 快捷键说明

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