Djangirov1 / Vfrc1
.doc
Тема: Знакомство с компилятором WinAVR, интегрированной средой разработки AVR Studio и программой-симулятором Proteus
Цель: Познакомиться с интерфейсом WinAVR, AVR Studio и Proteus
Порядок выполнения работы:
-
Создать проект в программе WinAVR
-
Загрузить для эмуляции проект, созданный в WinAVR в AVR Studio
-
Создать и скомпилировать программу в AVR Studio
-
Реализовать схему, приведённую в работе, в Proteus и проверить правильность работы программы
Задание 1: составить программу на языке С для контроллера Atmega16, осуществляющую бесконечное переключение светодиодов, подключённых к порту со временем задержки указанным в таблице.
Вариант 13, последовательно 2+3+4, 5+6+7 разряды с задержкой 300 мс, порт D
Код программы:
#include<avr/io.h>
#include<util/delay.h>
void Pause(double ms)
{
PORTD=0;
_delay_ms(ms);
}
void P(void)
{
PORTD=0b00011100;
_delay_ms(300);
Pause(300);
}
void D(void)
{
PORTD=0b11100000;
_delay_ms(300);
Pause(300);
}
int main(void)
{
DDRD=0xFF;
while(1)
{
P();D();
//Pause(300);
}
}
Пример работы программы:
Задание 2: реализовать на языке С для Atmega16 программу бесконечного вывода на светодиодную матрицу 8*8 символов с задержкой в 1 секунду :
M, W, v.
Код программы:
#include<avr/io.h>
#include<util/delay.h>
#include<stdio.h>
int i;
void SymM(void)
{
//буква М
for(i=0; i<20; i++)
{
PORTA=0b10111101;
PORTC=0b11111111;
_delay_ms(1);
PORTA=0b11011011;
PORTC=0b00000010;
_delay_ms(1);
PORTA=0b11100111;
PORTC=0b00000100;
_delay_ms(1);
}
}
void SymW(void)
{
//буква W
for(i=0; i<20; i++)
{
PORTA=0b10111101;
PORTC=0b11111111;
_delay_ms(1);
PORTA=0b11011011;
PORTC=0b01000000;
_delay_ms(1);
PORTA=0b11100111;
PORTC=0b00100000;
_delay_ms(1);
}
}
void Symv(void)
{
//буква v
for(i=0; i<20; i++)
{
PORTA=0b11100111;
PORTC=0b10000000;
_delay_ms(10);
PORTA=0b11011011;
PORTC=0b01110000;
_delay_ms(10);
}
}
void ClearScreen(void)
{
PORTA=0b11111111;
PORTC=0b00000000;
_delay_ms(200);
}
int main(void)
{
DDRA=0xFF;
DDRC=0xFF;
while(1)
{
SymM();
ClearScreen();
SymW();
ClearScreen();
Symv();
ClearScreen();
}
}
Пример работы программы: