极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 42259|回复: 12

各类12864的驱动

[复制链接]
发表于 2014-10-7 18:11:12 | 显示全部楼层 |阅读模式
本帖最后由 sxwangjin1 于 2014-10-10 19:13 编辑

    7月份换了一份LCD代理的工作,小公司但老板待人不错,公司虽小效率很高。以前的做过3年瀚彩大陆的FAE,做过一年群创PE,不能说见过多大场面,但是也经历过不少事情,但这个公司确实让我佩服。虽然之前有过多年的LCD工作经验,但是到了这个公司和我完全想象的不一样了,更多的还是做黑白,做点阵,做定制,做段码。凭借着老板带着一对业务愣是拯救了两个濒临倒闭的LCD厂商,一年有近亿元的业务量,确实不简单。有点跑题哈哈。。。介绍下我们公司的配置10个业务2个技术,另一个技术还是主要负责数码管的,LCD我只能一个人硬着头皮扛下来,从9月初选定arduino平台经过近一个月的摸索终于有了一点进展,与大家分享共同进步。
以下程序均参考 弘毅 及论坛其他兄弟的程序,我仅为归纳整理http://www.geek-workshop.com/thread-91-1-1.html
目录:
一、ST7920 12864的驱动
二、KS0108  12864的驱动
三、NT7534  12864的驱动

第一、ST7920 12864的驱动,这个芯片弘毅使用的是库文件,做为程序开发库文件好用,但是作为学习研究修改就不那么方便了,我在这里把库文件提出来直接放到程序里供大家学习研究,arduino画器件连线的软件没有,连线图我就不画了大家到程序里找把,我使用的编译软件是1.0.5版本
1>串口

  1. //    case 0:  N|=0x80;break;每行首地址
  2. //    case 1:  N|=0x90;break;
  3. //    case 2:  N|=0x88;break;
  4.   //  case 3:  N|=0x98;break;
  5. //基于ST7920芯片的128*64显示程序 2014/9/23
  6. //待处理bug 位图显示时,最下边3-5行数据如不删除程序卡死不能运行,删除后下部有乱点
  7. //此bug在使用ATMEGA8L时出现,使用328及性能更好芯片为发现乱点及卡死现象。2014/10/7
  8. ////////////////////////////////////////////////////////////////////////////////////////
  9. //引脚定义
  10. //////////////////////////////////////////////////
  11. //RS(DI)/latch->8,R/Wdatapin->9,E/clock->3
  12. int latchPin = 8;
  13. int dataPin = 9;
  14. int clockPin = 3;
  15. unsigned char show[]={
  16.   0xC4, 0xCF,
  17.   0xBE, 0xA9,
  18.   0xD6, 0xDB,
  19.   0xD0, 0xBE,
  20.   0xB5, 0xE7,
  21.   0xD7, 0xD3};//nanjingzhouxin
  22. unsigned char show1[]="TEL:025-66085988";
  23. unsigned char logo[]={                                       
  24.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  25.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  26.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  29.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  31.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF0,0x1F,0xCF,0xFE,0xFF,0x03,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x00,
  32.       0x03,0xFF,0xFF,0xF8,0x1F,0xCF,0xFE,0xFF,0x07,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFC,0x0F,0xCF,0xFF,0xFE,0x0F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
  33.       0x03,0xFF,0xFF,0xFE,0x0F,0xEF,0xFF,0xFE,0x1F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0x0F,0xEF,0xFF,0xFC,0x3F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
  34.       0x03,0xFF,0xFF,0xFF,0x8F,0xE7,0xFD,0xF8,0x3F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0x87,0xF7,0xF9,0xF8,0x7F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
  35.       0x00,0x00,0x00,0x7F,0x87,0xF7,0xFB,0xF8,0x7F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x3F,0x87,0xF7,0xF3,0xF0,0x7F,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,
  36.       0x00,0x00,0x00,0x7F,0x87,0xF7,0xF7,0xF0,0x7F,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0xFF,0xE7,0xF0,0x7F,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,
  37.       0x00,0x00,0x03,0xFE,0x07,0xFF,0xEF,0xF0,0x7F,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x07,0xFC,0x03,0xFF,0xFF,0xF0,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,
  38.       0x00,0x00,0x0F,0xF8,0x03,0xFB,0xDF,0xE0,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,0x1F,0xF0,0x03,0xF9,0x9F,0xE0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
  39.       0x00,0x00,0x7F,0xE0,0x03,0xFC,0x3F,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x00,0xFF,0xC0,0x01,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
  40.       0x00,0x01,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x07,0xFE,0x00,0x03,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
  41.       0x00,0x0F,0xFC,0x00,0x07,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x3F,0xF0,0x00,0x07,0xF8,0x3F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
  42.       0x00,0x7F,0xE0,0x00,0x07,0xF8,0x1F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x01,0xFF,0x80,0x00,0x0F,0xF0,0x0F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
  43.       0x03,0xFF,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xFE,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
  44.       0x07,0xFC,0x00,0x00,0x1F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xF8,0x00,0x00,0x1F,0xC0,0x07,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
  45.       0x07,0xF0,0x00,0x00,0x1F,0xC0,0x07,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x1F,0xC0,0x07,0xF8,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
  46.       0x07,0xFF,0xFF,0xFC,0x3F,0x80,0x07,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xF0,0x00,0x00,0x07,0xFF,0xFF,0xFC,0x3F,0x80,0x03,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xF0,0x00,0x00,
  47.       0x07,0xFF,0xFF,0xFC,0x7F,0x80,0x03,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,0x03,0xFF,0xFF,0xFC,0x7F,0x00,0x03,0xFC,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,
  48.       0x03,0xFF,0xFF,0xFC,0x7F,0x00,0x03,0xFC,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFF,0xFF,0xFC,0xFE,0x00,0x01,0xFE,0x1F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,
  49.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  50.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  51.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  52.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  53.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  54.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  55.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  56. };


  57. //////////////////////////
  58. void setup() {
  59. //设置引脚为输出
  60.   pinMode(latchPin, OUTPUT);
  61.   pinMode(clockPin, OUTPUT);
  62.   pinMode(dataPin, OUTPUT);
  63. }
  64. ////////////////////////////////////////////////////////////////
  65. //写SPI时序,具体参考shiftout 命令使用
  66. /////////////////////////////////////////////////////////
  67. void WriteByte(int dat)
  68. {
  69.     digitalWrite(latchPin, HIGH);
  70.      
  71.     shiftOut(dataPin, clockPin, MSBFIRST, dat);
  72.     digitalWrite(latchPin, LOW);
  73. }
  74. //////////////////////////////////////////////////////////
  75. //写命令
  76. ////////////////////////////////////////////////////////
  77. void LcdCommandWrite(int value) {  
  78.   int H_data,L_data;
  79.    H_data = value;
  80.    H_data &= 0xf0;           //屏蔽低4位的数据
  81.    L_data = value;             //xxxx0000格式
  82.    L_data &= 0x0f;           //屏蔽高4位的数据
  83.    L_data <<= 4;             //xxxx0000格式
  84.    WriteByte(0xf8);          //RS=0,写入的是指令;
  85.    WriteByte(H_data);
  86.    WriteByte(L_data);
  87. }
  88. //////////////////////////////////////////////////////
  89. //写数据
  90. ///////////////////////////////////////////////////////////
  91. void LcdDataWrite(int value) {  
  92.   int H_data,L_data;
  93.    H_data = value;
  94.    H_data &= 0xf0;           //屏蔽低4位的数据
  95.    L_data = value;             //xxxx0000格式
  96.    L_data &= 0x0f;           //屏蔽高4位的数据
  97.    L_data <<= 4;             //xxxx0000格式
  98.    WriteByte(0xfa);          //RS=1,写入的是数据
  99.    WriteByte(H_data);
  100.    WriteByte(L_data);
  101. }
  102. ////////////////////////////////////////////////
  103. //主程序
  104. ///////////////////////////////////////////////
  105. void loop (void) {
  106.   LcdCommandWrite(0x30);  //  设定为基本指令         
  107. delay(60);     
  108.   LcdCommandWrite(0x01);  // 清屏
  109.   delay(50);
  110.    LcdCommandWrite(0x02);  // 清屏
  111.   delay(50);
  112.   LcdCommandWrite(0x90+1);
  113.   delay(10);                     

  114.   int i = 0;//显示南京舟芯电子

  115. for (i=0; i <= 11; i++)
  116. {
  117.    LcdDataWrite(show[i]);
  118. }
  119. LcdCommandWrite(0x88);//显示电话

  120. for (i=0; i <= 15; i++)
  121. {
  122.    LcdDataWrite(show1[i]);
  123. }

  124.   delay(3000);
  125.    LcdCommandWrite(0x01);  // 清屏
  126.   delay(50);
  127.      int ygroup,x,y;
  128.       int temp;
  129.       int tmp;
  130.             
  131.       for(ygroup=0;ygroup<64;ygroup++)           //写入液晶上半图象部分
  132.         {                           //写入坐标
  133.            if(ygroup<32)
  134.             {
  135.              x=0x80;
  136.              y=ygroup+0x80;
  137.             }
  138.            else
  139.             {
  140.               x=0x88;
  141.               y=ygroup-32+0x80;   
  142.             }         
  143.            LcdCommandWrite(0x34);        //写入扩充指令命令
  144.            LcdCommandWrite(y);           //写入y轴坐标
  145.            LcdCommandWrite(x);           //写入x轴坐标
  146.            LcdCommandWrite(0x30);        //写入基本指令命令
  147.            tmp=ygroup*16;
  148.            for(i=0;i<16;i++)
  149.                  {
  150.                     LcdDataWrite(logo[tmp]);
  151.          tmp++;
  152.                }
  153.           }
  154.         LcdCommandWrite(0x34);        //写入扩充指令命令

  155.         LcdCommandWrite(0x36);        //显示图象
  156.         
  157. delay(3000);

  158. }
复制代码



2>并口

  1. //基于ST7920芯片的128*64显示程序 2014/9/23
  2. //待处理bug 位图显示时,最下边3-5行数据如不删除程序卡死不能运行,删除后下部有乱点
  3. int DI = 12;
  4. int RW = 11;
  5. int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚
  6. int Enable = 2;
  7. unsigned char show[]={
  8.   0xC4, 0xCF,
  9.   0xBE, 0xA9,
  10.   0xD6, 0xDB,
  11.   0xD0, 0xBE,
  12.   0xB5, 0xE7,
  13.   0xD7, 0xD3};//nanjingzhouxin
  14. unsigned char show1[]="TEL:025-66085988";
  15. unsigned char logo[]={                                       
  16. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  17.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  18.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  19.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  20.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  21.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  22.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  23.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  24.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  25.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  26.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  29.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  31.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  32.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  34.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  36.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  37.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  38.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  39.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  40.       0x07,0xFF,0xFF,0x80,0x3F,0x9F,0xFD,0xFE,
  41.       0x0F,0xFF,0xFF,0x87,0xFF,0xFF,0xFC,0x00,
  42.       0x07,0xFF,0xFF,0xF8,0x3F,0x9F,0xFD,0xFE,
  43.       0x0F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
  44.       0x07,0xFF,0xFF,0xF8,0x1F,0x9F,0xFF,0xFC,
  45.       0x1F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
  46.       0x07,0xFF,0xFF,0xFC,0x1F,0xDF,0xFF,0xFC,
  47.       0x3F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
  48.       0x07,0xFF,0xFF,0xFE,0x1F,0xDF,0xFF,0xF8,
  49.       0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
  50.       0x07,0xFF,0xFF,0xFF,0x1F,0xCF,0xFB,0xF0,
  51.       0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
  52.       0x07,0xFF,0xFF,0xFF,0x1F,0xEF,0xF3,0xF0,
  53.       0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
  54.       0x00,0x00,0x00,0xFF,0x1F,0xEF,0xF7,0xF0,
  55.       0x7F,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
  56.       0x00,0x00,0x00,0x7F,0x1F,0xEF,0xE7,0xE0,
  57.       0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
  58.       0x00,0x00,0x00,0xFF,0x0F,0xEF,0xEF,0xE0,
  59.       0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
  60.       0x00,0x00,0x01,0xFE,0x0F,0xFF,0xCF,0xE0,
  61.       0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
  62.       0x00,0x00,0x07,0xFC,0x0F,0xFF,0xDF,0xE0,
  63.       0xFE,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
  64.       0x00,0x00,0x0F,0xF8,0x07,0xFF,0xFF,0xE0,
  65.       0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
  66.       0x00,0x00,0x1F,0xF8,0x07,0xF7,0xBF,0xC0,
  67.       0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
  68.       0x00,0x00,0x3F,0xE0,0x07,0xF3,0x3F,0xC0,
  69.       0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
  70.       0x00,0x00,0x7F,0xC0,0x07,0xF8,0x7F,0x80,
  71.       0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
  72.       0x00,0x01,0xFF,0x80,0x03,0xFF,0xFF,0x80,
  73.       0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
  74.       0x00,0x03,0xFE,0x00,0x07,0xFF,0xFF,0x80,
  75.       0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
  76.       0x00,0x0F,0xFC,0x00,0x07,0xFF,0xFF,0x80,
  77.       0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
  78.       0x00,0x3F,0xE0,0x00,0x0F,0xFF,0xFF,0xC0,
  79.       0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
  80.       0x00,0x7F,0xC0,0x00,0x0F,0xF0,0x7F,0xC0,
  81.       0xFC,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,
  82.       0x00,0xFF,0x80,0x00,0x1F,0xF0,0x3F,0xC0,
  83.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  84.       0x07,0xFE,0x00,0x00,0x1F,0xE0,0x1F,0xE0,
  85.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  86.       0x07,0xFC,0x00,0x00,0x1F,0xC0,0x1F,0xE0,
  87.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  88.       0x07,0xFC,0x00,0x00,0x1F,0xC0,0x1F,0xE0,
  89.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  90.       0x07,0xF8,0x00,0x00,0x3F,0xC0,0x1F,0xE0,
  91.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  92.       0x0F,0xE0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
  93.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  94.       0x0F,0xC0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
  95.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  96.       0x0F,0xC0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
  97.       0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
  98.       0x0F,0xFF,0xFF,0xF8,0x7F,0x00,0x0F,0xE0,
  99.       0xFF,0xFF,0xFE,0x00,0x1F,0xE0,0x00,0x00,
  100.       0x0F,0xFF,0xFF,0xF8,0x7F,0x00,0x07,0xE0,
  101.       0xFF,0xFF,0xFE,0x00,0x1F,0xE0,0x00,0x00,
  102.       0x0F,0xFF,0xFF,0xF8,0xFF,0x00,0x07,0xE0,
  103.       0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
  104.       0x07,0xFF,0xFF,0xF8,0xFE,0x00,0x07,0xE0,
  105.       0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
  106.       0x07,0xFF,0xFF,0xF8,0xFE,0x00,0x07,0xE0,
  107.       0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
  108.       0x03,0xFF,0xFF,0xF9,0xFC,0x00,0x03,0xF0,
  109.       0x1F,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
  110.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  111.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  112.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,




  113. };

  114. void LcdCommandWrite(int value) {
  115. // 定义所有引脚
  116. digitalWrite(DI, 0);
  117. digitalWrite(RW, 0);
  118. int i = 0;
  119. for (i=3; i <= 10; i++) //总线赋值

  120. {
  121. digitalWrite(i,value & 01);//value与0001相与赋予i

  122. value >>= 1;//value右移一位
  123. }
  124. //digitalWrite(Enable,HIGH);
  125. digitalWrite(Enable,1);
  126. delayMicroseconds(1);
  127. digitalWrite(Enable,LOW);
  128. delayMicroseconds(1);
  129. digitalWrite(Enable,HIGH);
  130. delayMicroseconds(1);  // 延时1ms
  131. digitalWrite(Enable,LOW);
  132. delayMicroseconds(1);  // 延时1ms
  133. }

  134. void LcdDataWrite(int value) {
  135. // 定义所有引脚
  136. int i = 0;
  137. digitalWrite(DI, 1);
  138. digitalWrite(RW, 0);
  139. //digitalWrite(DI, HIGH);
  140. //digitalWrite(RW, LOW);
  141. for (i=DB[0]; i <= DB[7]; i++) {
  142.    digitalWrite(i,value & 01);
  143.    value >>= 1;
  144. }

  145. digitalWrite(Enable,LOW);
  146. delayMicroseconds(1);
  147. digitalWrite(Enable,HIGH);
  148. delayMicroseconds(1);
  149. digitalWrite(Enable,LOW);
  150. delayMicroseconds(1);  // 延时1ms
  151. }

  152. void setup (void) {
  153. int i = 0;
  154. for (i=Enable; i <= DI; i++) {
  155.    pinMode(i,OUTPUT);
  156. }
  157. delay(100);
  158. // 短暂的停顿后初始化LCD
  159. // 用于LCD控制需要
  160. LcdCommandWrite(0x30);  //  设定为基本指令         
  161. delay(60);                     
  162. LcdCommandWrite(0x01);  //  清屏指令                  
  163. delay(50);                     
  164. LcdCommandWrite(0x0c);  //   整体显示                  
  165. delay(20);                     
  166. LcdCommandWrite(0x06);  //  
  167. delay(20);                     
  168. }


  169. void loop (void) {
  170.   LcdCommandWrite(0x30);  //  设定为基本指令         
  171. delay(60);     
  172.   LcdCommandWrite(0x01);  // 清屏
  173.   delay(50);
  174.    LcdCommandWrite(0x02);  // 清屏
  175.   delay(50);
  176.   LcdCommandWrite(0x90+1);
  177.   delay(10);                     

  178.   int i = 0;//显示南京舟芯电子

  179. for (i=0; i <= 11; i++)
  180. {
  181.    LcdDataWrite(show[i]);
  182. }
  183. LcdCommandWrite(0x88);//显示电话

  184. for (i=0; i <= 15; i++)
  185. {
  186.    LcdDataWrite(show1[i]);
  187. }

  188.   delay(3000);
  189.    LcdCommandWrite(0x01);  // 清屏
  190.   delay(50);
  191.      int ygroup,x,y;
  192.       int temp;
  193.       int tmp;
  194.             
  195.       for(ygroup=0;ygroup<62;ygroup++)           //写入液晶上半图象部分
  196.         {                           //写入坐标
  197.            if(ygroup<32)
  198.             {
  199.              x=0x80;
  200.              y=ygroup+0x80;
  201.             }
  202.            else
  203.             {
  204.               x=0x88;
  205.               y=ygroup-32+0x80;   
  206.             }         
  207.            LcdCommandWrite(0x34);        //写入扩充指令命令
  208.            LcdCommandWrite(y);           //写入y轴坐标
  209.            LcdCommandWrite(x);           //写入x轴坐标
  210.            LcdCommandWrite(0x30);        //写入基本指令命令
  211.            tmp=ygroup*16;
  212.            for(i=0;i<16;i++)
  213.                  {
  214.                     LcdDataWrite(logo[tmp]);
  215.          tmp++;
  216.                }
  217.           }
  218.         LcdCommandWrite(0x34);        //写入扩充指令命令
  219.         LcdCommandWrite(0x36);        //显示图象
  220.         
  221. delay(3000);

  222. }
复制代码



二、KS0108芯片,这个芯片和ST7920的区别在与写RAM的方式的不同,7920是写上下片,KS0108是写左右片。KS0108无字库,只支持并口驱动。另外我这块板子必须要外接可变电阻才能点亮,这个说明书里会注明:


  1. /////////////////////////////////////////////////////////////////////////////////
  2. //基于arduino 平台的KS0180芯片128*64并口显示LCD测试程序by 王瑾  2014/9/27
  3. //程序较大使用小RAM芯片可能无法运行,如无法运行可将调用logo部分删除,会大幅减小RAM使用
  4. //因为uno 坏了只在mega 2560测试成功
  5. //和ST7920芯片主要是RAM地址的分布不同注意分析RAM地址写程序
  6. //程序没有采用库文件,显示程序也没有另写子程序,主要是为了个人修改方便
  7. //////////////////////////////////////////////////////////////////////////////
  8. //
  9. int CS1=A0;//左半屏,高电平有效
  10. int CS2=A1;//右半屏,高电平有效
  11. int RS = 12;
  12. int RW = 11;
  13. int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚DB 0-7
  14. int Enable = 2;

  15. /////////////////////////////////////////////////////////////////////////
  16. // Bitmap点阵数据表                                                    //
  17. // 内容为:南京舟芯电子,TEL025-66085988   //
  18. // 图片尺寸: 128 * 64                                                  //
  19. /////////////////////////////////////////////////////////////////////////
  20. unsigned char logo1[] =      
  21. {
  22.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  23.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  24.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  25.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  26.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  29.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  31.       0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  32.       0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33.       0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  34.       0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35.       0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  36.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  37.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  38.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xF2,0xF2,0x12,0xB2,0xF2,0xD2,
  39.       0x9F,0x9F,0xD2,0xF2,0xB2,0x12,0xF2,0xF2,0x02,0x00,0x02,0x02,0x02,0xF2,0xF2,0x12,
  40.       0x12,0x13,0x13,0x12,0x12,0xF2,0xF2,0x02,0x02,0x02,0x00,0x40,0x40,0x40,0xFE,0xFE,
  41.       0x43,0x4B,0x7A,0x72,0x42,0x42,0xFE,0xFE,0x40,0x40,0x40,0x00,0x02,0x02,0x02,0x02,
  42.       0x0F,0x8F,0x92,0x32,0x62,0x42,0x0F,0x0F,0x82,0x82,0x02,0x02,0x00,0x00,0x00,0xFC,
  43.       0xFC,0x44,0x44,0x44,0xFF,0xFF,0x44,0x44,0x44,0xFC,0xFC,0x00,0x00,0x00,0x40,0x41,
  44.       0x41,0x41,0x41,0x41,0x41,0xF1,0xF1,0x59,0x4D,0x47,0x43,0x41,0x40,0x40,0x00,0x00,
  45.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  46.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x04,0x04,0x04,0x04,
  47.       0x3F,0x3F,0x04,0x04,0x24,0x64,0x7F,0x3F,0x00,0x00,0x00,0x20,0x30,0x1D,0x0D,0x21,
  48.       0x61,0x7F,0x3F,0x01,0x01,0x05,0x0D,0x38,0x30,0x00,0x00,0x40,0x60,0x38,0x1F,0x07,
  49.       0x00,0x01,0x07,0x06,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,
  50.       0x00,0x1F,0x3F,0x20,0x20,0x20,0x20,0x38,0x38,0x01,0x07,0x06,0x00,0x00,0x00,0x0F,
  51.       0x0F,0x04,0x04,0x04,0x3F,0x7F,0x44,0x44,0x44,0x4F,0x4F,0x78,0x78,0x00,0x00,0x00,
  52.       0x00,0x00,0x00,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  53.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  54.       0x60,0x60,0xE0,0xE0,0x60,0x60,0x00,0x20,0xE0,0xE0,0x20,0x60,0x60,0x00,0x20,0xE0,
  55.       0xE0,0x20,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  56.       0x00,0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0x70,0x10,0xF0,0xE0,0x00,0x00,
  57.       0xF0,0xF0,0x90,0x90,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,
  58.       0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x10,0xF0,
  59.       0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0xF0,0xF0,0x90,0x90,0x10,0x00,
  60.       0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0x60,
  61.       0xF0,0x90,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62.       0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x08,0x0F,0x0F,0x09,0x0D,0x0C,0x00,0x08,0x0F,
  63.       0x0F,0x08,0x0C,0x0C,0x00,0x00,0x0D,0x0D,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  64.       0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x00,0x00,
  65.       0x04,0x0C,0x08,0x0F,0x07,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x07,0x0F,
  66.       0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,
  67.       0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x04,0x0C,0x08,0x0F,0x07,0x00,
  68.       0x00,0x04,0x0D,0x09,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,
  69.       0x0F,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  70.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  71.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  72.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  73.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  74.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  75.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  76.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  77.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  78.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  79.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  80.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  81.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  82.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  83.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  84.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  85.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  86. };

  87. ////////////////////////////////////////////////////////
  88. //写命令子程序
  89. ///////////////////////////////////////////////////////
  90. void LcdCommandWrite(int value) {
  91. digitalWrite(RS, 0);
  92. digitalWrite(RW, 0);
  93. int i = 0;
  94. for (i=3; i <= 10; i++) //总线赋值
  95. {
  96. digitalWrite(i,value & 01);//value与0001相与赋予i
  97. value >>= 1;//value右移一位
  98. }
  99. digitalWrite(Enable,1);
  100. delayMicroseconds(1);
  101. digitalWrite(Enable,LOW);
  102. delayMicroseconds(1);
  103. }
  104. //////////////////////////////////////////////////////
  105. //写数据子程序
  106. /////////////////////////////////////////////////////
  107. void LcdDataWrite(int value) {
  108. // 定义所有引脚
  109. int i = 0;
  110. digitalWrite(RS, 1);
  111. digitalWrite(RW, 0);
  112. //digitalWrite(DI, HIGH);
  113. //digitalWrite(RW, LOW);
  114. for (i=DB[0]; i <= DB[7]; i++) {
  115.    digitalWrite(i,value & 01);
  116.    value >>= 1;
  117. }
  118. digitalWrite(Enable,HIGH);
  119. delayMicroseconds(1);
  120. digitalWrite(Enable,LOW);
  121. delayMicroseconds(1);  // 延时百万分之一秒
  122. }
  123. ///////////////////////////////////////////////////
  124. //输出引脚声明
  125. //////////////////////////////////////////////////
  126. void setup (void) {
  127. int i = 0;
  128. for (i=Enable; i <= 12; i++) {
  129.    pinMode(i,OUTPUT);
  130.   }   
  131.    pinMode(A0,OUTPUT);
  132.    pinMode(A1,OUTPUT);
  133. }
  134. ////////////////////////////////////////////
  135. //循环主程序
  136. /////////////////////////////////////////////////
  137. void loop (void) {
  138. ///////////////////////////////////////////////////////////////////////////////////////////
  139. //初始化,因为KS0108芯片无初始化命令需要对整个屏幕赋值0x00,  不然的话会有杂点
  140. //没有查到KS0108芯片的始化命令,位图调用一直有杂点,采用REST复位也不能解决,所以采用此方法
  141. //////////////////////////////////////////////////////////////////////////////////////////
  142. digitalWrite(CS1,1);  
  143. digitalWrite(CS2,1);
  144. LcdCommandWrite(0x3e);  //  显示关   
  145.      int i = 0;
  146.      int yg,x,y;
  147.       int temp;
  148.       int tmp;  
  149.         for(yg=0;yg<8;yg++)
  150.        {
  151.            x=yg+0xb8;                    //0xb8为首页地址
  152.            y=0x40;                       //0x40为首列地址注意分析规格书RAM地址分布图
  153.            LcdCommandWrite(x);           //写入y轴坐标
  154.            LcdCommandWrite(y);           //写入x轴坐标
  155.            tmp=yg*64;
  156.            for(i=0;i<64;i++)
  157.                  {
  158.                     LcdDataWrite(0x00);
  159.          tmp++;
  160.                }      
  161.        }      
  162. LcdCommandWrite(0x3f);        //显示图象   
  163. delay(1);
  164. //////////////////////////////////////////////////////////
  165. //显示ZXET logo
  166. ///////////////////////////////////////////////////////////
  167.      digitalWrite(CS1,1);  //先显示左半屏
  168.      digitalWrite(CS2,0);
  169.         for(yg=0;yg<8;yg++)
  170.        {
  171.            x=yg+0xb8;
  172.            y=0x40;
  173.            LcdCommandWrite(x);           //写入y轴坐标
  174.            LcdCommandWrite(y);           //写入x轴坐标
  175.            tmp=2*yg*64;
  176.            for(i=0;i<64;i++)
  177.                  {
  178.                     LcdDataWrite(logo[tmp]);
  179.          tmp++;     
  180.                }         
  181.        }
  182.   LcdCommandWrite(0x3f);  //此处无需延迟直接接右半屏显示程序   
  183. ////////////////////////  
  184.        digitalWrite(CS1,0); //显示右半屏
  185.        digitalWrite(CS2,1);  
  186.         for(yg=0;yg<8;yg++)
  187.        {
  188.            x=yg+0xb8;
  189.            y=0x40;
  190.            LcdCommandWrite(x);           //写入y轴坐标
  191.            LcdCommandWrite(y);           //写入x轴坐标  
  192.            tmp=(2*yg+1)*64;
  193.            for(i=0;i<64;i++)
  194.                  {
  195.                     LcdDataWrite(logo[tmp]);
  196.          tmp++;     
  197.                }         
  198.        }
  199.   LcdCommandWrite(0x3f);      
  200. delay(3000);
  201. ///////////////////////////////////////////////////////////////
  202. //显示 文字,依然采用位图数据调用,KS0108无字库只能采用这种办法
  203. ///////////////////////////////////////////////////////////////
  204.      digitalWrite(CS1,1);  
  205.      digitalWrite(CS2,0);
  206.         for(yg=0;yg<8;yg++)
  207.        {
  208.            x=yg+0xb8;
  209.            y=0x40;
  210.            LcdCommandWrite(x);           //写入y轴坐标
  211.            LcdCommandWrite(y);           //写入x轴坐标
  212.            tmp=2*yg*64;
  213.            for(i=0;i<64;i++)
  214.                  {
  215.                     LcdDataWrite(logo1[tmp]);
  216.          tmp++;   
  217.                }         
  218.        }
  219.   LcdCommandWrite(0x3f);     
  220. //////////////////////////////////////
  221.        digitalWrite(CS1,0);  
  222.        digitalWrite(CS2,1);  
  223.         for(yg=0;yg<8;yg++)
  224.        {
  225.            x=yg+0xb8;
  226.            y=0x40;
  227.            LcdCommandWrite(x);           //写入y轴坐标
  228.            LcdCommandWrite(y);           //写入x轴坐标  
  229.            tmp=(2*yg+1)*64;
  230.            for(i=0;i<64;i++)
  231.                  {
  232.                     LcdDataWrite(logo1[tmp]);
  233.          tmp++;   
  234.                }         
  235.        }
  236.   LcdCommandWrite(0x3f);      
  237. delay(3000);
  238. ///////////////////////////////////////////////////////
  239. //测试画面 :全黑
  240. ////////////////////////////////////////////////////////
  241.        digitalWrite(CS1,1);  
  242.        digitalWrite(CS2,1);  
  243.         for(yg=0;yg<8;yg++)
  244.        {
  245.            x=yg+0xb8;
  246.            y=0x40;
  247.            LcdCommandWrite(x);           //写入y轴坐标
  248.            LcdCommandWrite(y);           //写入x轴坐标  
  249.            for(i=0;i<64;i++)
  250.                  {
  251.                     LcdDataWrite(0xFF);
  252.                }         
  253.        }
  254.   LcdCommandWrite(0x3f);   
  255. delay(3000);
  256. ///////////////////////////////////////////////////////
  257. //测试画面 :全白
  258. ////////////////////////////////////////////////////////
  259.       digitalWrite(CS1,1);  
  260.        digitalWrite(CS2,1);  
  261.         for(yg=0;yg<8;yg++)
  262.        {
  263.            x=yg+0xb8;
  264.            y=0x40;
  265.            LcdCommandWrite(x);           //写入y轴坐标
  266.            LcdCommandWrite(y);           //写入x轴坐标  
  267.            for(i=0;i<64;i++)
  268.                  {
  269.                     LcdDataWrite(0x00);
  270.                }         
  271.        }
  272.   LcdCommandWrite(0x3f);   
  273. delay(3000);
  274. ///////////////////////////////////////////////////////
  275. //测试画面 :数条纹
  276. ////////////////////////////////////////////////////////
  277.        digitalWrite(CS1,1);  
  278.        digitalWrite(CS2,1);  
  279.         for(yg=0;yg<8;yg++)
  280.        {   
  281.            x=yg+0xb8;
  282.            for(i=0;i<32;i++)
  283.            {
  284.            y=0x40+2*i;
  285.            LcdCommandWrite(x);           //写入y轴坐标
  286.            LcdCommandWrite(y);           //写入x轴坐标  
  287.            LcdDataWrite(0xFF);
  288.   
  289.              }
  290.        }
  291.   LcdCommandWrite(0x3f);   
  292.   
  293. delay(3000);

  294. }
复制代码


三、NT7534这块芯片是COG芯片即chip on glass 芯片是bonding在玻璃上的,前两块是COB芯片是bongding在PCB板上的,这块芯片功能更多,可设置的更多,可以通过命令设置偏压,VLCD电压,对比度,等等具体参考附件里的规格书资料,这里还有一点因为我要做一个使用ATMEGA8L的测试板,但是程序基本超过2.2K  8L就运行不起来了,不知道是我程序的问题还是芯片的问题还是arduino的问题,我只能精简程序,位图上下0x00的部分后删除,int 都改为  unsigned char 总算是可以运行了
我这里使用的是并口驱动,这块芯片也是可以串口的,和ST7920的3线SPI不同它是 4线SPI程序,程序后续后放出
  1. ////////////////////////////////////////////////////////
  2. //基于arduino平台的NT7534  128*64液晶并口驱动程序  by 王瑾  2014/10/4
  3. // 从新设定变量,精简bitmap 使其在uno上运行 2014/10/5
  4. ////////////////////////////////////////////////////////
  5. /////
  6. ////引脚定义
  7. unsigned char a0 = 3;
  8. unsigned char RW = 2;//  对应WR
  9. unsigned char RES=4;
  10. unsigned char CS1=5;
  11. unsigned char DB[] = {6, 7, 8, 9, 10,11,12,13};//使用数组来定义总线需要的管脚
  12. unsigned char E= A0;  // 对应RD
  13. /////////////////////////////////////////////////////////////////////////
  14. // Bitmap点阵数据表                                                    //
  15. // 内容为:南京舟芯电子,TEL025-66085988   //
  16. // 图片尺寸: 128 * 64                                                  //
  17. /////////////////////////////////////////////////////////////////////////
  18. unsigned char logo1[] =      
  19. {
  20.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xF2,0xF2,0x12,0xB2,0xF2,0xD2,
  21.       0x9F,0x9F,0xD2,0xF2,0xB2,0x12,0xF2,0xF2,0x02,0x00,0x02,0x02,0x02,0xF2,0xF2,0x12,
  22.       0x12,0x13,0x13,0x12,0x12,0xF2,0xF2,0x02,0x02,0x02,0x00,0x40,0x40,0x40,0xFE,0xFE,
  23.       0x43,0x4B,0x7A,0x72,0x42,0x42,0xFE,0xFE,0x40,0x40,0x40,0x00,0x02,0x02,0x02,0x02,
  24.       0x0F,0x8F,0x92,0x32,0x62,0x42,0x0F,0x0F,0x82,0x82,0x02,0x02,0x00,0x00,0x00,0xFC,
  25.       0xFC,0x44,0x44,0x44,0xFF,0xFF,0x44,0x44,0x44,0xFC,0xFC,0x00,0x00,0x00,0x40,0x41,
  26.       0x41,0x41,0x41,0x41,0x41,0xF1,0xF1,0x59,0x4D,0x47,0x43,0x41,0x40,0x40,0x00,0x00,
  27.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x04,0x04,0x04,0x04,
  29.       0x3F,0x3F,0x04,0x04,0x24,0x64,0x7F,0x3F,0x00,0x00,0x00,0x20,0x30,0x1D,0x0D,0x21,
  30.       0x61,0x7F,0x3F,0x01,0x01,0x05,0x0D,0x38,0x30,0x00,0x00,0x40,0x60,0x38,0x1F,0x07,
  31.       0x00,0x01,0x07,0x06,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,
  32.       0x00,0x1F,0x3F,0x20,0x20,0x20,0x20,0x38,0x38,0x01,0x07,0x06,0x00,0x00,0x00,0x0F,
  33.       0x0F,0x04,0x04,0x04,0x3F,0x7F,0x44,0x44,0x44,0x4F,0x4F,0x78,0x78,0x00,0x00,0x00,
  34.       0x00,0x00,0x00,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  36.       0x60,0x60,0xE0,0xE0,0x60,0x60,0x00,0x20,0xE0,0xE0,0x20,0x60,0x60,0x00,0x20,0xE0,
  37.       0xE0,0x20,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  38.       0x00,0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0x70,0x10,0xF0,0xE0,0x00,0x00,
  39.       0xF0,0xF0,0x90,0x90,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,
  40.       0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x10,0xF0,
  41.       0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0xF0,0xF0,0x90,0x90,0x10,0x00,
  42.       0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0x60,
  43.       0xF0,0x90,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  44.       0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x08,0x0F,0x0F,0x09,0x0D,0x0C,0x00,0x08,0x0F,
  45.       0x0F,0x08,0x0C,0x0C,0x00,0x00,0x0D,0x0D,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  46.       0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x00,0x00,
  47.       0x04,0x0C,0x08,0x0F,0x07,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x07,0x0F,
  48.       0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,
  49.       0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x04,0x0C,0x08,0x0F,0x07,0x00,
  50.       0x00,0x04,0x0D,0x09,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,
  51.       0x0F,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,     
  52. };

  53. //////////////////////////////////////////////////////////////
  54. //写命令子程序
  55. ///////////////////////////////////////////////////////////
  56. void WriteCommand(unsigned char value) {
  57. digitalWrite(a0, 0);
  58. digitalWrite(RW, 0);
  59. digitalWrite(CS1, 0);
  60. digitalWrite(E, 1);
  61. unsigned char i;
  62. for (i=6; i <= 13; i++) //总线赋值
  63. {
  64. digitalWrite(i,value & 01);//value与0001相与赋予i

  65. value >>= 1;//value右移一位
  66. }
  67. digitalWrite(CS1,1);
  68. digitalWrite(RW, 1);
  69. digitalWrite(E, 0);
  70. }
  71. ////////////////////////////////////////////////////////////
  72. //写数据子程序
  73. //////////////////////////////////////////////////////////
  74. void WriteData(unsigned char value) {
  75. digitalWrite(a0, 1);
  76. digitalWrite(RW, 0);
  77. digitalWrite(CS1, 0);
  78. digitalWrite(E, 1);
  79. unsigned char i;
  80. for (i=6; i <= 13; i++) //总线赋值

  81. {
  82. digitalWrite(i,value & 01);//value与0001相与赋予i

  83. value >>= 1;//value右移一位
  84. }
  85. digitalWrite(CS1,1);
  86. digitalWrite(RW, 1);
  87. digitalWrite(E, 0);
  88. }
  89. //////////////////////////////////////////////////////
  90. //清屏子程序
  91. /////////////////////////////////////////////////////////
  92. void cl()         //清屏,其实就是把所有的地址全部填成0
  93. {         
  94. unsigned char x,y;
  95.   for(y=0;y<8;y++)
  96.   {   
  97.     WriteCommand(0xb0+y);
  98.     WriteCommand(0x10);               
  99.     WriteCommand(0x00);
  100.     for(x=0;x<128;x++)  WriteData(0);
  101.   }  
  102. }
  103. ///////////////////////////////////////////////////////
  104. //全显示子程序
  105. //////////////////////////////////////////////////////
  106. void qx()         //把所有的地址全部填成1
  107. {         
  108.   unsigned char x,y;
  109.   for(y=0;y<8;y++)
  110.   {   
  111.     WriteCommand(0xb0+y);
  112.     WriteCommand(0x10);               
  113.     WriteCommand(0x00);
  114.     for(x=0;x<128;x++)  WriteData(0xff);
  115.   }  
  116. }
  117. /////////////////////////////////////////////////
  118. //初始化设定
  119. ////////////////////////////////////////////
  120. void setup (void) {
  121. unsigned char i;
  122. for (i=2; i <= 13; i++) {
  123.    pinMode(i,OUTPUT);
  124. }
  125. pinMode(22,OUTPUT);
  126. delay(100);

  127. digitalWrite(RES,HIGH);
  128. delay(1000);   
  129.   WriteCommand(0x24);//对比度
  130.   WriteCommand(0xa2);//BR=1/9
  131.   WriteCommand(0xa0);//set seg direction
  132.   WriteCommand(0xc8);//set com direction
  133.   WriteCommand(0x2f);//set power control
  134.   WriteCommand(0x40);//set scroll line
  135.   WriteCommand(0x81);//SET ELECTRONIC VOLUME
  136.   WriteCommand(0x20);//set pm: 通过改变这里的数值来改变电压
  137.   //WriteCommand(0xa6);//set inverse display           a6 off, a7 on
  138.   //WriteCommand(0xa4);//set all pixel on
  139.   WriteCommand(0xaf);//开显示   
  140.   
  141. }
  142. ////////////////////////////////////////////////////
  143. //主循环程序
  144. /////////////////////////////////////////////////////
  145. void loop (void) {
  146.   cl()  ;
  147. unsigned char x,y;
  148.   for(y=0;y<4;y++)
  149.   {   
  150.     WriteCommand(0xb2+y);
  151.     WriteCommand(0x10);               
  152.     WriteCommand(0x00);
  153.     int tmp=128*y;
  154.     for(x=0;x<128;x++)
  155.    {
  156.      WriteData(logo1[tmp]) ;
  157.    tmp++ ;
  158.    }
  159.   }  
  160. delay(2000);  
  161. qx() ;//set all pixel on
  162. delay(2000);  
  163. cl()  ;
  164. delay(2000);

  165. }
复制代码











本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-10-7 21:15:19 | 显示全部楼层
12864最好的防范就是串行  节省资源
回复 支持 反对

使用道具 举报

发表于 2014-10-7 22:24:46 | 显示全部楼层
不错,帮顶。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-8 00:13:22 | 显示全部楼层
kaizhiyu 发表于 2014-10-7 21:15
12864最好的防范就是串行  节省资源

但是在我接触到的客户绝大多数都使用的是并口,实际的应用中更看重的是稳定
回复 支持 反对

使用道具 举报

发表于 2014-10-8 12:01:53 | 显示全部楼层
很漂亮,专业玩屏的这是
回复 支持 反对

使用道具 举报

发表于 2014-10-8 23:29:15 | 显示全部楼层
附件的压缩文件没法下载啊
回复 支持 反对

使用道具 举报

发表于 2015-1-11 22:48:18 | 显示全部楼层
手头有一个WSM-6833A的大屏,是串口的,不知道如何驱动,楼主能帮忙吗
回复 支持 反对

使用道具 举报

发表于 2015-1-12 21:18:03 | 显示全部楼层
谢谢分享学习一下
回复 支持 反对

使用道具 举报

发表于 2015-1-13 18:31:12 | 显示全部楼层
我有一个信利TR-804 94V-0 MPG967-c1-2的显示屏,没找到资料,楼主能帮忙驱动吗?驱动芯片是RA8835P3N。
回复 支持 反对

使用道具 举报

发表于 2015-1-13 18:32:15 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2015-1-20 18:29:42 | 显示全部楼层
附件都不能下载了.                  
回复 支持 反对

使用道具 举报

发表于 2015-1-29 13:45:51 | 显示全部楼层
请问有没有st7565p的库文件呢?谢谢
回复 支持 反对

使用道具 举报

发表于 2020-4-28 10:55:54 | 显示全部楼层
感谢楼主的分享,通过楼主的程序终于把手头的NT7538驱动起来了
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 20:49 , Processed in 0.052990 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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