Современная электроника №7/2021
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 64 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2021 rectangle (нарисовать прямоугольник), Draw ellipse or circle (нарисовать окруж- ность) панели Draw создают рисунок. Зажав левуюклавишу мыши, отрисовы- вают изображение, генерируют его код нажатием пиктограммы Export пане- ли инструментов File. Запуск утилиты LCD Vision выполняют из программы CodeVisionAVR нажатием пиктограм- мы LCD Vision font and image editor/ converter панели инструментов Tools (панель открывают командой View/ Toolbars/Tools основного меню). Для чтения данных с карты памяти удобно применить функции библиоте- ки ff.h, описание которых было рассмо- трено в [1]. В качестве примера сформи- руем на экране дисплея AMPIRE128 × 64 с помощьюфункций библиотеки glcd.h графику, а также выведем текстовую информацию, хранящуюся в файле, размещённом на карте памяти. На экран алфавитно-цифрового дисплея выведем фрагмент данных, считанный из это- го же файла. С этой целью создадим с помощью программы WinImage образ карты памяти, добавим в образ файл с расширением *.txt, который содержит блок текстовых данных (см. рис. 15), сохраним образ в папке FAT16 в ката- логе с проектом Proteus c расширени- ем .ima и введём вручную путь к файлу образа и его имя в поле Card Image File в окне свойств карты памяти. Для чте- ния данных из размещённого во внеш- ней памяти файла и их отображения на экране графического и алфавитно- цифрового дисплея напишем програм- му инициализации микроконтроллера на языке С с применением стандартных функций CodeVisionAVR (см. листинг 2). Введём текст программы в окне кода CodeVisionAVR и запустим компиля- цию. После чего перейдём в Proteus и в окне свойств микросхемы ATmega32 укажем путь к файлу прошивки на дис- ке компьютера. Запустим симуляцию собранной схемы, результат выполне- ния которой представлен на рис. 16, и проанализируем её работу. После запуска моделирования про- грамма микроконтроллера выпол- няет инициализацию алфавитно- цифрового (функция lcd_init(20)) и графического дисплея (функция glcd_init(&glcd_init_data)) и опре- деление шрифта вывода текста (glcd_init_data.font=font5x7) на экрангра- фическогодисплея. Послечеговыполня- ется выделениеобластипамятинужного объёмадляработыскартойпамяти(функ- ция f_mount(0, &fat)), установка стиля рисования линий на графическом дис- плее (функция glcd_setlinestyle(6,GLCD_ LINE_DOT_LARGE)) и отрисовка на его экране прямоугольнойрамки (функция glcd_rectangle(0,0,128,64)). Функция f_open(&file,«0:/3.txt», FA_OPEN_EXISTING | FA_READ) откры- вает уже размещённый на карте памя- ти файл 3.txt для чтения из него с помо- щьюфункции f_read(&file, Text, 13, &br) фрагмента данных размером 13 байт. Вывод считанных символов на экран графического дисплея выполняется с помощью функции glcd_outtextxy(17,17,Text), начи- ная с позиции х = 17, y = 17. Функция lcd_gotoxy(4,2)определяетпозициюкур- соранаэкранеалфавитно-цифровогодис- плея,начинаяскоторойвциклеforвыпол- няется посимвольный вывод данных, считанныхизфайла 3.txt картыпамяти. Далее выполняется смещение указа- теля чтения на 25 байт с начала фай- ла (функция f_lseek(&file, 25)), чте- ние 18 символов в переменную Text (функция f_read(&file,Text, 18, &br)) и вывод считанных символов на экран графического дисплея, начи- ная с позиции х = 10, y = 37 (функция glcd_outtextxy(10,37,Text)). После закрытияразмещённогонакар- те памяти текстового файла (функция f_close(&file)) и паузы длительно- стью 50 мс (функция delay_ms(50)) с помощью функции glcd_ putimage(98,10,img,GLCD_PUTCOPY) выполняется вывод изображения, код которого хранится в переменной img, на экран графического дисплея, начи- ная с позиции х = 98, y = 10 (см. рис. 17а). Рассмотрим ещё один пример, в кото- ром выполним захват данных с экрана графического дисплея и вывод изобра- жения, код которого записан в тексто- вом файле, размещённом на карте памяти. С этой целью внесем в пред- ставленный листинг изменения, допол- нив его следующим фрагментом кода: glcd_getimage(98, 10, 16, 16, img2); // Запись фрагмента графи- ческих данных // с экрана в переменную img2 f_open(&file2,”0:/9.txt”, FA_ CREATE_ALWAYS | FA_WRITE ); // Создание на карте // памяти файла 9.txt для записи f_write(&file2, img2, strlen(img2), &bwr); // Запись в файл 9.txt данных // считанных с экрана графическо- го дисплея f_close(&file2); // Закрываем файл glcd_clear(); // Очищаем экран графического дисплея f_open(&file2,”0:/9.txt”, FA_OPEN_ EXISTING | FA_READ); // Открываем на карте памяти // файл 9.txt только для чтения f_read(&file2, img3, f_ size(&file2), &br2); // Считываем данные в переменную img3 glcd_putimage(43,30,img3,GLCD_ PUTCOPY); // Вывод изображения, код которого записан // в переменной img3, на экран графического дисплея с позиции х = 43, y = 30 Рис. 16. Вывод с помощью функций библиотек ff.h и glcd.h текстовой и графической информации на экран алфавитно-цифрового и графического дисплея
RkJQdWJsaXNoZXIy MTQ4NjUy