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

📄 display.c

📁 MSP4250单芯片电子称,采样数据无线发送给主机,编译环境IAR for MSP430
💻 C
字号:
/*
*********************************************************************************************************
*                                              msp430
*                                          display functions
*
* File    : DISPLAY.C
* Data	  : April 12, 2007
*********************************************************************************************************
*/

#include "hal.h"

/*
*********************************************************************************************************
*                                              PROTOTYPES
*********************************************************************************************************
*/

//LEDARY: xxxx_yyyy
//		xxxx: led3..0	
//		yyyy: 0000	turn back
//			  1111	stop
//			  ....	delay
//			
const char LEDARY[] = {
	B0000_1111, 	 		        								//All off       	0
	B0001_1111, 			 										//LED1  			1
	B0010_1111, 				 									//LED2  			2	working
	B0100_1111, 				 									//LED3  			3
	B1000_1111,  			 										//LED4  			4
	B1111_1111,  			 										//All on  			5	charge over
	
	B0001_0001, B0000_1111,    										//No power			6
	B0001_0111, B0011_0111, B0111_0111, B1111_0111, B0000_1111,  	//charging			8
	
	B0010_0011, B0100_0010, B0010_0011, B0100_0011, B0000_1111,  	//waiter error 		13
	B0001_0011, B1000_0011, B0001_0011, B1000_0011, B0000_1111,  	//master error 		18
	
	B1111_0111, B1110_0111, B1111_0111, B1110_0111, B0000_1111,  	//calibrating Low	23
	B1111_0111, B0111_0111, B1111_0111, B0111_0111, B0000_1111,  	//calibrating High	28
	
	B0110_0111, B1111_0111, B0110_0111, B1111_0111, B0000_1111,		//calibrate finish	33
	B0111_0111, B1011_0111, B1101_0111, B1110_0111, B0000_1111,  	//calibrate error	38
	  	
	B1111_0101, B0000_0101, B1111_0101, B0000_0101, B0000_1111,  	//master disable   	43
};

const char LEDARY_RGB[] = {
	B0000_0001, B0000_0000,											//all off			0
	B0111_0001, B0000_0000,											//all on			2
	B0001_0001, B0000_0000,											//R					4
	B0010_0001, B0000_0000,											//G					6
	B0100_0001, B0000_0000,											//B					8
	B0001_1111, B0010_1111, B0100_1111, B0000_0000,    				//R-G-B				10
	B0011_1111, B0110_1111, B0101_1111, B0000_0000,    				//RG-GB-BR			14
};

//-----------------------------------------------------------------------------
//__no_init char LED_CTL0 @LCDM4_;		// led display register, store last data
//__no_init char LED_CTL1 @LCDM5_;		// RGB automatic time update, bit7-on/0ff	 bit6..0 - offset in LEDARY_RGB
//-----------------------------------------------------------------------------

/*
*********************************************************************************************************
*                                         Disp_Led
*
* Description      :
* Arguments        :
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
void Disp_Led(char cmd)
{
	char tmp;
	
	while(1){
		tmp = LEDARY[cmd++];
		LED_CTL0 &= 0xf0;											//mask RGB led
		LED_CTL0 |= tmp >> 4;
		SpiWriteCd(LED_CTL0, 0);									//write cd4094
	
		tmp &= 0x0f;
		if(tmp == 0x0f)
			break;
		while(tmp--) Pause_1mS(LED_DELAY);
	}
}

/*
*********************************************************************************************************
*                                         Disp_RGB
*
* Description      :
* Arguments        :
*	cmd.bit7		0: by timer  1: onc time
*	   .bit6..0		offset in LEDARY_RGB array
*	plate			plate number 0,1..4
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
void Disp_RGB(char cmd, char plate)
{
	char tmp;
	
	if(cmd & BIT7){
		tmp = LEDARY_RGB[cmd++];					
		if(tmp == 0x00){											//if the last data, fine the head data
			while(cmd)
				if(LEDARY_RGB[--cmd] == 0x00) break;
			tmp = LEDARY[++cmd];
		}
		LED_CTL1 = BIT7 | cmd;										//restore new sp
		
		LED_CTL0 &= 0x0f;											//mask pannel led
		LED_CTL0 |= tmp&0xf0;
		SpiWriteCd(LED_CTL0,plate);									//write cd4094
	}else{
		cmd &= ~BIT7;
		LED_CTL1 = 0;												//turn off timer control
		while(1){
			tmp = LEDARY_RGB[cmd++];
			if(tmp ==0x00) break;
			
			LED_CTL0 &= 0x0f;										//mask pannel led
			LED_CTL0 |= tmp&0xf0;
			SpiWriteCd(LED_CTL0,plate);								//write cd4094
			
			tmp &= 0x0f;
			while(tmp--) Pause_1mS(LED_DELAY);
		}
	}
}
//------------------------------------------------------------------------------

⌨️ 快捷键说明

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