2871|1

1万

帖子

16

TA的资源

版主

楼主
 

TIVA Launchpad 六:彩屏惊魂 [复制链接]

我这个人一得瑟就得出事。唉,先说说出事的原因吧,上回我晒了我买回的SPI彩屏,我想驱动它。

但该屏的LED,就是背光一定要接3.3V的。我第一次用啊!还挺吊!没太在意,我直接把LED同5V的VCC连接起来了,呵呵,都在屏上,有近道不走走远道不成!!

当时我还是用CCS环境(现在用MDK,多谢坛友指正),我加了电,我看全屏发蓝,背光也亮,没有问题,我于是去看程序啦!!!这可了不得了!!!

我看了半天程序,觉得没有问题就往里下载,我进入DEBUG调试,来是蓝屏。我用手一摸,我地天啊!!!只见屏表面有一块烧变色,手都烫得很。我断了电

心想完了。我地屏还没用上一回合,就闭蛤了。

我断了电放到一边一天都没有好心情。我问了店家,店家给我答复是很难说。并告诉我如果LED接3.3V亮了就应没有问题,心想不如动用STC芯片检验一下是否坏了,因为STC有LE系列的单片机,且手头有STC家伙。第二天,我就连上了,一试好用唉!见图片:



那到LM4F120板子上怎么就不好了,我想到时序。于是动用了我最先进的终极武器-------示波器。我测出在STC下的波形,并记信其写周期为30US。

我想也许是因为LM4F120时序太快的原故吧。

当我又重新接上的时候,我多了个心眼,用万用表一一查下电压,当我查到一个管脚时觉得有异常,我很快换了个管脚,这时高低断点的电压正常。

但那个管脚为什么不正常,我想以后再解决,是个BUG也说不定。

我接上了LM4F120,这回用MDK,上电编译非常顺利。我全速运行,久违的彩条出来了。


这次我动用了我的全部测量家当。用了我两程单片机的板子,目的只是驱动一块小小的彩屏。不过我喜欢


下面是代码部分

1、管脚定义:


  1. #define cs_pin GPIO_PIN_4
  2. #define reset_pin GPIO_PIN_7
  3. #define rs_pin GPIO_PIN_5
  4. #define spi_pin GPIO_PIN_6
  5. #define sck_pin GPIO_PIN_4
  6. #define GPIO_O_DATA             0x00000000  // GPIO Data
  7. #define CS(V) HWREG(GPIO_PORTC_BASE+(GPIO_O_DATA+(cs_pin<<2)))=V?cs_pin:0
  8. #define REST(V) HWREG(GPIO_PORTC_BASE+(GPIO_O_DATA+(reset_pin<<2)))=V?reset_pin:0
  9. #define RS(V) HWREG(GPIO_PORTC_BASE+(GPIO_O_DATA+(rs_pin<<2)))=V?rs_pin:0
  10. #define SPI(V) HWREG(GPIO_PORTC_BASE+(GPIO_O_DATA+(spi_pin<<2)))=V?spi_pin:0
  11. #define SCK(V) HWREG(GPIO_PORTA_BASE+(GPIO_O_DATA+(sck_pin<<2)))=V?sck_pin:0

  12. #define uchar unsigned char
  13. #define uint unsigned int
复制代码
2、
管脚使能:
  1. ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
  2.     ROM_GPIOPinConfigure(GPIO_PA0_U0RX);
  3.     ROM_GPIOPinConfigure(GPIO_PA1_U0TX);
  4.     ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
  5.     UARTStdioInit(0);
  6.                
  7.                 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC|SYSCTL_PERIPH_GPIOD);
  8.     //ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
  9.     ROM_GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_4);
  10.     ROM_GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5);
  11.     ROM_GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_6);
  12.     ROM_GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_7);
  13.     ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_6);
  14.     ROM_GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);
  15.     lcd_initial();
复制代码
驱动函数:

  1. void delay(uint time)
  2. {
  3. uint i,j;
  4.   for(i=0;i
  5.    for(j=0;j<2500;j++);
  6. }






  7. void  write_command(uchar c)
  8. {

  9. CS(0);

  10. RS(0);
  11. bitdata=c;


  12. if(bitdata&0x80)
  13.         SPI(1);
  14. else SPI(0);
  15. SCK(0);
  16. SCK(1);

  17. if(bitdata&0x40)
  18.         SPI(1);
  19. else SPI(0);
  20. SCK(0);
  21. SCK(1);

  22. if(bitdata&0x20)
  23.         SPI(1);
  24. else SPI(0);
  25. SCK(0);
  26. SCK(1);

  27. if(bitdata&0x10)
  28.         SPI(1);
  29. else SPI(0);
  30. SCK(0);
  31. SCK(1);

  32. if(bitdata&0x08)
  33.         SPI(1);
  34. else SPI(0);
  35. SCK(0);
  36. SCK(1);

  37. if(bitdata&0x04)
  38.         SPI(1);
  39. else SPI(0);
  40. SCK(0);
  41. SCK(1);

  42. if(bitdata&0x02)
  43.         SPI(1);
  44. else SPI(0);
  45. SCK(0);
  46. SCK(1);

  47. if(bitdata&0x01)
  48.         SPI(1);
  49. else SPI(0);
  50. SCK(0);
  51. SCK(1);

  52. CS(1);
  53. }

  54. void  write_data(uchar d)
  55. {

  56.         CS(0);

  57.         RS(1);
  58. bitdata=d;


  59. if(bitdata&0x80)
  60.         SPI(1);
  61. else SPI(0);
  62. SCK(0);
  63. SCK(1);

  64. if(bitdata&0x40)
  65.         SPI(1);
  66. else SPI(0);
  67. SCK(0);
  68. SCK(1);

  69. if(bitdata&0x20)
  70.         SPI(1);
  71. else SPI(0);
  72. SCK(0);
  73. SCK(1);

  74. if(bitdata&0x10)
  75.         SPI(1);
  76. else SPI(0);
  77. SCK(0);
  78. SCK(1);

  79. if(bitdata&0x08)
  80.         SPI(1);
  81. else SPI(0);
  82. SCK(0);
  83. SCK(1);

  84. if(bitdata&0x04)
  85.         SPI(1);
  86. else SPI(0);
  87. SCK(0);
  88. SCK(1);

  89. if(bitdata&0x02)
  90.         SPI(1);
  91. else SPI(0);
  92. SCK(0);
  93. SCK(1);

  94. if(bitdata&0x01)
  95.         SPI(1);
  96. else SPI(0);
  97. SCK(0);
  98. SCK(1);

  99. CS(1);
  100. }

  101. void wr_com16(unsigned char i,unsigned char j)
  102. {

  103. CS(0);

  104. RS(1);
  105. bitdata=i;



  106. if(bitdata&0x80)
  107.         SPI(1);
  108. else SPI(0);
  109. SCK(0);
  110. SCK(1);

  111. if(bitdata&0x40)
  112.         SPI(1);
  113. else SPI(0);
  114. SCK(0);
  115. SCK(1);

  116. if(bitdata&0x20)
  117.         SPI(1);
  118. else SPI(0);
  119. SCK(0);
  120. SCK(1);

  121. if(bitdata&0x10)
  122.         SPI(1);
  123. else SPI(0);
  124. SCK(0);
  125. SCK(1);

  126. if(bitdata&0x08)
  127.         SPI(1);
  128. else SPI(0);
  129. SCK(0);
  130. SCK(1);

  131. if(bitdata&0x04)
  132.         SPI(1);
  133. else SPI(0);
  134. SCK(0);
  135. SCK(1);

  136. if(bitdata&0x02)
  137.         SPI(1);
  138. else SPI(0);
  139. SCK(0);
  140. SCK(1);

  141. if(bitdata&0x01)
  142.         SPI(1);
  143. else SPI(0);
  144. SCK(0);
  145. SCK(1);


  146. CS(1);

  147. CS(0);



  148. RS(1);
  149. bitdata=j;



  150. if(bitdata&0x80)
  151.         SPI(1);
  152. else SPI(0);
  153. SCK(0);
  154. SCK(1);

  155. if(bitdata&0x40)
  156.         SPI(1);
  157. else SPI(0);
  158. SCK(0);
  159. SCK(1);

  160. if(bitdata&0x20)
  161.         SPI(1);
  162. else SPI(0);
  163. SCK(0);
  164. SCK(1);

  165. if(bitdata&0x10)
  166.         SPI(1);
  167. else SPI(0);
  168. SCK(0);
  169. SCK(1);

  170. if(bitdata&0x08)
  171.         SPI(1);
  172. else SPI(0);
  173. SCK(0);
  174. SCK(1);

  175. if(bitdata&0x04)
  176.         SPI(1);
  177. else SPI(0);
  178. SCK(0);
  179. SCK(1);

  180. if(bitdata&0x02)
  181.         SPI(1);
  182. else SPI(0);
  183. SCK(0);
  184. SCK(1);

  185. if(bitdata&0x01)
  186.         SPI(1);
  187. else SPI(0);
  188. SCK(0);
  189. SCK(1);


  190. CS(1);

  191. }
  192. //////////////////////////////////////////////////////////////////////////////////////////////

  193. void lcd_initial(void)
  194. {


  195.    REST(0);
  196.         delay(100);
  197.   
  198.    REST(1);
  199.    delay(100);


  200.    write_command(0xCB);
  201.         write_data(0x39);
  202.         write_data(0x2C);
  203.         write_data(0x00);
  204.         write_data(0x34);
  205.         write_data(0x02);

  206.         write_command(0xCF);
  207.         write_data(0x00);
  208.         write_data(0XC1);
  209.         write_data(0X30);

  210.         write_command(0xE8);
  211.         write_data(0x85);
  212.         write_data(0x00);
  213.         write_data(0x78);

  214.         write_command(0xEA);
  215.         write_data(0x00);
  216.         write_data(0x00);

  217.         write_command(0xED);
  218.         write_data(0x64);
  219.         write_data(0x03);
  220.         write_data(0X12);
  221.         write_data(0X81);

  222.         write_command(0xF7);
  223.         write_data(0x20);

  224.         write_command(0xC0);    //Power control
  225.         write_data(0x23);   //VRH[5:0]

  226.         write_command(0xC1);    //Power control
  227.         write_data(0x10);   //SAP[2:0];BT[3:0]

  228.         write_command(0xC5);    //VCM control
  229.         write_data(0x3e); //?????
  230.         write_data(0x28);

  231.         write_command(0xC7);    //VCM control2
  232.         write_data(0x86);  //--

  233.         write_command(0x36);    // Memory Access Control
  234.         write_data(0x48); //C8           //48 68??//28 E8 ??

  235.         write_command(0x3A);
  236.         write_data(0x55);

  237.         write_command(0xB1);
  238.         write_data(0x00);
  239.         write_data(0x18);

  240.         write_command(0xB6);    // Display Function Control
  241.         write_data(0x08);
  242.         write_data(0x82);
  243.         write_data(0x27);

  244.         write_command(0xF2);    // 3Gamma Function Disable
  245.         write_data(0x00);

  246.         write_command(0x26);    //Gamma curve selected
  247.         write_data(0x01);

  248.         write_command(0xE0);    //Set Gamma
  249.         write_data(0x0F);
  250.         write_data(0x31);
  251.         write_data(0x2B);
  252.         write_data(0x0C);
  253.         write_data(0x0E);
  254.         write_data(0x08);
  255.         write_data(0x4E);
  256.         write_data(0xF1);
  257.         write_data(0x37);
  258.         write_data(0x07);
  259.         write_data(0x10);
  260.         write_data(0x03);
  261.         write_data(0x0E);
  262.         write_data(0x09);
  263.         write_data(0x00);

  264.         write_command(0XE1);    //Set Gamma
  265.         write_data(0x00);
  266.         write_data(0x0E);
  267.         write_data(0x14);
  268.         write_data(0x03);
  269.         write_data(0x11);
  270.         write_data(0x07);
  271.         write_data(0x31);
  272.         write_data(0xC1);
  273.         write_data(0x48);
  274.         write_data(0x08);
  275.         write_data(0x0F);
  276.         write_data(0x0C);
  277.         write_data(0x31);
  278.         write_data(0x36);
  279.         write_data(0x0F);

  280.         write_command(0x11);    //Exit Sleep
  281.         delay(120);

  282.         write_command(0x29);    //Display on
  283.         write_command(0x2c);

  284. }
  285. void addset(unsigned int x,unsigned int y)
  286. {
  287.           write_command(0x2a);
  288.         wr_com16(x>>8,x);
  289.         write_command(0x2b);
  290.         wr_com16(y>>8,y);
  291.         write_command(0x2c);
  292. }

  293. void dsp_single_colour(unsigned char DH,unsigned char DL)
  294. {
  295. unsigned int i,j;
  296. addset(0,0);
  297. for (i=0;i<320;i++)
  298.     for (j=0;j<240;j++)
  299.         wr_com16(DH,DL);

  300. }
复制代码
视频:

最新回复

3.3的LED接到5V上,短时间的话应该没问题,只是亮度会有所衰减,一般情况下不影响TFT的使用,不过要是LED烧坏的话,那就只能拆了TFT换LED了  详情 回复 发表于 2013-11-17 21:24
 
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复
举报

221

帖子

2

TA的资源

一粒金砂(高级)

沙发
 
3.3的LED接到5V上,短时间的话应该没问题,只是亮度会有所衰减,一般情况下不影响TFT的使用,不过要是LED烧坏的话,那就只能拆了TFT换LED了
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表