Подключение SD карты и строчного дисплея к atmega
Простая программа для общения с SD картой и многострочным дисплеем. Были взяты уже готовые библиотке в качестве основы и доработаны. Программа сичтывает данные из файловой системы с SD карты и показывает как файловый менеджер информацию о файловой системе на экран.
Ссылка на архив с исходным кодом arov.zip
Стоит обратить на функцию отдельно
PrintStr (str);
Эта функция печатает строку на экран следующим образом. Вместо первой строки встает вторая строка, всесто второй новая str, далее идет задержка около секунды (время задержки отдельно задается макросом). Таким образом реализуется плавный переход между строками, по сути аналог бегущий строки. Это позволяет видить последний вывод и текущий на экране, при этом способе информации воспринимается наиболее понятно. С помощью этой функции по очереди на экран выдается содержимое файловой системы.
DisplayRout();
Используется в бесконечном цикле и просто по очереди выводит все символы экрана. Используется исключительно для проверки работоспособности дисплея.
Расшифровка исходных кодов
int main( void )
{
IOInit (); // Init Timer2
LCDinit();
LCDcursorOFF(); // Выключаем курсоор
LCDclr(); // Очищаем дисплей
FRESULT f_err_code;
static FATFS FATFS_Obj;
FIL fil_obj;
disk_initialize(0); // Init drive
f_err_code = f_mount(0, &FATFS_Obj); // Mount Fat Fs
PrintStr ("mounting FAT ");
f_err_code = f_open(&fil_obj, "newfile.txt", FA_READ); // Open newfile for reading
PrintStr ("open newfile.txt");
if (f_err_code)
{
PrintStr("FAIL");
}
else
{
PrintStr ("OK");
PrintStr ("data in newfile.txt:");
char buff[12] = {0};
f_gets (buff, 12, &fil_obj); // Read data from newfile
f_err_code = f_close(&fil_obj);
PrintStr (buff);
}
f_err_code = f_open(&fil_obj, "new.txt",FA_CREATE_NEW | FA_WRITE); // Create newfile into newdir
PrintStr ("creating newfile ");
if(!f_err_code)
PrintStr ("OK");
else
PrintStr("FAIL");
f_puts ("creating nad adnandnad", &fil_obj); // Writing to newfile
f_err_code = f_close(&fil_obj); // Close newfile
PrintStr ("closing newfile.txt ");
PrintStr("scaning newdir:");
scan_files ("0:/"); // Scan newdir
PrintStr("scaning ended");
f_err_code = f_mount(0, NULL); // Unmount Fat Fs
PrintStr ("unmounting FAT ");
while(1)
{
// _delay_ms(300);
// DisplayRout();
// _proc_LCD();
}
}