📄 display.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 + -