搜索
bottom↓
回复: 19

请教mega128a驱动ssd1289 tft屏的问题

[复制链接]

出0入0汤圆

发表于 2013-7-9 14:05:10 | 显示全部楼层 |阅读模式
本帖最后由 424778940 于 2013-7-9 14:07 编辑

如题,买了块ssd1289的液晶,从stm32 51都移植过驱动,但是毫无进展,上电无论干嘛都是给我一张大白脸看
我可以确定接线没有问题,都是杜邦线走的,全部用万用表量过,时序上有些代码不太一样,我都不清楚到底哪个是对的了

芯片用的avr mega128a 内部8m晶振,可以确定单片机肯定没问题

程序比较长,我用代码格式,求看看到底哪里有问题

  1. /*
  2. * lib_lcd_HY32C.h
  3. *
  4. * Created: 2013/7/5 13:31:27
  5. *  Author: Adam
  6. */


  7. #ifndef LIB_LCD_HY32C_H_
  8. #define LIB_LCD_HY32C_H_

  9. #ifndef LIB_DELAY_H_
  10. # error "Not define LIB_DELAY_H_ ; LIB_LCD_HY32C_H_ can not work"
  11. #endif

  12. /* LCD color */
  13. #define White                0xFFFF
  14. #define Black                0x0000
  15. #define Grey                0xF7DE
  16. #define Blue                0x001F
  17. #define Blue2                0x051F
  18. #define Red                        0xF800
  19. #define Magenta                0xF81F
  20. #define Green                0x07E0
  21. #define Cyan                0x7FFF
  22. #define Yellow                0xFFE0

  23. #define lib_lcd_hy32c_max_x 320
  24. #define lib_lcd_hy32c_max_y 240

  25. #define lib_lcd_hy32c_CONFIG_PORT PORTD
  26. #define lib_lcd_hy32c_CONFIG_DDR DDRD

  27. #define lib_lcd_hy32c_DB0_PORT PORTA
  28. #define lib_lcd_hy32c_DB0_DDR DDRA
  29. #define lib_lcd_hy32c_DB1_PORT PORTC
  30. #define lib_lcd_hy32c_DB1_DDR DDRC

  31. #define lib_lcd_hy32c_CS PD0
  32. #define lib_lcd_hy32c_WR PD1
  33. #define lib_lcd_hy32c_RESET PD2
  34. #define lib_lcd_hy32c_RS PD3
  35. #define lib_lcd_hy32c_RD PD4
  36. #define lib_lcd_hy32c_BLCNT PD5

  37. //相关引脚控制

  38. void lib_lcd_hy32c_bit_ctrl_CS(unsigned char bit)
  39. {
  40.         if (bit == 0)
  41.         {
  42.                 lib_lcd_hy32c_CONFIG_PORT &= ~(1<<lib_lcd_hy32c_CS);
  43.         }
  44.        
  45.         if (bit == 1)
  46.         {
  47.                 lib_lcd_hy32c_CONFIG_PORT |= (1<<lib_lcd_hy32c_CS);
  48.         }
  49. }

  50. void lib_lcd_hy32c_bit_ctrl_RS(unsigned char bit)
  51. {
  52.         if (bit == 0)
  53.         {
  54.                 lib_lcd_hy32c_CONFIG_PORT &= ~(1<<lib_lcd_hy32c_RS);
  55.         }
  56.        
  57.         if (bit == 1)
  58.         {
  59.                 lib_lcd_hy32c_CONFIG_PORT |= (1<<lib_lcd_hy32c_RS);
  60.         }
  61. }

  62. void lib_lcd_hy32c_bit_ctrl_RD(unsigned char bit)
  63. {
  64.         if (bit == 0)
  65.         {
  66.                 lib_lcd_hy32c_CONFIG_PORT &= ~(1<<lib_lcd_hy32c_RD);
  67.         }
  68.        
  69.         if (bit == 1)
  70.         {
  71.                 lib_lcd_hy32c_CONFIG_PORT |= (1<<lib_lcd_hy32c_RD);
  72.         }
  73. }

  74. void lib_lcd_hy32c_bit_ctrl_WR(unsigned char bit)
  75. {
  76.         if (bit == 0)
  77.         {
  78.                 lib_lcd_hy32c_CONFIG_PORT &= ~(1<<lib_lcd_hy32c_WR);
  79.         }
  80.        
  81.         if (bit == 1)
  82.         {
  83.                 lib_lcd_hy32c_CONFIG_PORT |= (1<<lib_lcd_hy32c_WR);
  84.         }
  85. }

  86. void lib_lcd_hy32c_bit_ctrl_RESET(unsigned char bit)
  87. {
  88.         if (bit == 0)
  89.         {
  90.                 lib_lcd_hy32c_CONFIG_PORT &= ~(1<<lib_lcd_hy32c_RESET);
  91.         }
  92.        
  93.         if (bit == 1)
  94.         {
  95.                 lib_lcd_hy32c_CONFIG_PORT |= (1<<lib_lcd_hy32c_RESET);
  96.         }
  97. }

  98. void lib_lcd_hy32c_bit_ctrl_BLCNT(unsigned char bit)
  99. {
  100.         if (bit == 0)
  101.         {
  102.                 lib_lcd_hy32c_CONFIG_PORT &= ~(1<<lib_lcd_hy32c_BLCNT);
  103.         }
  104.        
  105.         if (bit == 1)
  106.         {
  107.                 lib_lcd_hy32c_CONFIG_PORT |= (1<<lib_lcd_hy32c_BLCNT);
  108.         }
  109. }


  110. void lib_lcd_hy32c_write_reg(unsigned int reg)
  111. {
  112.         lib_lcd_hy32c_bit_ctrl_CS(0);
  113.         lib_lcd_hy32c_bit_ctrl_RS(0);
  114.         //lib_lcd_hy32c_bit_ctrl_RD(1);
  115.        
  116.         lib_lcd_hy32c_DB0_PORT = (reg >> 8);
  117.         lib_lcd_hy32c_DB1_PORT = reg;
  118.        
  119.         lib_lcd_hy32c_bit_ctrl_WR(0);
  120.         lib_lcd_hy32c_bit_ctrl_WR(1);
  121.         lib_lcd_hy32c_bit_ctrl_CS(1);
  122. }

  123. void lib_lcd_hy32c_write_data(unsigned int data)
  124. {
  125.         lib_lcd_hy32c_bit_ctrl_CS(0);
  126.         lib_lcd_hy32c_bit_ctrl_RS(1);
  127.        
  128.         lib_lcd_hy32c_DB0_PORT = (data >> 8);
  129.         lib_lcd_hy32c_DB1_PORT = data;
  130.        
  131.         lib_lcd_hy32c_bit_ctrl_WR(0);
  132.         lib_lcd_hy32c_bit_ctrl_WR(1);
  133.         lib_lcd_hy32c_bit_ctrl_CS(1);
  134. }

  135. void lib_lcd_hy32c_write_reg_data(unsigned int reg,unsigned int data)
  136. {
  137.         lib_lcd_hy32c_write_reg(reg);
  138.         lib_lcd_hy32c_write_data(data);
  139.         delay_reduce(1000);
  140. }

  141. void lib_lcd_hy32c_set_cursor(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2)
  142. {
  143.         lib_lcd_hy32c_write_reg_data(0x0044,(x2<<8)+x1);
  144.         lib_lcd_hy32c_write_reg_data(0x0045,y1);
  145.         lib_lcd_hy32c_write_reg_data(0x0046,y2);
  146.         lib_lcd_hy32c_write_reg_data(0x004e,x1);
  147.         lib_lcd_hy32c_write_reg_data(0x004f,y1);
  148.         lib_lcd_hy32c_write_reg(0x0022);
  149. }

  150. void lib_lcd_hy32c_clear()
  151. {
  152.         //lib_lcd_hy32c_set_cursor(0,0);
  153.         lib_lcd_hy32c_write_reg(0x0022);
  154.        
  155.         lib_lcd_hy32c_bit_ctrl_RS(1);
  156.         lib_lcd_hy32c_bit_ctrl_CS(0);
  157.        
  158.         for(unsigned int i = 0;i < lib_lcd_hy32c_max_y;i++)
  159.         {
  160.                 for(unsigned int j = 0;j < lib_lcd_hy32c_max_x;j++)
  161.                 {
  162.                         lib_lcd_hy32c_bit_ctrl_WR(0);
  163.                         lib_lcd_hy32c_bit_ctrl_WR(1);
  164.                 }
  165.         }
  166.        
  167.         lib_lcd_hy32c_bit_ctrl_CS(1);
  168. }

  169. void lib_lcd_hy32c_init()
  170. {
  171.         //config db ddr
  172.         lib_lcd_hy32c_DB0_DDR = 0xff;
  173.         lib_lcd_hy32c_DB1_DDR = 0xff;
  174.        
  175.         //config db port
  176.         lib_lcd_hy32c_DB0_PORT = 0x00;
  177.         lib_lcd_hy32c_DB1_PORT = 0x00;
  178.        
  179.         //config config ddr and port
  180.         lib_lcd_hy32c_CONFIG_DDR = 0xff;
  181.         lib_lcd_hy32c_CONFIG_DDR |= ((1<<lib_lcd_hy32c_CS) | (1<<lib_lcd_hy32c_RS) | (1<<lib_lcd_hy32c_BLCNT));
  182.         lib_lcd_hy32c_CONFIG_DDR &= ~((1<<lib_lcd_hy32c_WR) | (1<<lib_lcd_hy32c_RESET) | (1<<lib_lcd_hy32c_RD));
  183.         lib_lcd_hy32c_CONFIG_PORT = 0x00;
  184.        
  185.         //backlight open
  186.         lib_lcd_hy32c_bit_ctrl_BLCNT(1);
  187.        
  188.         lib_lcd_hy32c_bit_ctrl_CS(1);
  189.         lib_lcd_hy32c_bit_ctrl_RD(1);
  190.         lib_lcd_hy32c_bit_ctrl_WR(1);

  191.         delay_reduce(5500);
  192.         lib_lcd_hy32c_bit_ctrl_RESET(0);
  193.         delay_reduce(1500);
  194.         lib_lcd_hy32c_bit_ctrl_RESET(1);

  195.         lib_lcd_hy32c_write_reg_data(0x0000,0x0001);        //打开晶振
  196.         lib_lcd_hy32c_write_reg_data(0x0003,0x08A4);        //电源控制1 ;0xA8A4
  197.         lib_lcd_hy32c_write_reg_data(0x000C,0x0000);        //电源控制2 ;0xA8A4
  198.         lib_lcd_hy32c_write_reg_data(0x000D,0x080C);        //电源控制3 ;0xA8A4
  199.         lib_lcd_hy32c_write_reg_data(0x000E,0x2B00);        //电源控制4 ;0xA8A4
  200.         lib_lcd_hy32c_write_reg_data(0x001E,0x00B0);        //电源控制5 ;0xA8A4
  201.         lib_lcd_hy32c_write_reg_data(0x0001,0x233F);        //驱动输出控制320*240  0x6B3F  RGB
  202.         lib_lcd_hy32c_write_reg_data(0x0002,0x0600);        //液晶驱动邋AC控制
  203.         lib_lcd_hy32c_write_reg_data(0x0010,0x0000);        //睡眠控制
  204.         lib_lcd_hy32c_write_reg_data(0x0011,0x6070);        //0x4030           //定义数据格式  16位色
  205.         lib_lcd_hy32c_write_reg_data(0x0005,0x0000);        //共享寄存器1
  206.         lib_lcd_hy32c_write_reg_data(0x0006,0x0000);        //共享寄存器2
  207.         lib_lcd_hy32c_write_reg_data(0x0016,0xEF1C);        //水平玄关
  208.         lib_lcd_hy32c_write_reg_data(0x0017,0x0003);        //垂直玄关
  209.         lib_lcd_hy32c_write_reg_data(0x0007,0x0233);        //显示控制    0x0233
  210.         lib_lcd_hy32c_write_reg_data(0x000B,0x0000);        //帧周期控制
  211.         lib_lcd_hy32c_write_reg_data(0x000F,0x0000);        //扫描开始地址
  212.         lib_lcd_hy32c_write_reg_data(0x0041,0x0000);        //垂直卷轴控制 1
  213.         lib_lcd_hy32c_write_reg_data(0x0042,0x0000);        //垂直卷轴控制 2
  214.         lib_lcd_hy32c_write_reg_data(0x0048,0x0000);        //第一个窗口开始
  215.         lib_lcd_hy32c_write_reg_data(0x0049,0x013F);        //第一个窗口结束
  216.         lib_lcd_hy32c_write_reg_data(0x004A,0x0000);        //第二个窗口开始
  217.         lib_lcd_hy32c_write_reg_data(0x004B,0x0000);        //第二个窗口结束
  218.         lib_lcd_hy32c_write_reg_data(0x0044,0xEF00);        //水平RAM地址
  219.         lib_lcd_hy32c_write_reg_data(0x0045,0x0000);        //垂直RAM起始地址
  220.         lib_lcd_hy32c_write_reg_data(0x0046,0x013F);        //垂直RAM结束地址
  221.         lib_lcd_hy32c_write_reg_data(0x0030,0x0707);        //伽马控制1
  222.         lib_lcd_hy32c_write_reg_data(0x0031,0x0204);        //伽马控制2
  223.         lib_lcd_hy32c_write_reg_data(0x0032,0x0204);        //伽马控制3
  224.         lib_lcd_hy32c_write_reg_data(0x0033,0x0502);        //伽马控制4
  225.         lib_lcd_hy32c_write_reg_data(0x0034,0x0507);        //伽马控制5
  226.         lib_lcd_hy32c_write_reg_data(0x0035,0x0204);        //伽马控制6
  227.         lib_lcd_hy32c_write_reg_data(0x0036,0x0204);        //伽马控制7
  228.         lib_lcd_hy32c_write_reg_data(0x0037,0x0502);        //伽马控制8
  229.         lib_lcd_hy32c_write_reg_data(0x003A,0x0302);        //伽马控制9
  230.         lib_lcd_hy32c_write_reg_data(0x003B,0x0302);        //伽马控制10
  231.         lib_lcd_hy32c_write_reg_data(0x0023,0x0000);        //RAM write data mask (1)
  232.         lib_lcd_hy32c_write_reg_data(0x0024,0x0000);        //RAM write data mask (2)
  233.         lib_lcd_hy32c_write_reg_data(0x0025,0x8000);
  234.         lib_lcd_hy32c_write_reg_data(0x004f,0);                        //行首址0
  235.         lib_lcd_hy32c_write_reg_data(0x004e,0);                        //列首址0
  236.         lib_lcd_hy32c_write_reg(0x0022);
  237. }

  238. void paint(unsigned int color)
  239. {
  240.         unsigned char x;
  241.         unsigned int y;
  242.        
  243.         for(y=320;y>0;y--)
  244.         {
  245.                 for (x=240;x>0;x--)
  246.                 {
  247.                         lib_lcd_hy32c_write_data(color);
  248.                 }
  249.         }
  250. }

  251. void lib_lcd_hy32c_display_test()
  252. {
  253.         lib_lcd_hy32c_init();
  254.         lib_lcd_hy32c_set_cursor(0,0,239,319);
  255.         paint(0xf800);
  256.         paint(0x07e0);
  257.         paint(0x001f);
  258. }


  259. #endif /* LIB_LCD_HY32C_H_ */
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-7-9 19:15:58 | 显示全部楼层
看我的帖子,m128驱动ssd1297 tft240320,可以横屏和竖屏,只不过是8位的。希望对你有帮助。
http://www.amobbs.com/thread-5540837-1-1.html
从网上找ssd1297驱动资料很少,自己根据字符部分,增加了汉字部分。现在汉字也驱动起来了。
后来无意中看了ssd1289的资料,和ssd1297是通用了。
早看ssd1289的资料就不用这么费尽了。

出0入0汤圆

 楼主| 发表于 2013-7-10 00:46:47 | 显示全部楼层
本帖最后由 424778940 于 2013-7-10 00:50 编辑
wangl001w 发表于 2013-7-9 19:15
看我的帖子,m128驱动ssd1297 tft240320,可以横屏和竖屏,只不过是8位的。希望对你有帮助。
http://www.am ...


额,感谢提供资料,但是用你的程序改了一下还是不成,我现在严重怀疑是不是屏幕硬件故障
单步调试看单片机引脚输出一切正常,线序都对,都通,我最担心的还是时序是否正确,现在是无论我怎么弄,那屏就是毫无反应,开了背光就白屏...

出0入0汤圆

发表于 2013-7-10 09:28:07 | 显示全部楼层
个人感觉,重点调01,11这两寄存器,我的是8位的,采用565格式的,你用的是16位的,咱俩是不一样的

出0入0汤圆

发表于 2013-7-10 09:40:00 | 显示全部楼层
            我用过OK的代码

            LCD_Code = SSD1289;
            LCD_WriteReg(0x0000,0x0001);    delay_ms(50);   /* 打开晶振 */
            LCD_WriteReg(0x0003,0xA8A4);    delay_ms(50);  //电源控制
            LCD_WriteReg(0x000C,0x0000);    delay_ms(50);   
            LCD_WriteReg(0x000D,0x080C);    delay_ms(50);   
            LCD_WriteReg(0x000E,0x2B00);    delay_ms(50);   
            LCD_WriteReg(0x001E,0x00B0);    delay_ms(50);   
            LCD_WriteReg(0x0001,0x2B3F);    delay_ms(50);   /* 驱动输出控制320*240 0x2B3F */
            LCD_WriteReg(0x0002,0x0600);    delay_ms(50);
            LCD_WriteReg(0x0010,0x0000);    delay_ms(50);//睡眠模式0001使能
            //LCD_WriteReg(0x0011,0x6070);    delay_ms(50);   /* 定义数据格式 16位色 横屏 0x6070 */
            LCD_WriteReg(0x0011,0x6058);    delay_ms(50);//扫描模式
            LCD_WriteReg(0x0005,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0006,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0016,0xEF1C);    delay_ms(50);
            LCD_WriteReg(0x0017,0x0003);    delay_ms(50);
            LCD_WriteReg(0x0007,0x0233);    delay_ms(50);         
            LCD_WriteReg(0x000B,0x0000);    delay_ms(50);
            LCD_WriteReg(0x000F,0x0000);    delay_ms(50);   /* 扫描开始地址 */
            LCD_WriteReg(0x0041,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0042,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0048,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0049,0x013F);    delay_ms(50);
            LCD_WriteReg(0x004A,0x0000);    delay_ms(50);
            LCD_WriteReg(0x004B,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0044,0xEF00);    delay_ms(50);//水平地址
            LCD_WriteReg(0x0045,0x0000);    delay_ms(50);//垂直地址
            LCD_WriteReg(0x0046,0x013F);    delay_ms(50);
            LCD_WriteReg(0x0030,0x0707);    delay_ms(50);
            LCD_WriteReg(0x0031,0x0204);    delay_ms(50);
            LCD_WriteReg(0x0032,0x0204);    delay_ms(50);
            LCD_WriteReg(0x0033,0x0502);    delay_ms(50);
            LCD_WriteReg(0x0034,0x0507);    delay_ms(50);
            LCD_WriteReg(0x0035,0x0204);    delay_ms(50);
            LCD_WriteReg(0x0036,0x0204);    delay_ms(50);
            LCD_WriteReg(0x0037,0x0502);    delay_ms(50);
            LCD_WriteReg(0x003A,0x0302);    delay_ms(50);
            LCD_WriteReg(0x003B,0x0302);    delay_ms(50);
            LCD_WriteReg(0x0023,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0024,0x0000);    delay_ms(50);
            LCD_WriteReg(0x0025,0x8000);    delay_ms(50);//刷屏频率 65HZ
            LCD_WriteReg(0x004f,0);        /* 行首址0 */
            LCD_WriteReg(0x004e,0);        /* 列首址0 */

出0入0汤圆

 楼主| 发表于 2013-7-10 13:26:30 | 显示全部楼层
tp24656 发表于 2013-7-10 09:40
我用过OK的代码

            LCD_Code = SSD1289;

用你的也试了...还是不行,无论我做什么,都是白屏

出0入0汤圆

 楼主| 发表于 2013-7-10 13:49:53 | 显示全部楼层
wangl001w 发表于 2013-7-10 09:28
个人感觉,重点调01,11这两寄存器,我的是8位的,采用565格式的,你用的是16位的,咱俩是不一样的 ...

我在看ssd1289的时序图,其他线我都知道,倒是有个叫D/C的莫名其妙,这是什么线啊....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-7-10 13:53:35 | 显示全部楼层
数据/命令

出0入0汤圆

发表于 2013-7-10 13:55:57 | 显示全部楼层
424778940 发表于 2013-7-10 13:49
我在看ssd1289的时序图,其他线我都知道,倒是有个叫D/C的莫名其妙,这是什么线啊....
...

LZ啊,这线都不知道,如何写啊,得先了解基本的--

出0入0汤圆

 楼主| 发表于 2013-7-10 13:59:56 | 显示全部楼层
sleet1986 发表于 2013-7-10 13:55
LZ啊,这线都不知道,如何写啊,得先了解基本的--

问题是这对应的是那根线啊...
我现在是这样定义的
  1. #define lib_lcd_hy32c_CONFIG_PORT PORTD
  2. #define lib_lcd_hy32c_CONFIG_DDR DDRD

  3. #define lib_lcd_hy32c_DB0_PORT PORTA
  4. #define lib_lcd_hy32c_DB0_DDR DDRA
  5. #define lib_lcd_hy32c_DB1_PORT PORTC
  6. #define lib_lcd_hy32c_DB1_DDR DDRC

  7. #define lib_lcd_hy32c_CS PD0
  8. #define lib_lcd_hy32c_WR PD1
  9. #define lib_lcd_hy32c_RESET PD2
  10. #define lib_lcd_hy32c_RS PD3
  11. #define lib_lcd_hy32c_RD PD4
  12. #define lib_lcd_hy32c_BLCNT PD5
复制代码

出0入0汤圆

 楼主| 发表于 2013-7-10 14:01:52 | 显示全部楼层
jshp32 发表于 2013-7-10 13:53
数据/命令


这是厂家原理图里的接线口...那个te被nc了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-7-10 14:07:29 | 显示全部楼层
sch上的RS对应于datasheet上的D/C

出0入0汤圆

 楼主| 发表于 2013-7-10 14:09:30 | 显示全部楼层
jshp32 发表于 2013-7-10 14:07
sch上的RS对应于datasheet上的D/C

但是ds里的dc是两根线表示的,这个要怎么看,确实这方面我白,求指教

出0入0汤圆

发表于 2013-7-10 14:13:24 | 显示全部楼层
424778940 发表于 2013-7-10 14:01
这是厂家原理图里的接线口...那个te被nc了

对应RS引脚,

出0入0汤圆

发表于 2013-7-10 14:14:17 | 显示全部楼层
哪来的两根线, 就一根线!高电平读写data,低电平读写command,还是好好看ds吧!

出0入0汤圆

 楼主| 发表于 2013-7-10 16:27:09 | 显示全部楼层
jshp32 发表于 2013-7-10 14:14
哪来的两根线, 就一根线!高电平读写data,低电平读写command,还是好好看ds吧! ...
  1. void lib_lcd_hy32c_write_reg(unsigned int reg)
  2. {
  3.         //命令
  4.         lib_lcd_hy32c_bit_ctrl_RS(0);
  5.         //非读模式
  6.         lib_lcd_hy32c_bit_ctrl_RD(1);
  7.         //写模式
  8.         lib_lcd_hy32c_bit_ctrl_WR(0);
  9.         //片选
  10.         lib_lcd_hy32c_bit_ctrl_CS(0);
  11.        
  12.        
  13.         lib_lcd_hy32c_DB0_PORT = reg>>8;
  14.         lib_lcd_hy32c_DB1_PORT = reg;
  15.        
  16.         delay_reduce(100);
  17.         //片选
  18.         lib_lcd_hy32c_bit_ctrl_CS(1);
  19.         lib_lcd_hy32c_bit_ctrl_WR(1);
  20.         delay_reduce(100);
  21.        
  22. }

  23. void lib_lcd_hy32c_write_data(unsigned int data)
  24. {
  25.         //数据
  26.         lib_lcd_hy32c_bit_ctrl_RS(1);
  27.         //非读模式
  28.         lib_lcd_hy32c_bit_ctrl_RD(1);
  29.         //写模式
  30.         lib_lcd_hy32c_bit_ctrl_WR(0);
  31.         //片选
  32.         lib_lcd_hy32c_bit_ctrl_CS(0);
  33.        
  34.        
  35.         lib_lcd_hy32c_DB0_PORT = data>>8;
  36.         lib_lcd_hy32c_DB1_PORT = data;
  37.        
  38.         delay_reduce(100);
  39.         //片选
  40.         lib_lcd_hy32c_bit_ctrl_CS(1);
  41.         lib_lcd_hy32c_bit_ctrl_WR(1);
  42.         delay_reduce(100);
  43. }
复制代码
看完手册之后修改成这样,是否符合时序呢?

出0入0汤圆

 楼主| 发表于 2013-7-10 16:41:21 | 显示全部楼层
厂家给我的stm32程序是这种时序
  1. void lib_lcd_hy32c_write_reg(unsigned int reg)
  2. {
  3.         //片选
  4.         lib_lcd_hy32c_bit_ctrl_CS(0);
  5.         //命令
  6.         lib_lcd_hy32c_bit_ctrl_RS(0);
  7.         //非读模式
  8.         lib_lcd_hy32c_bit_ctrl_RD(1);
  9.        
  10.         lib_lcd_hy32c_DB0_PORT = reg>>8;
  11.         lib_lcd_hy32c_DB1_PORT = reg;
  12.        
  13.         //写模式
  14.         lib_lcd_hy32c_bit_ctrl_WR(0);
  15.         lib_lcd_hy32c_bit_ctrl_WR(1);
  16.         delay_reduce(100);
  17.         //片选
  18.         lib_lcd_hy32c_bit_ctrl_CS(1);
  19.        
  20. }

  21. void lib_lcd_hy32c_write_data(unsigned int data)
  22. {
  23.         //片选
  24.         lib_lcd_hy32c_bit_ctrl_CS(0);
  25.         //数据
  26.         lib_lcd_hy32c_bit_ctrl_RS(1);
  27.         //非读模式
  28.         lib_lcd_hy32c_bit_ctrl_RD(1);
  29.        
  30.         lib_lcd_hy32c_DB0_PORT = data>>8;
  31.         lib_lcd_hy32c_DB1_PORT = data;

  32.         //写模式
  33.         lib_lcd_hy32c_bit_ctrl_WR(0);
  34.         lib_lcd_hy32c_bit_ctrl_WR(1);
  35.         delay_reduce(100);
  36.         //片选
  37.         lib_lcd_hy32c_bit_ctrl_CS(1);
  38. }
复制代码
都测试了,全都不行,无论我做什么 lcd一律白屏

出0入0汤圆

 楼主| 发表于 2013-7-11 17:06:50 | 显示全部楼层
= =....自己顶下...

出0入0汤圆

发表于 2013-8-22 12:24:55 | 显示全部楼层
我也正在玩这个屏,只能显示例程设定的16*16的字符,想改为32*32的结果改了一天都不行;你们谁有SSD1289这个屏32*32显示的例程呢?我学习一下啦!

出0入0汤圆

发表于 2013-8-23 00:09:17 | 显示全部楼层
别费劲了,一看楼主就没有经验,m128的内部晶振不准,要先改外部晶振。才能保证你的输出信号电平时序。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表