基于ARM的嵌入式多参数监护仪设计与实现
void Lcd_MonoInit(void) //初始化LCD屏幕
{ //160×240 1bit/1pixelLCD
#defineMVAL_USED 0
rLCDCON1=(0) (1<<5) (MVAL_USED<<7) (0x3<<
8) (0x3<<10) (CLKVAL_MONO<<12);
//disable, 4B_SNGL_SCAN,WDLY=8clk,WLH=8clk
rLCDCON2=(LINEVAL) (HOZVAL<<10) (10<<21);
//LINEBLANK=10(without any calculation)
rLCDSADDR1= (0x0<<27) (((U32) frameBuffer1>>22)<<
21 ) M5D((U32)frameBuffer1>>1);
//monochrome,LCDBANK,LCDBASEU
rLCDSADDR2=M5D( (((U32)frameBuffer1+(SCR_XSIZE*LCD_
YSIZE/8))>>1)) (MVAL<<21) (1<<29);
rLCDSADDR3=(LCD_XSIZE/16) ((SCR_XSIZE-LCD_XSIZE) /
16)<<9);
}
3. 3. 2 打开LCD
1)在内核中开辟内存空间用于显示内存
可在显示模块中加入:#define frameBuffer1 0xC400000
2)定义帧缓冲器长度,并对其赋初值设置一个行列与LCD
高宽相对应的数组pbuffer, pbuffer用于存放发送至显示屏的每帧像点数据,像点数据的多少取决于显示屏的大小; pbuffer="BitsPerPixe"*l Lines* /8=160* 240/8=4800(字节)。
由于pbuffer被定义为U32,即32位(八个四位)指针,每一个元素对应LCD显示屏上的一个像素点,显示方式采用4-bit单扫描,所以应当循环4800(字节) /4=1200次,实际上对应的单元数为整个160×240的屏幕范围。
for( i="0", i<1200; i++)
#(pBuffer[ i])=0x0;
3)数据处理
LCD的数据处理主要对要显示的数据进行处理(4bit到32bit的转换)。
temp_data=(Buf[ i* 4+3]<<24)+(Buf[ i* 4+2]<< 16)+(Buf[*i 4+1]<<8)+(Buf[*i 4]);
1/2 12下一页尾页
3. 3. 3 清屏
清屏对显存的每个单元置零,使屏幕显示清除。以下为清屏的部分源程序:
Void clrscreen(void)
{ int ;i
unsigned int* pbuffer;
pbuffer=(U32* )frameBuffer1;