NewSistems Опубликовано 23 июля, 2016 Жалоба Поделиться Опубликовано 23 июля, 2016 Добрый день! Решил научиться пользоваться max7219 для дальнейшего использования в проекте. После преодоления трудностей смог вывести на 7-сегментный индикатор числа 1325. После этого не стал останавливаться и захотел,чтобы числа менялись. И тут встала проблема:по коду через 1 секунду число 1 должен смениться на число 6, однако этого не происходит. Proteus же показывает смену числа. В чем может быть проблема? #define F_CPU 16000000UL#include #include #define SHIFT_REGISTER DDRB#define SHIFT_PORT PORTB#define DATA (1<< PB3) //MOSI#define LATCH (1<< PB2) //SS#define CLOCK (1<< PB5) //SCKvoid spi_init(){SHIFT_REGISTER |= (DATA | LATCH | CLOCK); SPCR = (1<< SPE) | (1<< MSTR);// старт spi, мастер}void spi_send(int adress,int data){SHIFT_PORT &= ~LATCH;SPDR = adress ;while(!(SPSR & (1<< SPIF)));SPDR = data;while(!(SPSR & (1<< SPIF)));SHIFT_PORT |= LATCH;}void max7219_int(){spi_send(0x0C,0x01);// включаем max7219spi_send(0x0F,0x00);// отключаем тест-режимspi_send(0x09,0xFF);//устанавливаем режимspi_send(0x0B,7);//включаем 8 разрядовspi_send(0x0A,8);//устанавливаем интенсивность свечения}int main(){spi_init();max7219_int();while (1){spi_send(0x01,1);//отправляем на 1 разряд число 1spi_send(0x02,3);//отправляем на 2 разряд число 3spi_send(0x03,2);//отправляем на 3 разряд число 2spi_send(0x04,5);//отправляем на 4 разряд число 5_delay_ms(1000);spi_send(0x01,6);//отправляем на 1 разряд число 6_delay_ms(500);}} Раздел: AVR Читать дальше Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.