以前下載過一個(gè)LCD5110的庫(kù),里面寫5110用的是軟件方法。前段時(shí)間剛了解了AVR下SPI的硬件調(diào)用棋蚌,回過頭看到這個(gè)庫(kù),正好試試硬件比軟件的速度快多少挨队。
簡(jiǎn)單的修改就是直接使用了Arduino里面的SPI.transfer來(lái)傳送數(shù)據(jù)谷暮。引腳方面的話,需要使用Arduino的MOSI和SCK腳來(lái)連接5110的DIN腳和CLK腳盛垦,其他腳隨意接湿弦。
效果比較顯著,速度快了5倍腾夯。舉例來(lái)說(shuō)颊埃,LCD5110::update是將整個(gè)屏幕數(shù)據(jù)全部刷新一次。以前用軟件的方法需要15ms蝶俱,現(xiàn)在用SPI只用了3ms班利。那么是不是可以用5110來(lái)做游戲了呢?實(shí)際上效果不好榨呆,因?yàn)轫憫?yīng)速度問題罗标,刷得頻率太高,畫面反而看不清了愕提。
修改了_LCD_Write和update方法馒稍。
代碼從這下載
測(cè)試代碼如下:
LCD5110 myGLCD(13,11,3 ,4,2);
extern uint8_t SmallFont[];
void setup() {
?// put your setup code here, to run once:
?SPI.begin();
?myGLCD.InitLCD();
}
int i = 1;
void loop() {
?// put your main code here, to run repeatedly:
?myGLCD.clrBack();
?myGLCD.drawRect(i, 5, i + 5, 20);
?if (++i > 84) i = 1;
?myGLCD.update();
?delay (30); //這里不延遲下皿哨,會(huì)快的看不到
}