Помогите переделать код если это не совсем так сложно под ардуино.
- Войдите на сайт для отправки комментариев
Вс, 01/03/2015 - 22:28
void Pt6961Init(void) { char i; STB=1; SCL=1; // command 2 : memory r/w, address inc STB=0; sout(0x40); STB=1; // command 3 : address set, and data STB=0; sout(0xC0); for(i=0;i<14;i++) sout(0x00); STB=1; // command 1 : display mode : digit & seg STB=0; sout(0x02); STB=1; // command 4 : disp on/off, disp duty STB=0; sout(0x87); STB=1; // command 1 : display mode STB=0; sout(0x02); STB=1; // command 4 : disp on/off, disp duty STB=0; sout(0x8F); STB=1; } void sout(char data) { char i; for(i=0;i<8;i++){ SCL=0; SDO = data&0x01; SCL=1; data = data >> 1; } } void LedPrint(char *str) { char data; char i=0; // command 2 STB=0; sout(0x40); // write mode, auto inc address STB=1; // command 3 STB=0; sout(0xC0); // set write start address=0 sout(str[0]); // 1st digit sout(0x00); // 1 digit occupy 2 bytes sout(str[1]); // 2nd digit sout(0x00); sout(str[2]); // 3rd digit sout(0x00); STB=1; } // Read STB=0; sout(0x42); // read mode, auto inc address data[0]=sin(); // read in 1st scan line only 0-5 useable data[1]=sin(); // 2nd data[2]=sin(); // 3rd data[3]=sin(); // 4th data[4]=sin(); // 5th STB=1; char sin(void) { char i; char rc=0; for(i=0;i<8;i++){ SCL=0; rc = rc>>1; SCL=1; if(SDI) rc |= 0x80; } return rc; }
Взял от сюда http://checko.blogspot.ru/2005/09/lcd-button-controller-pt6961.html
Вот, что получилось - но не считываются кнопки. (((
С такими delay() в основном цикле, что то считать можно только случайно. При выполнении delay() МК просто стоит.
Даже если ставить delay меньше - все равно кнопками не управляю (((
Посмотрите здесь по форуму Rt6961, может найдете чего полезного.