一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 7116|回复: 12

[其他综合] 一乐买的12864z繁体字库屏改串口 成功

[复制链接]
发表于 2012-8-7 21:17 | 显示全部楼层 |阅读模式
在论坛上求助之后,有自己看了看PDF,确定r8 r9处的跳线的确就是SPB ,默认是短接在R8处 为并口模式,只需要把0欧的电阻移到R9处就可以用串口驱动了。如下图


https://www.yleee.com.cn/attachments/forumid_16/1208051425f60e8cc4b3d0c491.jpg.thumb.jpg下载 (137.2 KB)
2012-8-5 14:25

  1. //                     12864 ST7920 串口程序
  2. //***************************************************************************
  3. //并口程序只需要修改一下底层的WriteCommand() WriteData()即可.
  4. //毕竟并口比串口简单一些,如果有不明白的请联系.
  5. //***************************************************************************
  6. //连线表: CPU=89C52   SystemClock=12Mhz                                       *
  7. //CS=P3.0             SCLK=P3.1           SID=P3.2        Reset=CPU复位信号取反*
  8. //***************************************************************************
  9. #include <reg52.h>
  10. #include <intrins.h>

  11. sbit LCM_RS  = P3^3;   //模式位,为0输入指令,为1输入数据
  12. sbit LCM_RW  = P3^4;   //读写位,为0读,为1写
  13. sbit LCM_EN  = P3^5;   //使能位,高脉冲


  14. sbit CS =P3^3; //RS
  15. sbit SID=P3^4; //RW
  16. sbit SCK=P3^5; //E

  17. sbit Key=P1^4;
  18. unsigned char code AC_TABLE[]={
  19. 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
  20. 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
  21. 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
  22. 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
  23. };
  24. unsigned char code str2[]="欢迎光临lcdbbs!!";
  25. unsigned char code str1[]="故人西辞黄鹤楼,烟花三月下扬州。孤帆远影碧空尽,唯见长江天际流。";
  26. unsigned char code bmp1[];
  27. void SendByte(unsigned char Dbyte)
  28. {
  29.          unsigned char i;
  30.          for(i=0;i<8;i++)
  31.          {
  32.                  SCK = 0;
  33.                  Dbyte=Dbyte<<1;
  34.                  SID = CY;
  35.                  SCK = 1;
  36.                  SCK = 0;
  37.          }
  38. }
  39. unsigned char ReceiveByte(void)
  40. {
  41.          unsigned char i,temp1,temp2;
  42.          temp1=temp2=0;
  43.          for(i=0;i<8;i++)
  44.          {
  45.                  temp1=temp1<<1;
  46.                  SCK = 0;
  47.                  SCK = 1;               
  48.                  SCK = 0;
  49.                  if(SID) temp1++;
  50.          }
  51.          for(i=0;i<8;i++)
  52.          {
  53.                  temp2=temp2<<1;
  54.                  SCK = 0;
  55.                  SCK = 1;
  56.                  SCK = 0;
  57.                  if(SID) temp2++;
  58.          }
  59.          return ((0xf0&temp1)+(0x0f&temp2));
  60. }
  61. void CheckBusy( void )
  62. {
  63.          do    SendByte(0xfc);     //11111,RW(1),RS(0),0
  64.          while(0x80&ReceiveByte());
  65. }
  66. void WriteCommand( unsigned char Cbyte )
  67. {
  68.          CS = 1;
  69.          CheckBusy();
  70.          SendByte(0xf8);          //11111,RW(0),RS(0),0
  71.          SendByte(0xf0&Cbyte);
  72.          SendByte(0xf0&Cbyte<<4);
  73.          CS = 0;
  74. }
  75. void WriteData( unsigned char Dbyte )
  76. {
  77.          CS = 1;
  78.          CheckBusy();
  79.          SendByte(0xfa);          //11111,RW(0),RS(1),0
  80.          SendByte(0xf0&Dbyte);
  81.          SendByte(0xf0&Dbyte<<4);
  82.          CS = 0;
  83. }
  84. unsigned char ReadData( void )
  85. {
  86.          CheckBusy();
  87.          SendByte(0xfe);          //11111,RW(1),RS(1),0
  88.          return ReceiveByte();
  89. }
  90. void Delay(unsigned int MS)
  91. {
  92.          unsigned char us,usn;
  93.          while(MS!=0)             //for 12M
  94.                  { usn = 2;
  95.                          while(usn!=0)
  96.                                  {
  97.                                          us=0xf5;
  98.                                          while (us!=0){us--;};
  99.                                          usn--;
  100.                                  }
  101.                          MS--;
  102.                  }
  103. }
  104. void LcmInit( void )
  105. {
  106.          WriteCommand(0x30);
  107.          WriteCommand(0x03);
  108.          WriteCommand(0x0C);
  109.          WriteCommand(0x01);
  110.          WriteCommand(0x06);
  111. }
  112. void LcmClearTXT( void )
  113. {
  114.          unsigned char i;
  115.          WriteCommand(0x30);
  116.          WriteCommand(0x80);
  117.          for(i=0;i<64;i++)
  118.             WriteData(0x20);
  119. }
  120. void LcmClearBMP( void )
  121. {
  122.          unsigned char i,j;
  123.          WriteCommand(0x34);
  124.          WriteCommand(0x36);
  125.          for(i=0;i<32;i++)
  126.          {
  127.                  WriteCommand(0x80|i);
  128.                  WriteCommand(0x80);
  129.                  for(j=0;j<32;j++)
  130.                     WriteData(0);
  131.          }
  132. }
  133. void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
  134. {
  135.          WriteCommand(0x30);
  136.          WriteCommand(AC_TABLE[8*row+col]);
  137.          while(*puts != '\0')
  138.          {
  139.                  if(col==8)
  140.                  {
  141.                          col=0;
  142.                          row++;
  143.                  }
  144.                  if(row==4) row=0;
  145.                  WriteCommand(AC_TABLE[8*row+col]);
  146.                  WriteData(*puts);
  147.                  puts++;
  148.                  WriteData(*puts);
  149.                  puts++;
  150.                  col++;
  151.          }
  152. }
  153. void PutBMP(unsigned char *puts)
  154. {
  155.          unsigned int x=0;
  156.          unsigned char i,j;
  157.          WriteCommand(0x34);
  158.          WriteCommand(0x36);
  159.          for(i=0;i<32;i++)
  160.          {
  161.                  WriteCommand(0x80|i);
  162.                  WriteCommand(0x80);
  163.                  for(j=0;j<32;j++)   
  164.                  {                    
  165.                          WriteData(puts[x]);
  166.                          x++;
  167.                  }
  168.          }
  169. }
  170. void main( void )
  171. {
  172.          Delay(100);
  173.          LcmInit();
  174.          LcmClearTXT();
  175.          LcmClearBMP();
  176.          while(1)
  177.          {
  178.                  LcmClearTXT();
  179.                  PutBMP(bmp1);
  180.                  Delay(1000);
  181.                
  182.                  LcmClearBMP();
  183.                  PutStr(0,0,str1);
  184.                  Delay(1000);
  185.          }
  186. }
  187. unsigned char code bmp1[]={
  188. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  189. 0x80,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x01,
  190. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  191. 0x80,0x00,0x3F,0xC0,0x00,0x07,0x07,0x00,0x04,0x01,0x00,0x00,0x38,0x60,0x00,0x01,
  192. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  193. 0x80,0x00,0x78,0xE0,0x00,0x3F,0x83,0x80,0x06,0x03,0x80,0x00,0x1C,0x70,0x00,0x01,
  194. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  195. 0x80,0x02,0x38,0x70,0x00,0xFF,0x07,0x80,0x06,0x39,0x80,0x00,0x1F,0x70,0x00,0x01,
  196. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  197. 0x80,0x02,0x1C,0x30,0x00,0x7C,0x0E,0x00,0x06,0x19,0xC0,0x00,0x1F,0x80,0x00,0x01,
  198. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  199. 0x80,0x02,0x1C,0x30,0x00,0x3E,0x1C,0x00,0x06,0x1F,0xC0,0x00,0x7F,0x00,0x00,0x01,
  200. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  201. 0x80,0x03,0x3E,0x30,0x00,0x62,0x1A,0x00,0x0F,0x79,0x00,0x03,0xFE,0x00,0x00,0x01,
  202. 0x80,0x00,0x00,0x60,0x0F,0x00,0x3F,0x00,0x00,0x00,0x3C,0x00,0xC0,0x00,0x00,0x01,
  203. 0x80,0x07,0x76,0x18,0x00,0xC3,0xC1,0x00,0x1F,0xFB,0x00,0x03,0xFE,0x00,0x00,0x01,
  204. 0x80,0x00,0x01,0xE0,0x3F,0xC0,0xF1,0xC0,0x00,0x00,0xF0,0x01,0xC0,0x00,0x00,0x01,
  205. 0x80,0x07,0x6E,0x18,0x00,0xCF,0xC1,0x80,0x7E,0x3F,0x80,0x01,0xE2,0x00,0x00,0x01,
  206. 0x80,0x00,0x07,0xE0,0x7F,0xE0,0xE0,0xE0,0x00,0x03,0xC0,0x03,0xC0,0x00,0x00,0x01,
  207. 0x80,0x07,0x7F,0x98,0x00,0xFE,0x83,0x81,0xFC,0x1E,0xC0,0x00,0x83,0x00,0x00,0x01,
  208. 0x80,0x00,0x0F,0xE0,0x63,0xE1,0xE0,0xE0,0x00,0x07,0x00,0x03,0xC0,0x00,0x00,0x01,
  209. 0x80,0x06,0xFF,0xD8,0x01,0xFA,0x87,0x00,0xFD,0xF8,0xC0,0x01,0x73,0x00,0x00,0x01,
  210. 0x80,0x00,0x01,0xE0,0xC1,0xE1,0xE0,0xE0,0x00,0x0F,0x00,0x07,0xC0,0x00,0x00,0x01,
  211. 0x80,0x0F,0xD9,0xD8,0x03,0xE3,0x0E,0x80,0xFE,0x7E,0xC0,0x03,0xF9,0x80,0x00,0x01,
  212. 0x80,0x00,0x01,0xE0,0x01,0xE1,0xF0,0xE0,0x00,0x1E,0x00,0x0B,0xC0,0x00,0x00,0x01,
  213. 0x80,0x0D,0xB8,0x18,0x1F,0xC3,0x08,0xC0,0x0E,0x6D,0x80,0x03,0xF1,0x80,0x00,0x01,
  214. 0x80,0x00,0x01,0xE0,0x01,0xE0,0xFD,0xC7,0xEF,0x9E,0x00,0x13,0xC0,0x00,0x00,0x01,
  215. 0x80,0x0D,0xFE,0x18,0x0F,0xC2,0x10,0xE0,0x1C,0x3F,0x00,0x03,0xE0,0xC0,0x00,0x01,
  216. 0x80,0x00,0x01,0xE0,0x01,0xC0,0xFF,0x83,0xC6,0x1F,0xE0,0x13,0xC0,0x00,0x00,0x01,
  217. 0x80,0x0D,0xCE,0x18,0x06,0xC2,0x01,0xC0,0x38,0x3E,0x00,0x00,0xE8,0xC0,0x00,0x01,
  218. 0x80,0x00,0x01,0xE0,0x01,0x80,0x3F,0x81,0xE4,0x3C,0x78,0x23,0xC0,0x00,0x00,0x01,
  219. 0x80,0x0C,0x4C,0x18,0x00,0xC2,0x03,0x80,0x78,0x1F,0xF0,0x00,0xFC,0x60,0x00,0x01,
  220. 0x80,0x00,0x01,0xE0,0x03,0x80,0x3F,0xC1,0xE8,0x3C,0x78,0x43,0xC0,0x00,0x00,0x01,
  221. 0x80,0x0C,0x5E,0x18,0x00,0xC2,0x07,0x00,0x68,0x3F,0xF8,0x03,0xFC,0x22,0x00,0x01,
  222. 0x80,0x00,0x01,0xE0,0x03,0x00,0x6F,0xC0,0xF0,0x3C,0x3C,0x83,0xC0,0x00,0x00,0x01,
  223. 0x80,0x06,0x3F,0x38,0x01,0x82,0x0E,0x00,0x09,0xF8,0x00,0x03,0xC0,0x32,0x00,0x01,
  224. 0x80,0x00,0x01,0xE0,0x06,0x00,0xC3,0xE0,0x78,0x3C,0x3C,0xFF,0xF0,0x00,0x00,0x01,
  225. 0x80,0x07,0x10,0x38,0x00,0x82,0x1C,0x00,0x0B,0x99,0xC0,0x03,0x00,0x1A,0x00,0x01,
  226. 0x80,0x00,0x01,0xE0,0x0C,0x11,0xC3,0xE0,0x78,0x3C,0x3C,0xFF,0xF0,0x00,0x00,0x01,
  227. 0x80,0x03,0xFF,0xF0,0x00,0x02,0x38,0x00,0x08,0x30,0xE0,0x02,0x00,0x1E,0x00,0x01,
  228. 0x80,0x00,0x01,0xE0,0x08,0x11,0xC1,0xE0,0x7C,0x3C,0x3C,0xFF,0xF0,0x00,0x00,0x01,
  229. 0x80,0x01,0xEF,0xF0,0x00,0x00,0xE0,0x00,0x08,0xE0,0x60,0x00,0x00,0x0E,0x00,0x01,
  230. 0x80,0x00,0x01,0xE0,0x1F,0xF1,0xC1,0xE0,0xBC,0x1C,0x3C,0x03,0xC0,0x00,0x00,0x01,
  231. 0x80,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x07,0x00,0x01,
  232. 0x80,0x00,0x01,0xE0,0x3F,0xE1,0xC1,0xC0,0x9E,0x1E,0x38,0x03,0xC0,0x00,0x00,0x01,
  233. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
  234. 0x80,0x00,0x01,0xF0,0x7F,0xE0,0xE3,0x83,0x1F,0x0E,0x70,0x03,0xC0,0x00,0x00,0x01,
  235. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  236. 0x80,0x00,0x0F,0xFC,0xFF,0xE0,0x3F,0x07,0xDF,0x83,0xE0,0x03,0xC0,0x00,0x00,0x01,
  237. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  238. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  239. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  240. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  241. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  242. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  243. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  244. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  245. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  246. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  247. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  248. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  249. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
  250. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x01,
  251. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  252. };
复制代码

评分

参与人数 1一乐金币 +40 收起 理由
199003326 + 40 谢谢分享。

查看全部评分

 楼主| 发表于 2012-8-7 21:18 | 显示全部楼层
另外求助一下这个屏的对比度怎么调整 V0引脚虽然引出了 可是似乎是空着的
回复

使用道具 举报

发表于 2012-8-7 21:24 | 显示全部楼层
感谢分享,学习了
回复

使用道具 举报

发表于 2012-8-7 21:35 | 显示全部楼层
R19附近的电阻补齐就可以了。。。参数自己试试。
回复

使用道具 举报

 楼主| 发表于 2012-8-7 21:41 | 显示全部楼层
回复 4# 785418837


   在R19位置加了个103 别的还用加吗,调整对比度是软件调节还是外接电位器呢?楼上能不能详细讲讲
回复

使用道具 举报

发表于 2012-8-8 08:57 | 显示全部楼层
回复  785418837


   在R19位置加了个103 别的还用加吗,调整对比度是软件调节还是外接电位器呢?楼上 ...
bxm1988 发表于 2012-8-7 21:41 https://www.yleee.com.cn/images/common/back.gif



    R18 R19 R20补齐 ,就应该可以用R19调节对比度了。 至于软件调节, 找找手册上有没有调节对比度的指令。。。我手上也没这个屏幕,也不清楚。。。
回复

使用道具 举报

 楼主| 发表于 2012-8-8 10:01 | 显示全部楼层
回复 6# 785418837


   好的,我试试,我也看了手册,没发现软件调节,看来是之前理解错了,现在的对比度很低,只有在正面能看清。
回复

使用道具 举报

发表于 2012-8-8 10:10 | 显示全部楼层
1208051425f60e8cc4b3d0c491_jpg_thumb.jpg

你用万用表测一下,R18电阻的一端到第三脚是否相连,R19的一端是否是GND 一端是否是VCC, 如果是,只要R18和R19补齐就应该可以调节对比度了。。。R18貌似短接也可以。。。理论上是这样的。。。。你试试 有问题再说
回复

使用道具 举报

 楼主| 发表于 2012-8-8 10:34 | 显示全部楼层
万用表电池没电了,这两天正悲剧着呢。。。。
回复

使用道具 举报

发表于 2012-8-9 18:35 | 显示全部楼层
不能顯示簡體,打繁體也不行啊
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-10-31 21:05 , Processed in 0.041232 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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