您当前的位置:五五电子网电子知识单元电路接口电路嵌入式处理器Nios II与液晶显示模块的接口及编程技术 正文
嵌入式处理器Nios II与液晶显示模块的接口及编程技术

嵌入式处理器Nios II与液晶显示模块的接口及编程技术

点击数:7896 次   录入时间:03-04 11:36:20   整理:http://www.55dianzi.com   接口电路
在液晶显示屏上显示的各种曲线实际上是由若干段直线组成。所以直线的绘制就是曲线绘制的子程序。直线绘制的算法有多种多样,为了避免复杂的浮点运算,这里采用了Bresenham画线算法的整数数字增量分析法。该算法的基本思路是回避计算斜率k=(y1-y2)/(x2-x1)过程中的除法运算,应用dy=y1-y2 和dx=x2-x1之间的关系,根据直线的起点和终点的坐标不同,直线的走向和斜率将不同,即k的大小和正负将不同,因此绘制直线时将斜率 的取值分为四种情况进行绘图。下面给出从点(x1,y1)到点(x2,y2)画线的Nios II应用程序。

  void Draw_Line(UCHAR x1,UCHAR y1,UCHAR x2,UCHAR y2)

  { UCHAR u1,v1,u2,v2;

  signed int dx=x2-x1;

  signed int dy=y2-y1;

  UCHAR k;

  If(dx*dy>=0)

  { if (abs(x1-x2)>= abs(y1-y2))

  //斜率在[0,1]范围内

  { k=1; u1=x1;v1=y1;u2=x2;v2=y2;}

  else { k=2;u1=y1;v1=x1;u2=y2;v2=x2;}

  //斜率在(1,∞)范围内 }

  else { if(abs(x1-x2)>=abs(y1-y2))

  //斜率在[-1,0]范围内

  { k=3;u1=x1;v1=y1;u2=x2;v2=2*y1-y2;}

  else {k=4;u1=y1;v1=x1;u2=2*y1-y2;v2=x2;}

  //斜率在(-∞,-1)范围内 }

  int u,v,uEnd,p=2*abs(v1-v2)-abs(u1-u2);

  int twoDv=2*abs(v1-v2,twoDvDu=2*(abs(v1-v2)-abs(u1-u2));

  if(u1>u2) {u=u2;v=v2;uEnd=u1;}

  else {u=u1;v=v1;uEnd=u2;}

  switch(k)

  {

  case 1: Draw_Point(u,v);break;

  case 2: Draw_Point(v,u);break;

  case 3: Draw_Point(u,2*y1-v);break;

  case 4: Draw_Point(v,2*y1-u);break;

  default :break;}

  while(u { u++;

  if(p<0) {p+=twoDv;}

  else {v++;p+=twoDvDu;}

  switch(k)

  {case 1: Draw_Point(u,v);break;

  case 2: Draw_Point(v,u);break;

  case 3: Draw_Point(u,2*y1-v);break;

  case 4: Draw_Point(v,2(y1-u);break;

  default:break;}

  }

  }

4  结束语

      在FPGA中使用软核处理器Nios II比硬核的优势在于:硬核实现没有灵活性,通常无法适应最新技术的发展;而基于Nios II处理器的方案是基于HDL源码构建的,可配置的程度很高。Nios II处理器可以将外部存储器、液晶显示屏、以太网控制器、RS-232通信和USB接口等外部设备连接在一起,进行外设的协调工作和数据共享,并能够根据系统的性能要求添加多个Nios II处理器,实现多CPU内核;还可以在Nios II核中加入实时操作系统,实现多任务的调度。



上一页  [1] [2] 


本文关键字:处理器  嵌入式  接口  编程技术  接口电路单元电路 - 接口电路