极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25616|回复: 6

arduino连接12232中文屏

[复制链接]
发表于 2014-1-2 10:39:20 | 显示全部楼层 |阅读模式
本帖最后由 half 于 2014-1-2 11:09 编辑

    前段时间买了一个12232的中文屏,想和arduino连起来,之前用1602的时候,这里有朋友提供了LiquidCrystal.cpp文件。这次却没有找到中文屏的资料,网上见到的大多是C51的代码,没看到AVR和arduino的。实在没有办法,只能硬着头皮自己写。看了datasheet和C51的程序,看了LiquidCrystal.cpp的代码,写了好久,终于实现了功能。
    12232中文屏的资料网上可以找到的,我看到有个朋友写的挺详细的,有兴趣的也可以下载我后面的附件说明书。它分为带中文字库和不带中文字库的,我这次用的是带中文字库的,有个ST7920-GB的字库表,可以在里面找到每个字的编码。
    首先接线的时候数据位不要接反,datasheet里面有很详细的讲解,耐心仔细看过后会发现许多,指令发送后要对enable进行操作。C51的程序中可以将中文直接发送出去,但是arduino好像不行,感觉是它对中文支持的问题吧。还有一个就是屏幕有一个检测是否繁忙的功能,这里偷懒,没有写,语句也没有优化。有兴趣的朋友可以把它做成库文件,方便以后使用。

下面把代码贴出来,和大家分享下。

  1. int rsPin = 13;   //HIGH=data; LOW=commandand;
  2. int rwPin = 11;   //HIGH=read; LOW=write;
  3. int enablePin = 2;   //input enable;
  4. int dataPins[] = {
  5.   3, 4, 5, 6, 7, 8, 9, 10};  //使用数组来定义总线需要的管脚

  6. void setup(void)
  7. {
  8.   pinMode(rsPin,OUTPUT);
  9.   pinMode(rwPin,OUTPUT);
  10.   pinMode(enablePin,OUTPUT);
  11. }

  12. void loop(void)
  13. {
  14.   InitLcd();
  15.   //first line
  16.   WriteCommand(0x80);
  17.   //欢
  18.   DisplayCharacter(0xbb);
  19.   DisplayCharacter(0xb6);
  20.   //迎
  21.   DisplayCharacter(0xd3);
  22.   DisplayCharacter(0xad);
  23.   //您
  24.   DisplayCharacter(0xc4);
  25.   DisplayCharacter(0xfa);
  26.   //使
  27.   DisplayCharacter(0xca);
  28.   DisplayCharacter(0xb9);
  29.   //用
  30.   DisplayCharacter(0xd3);
  31.   DisplayCharacter(0xc3);
  32.   //中
  33.   DisplayCharacter(0xd6);
  34.   DisplayCharacter(0xd0);
  35.   //文
  36.   DisplayCharacter(0xce);
  37.   DisplayCharacter(0xc4);
  38.   //屏
  39.   DisplayCharacter(0xc6);
  40.   DisplayCharacter(0xc1);
  41.   //second line
  42.   WriteCommand(0x90);
  43.   //2014
  44.   DisplayCharacter('2');
  45.   DisplayCharacter('0');
  46.   DisplayCharacter('1');
  47.   DisplayCharacter('4');
  48.   //年
  49.   DisplayCharacter(0xc4);
  50.   DisplayCharacter(0xea);
  51.   // 1
  52.   DisplayCharacter(' ');
  53.   DisplayCharacter('1');
  54.   //月
  55.   DisplayCharacter(0xd4);
  56.   DisplayCharacter(0xc2);
  57.   // 2
  58.   DisplayCharacter(' ');
  59.   DisplayCharacter('2');
  60.   //日
  61.   DisplayCharacter(0xc8);
  62.   DisplayCharacter(0xd5);

  63.   while(1)
  64.   {
  65.   }
  66. }

  67. /*------------------初始化-----------------*/
  68. void InitLcd (void)
  69. {
  70.   //
  71.   WriteCommand (0x01);  /*清屏,地址指针指向00H*/
  72.   delayMicroseconds(2000);
  73.   WriteCommand (0x06);  /*光标向右移动*/
  74.   delayMicroseconds(100);
  75.   WriteCommand (0x0c);  /*开显示,关游标,关闪烁*/
  76.   delayMicroseconds(100);
  77.   WriteCommand (0x30);  /*并行八位模式*/
  78.   delayMicroseconds(100);
  79. }

  80. /*-------------------执行命令--------------------*/
  81. void WriteCommand(unsigned char chrCommand)
  82. {
  83.   digitalWrite(rsPin,LOW);
  84.   digitalWrite(rwPin,LOW);
  85.   for (int i = 0; i < 8; i++)
  86.   {
  87.     pinMode(dataPins[i], OUTPUT);
  88.     digitalWrite(dataPins[i], (chrCommand >> i) & 0x01);
  89.   }

  90.   PulseEnable();
  91. }
  92. /*---------------显示汉字或字符----------------*/
  93. void DisplayCharacter (unsigned char chrCharacter)
  94. {
  95.   digitalWrite(rsPin,HIGH);
  96.   digitalWrite(rwPin,LOW);
  97.   for (int i = 0; i < 8; i++)
  98.   {
  99.     pinMode(dataPins[i], OUTPUT);
  100.     digitalWrite(dataPins[i], (chrCharacter >> i) & 0x01);
  101.   }

  102.   PulseEnable();
  103. }
  104. /*-------------------enable信号--------------------*/
  105. void PulseEnable(void)
  106. {
  107.   digitalWrite(enablePin, LOW);
  108.   delayMicroseconds(1);   
  109.   digitalWrite(enablePin, HIGH);
  110.   delayMicroseconds(1);    // enable pulse must be >450ns
  111.   digitalWrite(enablePin, LOW);
  112.   delayMicroseconds(100);   // commands need > 37us to settle
  113. }
  114. //Chen OpenSource
  115. //2014-1-2
复制代码




本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-1-27 21:36:58 | 显示全部楼层
记号一下备用
回复 支持 反对

使用道具 举报

发表于 2014-3-22 10:32:34 | 显示全部楼层
感谢分享,学习一下.
回复 支持 反对

使用道具 举报

发表于 2014-11-5 20:35:32 | 显示全部楼层
给个接线图,我不知道你的2,11,13接屏的那个管脚
回复 支持 反对

使用道具 举报

发表于 2014-11-13 14:46:14 | 显示全部楼层
感谢分享!
回复 支持 反对

使用道具 举报

发表于 2019-12-15 21:01:11 | 显示全部楼层
刚好手头有RT12232F,明天折腾一下。
貌似:
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 09:48 , Processed in 0.050106 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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