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

📄 lcddrv.c

📁 ADS环境下的类似linux内核的操作系统
💻 C
字号:
/* MShowTec - www.mshowtec.com
** msLinux LCDDrv.c ver1.0
** 20051221 lmjx create limiao@mshowtec.com
**
*/

#define MSLINUX_LCDDRV_C

#include "LCDDrv.h"
#include "dev.h"
#include "lcdcfg.h"

extern unsigned short virtual_screen[LCDHEIGHT][LCDWIDTH];

void delay(int time)
{
	while(time--){

		__asm{nop};
	}
}
void InitLCD(void)
{
	int x,y;
	static unsigned char EnterOnce=1;
	if(EnterOnce)
		EnterOnce=0;
	else
		return;
	write_cmd(LCDCON,LCDWIDTH|(LCDHEIGHT<<8));//128*128 dir=0 rgb=0 update=0
	
	return;
}

void UpdateScreen(void)
{
	write_cmd(UPDATE,0);
}

void DrawRealXY(unsigned short x,unsigned short y,unsigned short c)
{
	if(x>=LCDWIDTH)
		x = LCDWIDTH-1;
	if(y>=LCDHEIGHT)
		y = LCDHEIGHT -1;
	write_cmd(CURX,x);
    	delay(10);
    	write_cmd(CURY,y);
    	delay(10);
    	write_data(c);
}
void DrawRealScreen(unsigned short StartX,unsigned short StartY,unsigned short Width,unsigned short Height)
{

    int x,y;
    int irq_save = 0;

    irq_save = mslinux_save_disable_irq();


    if(Width==0||Height==0
        ||StartX>=LCDWIDTH
        ||StartY>=LCDHEIGHT)
        return;

    Width = (StartX+Width>LCDWIDTH) ?(LCDWIDTH-StartX):Width;
    Height = (StartY+Height>LCDHEIGHT) ?(LCDHEIGHT-StartY):Height;  	

    delay(50);
    for(y=StartY;y<Height;y++)
    {
    	write_cmd(CURX,StartX);
    	delay(10);
    	write_cmd(CURY,y);
   		for(x = StartX;x<Width;x++){
   			write_data(virtual_screen[y][x]);
   		}
    }
    
    UpdateScreen();	

    mslinux_restore_irq(irq_save);
	
}

static long lcd_ioctrl()
{
	int cmd;
	long para;
	long ret = 0;

	cmd = dev_get_cmd(DEV_LCD);
	para = dev_get_para(DEV_LCD);
	
	switch(cmd){
		case IOCTRL_INIT:
			InitLCD();
			break;
		case IOCTRL_RD:
			break;
		case IOCTRL_WE:
			break;
		case IOCTRL_LCD_DRAW:
			DrawRealScreen(((unsigned short*)para)[0],((unsigned short*)para)[1],((unsigned short*)para)[2],((unsigned short*)para)[3]);
			break;
		default:
			break;
	}
	return ret;
}

void lcd_register()
{
	dev_register(DEV_LCD,lcd_ioctrl);
}

⌨️ 快捷键说明

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