Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
TheDmytrius
20 / 20 / 19
Регистрация: 05.12.2017
Сообщений: 108
1

Вывод информации на цифровой индикатор НТ1613 в фиксированной позиции (ATmega 128)

19.12.2018, 23:54. Просмотров 312. Ответов 1
Метки нет (Все метки)

Доброго времени суток! Недавно была лабораторная по такому старью, как ATmega 128. Есть код, который при нажатии кнопок выводит информацию на индикатор. Проблема в том, что, при повторном нажатии кнопок, символы смещаются влево. Как сделать так, чтобы они выводились в фиксированной позиции?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <avr/io.h>
#include <avr/iom128.h>
#include <stdlib.h>
 
#define F_CPU 11059200
 
#include <util/delay.h>
#include <stdio.h>
#include <string.h>
 
static char bin_mask[4] = {1, 2, 4, 8};
char key_is_pressed;
 
void HT1613_transmit(char a)
{
    int i;
    DDRE=DDRE|0b01100000;
    PORTE=PORTE|0b01100000;
    for (i = 3; i >= 0; i--)
    {
        if((a & bin_mask[i]) != 0)
        {
            PORTE=PORTE|0b00100000;
            _delay_ms(1);
            PORTE=PORTE|0b01000000;
            _delay_ms(1);
            PORTE=PORTE&0b10111111;
            _delay_ms(1);
        }
        else
        {
            PORTE=PORTE&0b11011111;
            _delay_us(1);
            PORTE=PORTE|0b01000000;
            _delay_us(1);
            PORTE=PORTE&0b10111111;
            _delay_us(1);
        }
    }
    _delay_ms(2);
    return;
}
 
int main(void)
{
    char i;
    DDRE = 0b11110000;
    for (i = 0; i < 10; i++)
    HT1613_transmit(0);
    while (1)
    { //кнопки Е1 - 5,  Е11 - Р|_5 
        PORTE = 0b11010000;
        _delay_ms(10);
        key_is_pressed = ~PINE & 0b00001000;
        if (key_is_pressed)
        {
            HT1613_transmit(5);
        }
        PORTE = 0b11100000;
        _delay_ms(10);
        key_is_pressed = ~PINE & 0b00000001;
        if (key_is_pressed)
        {
            HT1613_transmit(14);
            HT1613_transmit(13);
            HT1613_transmit(5);
        }
        _delay_ms(200);
    }
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2018, 23:54
Ответы с готовыми решениями:

ATmega 128. Кодовый замок
Доброго времени суток! У меня есть задание на курсовой проект : Устройство контроля доступом на...

прошу помогите ATMega 16...128 & SD/MMC
Встала задача сделать устройство которое будет дописывать в файл показание с АЦП. Файл планирую...

Не работает SPI на Atmega 128 в Atmel Studio 7
Всем доброго времени суток. Столкнулся со следующей проблемой. Нужен spi для Atmega 128 на Atmel...

Массив с отрицательными числами (Atmega 128, ASM)
Снова обращаюсь за помощью, не могу понять как реализовать данное задание Дан массив чисел N,...

Запись результатов АЦП в массив (Atmega 128)
Здравствуйте! В моей задаче необходимо считать результаты измерения АЦП гармонического сигнала,...

1
pyzhman
785 / 480 / 65
Регистрация: 15.05.2012
Сообщений: 2,718
22.12.2018, 07:34 2
Познайте, что делает это:
C
1
2
3
            HT1613_transmit(14);
            HT1613_transmit(13);
            HT1613_transmit(5);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2018, 07:34

Atmega 128 fuse как затактовать от внешнего кварца
Всем добрый вечер. собственно вопрос,я начинающий и все опыты делал от внутреннего генератора,вот...

Atmega 128 ширина импульса или интервал в 0.5 ms как реализо
Всем доброго времени суток. Стоит задача как реализовать последовательность импульсов 0 или 1 на...

Раздельное питание цифровой и аналоговой части ATmega 328
Неожиданно осознал, что на МК есть два входа VCC и AVCC для раздельного питания аналоговой и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru