📄 bsp.c
字号:
case 0:
LED_LIGHTS |= 0x0000000F;
break;
case 1:
LED_LIGHTS |= 0x00000001;
break;
case 2:
LED_LIGHTS |= 0x00000002;
break;
case 3:
LED_LIGHTS |= 0x00000004;
break;
case 4:
LED_LIGHTS |= 0x00000008;
break;
default:
break;
}
}
/*
*********************************************************************************************************
* LED OFF
*
* Description : This function is used to control any or all the LEDs on the board.
*
* Arguments : led is the number of the LED to turn OFF
* 0 indicates that you want ALL the LEDs to be OFF
* 1 turns OFF LED1 on the board
* .
* .
* 4 turns OFF LED16 on the board
*********************************************************************************************************
*/
void LED_Off (CPU_INT08U led)
{
switch (led) {
case 0:
LED_LIGHTS &= ~0x0000000F;
break;
case 1:
LED_LIGHTS &= ~0x00000001;
break;
case 2:
LED_LIGHTS &= ~0x00000002;
break;
case 3:
LED_LIGHTS &= ~0x00000004;
break;
case 4:
LED_LIGHTS &= ~0x00000008;
break;
default:
break;
}
}
/*
*********************************************************************************************************
* LED TOGGLE
*
* Description : This function is used to toggle any or all the LEDs on the board.
*
* Arguments : led is the number of the LED to control
* 0 indicates that you want to toggle ALL the LEDs
* 1 toggles LED1 on the board
* .
* .
* 4 toggles LED16 on the board
*********************************************************************************************************
*/
void LED_Toggle (CPU_INT08U led)
{
switch (led) {
case 0:
LED_LIGHTS ^= 0x0000000F;
break;
case 1:
LED_LIGHTS ^= 0x00000001;
break;
case 2:
LED_LIGHTS ^= 0x00000002;
break;
case 3:
LED_LIGHTS ^= 0x00000004;
break;
case 4:
LED_LIGHTS ^= 0x00000008;
break;
default:
break;
}
}
/*
******************************************************************************************************************************
******************************************************************************************************************************
* LCD FUNCTIONS
******************************************************************************************************************************
******************************************************************************************************************************
*/
/*
*********************************************************************************************************
* INITIALIZE THE LCD DISPLAY
*
* Description: This function initializes the LCD display.
*
* Argument(s): None
*
* Returns : None
*********************************************************************************************************
*/
static void LCD_Init (void)
{
LCD_TIMING0 = LCD_TIMING0_PPL(LCD_PIXELS_PER_LINE);
LCD_TIMING1 = LCD_TIMING1_LPP(LCD_LINES_PER_PANEL);
LCD_TIMING2 = LCD_TIMING2_CPL(LCD_CLOCKS_PER_LINE);
LCD_UPBASE = LCD_UPBASE_UPBASE((CPU_INT32U)(&LCD_Buffer[0]));
LCD_LPBASE = LCD_LPBASE_LPBASE(0);
LCD_CONTROL = LCD_CONTROL_LCDEN
| LCD_CONTROL_LCDBPP_16
| LCD_CONTROL_LCDTFT;
}
/*
*********************************************************************************************************
* WRITE LINE TO DISPLAY
*
* Description: This function displays on the LCD display at a specified line position.
*
* Argument(s): s is an array of ASCII-encoded characters.
* line is the character line number between 0 and 7.
*
* Returns : None
*
* Note(s) :
*********************************************************************************************************
*/
void LCD_DispStr (CPU_INT08U line, CPU_INT08U col, CPU_INT08U *s, CPU_INT16U color)
{
CPU_INT16U i;
CPU_INT16U j;
CPU_INT08U c;
CPU_INT32U x;
CPU_INT32U y;
CPU_INT32U offset;
CPU_INT08U pixels;
x = col * 8;
y = line * 8;
offset = (y * LCD_PIXELS_PER_LINE + x) * LCD_BYTES_PER_PIXEL;
while (*s != 0) {
c = *s; /* Store the current character */
for (i = 0; i < 8; i++) { /* For each of the eight columns in the character */
pixels = LCD_Charset[c-32][i];
for (j = 0; j < 8; j++) {
if (pixels & 0x01) {
#if LCD_BYTES_PER_PIXEL == 1
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = color;
#elif LCD_BYTES_PER_PIXEL == 2
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = color & 0xFF;
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = (color >> 8) & 0xFF;
#endif
} else {
#if LCD_BYTES_PER_PIXEL == 1
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = LCD_BGColor;
#elif LCD_BYTES_PER_PIXEL == 2
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = LCD_BGColor;
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = LCD_BGColor;
#endif
}
pixels >>= 1;
}
offset += LCD_BYTES_PER_PIXEL;
}
s++; /* Increment the pointer */
}
}
/*
*********************************************************************************************************
* WRITE CHARACTER TO DISPLAY
*
* Description: This function displays a character at the specified position of the LCD display.
*
* Argument(s): c is an ASCII-encoded character.
* line is the character line number between 0 and 7.
* col is the character column number between 0 and 15.
*
* Returns : None
*
* Note(s) :
*********************************************************************************************************
*/
void LCD_DispChar (CPU_INT08U line, CPU_INT08U col, CPU_INT08U c, CPU_INT16U color)
{
CPU_INT16U i;
CPU_INT16U j;
CPU_INT32U x;
CPU_INT32U y;
CPU_INT32U offset;
CPU_INT08U pixels;
x = col * 8;
y = line * 8;
offset = (y * LCD_PIXELS_PER_LINE + x) * LCD_BYTES_PER_PIXEL;
for (i = 0; i < 8; i++) { /* For each of the eight columns in the character */
pixels = LCD_Charset[c-32][i]; /* ... Read intended pixel ON/OFF setting ... */
for (j = 0; j < 8; j++) { /* ... For each pixel in column ... */
if (pixels & 0x01) { /* ... ... If pixel is ON, then assign color ... */
#if LCD_BYTES_PER_PIXEL == 1
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = color;
#elif LCD_BYTES_PER_PIXEL == 2
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = color & 0xFF;
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = (color >> 8) & 0xFF;
#endif
} else { /* ... ... If pixel is OFF, assign no color ... */
#if LCD_BYTES_PER_PIXEL == 1
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = LCD_BGColor;
#elif LCD_BYTES_PER_PIXEL == 2
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL] = LCD_BGColor;
LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = LCD_BGColor;
#endif
}
pixels >>= 1; /* ... Move to next pixel. */
}
offset += LCD_BYTES_PER_PIXEL; /* ... Move to data for next pixel. */
}
}
/*
*********************************************************************************************************
* CLEAR LINE ON DISPLAY
*
* Description: This function clears one line of the display.
*
* Argument(s): line is the character line number between 0 and 7.
*
* Returns : None
*********************************************************************************************************
*/
void LCD_DispClrLine (CPU_INT08U line)
{
CPU_INT16U i;
CPU_INT16U j;
CPU_INT32U x;
CPU_INT32U y;
CPU_INT08U *p_buf;
CPU_INT32U offset;
CPU_INT08U pixels;
x = 0;
y = line * 8;
offset = (y * LCD_PIXELS_PER_LINE + x) * LCD_BYTES_PER_PIXEL;
for (j = 0; j < 8; j++) { /* For each of the rows of pixels in the line ... */
p_buf = &LCD_Buffer[offset];
for (i = 0; i < LCD_PIXELS_PER_LINE; i++) { /* ... For each of the pixels in the row ... */
/* ... ... Display in the background color. */
#if LCD_BYTES_PER_PIXEL == 1
*p_buf++ = LCD_BGColor;
#elif LCD_BYTES_PER_PIXEL == 2
*p_buf++ = LCD_BGColor & 0xFF;
*p_buf++ = (LCD_BGColor >> 8) & 0xFF;
#endif
}
offset += LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL; /* ... Move to next line */
}
}
/*
*********************************************************************************************************
* CLEAR DISPLAY
*
* Description: This function clears the display.
*
* Argument(s): None
*
* Returns : None
*
* Note(s) :
*********************************************************************************************************
*/
void LCD_ClrScr (void)
{
CPU_INT16U i;
CPU_INT16U j;
CPU_INT08U *p_buf;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -