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

📄 lcddriver.c

📁 uc/os运行在tms320lf2407a上
💻 C
📖 第 1 页 / 共 2 页
字号:
*************************************************/

/****************************************************************************/
/***        Include files                                                 ***/
/****************************************************************************/
#include "global.c" 
#include "lcd_font.h"
#include "os_cpu.h"

/****************************************************************************/
/***        Macro Definitions                                             ***/
/****************************************************************************/
#define LC_GRH_HOME		0x0000
#define LC_GRH_AREA		0x0000
#define LC_CGR_OFFSET	0x0000
#define LC_MOD_XOR		0x0000
#define LC_DIS_SW		0x0000
#define LC_ADD_POS		0x0000
#define LC_AUT_WR		0x0000
#define LC_AUT_OVR		0x0000
#define GRSTART		0x0000
#define grhome		0x0000
#define CGRAMSTART		0x0000
/****************************************************************************/
/***        Type Definitions                                              ***/
/****************************************************************************/
ioport unsigned port8000;
/****************************************************************************/
/***        Local Function Prototypes                                     ***/
/****************************************************************************/

/****************************************************************************/
/***        Exported Variables                                            ***/
/****************************************************************************/

/****************************************************************************/
/***        Local Variables                                               ***/
/****************************************************************************/
unsigned int au16Shadow[3840];
unsigned int lcdsta;
/****************************************************************************/
/***        Exported Functions                                            ***/
/****************************************************************************/
/****************************************************************************
 *
 * NAME: vLcdReset
 *
 * DESCRIPTION:
 * Called when bringing LCD out of reset.
 *
 * PARAMETERS:      Name      RW  Usage
 *                  u16Bias    R   Bias value to use (see data sheet) (0-3)
 *                  u16Gain    R   Gain value to use (see data sheet) (0-7)
 *
 * NOTES:
 * Default values are used for most things.
 * It is assumed that a reasonable time has passed since power was applied
 * as 20~30ms is required by LCD.
 *
 ****************************************************************************/
 void vLcdReset(void)
{
    /* Put LCD in to reset */
	/* 用复位电路完成 */

    /* Clear shadow area to blank */
    vLcdClear();


    wr_cmd_2(0x42,0); // 图形显示区首地址
    wr_cmd_2(0x43,30); // 图形显示区宽度30列
    //grhome = GRSTART;

    //wr_cmd_2(LC_CGR_OFFSET,CGRAMSTART >> 11);//CGRAM 偏移地址设置

    //wr_cmd_0(LC_MOD_XOR|0x08); // 显示方式设置,异或,字符全部用RAM区域生成
    wr_cmd_0(0x98);	 // 显示开关设置,图文混和模式

    //Clr_lcdram();//清除内存

    /* Refresh display */
    vLcdRefreshAll();
}

/****************************************************************************
 *
 * NAME: vLcdStop
 *
 * DESCRIPTION:
 * Turns off LCD and allows it to power down correctly.
 *
 * NOTES:
 * Should be called before powering down LCD panel.
 *
 ****************************************************************************/
 void vLcdStop(void)
{
    //vSendCommand(LCD_CMD_SYSTEM_RESET);
}

/****************************************************************************
 *
 * NAME: vLcdClear
 *
 * DESCRIPTION:
 * Clears the LCD shadow. Does not refresh the display itself
 *
 ****************************************************************************/
 void vLcdClear(void)
{
    unsigned int i, *j;
	
	j = &au16Shadow[0];

    for (i = 0; i < 3840; i++)
    {
        *j = 0x00;
		j++;
    }

}

/****************************************************************************
 *
 * NAME: vLcdRefreshAll
 *
 * DESCRIPTION:
 * Copies the contents of the shadow memory to the LCD
 *
 * NOTES:
 * Takes a certain amount of time!
 *
 ****************************************************************************/
 void vLcdRefreshAll(void)
{
    unsigned int u16Pix;
    unsigned int *pu16Shadow = au16Shadow;

    wr_cmd_2(0x24,0x0000); // 设置地址指针0
    wr_cmd_0(0xd0); // 自动写

    /* Set row to 0 and column to 0 */

    for (u16Pix = 0; u16Pix < 3840; u16Pix++)
    {
       	check_aw_st();
       	vSetCDline(0);	
   		port8000 = *pu16Shadow;
        pu16Shadow += 1;
    }
    wr_cmd_0(0xd2); // 自动写结束
    //wr_cmd_2(LC_ADD_POS,0x0000); // 重置地址指针
}

/****************************************************************************
 *
 * NAME: vLcdWriteText
 *
 * DESCRIPTION:
 * Puts text into shadow buffer. Text is aligned to a character row but can
 * be at any column. Characters are variable width but 8 pixels high.
 *
 * PARAMETERS:      Name            RW  Usage
 *                  pcString        R   Pointer to zero-terminated string
 *                  u16Row           R   Character row (0-7)
 *                  u16Column        R   Start column (0-127)
 *
 * NOTES:
 * To see text, perform a refresh
 *
 ****************************************************************************/
 void vLcdWriteText( char *pcString, unsigned int u16Row, unsigned int u16Column)
{
    unsigned int u16Columns;
    unsigned int *pu16CharMap;
    unsigned int *pu16Shadow = &au16Shadow[u16Row * 240 + u16Column];

    /* Column before first character */
    *pu16Shadow = 0;
    pu16Shadow++;

    while (*pcString != 0)
    {
		while(1)
		{
		    if ((*pcString >= '0') && (*pcString <= 'z'))
		    {
		        pu16CharMap = (unsigned int *)au16LcdFont[*pcString - '0'];
				break;
		    }

		    if ((*pcString >= '%') && (*pcString <= ','))
		    {
		        pu16CharMap = (unsigned int *)au16LcdFontWide[*pcString - '%'];
				break;
		    }

		    /* Default is to return a space character */
		    pu16CharMap = (unsigned int *)au16LcdFont[46];
			break;

		}


        u16Columns = *pu16CharMap;

        /* Copy character bitmap to shadow memory */
        do
        {
            pu16CharMap++;
            *pu16Shadow = *pu16CharMap;
            pu16Shadow++;
            u16Columns--;
        } while (u16Columns > 0);

        /* Add a column spacing */
        *pu16Shadow = 0;
        pu16Shadow++;

        pcString++;
    }
}

/****************************************************************************
 *
 * NAME: vLcdWriteInvertedText
 *
 * DESCRIPTION:
 * Puts text into shadow buffer. Text is aligned to a character row but can
 * be at any column. Characters are variable width but 8 pixels high. Text is
 * inverted (black <-> white).
 *
 * PARAMETERS:      Name            RW  Usage
 *                  pcString        R   Pointer to zero-terminated string
 *                  u16Row           R   Character row (0-7)
 *                  u16Column        R   Start column (0-127)
 *
 * NOTES:
 * To see text, perform a refresh
 *
 ****************************************************************************/
 void vLcdWriteInvertedText(char *pcString, unsigned int u16Row, unsigned int u16Column)
{
    unsigned int u16Columns;
    unsigned int *pu16CharMap;
    unsigned int *pu16Shadow = &au16Shadow[u16Row * 240 + u16Column];

    /* Column before first character */
    *pu16Shadow = 0xff;
    pu16Shadow++;

    while (*pcString != 0)
    {

		while(1)
		{

		    if ((*pcString >= '0') && (*pcString <= 'z'))
		    {
		        pu16CharMap = (unsigned int *)au16LcdFont[*pcString - '0'];
				break;
		    }

		    if ((*pcString >= '%') && (*pcString <= ','))
		    {
		        pu16CharMap = (unsigned int *)au16LcdFontWide[*pcString - '%'];
				break;
		    }

		    /* Default is to return a space character */
		    pu16CharMap = (unsigned int *)au16LcdFont[46];
			break;

		}

        u16Columns = *pu16CharMap;

        /* Copy character bitmap to shadow memory */
        do
        {

⌨️ 快捷键说明

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