Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <proto/exec.h>
- #include <proto/dos.h>
- #define base_adr 0xD80000L
- unsigned long spi_dr = base_adr + 0x01L;
- unsigned long spi_start = base_adr + 0x05L;
- unsigned long spi_cs_low = base_adr + 0x09L;
- unsigned long spi_cs_high = base_adr + 0x0DL;
- //ab hier über reads
- unsigned long spi_res = base_adr + 0x05L;
- unsigned long spi_gpo_low = base_adr + 0x09L;
- unsigned long spi_gpo_high = base_adr + 0x0DL;
- #define uint8_t unsigned char
- #define uint16_t unsigned int
- #define uint unsigned int
- #define uchar unsigned char
- #define Start_column 0x00
- #define Start_page 0x00
- #define StartLine_set 0x00
- #define enableChip() out_b (spi_cs_low,0xff)
- #define disableChip() out_b (spi_cs_high,0xff)
- #define disableDC() in_b (spi_gpo_low,0xff)
- #define enableDC() in_b (spi_gpo_high,0xff)
- unsigned char in_b(unsigned long);
- void out_b(unsigned long, unsigned char);
- void Write_Data(unsigned char data);
- void Write_Instruction(unsigned char data);
- void Set_Page_Address(unsigned char add);
- void Set_Column_Address(unsigned char add);
- void InitOLED(void);
- void Display_Picture(unsigned char pic[]);
- unsigned char a1k_oled [] = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
- 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F,
- 0x4F, 0x27, 0x3B, 0x3D, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x37, 0x39, 0x3D, 0x7F,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0x1F, 0xCF, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF,
- 0xEF, 0x6F, 0x6F, 0x6F, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0xEF,
- 0x6F, 0x6F, 0x6F, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0xEF, 0x6F, 0x6F, 0x6F, 0xEF, 0xEF, 0x6F,
- 0x6F, 0x6F, 0x6F, 0xCF, 0x1F, 0x7F, 0xFF, 0x7F, 0x07, 0xF0, 0xFE, 0x07, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x1E, 0xFC, 0xC1, 0x73, 0xF9, 0x8D, 0x8C, 0x8C, 0x86, 0x03, 0x03, 0x03, 0x03, 0xFE, 0x00,
- 0x00, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0x7F, 0x3E, 0x06, 0x03, 0x03, 0xC3, 0xF3, 0x3F, 0x8E, 0xE0,
- 0xFB, 0xFF, 0xFF, 0x3F, 0x9F, 0xDF, 0xCF, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0xCF, 0x9F, 0xCF,
- 0x6F, 0x6F, 0x6F, 0x6F, 0xEF, 0x6F, 0x6F, 0xCF, 0xCF, 0xEF, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F,
- 0xFF, 0xFF, 0xFF, 0xF0, 0x03, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F,
- 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xF8, 0x80, 0x80, 0x80, 0x8F, 0x80, 0x80, 0x80, 0x80, 0x8F, 0x80,
- 0x80, 0x80, 0xF8, 0xFF, 0xFE, 0x80, 0x80, 0x80, 0x9F, 0x80, 0x80, 0x80, 0x00, 0x03, 0x03, 0x00,
- 0x00, 0xE0, 0xFF, 0x67, 0x60, 0x67, 0x67, 0xC0, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x10, 0x1F, 0x00,
- 0x00, 0x00, 0x03, 0x7F, 0xF0, 0x00, 0x01, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
- 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x07, 0x1F, 0xF8, 0xC0, 0xE7, 0x6F,
- 0x6F, 0x67, 0x60, 0xFC, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0x78, 0x00, 0x00, 0x00, 0xFF, 0xFF,
- 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x18, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x78, 0xFC, 0x00, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0xEF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xDE, 0xD8, 0xD8,
- 0xD8, 0xD8, 0xDF, 0xEF, 0xE3, 0xEF, 0xDF, 0xDE, 0xFC, 0xF9, 0xF0, 0xE1, 0xC1, 0x08, 0x01, 0x09,
- 0x07, 0x1F, 0x1F, 0x3C, 0x78, 0xE1, 0xC0, 0x80, 0x01, 0x01, 0x01, 0x07, 0x0E, 0x1C, 0x38, 0x78,
- 0xFC, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xCF, 0xD9, 0x58, 0x18, 0x18, 0x18, 0x0F, 0x07, 0x0F,
- 0x18, 0x98, 0xD8, 0xD8, 0x5F, 0x0F, 0x00, 0x00, 0x0F, 0x1F, 0x18, 0x18, 0x98, 0xD8, 0xCF, 0xE0,
- 0xE0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xDE, 0xD8, 0xD8, 0xD8, 0xD8, 0xDB, 0xDF, 0xD8,
- 0xD8, 0xD8, 0xD8, 0xCF, 0xE7, 0xEE, 0xCC, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xCC, 0xE7, 0xCF,
- 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0x00, 0x7F, 0xEF, 0xCC, 0x88, 0x88, 0x88, 0x88, 0x80, 0x80,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8,
- 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x20,
- 0x89, 0xE3, 0xFF, 0x3F, 0x9F, 0xEF, 0xE7, 0xE1, 0x9C, 0x3E, 0xF0, 0xE0, 0xE0, 0x70, 0x3C, 0x9E,
- 0x8F, 0x07, 0x01, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0xE0, 0xC0, 0xE8, 0xE4, 0x73, 0x9F, 0xCF, 0xE7,
- 0xF3, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xCF, 0xE7, 0xFB, 0xFD, 0xF4, 0x74, 0xF6,
- 0xF7, 0xF2, 0xF8, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- };
- main(int argc, void *argv[])
- {
- struct Library *SysBase;
- struct Library *DOSBase;
- //int i;
- SysBase = *((struct Library **)4UL);
- DOSBase = OpenLibrary("dos.library",0);
- if (DOSBase) {
- Write(Output(),"Hello OLED!\n",13);
- InitOLED(); //init oled
- Display_Picture(a1k_oled);
- Delay(150);
- Write_Instruction(0xa7);//--set Inverse Display
- Delay(150);
- Write_Instruction(0xa6);//--set normal display
- CloseLibrary(DOSBase);
- }
- return(0);
- }
- void Write_Data(unsigned char data)
- {
- //RS=1;
- enableDC();
- enableChip();
- out_b (spi_dr,data);
- out_b (spi_start,0xff);
- disableChip();
- }
- void Write_Instruction(unsigned char data)
- {
- //RS=0;
- disableDC();
- enableChip();
- out_b (spi_dr,data);
- out_b (spi_start,0xff);
- disableChip();
- }
- // Set page address 0~7
- void Set_Page_Address(unsigned char add)
- {
- add=0xb0|add;
- Write_Instruction(add);
- return;
- }
- void Set_Column_Address(unsigned char add)
- {
- Write_Instruction((0x10|(add>>4)));
- Write_Instruction((0x0f&add));
- return;
- }
- void InitOLED(void)
- {
- //RST=1;
- //Delay(2000);
- //RST=0;
- //Delay(2000);
- //RST=1;
- //Delay(2000);
- Write_Instruction(0xae);//--turn off oled panel
- Write_Instruction(0xd5);//--set display clock divide ratio/oscillator frequency
- Write_Instruction(0x80);//--set divide ratio
- Write_Instruction(0xa8);//--set multiplex ratio(1 to 64)
- Write_Instruction(0x3f);//--1/64 duty
- Write_Instruction(0xd3);//-set display offset
- Write_Instruction(0x00);//-not offset
- Write_Instruction(0x8d);//--set Charge Pump enable/disable
- Write_Instruction(0x14);//--set(0x10) disable
- Write_Instruction(0x40);//--set start line address
- Write_Instruction(0xa6);//--set normal display
- Write_Instruction(0xa4);//Disable Entire Display On
- Write_Instruction(0xa1);//--set segment re-map 128 to 0
- Write_Instruction(0xC8);//--Set COM Output Scan Direction 64 to 0
- Write_Instruction(0xda);//--set com pins hardware configuration
- Write_Instruction(0x12);
- Write_Instruction(0x81);//--set contrast control register
- Write_Instruction(0xf0);//--contrast level
- Write_Instruction(0xd9);//--set pre-charge period
- Write_Instruction(0xf1);
- Write_Instruction(0xdb);//--set vcomh
- Write_Instruction(0x40);
- Write_Instruction(0xaf);//--turn on oled panel
- }
- void Display_Picture(unsigned char pic[])
- {
- unsigned char i,j,num=0;
- for(i=0;i<0x08;i++)
- {
- Set_Page_Address(i);
- Set_Column_Address(0x00);
- for(j=0;j<0x80;j++)
- {
- Write_Data(pic[i*0x80+j]);
- }
- }
- return;
- }
- void out_b(unsigned long adr,unsigned char data)
- {
- unsigned char *io_ptr;
- io_ptr = 0L;
- io_ptr += adr;
- *io_ptr = data;
- return;
- }
- unsigned char in_b(unsigned long adr)
- {
- unsigned char *io_ptr;
- io_ptr = 0L;
- io_ptr += adr;
- return *io_ptr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement