买了一块带字库的OLED,样例程序中的字库查询程序没有使用库文件,现在将其修改成库文件后,编译通不过。
原样例程序中代码:
/****从字库IC中取汉字或字符数据(1个字节)***/
static uchar get_data_from_ROM( )
{
uchar i;
uchar ret_data = 0;
digitalWrite(Rom_SCK, HIGH);
for (i = 0; i < 8; i++)
{
// pinMode(Rom_OUT,INPUT_PULLUP); // pull high
digitalWrite(Rom_SCK, LOW);
ret_data = ret_data << 1;
if (digitalRead(Rom_OUT)) ret_data++;
digitalWrite(Rom_SCK, HIGH);
}
return (ret_data);
}
/*
从相关地址
addrHigh :地址高字节
addrMid :地址中字节
addrLow :地址低字节
中连续读出DataLen个字节的数据到 pBuff的地址
*/
/*连续读取*/
void get_n_bytes_data_from_ROM(uchar addrHigh, uchar addrMid, uchar addrLow, uchar *pBuff, uchar DataLen )
{
uchar i;
digitalWrite(lcd_cs, HIGH);
digitalWrite(Rom_CS, LOW);
digitalWrite(Rom_SCK, LOW);
send_command_to_ROM(0x03);
send_command_to_ROM(addrHigh);
send_command_to_ROM(addrMid);
send_command_to_ROM(addrLow);
for (i = 0; i < DataLen; i++ )
*(pBuff + i) = get_data_from_ROM();
digitalWrite(Rom_CS, HIGH);
}
/******************************************************************/
现修改为库文件时的代码:
/****从字库IC中取汉字或字符数据(1个字节)*/
static uchar get_data_from_ROM( )
{
uchar i;
uchar ret_data=0;
digitalWrite(rsck, HIGH);
for(i=0;i<8;i++)
{
digitalWrite(rsck, LOW);
ret_data = ret_data<<1;
if(digitalRead(rout)) ret_data++;
digitalWrite(rsck, HIGH);
}
return(ret_data);
}
/*连续读取*/
void SSD1306::get_n_bytes_data_from_ROM(uchar addrHigh,uchar addrMid,uchar addrLow,uchar *pBuff,uchar DataLen )
{
uchar i;
digitalWrite(rcs, LOW);
digitalWrite(rsck, LOW);
send_command_to_ROM(0x03);
send_command_to_ROM(addrHigh);
send_command_to_ROM(addrMid);
send_command_to_ROM(addrLow);
for(i = 0; i < DataLen; i++ )
*(pBuff+i) = get_data_from_ROM();
digitalWrite(rcs, HIGH);
}
结果编译就报错了o
I:\Program Files\arduino-1.5.6-r2\libraries\SSD1306\SSD1306.cpp: In function 'unsigned char get_data_from_ROM()':
I:\Program Files\arduino-1.5.6-r2\libraries\SSD1306\SSD1306.cpp:530: error: 'rsck' was not declared in this scope
I:\Program Files\arduino-1.5.6-r2\libraries\SSD1306\SSD1306.cpp:535: error: 'rout' was not declared in this scope
高手请教,应该如何修改? |