找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5258|回复: 1
打印 上一主题 下一主题
收起左侧

单片机驱动3310lcd电路及程序

[复制链接]
跳转到指定楼层
楼主
ID:72705 发表于 2015-1-24 15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前几天手机排线坏了,到配件市场买排线,发现还有3310的屏买,12一块,想起来网上有过用单片机驱动3310的,就买了两块回来,今天终于把它弄好了,先上个图片,以验证真实性:






咱手机的摄像头不好,大家将就着看吧,想看清晰的,自己做吧,我给大家提供电路和程序。

   

小弟的硬件电路就是参照这些东西,第一个图是引脚线序,第二个图就是看了个4.7uf的电容,资料上说是调对比度的。
但是这个屏是3.3v,所以电源不要直接用5v,你可以加一个ASM1117,把5v降到3.3v就ok了。
程序如下:
  1. /*            3310液晶显示屏C51测试程序
  2.                  2004/07/31/BD2YA
  3. 接脚资料:
  4. Pin Signal Description Port
  5. 1:VDD
  6. Power Input. Logic supply voltage range VDD to GND : 2.7 to 3.3 V
  7. 2:SCLK
  8. Serial clock. Input for the clock signal: 0.0 to 4.0 Mbits/s.
  9. 3:SDIN
  10. Serial data. Input for the data line.
  11. 4:D/C
  12. Mode Select. To select either command/address or data input.
  13. 5:SCE
  14. Chip enable input. The enable pin allows data to be clocked in. The signal is active LOW.
  15. 6:GND
  16. Ground
  17. 7:VOUT
  18. Ouptut voltage. Add external 1-10 uF electrolytic capacitor from VOUT to GND
  19. 8:RES
  20. External reset. This signal will reset the device and must be applied to properly
  21. initialize the chip. The signal is active LOW.
  22. 控制芯片:
  23. PCD8544 */
  24. #include <reg51.h>
  25. #define uchar unsigned char
  26. #define uint unsigned int   
  27. sbit sdin=P2^1; //数据
  28. sbit sclk=P2^0;//时钟
  29. sbit dc=P2^2;//1写数据,0写指令
  30. sbit sce=P0^0;//片选
  31. sbit res=P0^1;//复位,0复位

  32. //---------------------超快,但多了135字-----------------------------
  33. unsigned char mask_table[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

  34. void write_byte(uchar dd,bit a)//写一字节
  35. {
  36. char i;
  37.    sce=0;
  38.    dc=a;
  39.    for(i=0;i<8;i++)
  40.     {
  41.      if(dd&mask_table[i])
  42.      sdin=1;
  43.      else
  44. sdin=0;
  45.      sclk=0;   
  46.      sclk=1;   
  47.      }
  48.    dc=1;
  49. sce=1;
  50. sdin=1;
  51. }


  52. void setadd(unsigned char a,unsigned char d)//设定地址
  53. {
  54. write_byte((d|0x40),0);
  55.         write_byte((a|0x80),0);
  56. }

  57. void qp()//清屏
  58. {
  59. uchar t;
  60. uchar k;
  61. uint d;
  62. d=0;
  63. for(t=0;t<7;t++)
  64. {  
  65.       for(k=0;k<0x85;k++)
  66.       {      
  67.        write_byte(0,1);
  68.        d=d+1;      
  69.       }
  70.      }

  71. }

  72. uchar code dal[]=
  73. {
  74. //------------------------------------------------------------------------------
  75. /*-- 调入了一幅图像:C:\Documents and Settings\freelover\桌面\未标题-1.bmp --*/
  76. /*-- 宽度x高度=84x48 --*/
  77. 0xE0,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xE7,0xFB,0xBB,0xBB,0x5B,0xE7,0xFF,0xFF,0xE7,
  78. 0xFB,0xBB,0xBB,0x5B,0xE7,0xFF,0xFF,0xF7,0xF7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,
  79. 0xF7,0xFB,0xFB,0xF7,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFB,
  80. 0xFB,0x03,0xFB,0xFB,0xF3,0xFF,0xFF,0x3F,0x5F,0x5F,0x5F,0x5F,0x3F,0xFF,0xFF,0x3F,
  81. 0xDF,0xDF,0xDF,0x9F,0xFF,0xFF,0xFF,0xDF,0xDF,0x07,0xDF,0xDF,0xFF,0xFF,0xFF,0xFF,
  82. 0xFE,0xFE,0xFE,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xF7,0xF7,0xF7,0xF7,
  83. 0xF8,0xFF,0xFF,0xF9,0xF7,0xF7,0x37,0xF7,0xF8,0xFF,0xFF,0xF7,0xF7,0xF0,0xF7,0xF7,
  84. 0x7F,0x7F,0x7F,0x7C,0x7B,0x77,0x77,0x7B,0x7C,0x7F,0x7F,0x3F,0x7F,0xFF,0x7F,0x7F,
  85. 0x7F,0x7F,0x7F,0x7F,0x77,0xB0,0x77,0xFF,0xFF,0x3F,0xFF,0xF8,0xF7,0xF7,0xF7,0xF7,
  86. 0xFB,0xFF,0xFF,0xF3,0xF6,0xF6,0x36,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF7,0xF7,
  87. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  88. 0xFF,0xFF,0xFF,0xFF,0xFF,0x81,0xBD,0xBD,0xBD,0xBD,0x00,0xBD,0xBD,0xBD,0xBD,0x80,
  89. 0xFD,0xFF,0xFF,0xFF,0x00,0xFF,0xFD,0xED,0xED,0x01,0xED,0xCD,0xAD,0xFD,0xFF,0x00,
  90. 0xFF,0xFF,0xFF,0x00,0xDB,0xDB,0x00,0x7F,0x5B,0xDB,0xDA,0x03,0xDA,0xDB,0xDB,0xDB,
  91. 0xFF,0xF7,0x76,0xB6,0xC6,0xF6,0x36,0xF7,0xFB,0x7B,0x80,0xFB,0xFB,0x01,0xFB,0xFF,
  92. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  93. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,
  94. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFB,0xFA,0xFA,0xFA,0xFA,0xFA,0xFA,
  95. 0xFA,0xFA,0xFA,0xF0,0xFF,0xDF,0x1D,0xFC,0xFE,0xFE,0xF0,0xFF,0xF7,0xFB,0xFC,0xFF,
  96. 0xFE,0xFD,0xF3,0xFB,0xFF,0xFE,0xFC,0xFE,0xFE,0xFE,0xF6,0xFA,0xFD,0xFE,0xFF,0xFB,
  97. 0xF7,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  98. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xDD,0xBE,0xBE,0xBE,0xDD,
  99. 0xFF,0xBE,0xBE,0x80,0xBD,0xBE,0xFE,0xFC,0xFF,0xFF,0xCD,0xB6,0xBA,0xBA,0x81,0xBF,
  100. 0xFF,0xFF,0x99,0xB6,0xB6,0xB6,0xCC,0xFF,0xFF,0xFF,0x80,0xBD,0xBE,0xBE,0xBE,0xC1,
  101. 0xFF,0xFE,0xFC,0xE2,0x1F,0xCF,0xF2,0xFC,0xFE,0xFF,0xE3,0xDD,0xBE,0xBE,0xDD,0xE3,
  102. 0xFF,0xFF,0xC1,0xBA,0xBA,0xBA,0xBA,0xD9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  103. 0xFF,0xFF,0xFF,0xFF,0x0F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  104. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  105. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  106. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  107. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  108. 0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x0F,


  109. };

  110. void xp()//写一屏图
  111. {
  112. uchar e;
  113. uchar t;
  114. uchar k;
  115. uint d;
  116.    d=0;
  117.   
  118.    for(t=0;t<6;t++)
  119.     { setadd(0,t);
  120.       for(k=0;k<84;k++)
  121.       {
  122.     e=dal[d];     
  123.        write_byte(e,1);
  124.        d=d+1;      
  125.       }
  126.     }

  127. }


  128. uchar code dal1[][6]={//static const byte FontLookup [][6]
  129. {0x00,0x00,0x00,0x00,0x00,0x00}, // sp 0
  130. {0x00,0x00,0x2f,0x00,0x00,0x00},   // ! 1
  131. {0x00,0x07,0x00,0x07,0x00,0x00},   // " 2
  132. {0x14,0x7f,0x14,0x7f,0x14,0x00},   // # 3
  133. {0x24,0x2a,0x7f,0x2a,0x12,0x00},   // $ 4
  134. {0xc4,0xc8,0x10,0x26,0x46,0x00},   // % 5
  135. {0x36,0x49,0x55,0x22,0x50,0x00},   // & 6
  136. {0x00,0x05,0x03,0x00,0x00,0x00},   // ' 7
  137. {0x00,0x1c,0x22,0x41,0x00,0x00},   // ( 8
  138. {0x00,0x41,0x22,0x1c,0x00,0x00},   // ) 9
  139. {0x14,0x08,0x3E,0x08,0x14,0x00},   // * 10
  140. {0x08,0x08,0x3E,0x08,0x08,0x00},   // + 11
  141. {0x00,0x00,0x50,0x30,0x00,0x00},   // , 12
  142. {0x10,0x10,0x10,0x10,0x10,0x00},   // - 13
  143. {0x00,0x60,0x60,0x00,0x00,0x00},   // . 14
  144. {0x20,0x10,0x08,0x04,0x02,0x00},   // / 15
  145. {0x3E,0x51,0x49,0x45,0x3E,0x00},   // 0 16
  146. {0x00,0x42,0x7F,0x40,0x00,0x00},   // 1 17
  147. {0x42,0x61,0x51,0x49,0x46,0x00},   // 2 18
  148. {0x21,0x41,0x45,0x4B,0x31,0x00},   // 3 19
  149. {0x18,0x14,0x12,0x7F,0x10,0x00},   // 4 20
  150. {0x27,0x45,0x45,0x45,0x39,0x00},   // 5 21
  151. {0x3C,0x4A,0x49,0x49,0x30,0x00},   // 6 22
  152. {0x01,0x71,0x09,0x05,0x03,0x00},   // 7 23
  153. {0x36,0x49,0x49,0x49,0x36,0x00},   // 8 24
  154. {0x06,0x49,0x49,0x29,0x1E,0x00},   // 9 25
  155. {0x00,0x36,0x36,0x00,0x00,0x00},   // : 26
  156. {0x00,0x56,0x36,0x00,0x00,0x00},   // ; 27
  157. {0x08,0x14,0x22,0x41,0x00,0x00},   // < 28
  158. {0x14,0x14,0x14,0x14,0x14,0x00},   // = 29
  159. {0x00,0x41,0x22,0x14,0x08,0x00},   // > 30
  160. {0x02,0x01,0x51,0x09,0x06,0x00},   // ? 31
  161. {0x32,0x49,0x59,0x51,0x3E,0x00},   // @ 32
  162. {0x7E,0x11,0x11,0x11,0x7E,0x00},   // A 33
  163. {0x7F,0x49,0x49,0x49,0x36,0x00},   // B 34
  164. {0x3E,0x41,0x41,0x41,0x22,0x00},   // C 35
  165. {0x7F,0x41,0x41,0x22,0x1C,0x00},   // D 36
  166. {0x7F,0x49,0x49,0x49,0x41,0x00},   // E 37
  167. {0x7F,0x09,0x09,0x09,0x01,0x00},   // F 38
  168. {0x3E,0x41,0x49,0x49,0x7A,0x00},   // G 39
  169. {0x7F,0x08,0x08,0x08,0x7F,0x00},   // H 40
  170. {0x00,0x41,0x7F,0x41,0x00,0x00},   // I 41
  171. {0x20,0x40,0x41,0x3F,0x01,0x00},   // J 42
  172. {0x7F,0x08,0x14,0x22,0x41,0x00},   // K 43
  173. {0x7F,0x40,0x40,0x40,0x40,0x00},   // L 44
  174. {0x7F,0x02,0x0C,0x02,0x7F,0x00},   // M 45
  175. {0x7F,0x04,0x08,0x10,0x7F,0x00},   // N 46
  176. {0x3E,0x41,0x41,0x41,0x3E,0x00},   // O 47
  177. {0x7F,0x09,0x09,0x09,0x06,0x00},   // P 48
  178. {0x3E,0x41,0x51,0x21,0x5E,0x00},   // Q 49
  179. {0x7F,0x09,0x19,0x29,0x46,0x00},   // R 50
  180. {0x46,0x49,0x49,0x49,0x31,0x00},   // S 51
  181. {0x01,0x01,0x7F,0x01,0x01,0x00},   // T 52
  182. {0x3F,0x40,0x40,0x40,0x3F,0x00},   // U 53
  183. {0x1F,0x20,0x40,0x20,0x1F,0x00},   // V 54
  184. {0x3F,0x40,0x38,0x40,0x3F,0x00},   // W 55
  185. {0x63,0x14,0x08,0x14,0x63,0x00},   // X 56
  186. {0x07,0x08,0x70,0x08,0x07,0x00},   // Y 57
  187. {0x61,0x51,0x49,0x45,0x43,0x00},   // Z 58
  188. {0x00,0x7F,0x41,0x41,0x00,0x00},   // [ 59
  189. {0x55,0x2A,0x55,0x2A,0x55,0x00},   //55 60
  190. {0x00,0x41,0x41,0x7F,0x00,0x00},   // ] 61
  191. {0x04,0x02,0x01,0x02,0x04,0x00},   // ^ 62
  192. {0x40,0x40,0x40,0x40,0x40,0x00},   // _ 63
  193. {0x00,0x01,0x02,0x04,0x00,0x00},   // ' 64
  194. {0x20,0x54,0x54,0x54,0x78,0x00},   // a 65
  195. {0x7F,0x48,0x44,0x44,0x38,0x00},   // b 66
  196. {0x38,0x44,0x44,0x44,0x20,0x00},   // c 67
  197. {0x38,0x44,0x44,0x48,0x7F,0x00},   // d 68
  198. {0x38,0x54,0x54,0x54,0x18,0x00},   // e 69
  199. {0x08,0x7E,0x09,0x01,0x02,0x00},   // f 70
  200. {0x0C,0x52,0x52,0x52,0x3E,0x00},   // g 71
  201. {0x7F,0x08,0x04,0x04,0x78,0x00},   // h 72
  202. {0x00,0x44,0x7D,0x40,0x00,0x00},   // i 73
  203. {0x20,0x40,0x44,0x3D,0x00,0x00},   // j 74
  204. {0x7F,0x10,0x28,0x44,0x00,0x00},   // k 75
  205. {0x00,0x41,0x7F,0x40,0x00,0x00},   // l 76
  206. {0x7C,0x04,0x18,0x04,0x78,0x00},   // m 77
  207. {0x7C,0x08,0x04,0x04,0x78,0x00},   // n 78
  208. {0x38,0x44,0x44,0x44,0x38,0x00},   // o 79
  209. {0x7C,0x14,0x14,0x14,0x08,0x00},   // p 80
  210. {0x08,0x14,0x14,0x18,0x7C,0x00},   // q 81
  211. {0x7C,0x08,0x04,0x04,0x08,0x00},   // r 82
  212. {0x48,0x54,0x54,0x54,0x20,0x00},   // s 83
  213. {0x04,0x3F,0x44,0x40,0x20,0x00},   // t 84
  214. {0x3C,0x40,0x40,0x20,0x7C,0x00},   // u 85
  215. {0x1C,0x20,0x40,0x20,0x1C,0x00},   // v 86
  216. {0x3C,0x40,0x30,0x40,0x3C,0x00},   // w 87
  217. {0x44,0x28,0x10,0x28,0x44,0x00},   // x 88
  218. {0x0C,0x50,0x50,0x50,0x3C,0x00},   // y 89
  219. {0x44,0x64,0x54,0x4C,0x44,0x00}}; // z 90

  220. void main(void)//主程序
  221. {
  222. uint t;
  223. uchar k;
  224. uchar e;
  225. uchar x;
  226. uchar y;
  227. res=0;res=0;res=0;
  228. res=1;
  229. sce=1;
  230. sdin=1;
  231. sclk=1;
  232. write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
  233. write_byte(0xd3,0);//设定液晶偏置电压(高--低)
  234. write_byte(0x20,0);//使用基本指令
  235. write_byte(0x0C,0);//设定显示模式,正常显示
  236. while(1)
  237.    {
  238. qp();//清屏
  239. for(t=0;t<40000;t++);//延时
  240.       k=0;t=0;  
  241.    for(x=0;x<84;x++)
  242.      {      
  243.      for(y=0;y<6;y++)
  244.       {
  245.     e=dal1[x][y];   
  246.        setadd(k,t);//写地址  
  247.        write_byte(e,1);//写数据     
  248.    k=k+1;      
  249.    if(k>83)t=t+1;
  250.    if(k>83)k=0;
  251.    if(t>6)t=0;
  252.        }
  253.        }
  254.       for(t=0;t<40000;t++);//延时 */
  255. qp();//清屏
  256.      xp();//写一屏图
  257. for(t=0;t<40000;t++);//延时
  258.     }
  259.     ;
  260. }


复制代码
我只是参照了网上的程序,改过来的,直接用屏幕上乱七八糟的,新年的第一天,我可不想看到这些东西。不过程序还是最好修改一下,我就不弄了,本来就是拿来玩的。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:151299 发表于 2016-12-1 19:58 | 只看该作者
不错的制作,向你学习。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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