#include "sed1530.h" char pagecounter, columncounter, data; void InitSED1530(void){ int i, k; TRIS_A0 = out; TRIS_RES = out; RES = low; pagecounter = 0; columncounter = 0; data = 0; OpenSWSPI(); ClearCSSWSPI(); RES = high; Delay100TCYx(100); A0 = low; setBL(); WriteSWSPI(0x40); WriteSWSPI(ADCInvers); WriteSWSPI(Bias_1_5); WriteSWSPI(0xC0); WriteSWSPI(0x2f); WriteSWSPI(0x8f); WriteSWSPI(0xA4); WriteSWSPI(DisplayOn); WriteSWSPI(0xA6); SetPageAddress(3); WriteSWSPI(0x11); WriteSWSPI(0x00); A0 = high; //while(1); SED_contrast(16); Clear_SED(); Delay10KTCYx(500); SED_Symbol(19,0); SED_Symbol(22,1); SED_Symbol(26,1); SED_Symbol(33,1); SED_Symbol(36,1); SED_Symbol(40,1); SED_Symbol(47,1); SED_Symbol(50,1); SED_Symbol(54,1); SED_Symbol(63,1); SED_Symbol(79,1); SED_Symbol(95,1); SED_Symbol(96,1); SED_Symbol(97,1); SED_Symbol(98,1); SED_Symbol(99,1); for( k=0; k<=32; k++){ SED_contrast(k); Delay10KTCYx(10); } SED_contrast(16); Delay10KTCYx(500); //for (i=0; i<=3; i++){ // Seite (X) for(k=16;k<=111;k++){ //Spalte (Y) SED_Pixel(0,k,0x0A); SED_Pixel(1,k,0xFF); SED_Pixel(2,k,0x0F); SED_Pixel(3,k,0x0F); Delay10KTCYx(1); } for( k=0; k<=32; k++){ SED_contrast(k); Delay10KTCYx(10); } SED_contrast(16); //} Delay10KTCYx(500); //Clear_SED(); SED_contrast(8); for(k=16;k<=111;k++){ //Spalte (Y) SED_Pixel(0,k,0x0A); SED_Pixel(1,k,0x0A); SED_Pixel(2,k,0x0A); SED_Pixel(3,k,0xA0); Delay10KTCYx(1); } /*for( k=0; k<=32; k++){ SED_contrast(k); Delay10KTCYx(10); }*/ SED_contrast(6); /* ... */ SetCSSWSPI(); } char StartDisplayLine(char line){ //(2) char ret = 0; if (line>0){ if(line<64){ line |= 0x40; WriteSWSPI(line); ret = 1; } } return ret; } //Change Page char SetPageAddress(char page){ char ret = 0; if(page<9){ page |= 0xB0; A0 = low; WriteSWSPI(page); pagecounter = page; A0 = high; ret = 1; } return ret; } // Change Column char SetColumnAddress(char col){ char ret = 0; char col_lo, col_hi; if(col<132){ col_lo = col&0x0F; col_hi = col>>4; col_hi |= 0x10; A0 = low; WriteSWSPI(col_hi); WriteSWSPI(col_lo); A0 = high; ret = 1; } return ret; } // clear all pages void Clear_SED(void){ char pagecount,k; for(pagecount=0; pagecount<=8; pagecount++){ Clear_Page_SED(pagecount); /*SetPageAddress(pagecount); SED_Home_Col(); for(columncounter=0; columncounter<= SC_width; columncounter++){ WriteSWSPI(0x00); }*/ } SED_contrast(0x01); for(k=16;k<=111;k++){ //Spalte (Y) SED_Pixel(0,k,255); SED_Pixel(1,k,1); SED_Pixel(2,k,255); SED_Pixel(3,k,1); } SetPageAddress(3); SED_Home_Col(); } //clear one page void Clear_Page_SED(char page){ SetPageAddress(page); SED_Home_Col(); for(columncounter=0; columncounter<= 111; columncounter++){ WriteSWSPI(0x00); } SED_Home_Col(); } // Set the Left visible Corner of the Display void SED_Home_Col(void){ SetColumnAddress(16); columncounter = 0; } //Select Page and Column void SED_set_XY(char Page, char Column){ unsigned char x, col_HI, col_LO; col_HI = Column; col_LO = Column; SED_Home_Col(); SetPageAddress(Page); A0 = low; col_HI&=0xF0; col_HI = col_HI>>4; col_LO&=0x0F; col_HI|=16; WriteSWSPI(col_HI); WriteSWSPI(col_LO); A0 = high; } void SED_Symbol(char symbol, char OnOff){ unsigned char tmp; tmp = pagecounter; SED_set_XY(8,symbol); OnOff &= 0x01; //sicherstellen, das OnOff nur 1 oder 0 sein kann WriteSWSPI(OnOff); //Symbol ein / ausschalten SetPageAddress(tmp); SED_Home_Col(); } void SED_contrast(char contrast){ A0 = low; if(contrast<=31){ contrast|=0x80; WriteSWSPI(contrast); } A0 = high; } void SED_Pixel(char X, char Y, char patter){ SED_set_XY(X,Y); WriteSWSPI(patter); }