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

📄 lcddisp.c

📁 这个程序是cstn演示程序
💻 C
字号:




/* File:LCDDISP.C
* 功能:使用硬件SPI接口输出LCD显示。
****************************************************************************/
#include "option.h"
#include "..\inc\def.h"
#include "44b.h"
#include "44blib.h"
#include "clcd.h"
#include "picturemap.h"
U32 frameBuffer[76800];
typedef unsigned long uint32;
typedef unsigned char uint8;
typedef unsigned short uint16;

#define WIDTH 640
#define HIGHT 480

void delay(unsigned long  dly);


/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<500000; i++);
}



/****************************************************************************
* 名称:LCDIni()

****************************************************************************/

void  LCDIni()
{ 

	unsigned long int LINEBLANK=12;
	unsigned long int HOZVAL=WIDTH*3/8-1;
	unsigned long int LINEVAL=HIGHT-1;
	unsigned long int MODESEL=3; //color mode
	unsigned long int LCDBANK=(unsigned long int)(& frameBuffer)>>22;

	unsigned long  int LCDBASEU=((unsigned long int)(& frameBuffer)>>1)&0x1fffff;
	unsigned long int BSWP=0;
	unsigned long int MVAL=0;
	unsigned long int OFFSIZE=0;
	unsigned long int PAGEWIDTH=WIDTH*8/16;
	unsigned long  int LCDBASEL=LCDBASEU+(PAGEWIDTH+OFFSIZE)*(LINEVAL+1);
	unsigned short int CLKVAL=2;
	unsigned short int WLH=0;
	unsigned short int WDLY=0;
	unsigned short int MMODE=0;
	unsigned short int DISMODE=2;
	unsigned short int INVCLK=0;
	unsigned short int INVLINE=0;
	unsigned short int INFRAME=0;
	unsigned short int INVVD=0;
	unsigned short int ENVID=0;
	
	
  
	//frameBuffer=(U32 (*)[120])malloc(76800+16); //480x640

//	rNCACHBE0=( ( ( ((unsigned)0xc500000+76800+16)>>12 )+1 ) <<16)|((unsigned)0xc500000>>12);
 

	
				// 管脚功能设置
				
     rPCONC&=0xfffcffff;
     rPCONC|=0x1ff<<8;
     rPCOND&=0xffff0000;
     rPCOND|=0xaaaa;  //set lcd pin
   
     rPDATC&=~(1<<8);
  rLCDCON1=0x2c440;
 //	rLCDCON1=ENVID|(INVVD<1)|(INFRAME<<2)|(INVLINE<<3)|(INVCLK<<4)|(DISMODE<<5)|(MMODE<<7)|(WDLY<<8)|(WLH<<10)|(CLKVAL<<12);
     rLCDCON2=LINEVAL|(HOZVAL<<10)|(LINEBLANK<<21);
     rLCDCON3=0;
    // rLCDSADDR1= (3<<27)|( ((unsigned int )&frameBuffer>>22)<<21 );
  
 
    rLCDSADDR1=LCDBASEU|(LCDBANK<<21)|(MODESEL<<27);
     rLCDSADDR2=(BSWP<<29)|(MVAL<<21)|LCDBASEL;
     rLCDSADDR3=PAGEWIDTH|(OFFSIZE<<9);
     
rREDLUT =0xfdb96420;
rGREENLUT=0xfdb96420;
rBLUELUT =0xfb40;

rDITHMODE=0x0;
rDP1_2 =0xa5a5; 
rDP4_7 =0xba5da65;
rDP3_5 =0xa5a5f;
rDP2_3 =0xd6b;
rDP5_7 =0xeb7b5ed;
rDP3_4 =0x7dbe;
rDP4_5 =0x7ebdf;
rDP6_7 =0x7fdfbfe;

        ENVID=1;
//rLCDCON1=0x3c441;        
      	rLCDCON1=ENVID|(INVVD<1)|(INFRAME<<2)|(INVLINE<<3)|(INVCLK<<4)|(DISMODE<<5)|(MMODE<<7)|(WDLY<<8)|(WLH<<10)|(CLKVAL<<12);
       // 
}





void clrscr(){
int i;
for(i=0;i<WIDTH*HIGHT;i++)


   
frameBuffer[i]=0x0;

}


void Lcd_PutPixel(int x,int y,U8 rgb)
{
   


char *p =(char * )frameBuffer;


if(rgb==RED)
*(p+y*WIDTH+x)=0xe0;
if(rgb==GREEN)
*(p+y*WIDTH+x)=0x1c;
if(rgb==BLUE)
*(p+y*WIDTH+x)=0x3;

if(rgb==NOCOLOR)
*(p+y*WIDTH+x)=0x5a; 

}

PutPixel(int x,int y,U8 rgb)
{
 Lcd_PutPixel(x,y,rgb);
}

void DrawRectangle(U16 StartX,U16 StartY,U16 EndX, U16 EndY, U16 Clr)

{
int i,j;
for(i=StartX;i<EndX;i++)
   for(j=StartY;j<EndY;j++)
      Lcd_PutPixel(i,j,Clr);

}


void DrawXY(U16 StartX,U16 StartY,U16 EndX, U16 EndY, U16 Clr)
{
int i,j;
float k=(float)(EndY-StartY)/(float)(EndX-StartX);
for(i=StartX;i<=EndX;i++)
   
      Lcd_PutPixel(i,StartY+(int)(k*(float)i),Clr);

}

   
  void displaypicture(int startx,int starty,int index,int Clr )
  {
  int i,j,k,temp1,temp2;
  char *p=(char *)frameBuffer;
  
//  linex(0,0,20);
  for(i=0;i<64;i++)
     for(j=0;j<16;j++)
      {     
      temp1 =picture[index][i][j];
         for(k=0;k<8;k++)
             if((temp1&(0x1<<(7-k)))!=0)
               Lcd_PutPixel(starty+ j*8+k, startx+i,RED);
             else  
              Lcd_PutPixel(starty+j*8+k, startx+i,NOCOLOR);
      }
      
  }

⌨️ 快捷键说明

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