TFT画出矩形

发布者:SereneHeart最新更新时间:2015-10-16 来源: eefocus关键字:TFT  画出矩形  51单片机 手机看文章 扫描二维码
随时随地手机看文章
以51单片机为平台,用TFT画出实心矩形!

以下程序关键在于自己的应用,有多余的经历则可以深入研究!

关键在于用!!!

希望能给大家带来帮助

#include
#define  uint unsigned int
#define uchar unsigned char
#define  TYPE_LCD_DATA  1
#define  TYPE_LCD_COMMAND 0
#define  LCD_SIZE_X  128
#define  LCD_SIZE_Y  160
#define  DATA   P0

sbit LCD_RST  = P2^7;    //RST 引脚定义
sbit LCD_RD   = P3^2;  //RD  引脚定义
sbit LCD_WR   = P3^3;  //WR  引脚定义
sbit LCD_RS   = P2^5;  //RS  引脚定义
sbit LCD_CS   = P2^6;  //CS  引脚定义  

/////以上是代码转移的关键,要修改相应的端口
uint colors[]=
{
  0xf800,0x07e0,0x001f,0xffe0,0x0000,0x07ff,0xf81f,0xffff
};


void delay_ms(uint ms)
{
  unsigned char k;

  while (ms--)
  {
    for (k = 0; k < 228; k++)
      ;
  }
}


void LCD_Write(uchar type, uint value) 
{
 LCD_CS = 0;
 LCD_RS  = type;      // 0: command    1: data
 
 LCD_WR  = 0;
 DATA  = (uchar)value;;
 LCD_WR  = 1;
 LCD_CS = 1;
}

 



void LCD_Wirte_Data16(uint value)    // color data
{
 LCD_CS = 0;
    LCD_RS  = 1;
 LCD_WR  = 0;
 DATA  = (uchar)value;
 LCD_WR  = 1;
 LCD_WR  = 0;
 DATA  = (uchar)(value>>8) ;
 LCD_WR  = 1;
 LCD_CS = 1;
}


void Reg_Write(uint reg,uint value)
{
   LCD_Write(TYPE_LCD_COMMAND,reg);
   LCD_Write(TYPE_LCD_DATA,value);
}



void LCD_SetRamAddr(uint xStart, uint xEnd, uint yStart, uint yEnd)
{
    Reg_Write(0x09, xStart);
    Reg_Write(0x10, yStart);
    Reg_Write(0x11, xEnd);
    Reg_Write(0x12, yEnd);
    Reg_Write(0x18, xStart);
 Reg_Write(0x19, yStart);
    LCD_Write(TYPE_LCD_COMMAND,0x22);  // 0x22
}



void LCD_init(void)

 uint num;
 Reg_Write(0x0001,0x0002);  //MODE_SEL1
 Reg_Write(0x0002,0x0012);   //MODE_SEL2
 Reg_Write(0x0003,0x0000);   //MODE_SEL3
 Reg_Write(0x0004,0x0010); //MODE_SEL3
 LCD_SetRamAddr(0,127, 0,159);
 for(num=20480;num>0;num--)
    LCD_Wirte_Data16(0xffff);
  
 Reg_Write(0x0005,0x0008);   //VCO_MODE 
 Reg_Write(0x0007,0x007f); //VCOMHT_CTRL
 Reg_Write(0x0008,0x0017);   //VCOMLT_CTRL     
 Reg_Write(0x0009,0x0000);   //write SRAM window start X point
 Reg_Write(0x0010,0x0000);   //write SRAM window start y point
 Reg_Write(0x0011,0x0083);   //write SRAM window end x point
 Reg_Write(0x0012,0x009f);   //write SRAM window end y point
 Reg_Write(0x0017,0x0000);   //SRAM contrl
 Reg_Write(0x0018,0x0000);   //SRAM x position
 Reg_Write(0x0019,0x0000);   //SRAM y position
 Reg_Write(0x0006,0x00c5);   //DAC_OP_CTRL2
 delay_ms(10); //延时

}



void  LCD_clear(uchar n)
{
   uint num;
  
   LCD_SetRamAddr(0,127, 0,159);

   for(num=20480;num>0;num--)          //160*128=20480
   {
     LCD_Wirte_Data16(colors[n]);
   }
}

void  LCD_Juxing(uint xStart, uint xEnd, uint yStart, uint yEnd,uchar n)
{
   uint num,count;
  
   LCD_SetRamAddr(xStart,xEnd, yStart,yEnd);
   count=(xEnd-xStart)*(yEnd- yStart);
   for(num=count;num>0;num--)          //160*128=20480
   {
     LCD_Wirte_Data16(colors[n]);
   }
}
void main()
{
    P2 = 0xff;
     P0 = 0xff;
     LCD_init();
  while(1)
  {
  LCD_Juxing(10, 120,10,150,3);
  }
}

关键字:TFT  画出矩形  51单片机 引用地址:TFT画出矩形

上一篇:TFT画出任意斜率的直线
下一篇:8*8的点阵驱动程序

推荐阅读最新更新时间:2024-03-16 14:36

MCS-51单片机指令详解
MCS-51系列单片机指令以A开头的指令有18条,分别为: ACALL addr11 ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,RnADDC A,direct ADDC A,@Ri ADDC A,#data AJMP addr11 ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ANL C,bit ANL C,/bit 1、ACALL addr11 指令名称:绝对调用指令 指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令
[单片机]
液晶面板投资:没有出口的高速公路
   液晶面板企业的投资,在相当长时间内,几乎无法依靠产品利润收益获得退出,而是随着生产线的扩张,不断沉淀为生产线上的“预期收益”。这也是液晶面板投资被称之为“没有出口的高速公路”的原因。   “在液晶显示器行业内有句经典的话,说TFT投资就是‘没有出口的高速公路’。”Display Search中国研究总监张兵向记者表示,这句话在形容大尺寸TFT—LCD投资时尤其准确。Display Search是一家知名的国际显示产业研究机构。   曾经在康佳集团任职多年的张兵亲身经历了中国彩电行业从CRT时代向TFT(液晶显示)时代的转型。在他看来,液晶显示产业与过去的CRT彩电相比,最大的差异是前者有着极为庞大而复杂的产业链。   
[半导体设计/制造]
uC/OS-II在51单片机上的移植1
引言:随着各种应用电子系统的复杂化和系统实时性需求的提高,并伴随应用软件朝着系统化方向发展的加速,在16位/32位单片机中广泛使用了嵌入式实时操作系统。然而实际使用中却存在着大量8位单片机,从经济性考虑,对某些应用场合,在8位MCU上使用操作系统是可行的。从学习操作系统角度,uC/OS-II for 51即简单又全面,学习成本低廉,值得推广。 结语: C/OS-II具有免费、简单、可靠性高、实时性好等优点,但也有缺乏便利开发环境等缺点,尤其不像商用嵌入式系统那样得到广泛使用和持续的研究更新。但开放性又使得开发人员可以自行裁减和添加所需的功能,在许多应用领域发挥着独特的作用。当然,是否在单片机系统中嵌入 C/OS-II应视所开发的项目
[单片机]
21-基于51单片机的遥控音乐系统仿真
具体实现功能: 仿真分为接收器(播放器)和发射器(遥控)。接收器由一个可以发音乐的电子琴构成, 发射器通过按键遥控接收器上电子琴的启动与停止。 启动时播放的是《同一首歌》的旋律,数码管显示“b”,表示播放,按下停止按键后停止播放音乐。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个
[单片机]
21-基于<font color='red'>51单片机</font>的遥控音乐系统仿真
51单片机执行指令的过程
51单片机执行指令的过程 单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。 计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。 一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器
[单片机]
技术科:你知道51单片机如何存储程序吗
MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。 好,说回MCS-51。 对于程序存储器,有片内和片外两部分。而且无论片内程序存储器,还是片外程序存储器,他们的地址是共享的。如果片内4k ROM的话,地址就是0x0000-0x0FFF,从0x1000-0xFFFF就是外部ROM的地址空间。可外部ROM的0x0
[单片机]
技术科:你知道<font color='red'>51单片机</font>如何存储程序吗
C51单片机串口初始化为何是这样
SCON-串行口控制寄存器:可位寻址,单片机复位时,各位都被清0 B7 B6 B5 B4 B3 B2 B1 B0 SM0 SM1 SM2 REN TB8 RB8 TI RI SM0、SM1:串行通信方式选择位。 SM0 SM1 工作方式 功能说明 波特率 0 0 方式0 同步移位寄存器方式
[单片机]
Proteus软件仿真与Keil的51单片机系统设计
  1 概述   随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。   然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。如图1所示,用户程序需要在硬件完成的情况下才能进行联调,如果在调试过程中发现需修改硬件,则要重新制板。因此无论从硬件成本还是开发周期来看,其高风险、低效率的特性显露无
[单片机]
Proteus软件仿真与Keil的<font color='red'>51单片机</font>系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved