Скачиваний:
2
Добавлен:
27.01.2022
Размер:
38.4 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ и НАУКИ

КЫРГЫЗСКОЙ РЕСПУБЛИКИ

КЫРГЫЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. И. РАЗЗАКОВА

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»

Отчет

По микроконтроллерам и микропроцессорам

Лабораторная работа 4

Бишкек 2019

Собрать схему из семисегментного индикатора и 2 кнопок. Запрограммировать

микроконтроллер так, чтобы при нажатии на одну кнопку число на индикаторе

увеличивалось на 1 и также увеличивалась яркость индикатора, а при нажатии на

другую уменьшалось число и яркость.

#define F_CPU 1000000LU

#include <avr/io.h>

#include <avr/interrupt.h>

#include <util/delay.h>

#define DISP_DDR DDRC

#define DISP_PORT PORTC

#define DEF_PWM_DUTY 0x0019 //255(full brightness) / 6(segments) = 42

#define BTN_PORT PORTA

#define BTN_DDR DDRA

#define BTN_PIN PINA

#define BTN0 PINA0

#define BTN1 PINA1

int8_t current_index = 0;

uint8_t seg_array[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

volatile uint8_t current_num = 0; //segment counter - point on current segment

ISR(TIMER2_OVF_vect){

DISP_PORT = current_num;

}

ISR(TIMER2_COMP_vect){

DISP_PORT = 0;

}

int main(void)

{

current_num = seg_array[current_index];

DISP_DDR = 0x7f; //0-7 pins to out

BTN_DDR = 0 << BTN0 | 0 << BTN1;

BTN_PORT = 1 << BTN0 | 1 << BTN1;

TIMSK = 1 << OCIE2 | 1 << TOIE2;

OCR2 = DEF_PWM_DUTY;

TCCR2 = 1 << WGM21 | 1 << WGM20 | 0 << COM21 | 0 << COM20; //fast_PWM, OC2 disconnected

SFIOR = 1 << PSR2; //reset prescalers

TCCR2 = 1 << CS22; //F_CPU/64

asm("SEI");

while (1){

if(current_index > 9){

OCR2 = DEF_PWM_DUTY;

current_index = 0;

current_num = seg_array[current_index];

}

if(current_index < 0){

OCR2 = DEF_PWM_DUTY;

current_index = 9;

current_num = seg_array[current_index];

}

if(BTN_PIN == 0x02){

_delay_ms(200);

OCR2 += DEF_PWM_DUTY;

current_num = seg_array[++current_index];

}

if(BTN_PIN == 0x01){

_delay_ms(200);

OCR2 -= DEF_PWM_DUTY;

current_num = seg_array[--current_index];

}

}

}

Соседние файлы в папке Микропроцессорные средства и системы