Leo Boogaard / Mbed 2 deprecated L432KC-SMT16030_fork

Dependencies:   mbed

Fork of L432KC-SMT16030 by Leo Boogaard

Revision:
0:af4af28f0975
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCD12864.cpp	Tue Jan 10 11:32:26 2017 +0000
@@ -0,0 +1,203 @@
+/*
+  Arduino library v1.0
+  Demo LCD12864 spi
+  www.dfrobot.com
+  Version 0.0
+ 
+  Update in Februray 26th, 2013
+  Library is applied to Arduino 1.0
+  Having added a "initDriverPin" function that allows users to define the SPI interface
+  Version 1.0
+*/
+#include "mbed.h"
+#include "LCD12864.h"
+
+SPI LCD(PB_5, PB_4, PB_3);      //PA_7,PA_6,PA_5 LS7366 Quadrature counter
+DigitalOut CS_LCD(PA_11);      // PA_4 = PA8
+
+void LCD12864RSPI::WriteByte(int dat)
+{
+
+    CS_LCD = 1;
+    wait_ms(80);    //was 80ms
+    LCD.write(dat); //msbit first
+    CS_LCD = 0;
+}
+
+
+void LCD12864RSPI::WriteCommand(int CMD)
+{
+   int H_data,L_data;
+   H_data = CMD;
+   H_data &= 0xf0;           //ÆÁ±ÎµÍ4λµÄÊý¾Ý
+   L_data = CMD;             //xxxx0000¸ñʽ
+   L_data &= 0x0f;           //ÆÁ±Î¸ß4λµÄÊý¾Ý
+   L_data <<= 4;             //xxxx0000¸ñʽ
+   WriteByte(0xf8);          //RS=0£¬Ð´ÈëµÄÊÇÖ¸Á
+   WriteByte(H_data);
+   WriteByte(L_data);
+}
+
+
+void LCD12864RSPI::WriteData(int CMD)
+{
+   int H_data,L_data;
+   H_data = CMD;
+   H_data &= 0xf0;           //ÆÁ±ÎµÍ4λµÄÊý¾Ý
+   L_data = CMD;             //xxxx0000¸ñʽ
+   L_data &= 0x0f;           //ÆÁ±Î¸ß4λµÄÊý¾Ý
+   L_data <<= 4;             //xxxx0000¸ñʽ
+   WriteByte(0xfa);          //RS=1£¬Ð´ÈëµÄÊÇÊý¾Ý
+   WriteByte(H_data);
+   WriteByte(L_data);
+}
+
+
+
+void LCD12864RSPI::Initialise()
+{
+    LCD.format(8,3);         //dac 13bit, res = 8192 
+    LCD.frequency(10000);
+    CS_LCD = 0;
+    wait_ms(80);;
+
+    WriteCommand(0x30);        //¹¦ÄÜÉ趨¿ØÖÆ×Ö
+    WriteCommand(0x0c);        //ÏÔʾ¿ª¹Ø¿ØÖÆ×Ö
+    WriteCommand(0x01);        //Çå³ýÆÁÄ»¿ØÖÆ×Ö
+    WriteCommand(0x06);        //½øÈëÉ趨µã¿ØÖÆ×Ö
+}
+
+
+void LCD12864RSPI::CLEAR(void)
+{  
+    WriteCommand(0x30);//
+    WriteCommand(0x01);//Çå³ýÏÔʾ
+}
+
+
+void LCD12864RSPI::DisplayString(int X,int Y, char *ptr,int dat)
+{
+  int i;
+
+  switch(X)
+   {
+     case 0:  Y|=0x80;break;
+
+     case 1:  Y|=0x90;break;
+
+     case 2:  Y|=0x88;break;
+
+     case 3:  Y|=0x98;break;
+
+     default: break;
+   }
+
+  WriteCommand(Y); // ¶¨Î»ÏÔʾÆðʼµØÖ·
+
+  for(i=0;i<dat;i++)
+    { 
+      WriteData(ptr[i]);//ÏÔʾºº×ÖʱעÒâÂëÖµ£¬Á¬ÐøÁ½¸öÂë±íʾһ¸öºº×Ö
+    }
+}
+
+
+
+void LCD12864RSPI::DisplaySig(int M,int N,int sig)
+{
+  switch(M)
+   {
+     case 0:  N|=0x80;break;
+
+     case 1:  N|=0x90;break;
+
+     case 2:  N|=0x88;break;
+
+     case 3:  N|=0x98;break;
+
+     default: break;
+   }
+  WriteCommand(N); // ¶¨Î»ÏÔʾÆðʼµØÖ·
+  WriteData(sig); //Êä³öµ¥¸ö×Ö·û
+ }
+
+
+
+
+void LCD12864RSPI::DrawFullScreen(uchar *p)
+{
+      int ygroup,x,y,i;
+      int temp;
+      int tmp;
+             
+      for(ygroup=0;ygroup<64;ygroup++)           //дÈëÒº¾§ÉϰëͼÏ󲿷Ö
+        {                           //дÈë×ø±ê
+           if(ygroup<32)
+            {
+             x=0x80;
+             y=ygroup+0x80;
+            }
+           else 
+            {
+              x=0x88;
+              y=ygroup-32+0x80;    
+            }         
+           WriteCommand(0x34);        //дÈëÀ©³äÖ¸ÁîÃüÁî
+           WriteCommand(y);           //дÈëyÖá×ø±ê
+           WriteCommand(x);           //дÈëxÖá×ø±ê
+           WriteCommand(0x30);        //дÈë»ù±¾Ö¸ÁîÃüÁî
+           tmp=ygroup*16;
+           for(i=0;i<16;i++)
+         {
+            temp=p[tmp++];
+            WriteData(temp);
+               }
+          }
+        WriteCommand(0x34);        //дÈëÀ©³äÖ¸ÁîÃüÁî
+        WriteCommand(0x36);        //ÏÔʾͼÏó
+}
+
+
+
+void LCD12864RSPI::img1(uchar img[])
+{
+    unsigned int i;
+    unsigned char page,column;  
+
+    for(page=0xB0;page<0xB4;page++)  
+    {  
+        WriteCommand(page);  //set page address   
+        WriteCommand(0x10);  //set Column address MSB   
+        WriteCommand(0x04);  //set column address LSB 
+        
+        i = (0xB3-page)*128;
+        
+        for(column=0;column<128;column++)  
+        {  
+            WriteData(~img[i+column]);  
+        } 
+    } 
+        WriteCommand(0x34);        //дÈëÀ©³äÖ¸ÁîÃüÁî
+        WriteCommand(0x36);        //ÏÔʾͼÏó 
+}
+
+void LCD12864RSPI::img2(uchar img[])
+{
+    unsigned int i;
+    unsigned char page,column;  
+
+    for(page=0xB4;page<0xB8;page++)  
+    {  
+        WriteCommand(page);  //set page address   
+        WriteCommand(0x10);  //set Column address MSB   
+        WriteCommand(0x04);  //set column address LSB 
+        
+        i = (0xB7-page)*128;
+        
+        for(column=0;column<128;column++)  
+        {  
+            WriteData(~img[i+column]);  
+        } 
+    }  
+        WriteCommand(0x34);        //дÈëÀ©³äÖ¸ÁîÃüÁî
+        WriteCommand(0x36);        //ÏÔʾͼÏó
+}