云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 实验7实验报告

实验7实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/5 5:53:15

实验三 LCD驱动

一、实验目的

1.学习LCD驱动及控制原理。

2.熟悉用ARM内置的LCD控制器驱动LCD。 二、实验内容

通过实验代码,实现在LCD上显示黑红橙黄绿青蓝紫白几个均匀色带,并在最后一个色带显示三基色。

三、实验设备及工具

硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。

软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。 四、实验步骤

1.新建工程,将老师给的相关文件添加到工程。 2.构建工程,并接入实验板,观察LCD图像。 源程序分析 (1)主函数: #include \#include\#include \#include\

#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting

extern U32 LCDBuffer[240][320];

//在LCD上显示图形的关键是填充二级显示缓冲,将显示象素的24位颜色信息写入LCDBuffer。将RGB三种基本颜色按一定比例混合即可构成更复杂的颜色,每个象素的三种基本颜色分别占一个字节,可以方便的在程序里改写各基本颜色的数值,从而改变该象素的混合颜色。 int main(void) { int i,j,k; U32 jcolor;

ARMTargetInit(); LCD_Init();

//开发版初始化 //LCD初始化

for (i=0;i<9;i++) { switch (i)

//着色原理:0x000000e0为红色,0x0000e000为绿色,0x00e00000为蓝色,颜色采用8位16进制编码,有三基色混合而成,每种基色占用一个字节,如倒数第两位代表红色亮度,倒数第四位为绿色亮度,倒数第6位为蓝色亮度。数值代表亮度的大小,由0至e分为16级,分别对应亮度由无至亮。由此可以得到16*16*16=4096种颜色。

{ case 0: jcolor=0x00000000; //RGB均为0 黑色 break;

case 1: jcolor=0x000000e0; //R 纯红色 break;

case 2: jcolor=0x0000d0e0; //R +G 橙色 break;

case 3: jcolor=0x0000e0e0; //R +G 黄色 break;

case 4: jcolor=0x0000e000; //G 纯绿色 break;

case 5: jcolor=0x00e0e000; //G+B 青色 break;

case 6: jcolor=0x00e00000; //B 纯蓝色 break;

case 7: jcolor=0x00e000e0; //R+ B 紫色 break;

case 8: jcolor=0x00e0e0e0; //R+G+B最大 白色 break; }

//以下为控制色带宽度和长度的部分,其中,k为行标记,j为列标记。第一个循

环表示取整个k=240即0——240行为一个单元。后面的循环为对不同色彩的色带分列,其中前面的循环已经控制i的值由0——9,再由for (j=i*32;j

for (j=i*32;j

//此处是对最后一个列的色带再均分为三行,形成三个新的色带,写入三基色 jcolor=0x000000ff; for (i=0;i<240;i++) {if (i==80||i==160) jcolor<<=8; for (j=288;j<320;j++) LCDBuffer[i][j]=jcolor; }

LCD_Refresh() ; while(1); }

(2)LCD320的内部驱动代码: #include #include #include \#include \#include \

#define LCDCON1_ENVID #define LCDCON1_INVVD

(1) (1<<1)

return 0;

#define LCDCON1_INVFRAME (1<<2)

#define LCDCON1_INVLINE #define LCDCON1_INVCLK #define LCDCON1_MMODE #define L248 #define CLKVAL

(8)

(20)

(1<<3) (1<<4) (1<<7)

// 60Mhz, fr=100Hz (CLKVAL=38.6)

//#define M5D(n) ((n) & 0x1fffff)

U32* pLCDBuffer16=(U32*)0xc000000; //一级缓存指针 U32 LCDBuffer[LCDHEIGHT][LCDWIDTH];//二级缓存

void LCD_Init() //设置各功能寄存器,清空显示缓存区 {

LCDDisplayOpen(FALSE); rLCDCON1=(0);

// disable

rLCDCON2=(239)|(119<<10)|(15<<21);

//320x240LCD LINEBLANK=15 (without any calculation) LCDBANK=0xc000000>>22;//((U32)LCDBuffer16)>>22; LCDBASEU=0x0;//((U32)LCDBuffer16)&0x3fffff; LCDBASEL=LCDBASEU+(160)*240;

|(LCDBANK<<21)|LCDBASEU;//|

int i;

U32 LCDBASEU,LCDBASEL,LCDBANK;

rLCDSADDR1= (0x3<<27) ((((U32)LCDBuffer16)>>1)&0x7ffffff);

// color_mode, LCDBANK, LCDBASEU rLCDSADDR2= (0<<29)|(0<<21)|LCDBASEL; rLCDSADDR3= (320/2)|(0<<9); //No virtual screen. //rREDLUT=0xfca86420; //rGREENLUT=0xfca86420;

搜索更多关于: 实验7实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实验三 LCD驱动 一、实验目的 1.学习LCD驱动及控制原理。 2.熟悉用ARM内置的LCD控制器驱动LCD。 二、实验内容 通过实验代码,实现在LCD上显示黑红橙黄绿青蓝紫白几个均匀色带,并在最后一个色带显示三基色。 三、实验设备及工具 硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。 四、实验步骤 1.新建工程,将老师给的相关文件添加到工程。 2.构建工程,并接入实验板,观察LCD图像。 源程序分析 (1)主函数: #include \#include\#in

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com