Obsługa graficznego wyświetlacza z telefonu Nokia 3310 za pomocą mikrokontrolerów STM32
Na list. 2 przedstawiono procedury manipulacji liniami portów i procedura programowej realizacji interfejsu SPI.
List. 2. Procedura programowej realizacji interfejsu SPI i manipulacji liniami portów
//programowa realizacja SPI void WriteSPI(unsigned char data){ char i; ClrBit(CLK); Delay(10); for(i=0;i<8;i++){ if((data&0x80)==0x80) SetBit(DATA); else ClrBit(DATA); Delay(10); SetBit(CLK); Delay(10); ClrBit(CLK); data<<=1; } } //ustawienie linii portu void SetBit(int bits){ GPIO_SetBits(PORT_DISP_NOKIA, bits); } //wyzerowanie linii portu void ClrBit(int bits){ GPIO_ResetBits(PORT_DISP_NOKIA, bits); }
Do sterowania wyświetlaczem będą niezbędne procedury zapisania danych do wyświetlacza (list. 3) i zapisania komendy do wyświetlacza (list. 4).
List. 3. Procedura zapisu danych do pamięci obrazu sterownika PCD8544
//zapisanie danej do sterownika void WriteData(unsigned char data){ ClrBit(SCE); SetBit(DC);//rejestr danych WriteSPI(data); SetBit(SCE); }
List. 4. Zapisanie komendy do sterownika PCD8544
//zapisanie komendy do sterownika void WriteCmd(unsigned char cmd){ ClrBit(SCE); ClrBit(DC);//rejestr komend WriteSPI(cmd); SetBit(SCE); }
Po włączeniu zasilania pamięć sterownika PCD8544 nie jest automatycznie zerowana, wymaga więc zerowania polegającego na wypełnieniu jej całej wartościami 0x00. Pamięć sterownika PCD8544 ma pojemność 504 B – trzeba więc wpisać do niej kolejno 504 bajty 0x00, żeby ekran wyświetlacza po inicjalizacji był „czysty” (list. 5).