Скачиваний:
11
Добавлен:
17.01.2022
Размер:
145.67 Кб
Скачать

Цель работы: сформировать практические навыки программирования и отладки работы микроконтроллеров.

Задание:

  1. Используя АЦП микроконтроллера ATMEGA8535 реализовать схему используя новые элементы для ввода и вывода информации.

  2. Написать программу реализующую работу собранной схемы.

  3. Запрограммировать микроконтроллер.

  4. Составить отчет.

Теоретическая часть

ATmega8535/L является КМОП 8- битным микроконтроллером, построенным на расширенной AVR RISC архитектуре. AVR ядро сочетает расширенный набор команд с 32 рабочими регистрами общего назначения.

Рисунок 1 - Схема взаимодействия блоков микроконтроллера ATMEGA8535

Практическая часть

Синтезирована следующая схема:

Рисунок 2 – Заданная схема

Рисунок 3 – Работа схемы

Код программы, реализующий работу заданной схемы:

#include <avr/io.h>

int main(void)

{

DDRC = 0xff;

PORTC=0XFF; DDRA = 0x00;

ADCSRA = 0;

ADMUX = 0;

ADCSRA =

( 1 << ADEN )

| ( 0 << ADATE )

| ( 1 << ADIF )

| ( 0 << ADIE )

| ( 1 << ADPS2 ) | ( 1 << ADPS1 ) | ( 1 << ADPS0 )

;

while (1)

{

for (int i=0;i<4;i++)

{

ADMUX =

( 1 << REFS0 )

| ( 1 << ADLAR )

| ( i );

;

ADCSRA |= (1 << ADSC);

while ( ! ( ADCSRA & (1 << ADIF) ) ) { ; }

ADCSRA |= ( 1 << ADIF );

char result = ADCH;

if(i==0)

{

if ( (result > 255*7/8) ) { PORTC = 0X06; } //1 //0b110 0000

else if ( (result > 255*5/8) ) { PORTC = 0x5B; } //2 //0b101 1011‬‬‬

else if ( (result > 255*3/8) ) { PORTC = 0x4F; } //3 //0b100 1111‬‬‬

}

if(i==1)

{

if ( (result > 255*7/8) ) { PORTC = 0X66; } //4 //0b110 0110‬‬‬

else if ( (result > 255*5/8) ) { PORTC = 0x6D; } //5 //0b110 1101‬‬‬

else if ( (result > 255*3/8) ) { PORTC = 0x7D; } //6 //0b111 1101‬‬‬

}

if(i==2)

{

if ( (result > 255*7/8) ) { PORTC = 0X07; } //7 //0b111 0000

else if ( (result > 255*5/8) ) { PORTC = 0x7F; } //8 //0b111 1111‬‬‬

else if ( (result > 255*3/8) ) { PORTC = 0x6F; } //9 //0b110 1111‬‬‬

}

if(i==3)

{

if ( (result > 255*7/8) ) { PORTC = 0X76; } //* //0b111 0110‬‬‬

else if ( (result > 255*5/8) ) { PORTC = 0x3F; } //0 //0b011 1111‬‬‬

else if ( (result > 255*3/8) ) { PORTC = 0x49; } //# //0b100 1001‬‬‬

}

} }}

Вывод: в ходе выполнения данной лабораторной работы были сформированы практические навыки программирования и отладки работы микроконтроллеров. Изучены принципы применения ПО, эмулирующего работу микроконтроллера.