Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
570035.rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.76 Mб
Скачать

2.2 Схема подключения

Список примененных компонентов обозначение в схеме:

IC1 Микроконтроллер Attiny 2313

Q1, Q2 Транзистор BCW66G

C1, C2 10 нФ

C4, C5 33 пФ

X1 Кварцевый резонатор 20 МГц

R1, R2, R7 470 Ом

R3 1 кОм

R4 1.5 кОм

R5 1 МОм

R6 110 Ом

R8 70 Ом

LED3 Светодиод

IR1 Оптопара TCND-5000

B1 Кнопка

B2 Выключатель питания

JP1 Разъем внутрисхемного программирования

JP2 Разъем расширения

Рис 2.3 Принципиальная схема устройства

2.3 Алгоритм и варианты реализации

Для программирования микроконтроллера Attiny 2313 можно использовать языки программирования, ассемблер, C. Для реализации солнечного трекера был выбран язык C.

Алгоритм работы данного устройства представлен на рисунке 2.3.

Рисунок 2.4 - Алгоритм работы работы устройства

3 Эскизный проект

На данном этапе описываются функциональные возможности дисплея

3.1 Описание жк дисплея hd44780

ЖК на базе контроллеров HD44780 являются эффективным средством отображения различной информации и могут с успехом применяться даже в любительских разработках. Наличие многих режимов вывода (скроллирование, курсоры, определяемые пользователем символы) позволяет разрабатывать удобные интерфейсы управления и устройства индикации.

Наличие 4-х битного режима вывода даёт возможность задействовать минимум портов микроконтроллера.

Довольно много информации по этим индикаторам можно найти в интернете, поэтому приведу пример ассемблерных процедур, вставленных в код на С, для 4-х битного режима, как представляющий наибольший интерес для разработчиков.

Схема включения:

PIC RB2 - LCD RS

PIC RB3 - LCD E

PIC RB4 - LCD B4

PIC RB5 - LCD B5

PIC RB6 - LCD B6

PIC RB7 - LCD B7

Помимо этого: LCD R/W - заземлить, LCD B0...LCD B3 - подключить к плюсу питания через резисторы.

/*-------------начало примера-------------*/

.

.

.

char lcd_data;

/* вывод старшей тетрады байта данных */

void out_nibble() {

asm {

movwf _lcd_data ; байт данных должен быть в W

bcf PORTB, 4

btfsc _lcd_data, 4

bsf PORTB, 4

bcf PORTB, 5

btfsc _lcd_data, 5

bsf PORTB, 5

bcf PORTB, 6

btfsc _lcd_data, 6

bsf PORTB, 6

bcf PORTB, 7

btfsc _lcd_data, 7

bsf PORTB, 7

}

}

/* вывод байта в 8-ми битном режиме (требуется

только для инициализации ЖКИ) */

void wr_cmd(char cmd) {

asm {

bcf PORTB, 2 ; RS - down, пишем в IR

movfw param00_wr_cmd

call _out_nibble

bsf PORTB, 3 ; E - up

bcf PORTB, 3 ; E - down

call _delay

}

}

/* вывод байта команды на ЖКИ */

void wr_cmd4(char cmd) {

asm {

bcf PORTB, 2 ; RS - down, пишем в IR

movfw param00_wr_cmd4

call _out_nibble

bsf PORTB, 3 ; E - up

bcf PORTB, 3 ; E - down

call _delay

swapf param00_wr_cmd4, W ; меняем тетрады байта

call _out_nibble

bsf PORTB, 3 ; E - up

bcf PORTB, 3 ; E - down

call _delay

}

}

/* вывод байта данных на ЖКИ */

void wr_data4(char data) {

asm {

bsf PORTB, 2 ; RS - up, пишем в DR

movfw param00_wr_data4

call _out_nibble

bsf PORTB, 3 ; E - up

bcf PORTB, 3 ; E - down

call _delay

swapf param00_wr_data4, W ; меняем тетрады байта

call _out_nibble

bsf PORTB, 3 ; E - up

bcf PORTB, 3 ; E - down

call _delay

}

}

/* задержка */

void delay() {

delay_ms(1);

}

.

.

.

/*-------------окончание примера-------------*/

В приведенных примерах не отслеживается флаг занятости (busy flag) контроллера HD44780, взамен этого процедуры вывода на ЖКИ имеют задержки; на это следует обратить внимание. Ниже приводится фрагмент программы на С, выводящую фрагмент знакогенератора на экран ЖКИ формата 2 строки по 16 символов.

/*-------------начало примера-------------*/

.

.

.

char i, ch;

/* инициализация ЖКИ в 8-ми битном режиме

(рекомендуется производителем) */

wr_cmd(0x28);

delay_ms(5);

wr_cmd(0x28);

delay();

wr_cmd(0x28);

delay();

/* инициализация ЖКИ в 4-х битном режиме */

wr_cmd4(0x28);

wr_cmd4(0x0c);

wr_cmd4(0x06);

ch = 0x20;

wr_cmd4(0x80); /* переход на первую строку экрана */

for (i=0; i<16; i++) {

wr_data4(ch); /* выводим символы */

ch++;

}

wr_cmd4(0xc0); /* переход на вторую строку экрана */

for (i=0; i<16; i++) {

wr_data4(ch); /* выводим символы */

ch++;

}

.

.

.

/*-------------окончание примера-------------*/

4 Технический проект

На данном этапе происходит описание и моделирование функций языка программирования, выбор организации проекта и принципов построения моделей и т.д.

Выполняются следующие работы:

  • составление и описание блоков на языке программирования;

  • определяются межблоковые связи;

  • описание констант и переменных;

  • отладка проекта (пошаговое тестирование основных блоков программы в процессе написания и исправление некорректной работы);

Далее подробно описаны все вышеперечисленные этапы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]