基于NiosⅡ处理器的TFT-LCD图形显示设计
接下来就是给LCD的RAM分配地址,把要显示的图片的数据信息以数据指针的方式从左到右依次写入目的地址。而SdCmd()函数为自己编写的发送数据命令的子函数。
addr=Y*5;
addr=addr7;
addr=addr+X*2; //same as addr=X*2+Y*320*2
p=0; //Data ROM pointer
for(j=0;j10;j++) //sprit one line data to 8 packet
{
SdCmd(0x84);
//send data packet,送一个像素的数据到内存
SdCmd(40);
//no of byte in one packet,结束一个命令包
for(k=0;k20;k++) //no of pixels in one packet
{
SdCmd(pic[p+1]); //low byte
SdCmd(pic[p]); //high byte
p+=2;
}
CmdEnd();
}
addr+=640; //next line
}
}
对于汉字以及字符的显示也是通过定义PrintGB()函数,类似上述程序以命令包的形式把要显示的信息送入目的地址,在后面的程序中直接调用该子函数来进行显示。
随着LCD显示越来越多地应用于生产生活的各个方面,各种各样的处理器控制LCD显示的方案也相继出现,本文通过整个系统设计和在硬件平台上实验提出了一种基于FPGA的SoPC方案,并最终在平台上面验证了其可行性。该方案的优势在于系统功能改进的灵活性, 在不改变硬件平台的情况下对系统进行增删和优化,降低了系统成本,这是传统ARM方案无法达到的。由于微处理器和用户逻辑接口都集成在一块Cyclone芯片上, 编程人员可以灵活地定义I/O接口, 基于FPGA有更好的灵活性和可靠性[9]。对基于NiosⅡ的微处理器, 用户能根据显示屏的大小灵活调整硬件逻辑设计以实现对显示屏的控制,而不需要改变其原有硬件构成。但是16位微控制器却只能对固定大小的显示屏进行控制。从长远来看,基于NiosⅡ的微处理器, 可以通过更改其硬件逻辑配置方便地进行版本升级,节省了成本。开发人员通过处理器[10]指令集中增加定制指令, 可以加速软件算法, 定制指令可以在一个周期的时间内完成复杂的处理任务,为系统优化提供了一种高性价比的解决方案。
评论