Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.10 KB | None | 0 0
  1. #include <proto/exec.h>
  2. #include <proto/dos.h>
  3.  
  4.  
  5. #define base_adr 0xD80000L
  6. unsigned long spi_dr = base_adr + 0x01L;
  7. unsigned long spi_start = base_adr + 0x05L;
  8. unsigned long spi_cs_low = base_adr + 0x09L;
  9. unsigned long spi_cs_high = base_adr + 0x0DL;
  10. //ab hier über reads
  11. unsigned long spi_res = base_adr + 0x05L;
  12. unsigned long spi_gpo_low = base_adr + 0x09L;
  13. unsigned long spi_gpo_high = base_adr + 0x0DL;
  14.  
  15.  
  16. #define uint8_t unsigned char
  17. #define uint16_t unsigned int
  18. #define uint unsigned int
  19. #define uchar unsigned char
  20.  
  21.  
  22. #define Start_column    0x00
  23. #define Start_page      0x00
  24. #define StartLine_set   0x00
  25.  
  26. #define enableChip()   out_b (spi_cs_low,0xff)
  27. #define disableChip()  out_b (spi_cs_high,0xff)
  28. #define disableDC()  in_b (spi_gpo_low,0xff)
  29. #define enableDC() in_b (spi_gpo_high,0xff)
  30.  
  31. unsigned char in_b(unsigned long);
  32. void out_b(unsigned long, unsigned char);
  33. void Write_Data(unsigned char data);
  34. void Write_Instruction(unsigned char data);
  35. void Set_Page_Address(unsigned char add);
  36. void Set_Column_Address(unsigned char add);
  37. void InitOLED(void);
  38. void Display_Picture(unsigned char pic[]);
  39.  
  40.  
  41.  
  42. unsigned char a1k_oled [] = {
  43. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  44. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  45. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  46. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
  47. 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F,
  48. 0x4F, 0x27, 0x3B, 0x3D, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x37, 0x39, 0x3D, 0x7F,
  49. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  50. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  51. 0xFF, 0xFF, 0xFF, 0x1F, 0xCF, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF,
  52. 0xEF, 0x6F, 0x6F, 0x6F, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0xEF,
  53. 0x6F, 0x6F, 0x6F, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0xEF, 0x6F, 0x6F, 0x6F, 0xEF, 0xEF, 0x6F,
  54. 0x6F, 0x6F, 0x6F, 0xCF, 0x1F, 0x7F, 0xFF, 0x7F, 0x07, 0xF0, 0xFE, 0x07, 0x03, 0x03, 0x03, 0x03,
  55. 0x03, 0x1E, 0xFC, 0xC1, 0x73, 0xF9, 0x8D, 0x8C, 0x8C, 0x86, 0x03, 0x03, 0x03, 0x03, 0xFE, 0x00,
  56. 0x00, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0x7F, 0x3E, 0x06, 0x03, 0x03, 0xC3, 0xF3, 0x3F, 0x8E, 0xE0,
  57. 0xFB, 0xFF, 0xFF, 0x3F, 0x9F, 0xDF, 0xCF, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0x9F, 0xCF,
  58. 0x6F, 0x6F, 0x6F, 0x6F, 0xEF, 0x6F, 0x6F, 0xCF, 0xCF, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F,
  59. 0xFF, 0xFF, 0xFF, 0xF0, 0x03, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F,
  60. 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xF8, 0x80, 0x80, 0x80, 0x8F, 0x80, 0x80, 0x80, 0x80, 0x8F, 0x80,
  61. 0x80, 0x80, 0xF8, 0xFF, 0xFE, 0x80, 0x80, 0x80, 0x9F, 0x80, 0x80, 0x80, 0x00, 0x03, 0x03, 0x00,
  62. 0x00, 0xE0, 0xFF, 0x67, 0x60, 0x67, 0x67, 0xC0, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x10, 0x1F, 0x00,
  63. 0x00, 0x00, 0x03, 0x7F, 0xF0, 0x00, 0x01, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
  64. 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x07, 0x1F, 0xF8, 0xC0, 0xE7, 0x6F,
  65. 0x6F, 0x67, 0x60, 0xFC, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0x78, 0x00, 0x00, 0x00, 0xFF, 0xFF,
  66. 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x18, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x78, 0xFC, 0x00, 0x00,
  67. 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0xEF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xDE, 0xD8, 0xD8,
  68. 0xD8, 0xD8, 0xDF, 0xEF, 0xE3, 0xEF, 0xDF, 0xDE, 0xFC, 0xF9, 0xF0, 0xE1, 0xC1, 0x08, 0x01, 0x09,
  69. 0x07, 0x1F, 0x1F, 0x3C, 0x78, 0xE1, 0xC0, 0x80, 0x01, 0x01, 0x01, 0x07, 0x0E, 0x1C, 0x38, 0x78,
  70. 0xFC, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xCF, 0xD9, 0x58, 0x18, 0x18, 0x18, 0x0F, 0x07, 0x0F,
  71. 0x18, 0x98, 0xD8, 0xD8, 0x5F, 0x0F, 0x00, 0x00, 0x0F, 0x1F, 0x18, 0x18, 0x98, 0xD8, 0xCF, 0xE0,
  72. 0xE0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xDE, 0xD8, 0xD8, 0xD8, 0xD8, 0xDB, 0xDF, 0xD8,
  73. 0xD8, 0xD8, 0xD8, 0xCF, 0xE7, 0xEE, 0xCC, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xCC, 0xE7, 0xCF,
  74. 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0x00, 0x7F, 0xEF, 0xCC, 0x88, 0x88, 0x88, 0x88, 0x80, 0x80,
  75. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  76. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8,
  77. 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x20,
  78. 0x89, 0xE3, 0xFF, 0x3F, 0x9F, 0xEF, 0xE7, 0xE1, 0x9C, 0x3E, 0xF0, 0xE0, 0xE0, 0x70, 0x3C, 0x9E,
  79. 0x8F, 0x07, 0x01, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  80. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  81. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  82. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
  83. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  84. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  85. 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0xE0, 0xC0, 0xE8, 0xE4, 0x73, 0x9F, 0xCF, 0xE7,
  86. 0xF3, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xCF, 0xE7, 0xFB, 0xFD, 0xF4, 0x74, 0xF6,
  87. 0xF7, 0xF2, 0xF8, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  88. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  89. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  90. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  91. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
  94. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  95. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  96. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  97. 0xFF, 0xFF, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  99. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  100. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  101. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  102. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  103. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
  107. };
  108.  
  109.  
  110.  
  111.  
  112. main(int argc, void *argv[])
  113. {
  114.     struct Library *SysBase;
  115.     struct Library *DOSBase;
  116.     //int i;
  117.  
  118.     SysBase = *((struct Library **)4UL);
  119.     DOSBase = OpenLibrary("dos.library",0);
  120.  
  121.     if (DOSBase) {
  122.         Write(Output(),"Hello OLED!\n",13);
  123.  
  124.         InitOLED(); //init oled
  125.  
  126.         Display_Picture(a1k_oled);
  127.         Delay(150);
  128.  
  129.         Write_Instruction(0xa7);//--set Inverse Display
  130.         Delay(150);
  131.  
  132.         Write_Instruction(0xa6);//--set normal display
  133.  
  134.  
  135.         CloseLibrary(DOSBase);
  136.     }
  137.  
  138.     return(0);
  139. }
  140.  
  141.  
  142.  
  143. void Write_Data(unsigned char data)
  144. {
  145.  
  146.     //RS=1;
  147.     enableDC();
  148.     enableChip();
  149.     out_b (spi_dr,data);
  150.     out_b (spi_start,0xff);
  151.     disableChip();
  152. }
  153.  
  154.  
  155.  
  156.  
  157. void Write_Instruction(unsigned char data)
  158. {
  159.  
  160.     //RS=0;
  161.     disableDC();
  162.     enableChip();
  163.     out_b (spi_dr,data);
  164.     out_b (spi_start,0xff);
  165.     disableChip();
  166. }
  167.  
  168.  
  169. // Set page address 0~7
  170. void Set_Page_Address(unsigned char add)
  171. {
  172.     add=0xb0|add;
  173.     Write_Instruction(add);
  174.     return;
  175. }
  176.  
  177. void Set_Column_Address(unsigned char add)
  178. {
  179.     Write_Instruction((0x10|(add>>4)));
  180.     Write_Instruction((0x0f&add));
  181.     return;
  182. }
  183.  
  184. void InitOLED(void)
  185. {
  186.     //RST=1;
  187.     //Delay(2000);
  188.     //RST=0;
  189.     //Delay(2000);
  190.     //RST=1;
  191.  
  192.     //Delay(2000);
  193.  
  194.     Write_Instruction(0xae);//--turn off oled panel
  195.  
  196.     Write_Instruction(0xd5);//--set display clock divide ratio/oscillator frequency
  197.     Write_Instruction(0x80);//--set divide ratio
  198.  
  199.     Write_Instruction(0xa8);//--set multiplex ratio(1 to 64)
  200.     Write_Instruction(0x3f);//--1/64 duty
  201.  
  202.     Write_Instruction(0xd3);//-set display offset
  203.     Write_Instruction(0x00);//-not offset
  204.  
  205.  
  206.     Write_Instruction(0x8d);//--set Charge Pump enable/disable
  207.     Write_Instruction(0x14);//--set(0x10) disable
  208.  
  209.  
  210.     Write_Instruction(0x40);//--set start line address
  211.  
  212.     Write_Instruction(0xa6);//--set normal display
  213.  
  214.     Write_Instruction(0xa4);//Disable Entire Display On
  215.  
  216.     Write_Instruction(0xa1);//--set segment re-map 128 to 0
  217.  
  218.     Write_Instruction(0xC8);//--Set COM Output Scan Direction 64 to 0
  219.  
  220.     Write_Instruction(0xda);//--set com pins hardware configuration
  221.     Write_Instruction(0x12);
  222.  
  223.     Write_Instruction(0x81);//--set contrast control register
  224.     Write_Instruction(0xf0);//--contrast level
  225.  
  226.  
  227.     Write_Instruction(0xd9);//--set pre-charge period
  228.     Write_Instruction(0xf1);
  229.  
  230.     Write_Instruction(0xdb);//--set vcomh
  231.     Write_Instruction(0x40);
  232.     Write_Instruction(0xaf);//--turn on oled panel
  233. }
  234.  
  235.  
  236.  
  237. void Display_Picture(unsigned char pic[])
  238. {
  239.     unsigned char i,j,num=0;
  240.     for(i=0;i<0x08;i++)
  241.     {
  242.     Set_Page_Address(i);
  243.     Set_Column_Address(0x00);
  244.         for(j=0;j<0x80;j++)
  245.         {
  246.             Write_Data(pic[i*0x80+j]);
  247.         }
  248.     }
  249.     return;
  250. }
  251.  
  252.  
  253. void out_b(unsigned long adr,unsigned char data)
  254.  {
  255.    unsigned char *io_ptr;
  256.  
  257.    io_ptr = 0L;
  258.    io_ptr += adr;
  259.    *io_ptr = data;
  260.    return;
  261.  }
  262.  
  263.  unsigned char in_b(unsigned long adr)
  264.  {
  265.    unsigned char *io_ptr;
  266.  
  267.    io_ptr = 0L;
  268.    io_ptr += adr;
  269.    return *io_ptr;
  270.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement