极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14988|回复: 8

【求助】Attiny85 驱动SPI TFT 9664液晶

[复制链接]
发表于 2016-3-5 03:33:56 | 显示全部楼层 |阅读模式
本帖最后由 maxims 于 2016-3-8 12:30 编辑

我想用Attiny85 驱动SPI TFT 9664液晶
但是,这个该死的ATTINY85的SPI是USI接口,不是UNO系列的SPI。
网络找遍了,资料很少很少。。。有用过的兄弟,请不吝赐教,谢谢。

PS:找到了这个库,编译能通过,但是我点spi的lcd没成功



PSS:然后又找到这个库,能显示了,但是显示的东西不正确。感觉丢数据了。

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2016-3-6 08:36:19 | 显示全部楼层
78个人当中,就没一个对这个问题有看法的吗?
回复 支持 反对

使用道具 举报

发表于 2016-3-6 09:31:53 | 显示全部楼层
没怎么用过tiny85,看了官方的手册,的确是USI,应该和SPI有通用的地方,不然也没办法烧写bootloader了吧
回复 支持 反对

使用道具 举报

发表于 2016-3-6 09:41:25 | 显示全部楼层
没用过 Attiny85,不清楚。不知道有没类似库文件可以使用。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-7 19:37:12 | 显示全部楼层
xinhoujue 发表于 2016-3-6 09:41
没用过 Attiny85,不清楚。不知道有没类似库文件可以使用。。。

1楼已上传了usi的驱动lib,能否帮忙测试一下?
回复 支持 反对

使用道具 举报

发表于 2016-3-7 22:05:40 | 显示全部楼层
maxims 发表于 2016-3-7 19:37
1楼已上传了usi的驱动lib,能否帮忙测试一下?

我没有【Attiny85 驱动SPI TFT 9664液晶】啊,没法帮你了~~~~~~
回复 支持 反对

使用道具 举报

发表于 2016-3-7 22:40:02 | 显示全部楼层
maxims 发表于 2016-3-7 19:37
1楼已上传了usi的驱动lib,能否帮忙测试一下?

什么样的屏幕,我这边可测试的spi的模块没有,但是我有tiny85.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-7 23:15:29 | 显示全部楼层
164335413 发表于 2016-3-7 22:40
什么样的屏幕,我这边可测试的spi的模块没有,但是我有tiny85.

试试读Tf?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-8 12:32:46 | 显示全部楼层
本帖最后由 maxims 于 2016-3-8 12:34 编辑

后来又找到了一个库,能驱动显示图标了,但是感觉还有问题,比如天线只显示一部分(跳空一格显示)
代码如下:

  1. #include <tinySPI.h>

  2. int dc  = 0;
  3. int rst = 3;
  4. int SS = 4;

  5. #define NOP            0x00
  6. #define Function_Set    0x20
  7. #define Display_Control 0x08
  8. #define Set_Y_Address   0x40
  9. #define Set_X_Address   0x80
  10. #define Set_V0          0x80
  11. #define Set_Test_Mode   0x30

  12. #define DIS_PHONEANT_0 0 //天线
  13. #define DIS_PHONEANT_1 4 //信号1 格
  14. #define DIS_PHONEANT_2 5 //信号2 格
  15. #define DIS_PHONEANT_3 7 //信号3 格
  16. #define DIS_PHONEANT_4 8 //信号4 格
  17. #define DIS_PHONEANT_5 10
  18. #define DIS_PHONE 20 //电话
  19. #define DIS_LOCK 30 //锁定
  20. #define DIS_Gr 40 //Gr 符号
  21. #define DIS_SMS 50 //短信符号
  22. #define DIS_SHAKE 60 //震动符号
  23. #define DIS_HOME 61 // 室内符号
  24. #define DIS_HOME_ANT 65 //室内天线符号
  25. #define DIS_HOME_ANT_1 67 //室内天线1 格
  26. #define DIS_HOME_ANT_2 68 //室内天线 2 格
  27. #define DIS_HOME_ANT_3 69 //室内天线 3 格
  28. #define DIS_MUTE 70 //静音符号
  29. #define DIS_ALAM 75 //闹钟符号
  30. #define DIS_CELL_0 80 //电池电量符号
  31. #define DIS_CELL_1 94 //电池电量 1格
  32. #define DIS_CELL_2 95 //电池电量2 格
  33. #define DIS_CELL_3 93 //电池电量 3 格
  34. #define DIS_ON 0xFF
  35. #define DIS_OFF 0x00

  36. const char write_chinese[][24] = {
  37.   /*--  文字:  两  --*/
  38.   /*--  Trebuchet MS9;  此字体下对应的点阵为:宽x高=12x12   --*/
  39.   /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/
  40.   0x01, 0xF9, 0x89, 0x7F, 0x49, 0x89, 0x7F, 0x49, 0x89, 0xF9, 0x01, 0x00,
  41.   0x00, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x04, 0x07, 0x00, 0x00,
  42. };

  43. void setup() {
  44.   pinMode(rst, OUTPUT);//bl
  45.   pinMode(dc, OUTPUT);//dc
  46.   pinMode(SS, OUTPUT);//cs
  47.   SPI.begin ();
  48.   LCDInit();
  49.   cls();
  50.   putdraw(DIS_PHONEANT_0, DIS_ON);
  51.   putdraw(DIS_PHONEANT_1, DIS_ON);
  52.   putdraw(DIS_PHONEANT_2, DIS_ON);
  53.   putdraw(DIS_PHONEANT_3, DIS_ON);
  54.   putdraw(DIS_PHONEANT_4, DIS_ON);
  55.   putdraw(DIS_CELL_0, DIS_ON);
  56.   putdraw(DIS_CELL_1, DIS_ON);
  57.   putdraw(DIS_CELL_2, DIS_ON);
  58.   putdraw(DIS_CELL_3, DIS_ON);
  59. }

  60. void send_cmd(unsigned char cmd, unsigned char dat)
  61. {
  62.   digitalWrite(SS, LOW);
  63.   digitalWrite(dc, LOW);
  64.   SPI.transfer(cmd | dat);
  65.   digitalWrite(SS, HIGH);
  66. }

  67. void send_dat(unsigned char dat)
  68. {
  69.   digitalWrite(SS, LOW);
  70.   digitalWrite(dc, HIGH);
  71.   SPI.transfer(dat);
  72.   digitalWrite(SS, HIGH);
  73. }

  74. void LCDInit(void)
  75. {
  76.   digitalWrite(rst, LOW);
  77.   delay(10);
  78.   digitalWrite(rst, HIGH);
  79.   delay(10);
  80.   send_cmd(Function_Set, 0x01);
  81.   send_cmd(Set_V0, 0x30);
  82.   send_cmd(Set_Test_Mode, 0x02);
  83.   send_cmd(Function_Set, 0x00);
  84.   send_cmd(Display_Control, 0x04);//显示模式控制:0x04正常模式,0x05镜像模式
  85.   cls();
  86. }

  87. void LCD_set_XY(unsigned char x, unsigned char y)
  88. {
  89.   send_cmd(Set_X_Address, x);
  90.   send_cmd(Set_Y_Address, y);
  91. }

  92. void cls(void)
  93. {
  94.   int i;
  95.   send_cmd(Set_X_Address,  0);
  96.   send_cmd(Set_Y_Address, 0);
  97.   for (i = 0; i < 960; i++)
  98.     send_dat(0x00);
  99.   send_cmd(Set_X_Address, 0);
  100.   send_cmd(Set_Y_Address, 0);
  101. }

  102. void LCD_write_chinese_string(unsigned char X, unsigned char Y,
  103.                               unsigned char ch_with, unsigned char num,
  104.                               unsigned char line, unsigned char row)
  105. {
  106.   unsigned char i, n;
  107.   LCD_set_XY(X, Y);
  108.   for (i = 0; i < num;)//设置字符数
  109.   {
  110.     for (n = 0; n < ch_with * 2; n++)//设置字符宽度
  111.     {
  112.       if (n == ch_with)
  113.       {
  114.         if (i == 0) LCD_set_XY(X, Y - 1);
  115.         else
  116.           LCD_set_XY((X + (ch_with + row)*i), Y - 1);
  117.       }
  118.       send_dat(write_chinese[line + i][n]);
  119.     }
  120.     i++;
  121.     LCD_set_XY((X + (ch_with + row)*i), Y);
  122.   }
  123. }

  124. void putdraw(unsigned char x, unsigned char s )
  125. {
  126.   unsigned char i;
  127.   send_cmd(Set_X_Address, x);
  128.   send_cmd(Set_Y_Address, 8);
  129.   send_dat(s);
  130. }

  131. void loop() {
  132.   //  SHOW_BMP();
  133.   //LCD_write_chinese_string(0, 7, 12, 7, 0, 0);

  134. }
复制代码


  putdraw(DIS_PHONEANT_0, DIS_ON);
  putdraw(DIS_PHONEANT_1, DIS_ON);
  putdraw(DIS_PHONEANT_2, DIS_ON);
  putdraw(DIS_PHONEANT_3, DIS_ON);
  putdraw(DIS_PHONEANT_4, DIS_ON);
  putdraw(DIS_CELL_0, DIS_ON);
  putdraw(DIS_CELL_1, DIS_ON);
  putdraw(DIS_CELL_2, DIS_ON);
  putdraw(DIS_CELL_3, DIS_ON);
这几条就是显示图标的,分别是天线和电池,天线0是叉叉,1~4是信号格,结果就是0/2/4显示,1/3是空的。电池图标完全不见了。

该代码在Atmega328@5v@16Mhz板子上完全没问题。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 23:17 , Processed in 0.050231 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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