完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以上各寄存器基本的配置的源程序如下:
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); } |
|
相关推荐
5个回答
|
|
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]); |
|
|
|
3. 3. 3 清屏
清屏对显存的每个单元置零,使屏幕显示清除。以下为清屏的部分源程序: Void clrscreen(void) { int ;i unsigned int* pbuffer; pbuffer=(U32* )frameBuffer1; for( i=0; i<1200; i++) { pbuffer[ i]=0; } } |
|
|
|
3. 3. 4 编制LCD显示函数并向LCD设备写入数据
定义displayLcd()函数为LCD显示函数,用于往显存中写数据,经过pbuffer送至LCD显示器,并让它循环显示在LCD显示屏上。要在LCD上显示ASCII字符,首先把每个字符转成一个16* 16bit的数组,组成字库(本次实现中使用),然后,选择要显示的字符,从字库中提取字符,经函数调用后,将要显示的字符送至LCD显示器,这样,就在LCD上显示出ASCII字符。 部分源程序如下: void displayLCD(void) //LCD显示函数 { unsigned int* pbuffer, temp_data; int ;i pbuffer=(U32* )frameBuffer1; for( i=0; i<1200; i++) { temp_data=(Buf[ i* 4+3]<<24)+(Buf[ i* 4+2]<< 16)+(Buf[*i 4+1]<<8)+(Buf[*i 4]; //进行4bit到32bit的数据转换处理 pbuffer[ i]=~temp_data; Delay(10); } } 在添加所用的头文件的同时,增加对LCD_Init()函数、dis-playLCD()等函数的调用。 |
|
|
|
4 网络命令处理
在硬件设计上采用以太网口,软件上通过实现瘦TCP/IP网络通 信协议,针对嵌入式系统特点对传统的TCP/IP协议栈进行裁减[4],让嵌入式多参数监护仪支持轻量级TCP/IP协议栈而 直接连入Internet。在设计将无实时要求和费时的TCP/IP协议簇的处理放在主程序顺序循环中。网络程序结构采取顺序执行和硬件中断相配合的方式,这种硬件中断是外部时钟中断,中断级别要比非向量模式的FIQ中断级别低,在系统空闲时进行网络数据交互;对网络接口控制芯片采用查询方式,即在其他中断任务的执行间隙处理瘦TCP/IP协议簇,以牺牲响应速度来换取系统可靠性。 考虑到嵌入式医用监护仪在窄宽带不可靠环境下实现实时监测的要求,决定在网络通信协议的传输层中,选用UDP(用户数据报协议)。 |
|
|
|
5 结束语
介绍一种基于ARM的嵌入式多参数监护仪的设计与实现,并应用于实际测量,为嵌入式系统在医用监护中的应用提供了一个很有意义的新思路和切实可行的方案。由于该网络监护仪主要面向医院、社区和家庭,具有成本低、功耗小、数据存储量大、数据处理速度快、便于远程医疗、能同时实现实时多任务的操作等各项优势,是现代医疗监护进一步智能化、专业化、小型化、低功耗的发展新方向,困此具有很广阔的市场前景。 |
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 06:44 , Processed in 0.851781 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号