Operácie

Tester obvodu 7493

Z SensorWiki

Záverečný projekt predmetu MIPS / LS2024 - Gabriel Nagy


Zadanie

Úlohou je zapojiť a testovať funkčnosť integrovaného obvodu 7493, je to 4 bitové počítadlo. Hodnoty počítadla musia byť odosielané cez UART a vypísané cez sériový kanál (Putty, Serial port). Binárné hodnoty počítadla 7493 musia byť znázornené (vyblikané) pomocu ledky.

Vývojová doska Aruino UNO.

Literatúra:

Analýza a opis riešenia

Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami...

Integrovaný obvod 7493.

Nezabudnite doplniť schému zapojenia!

Schéma zapojenia LCD displeja.


Algoritmus a program

Algoritmus programu je....


#define F_CPU 16000000UL
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>

/* Pripojenie periferii k vyvojovej doske Arduino: */

#define LED PD7   // externa LED dioda 

#define LED_ON  (PORTD |= (1<<LED))
#define LED_OFF (PORTD &= ~(1<<LED))



volatile uint8_t count = 0;


// Inicializacia UART
void USART_Init(unsigned int ubrr) {
    UBRR0H = (unsigned char)(ubrr >> 8);
    UBRR0L = (unsigned char)ubrr;
    UCSR0B = (1 << TXEN0); 
    UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); 
}

// Prenos cez uart UART
void USART_Transmit(unsigned char data) {
    while (!(UCSR0A & (1 << UDRE0))); 
    UDR0 = data; 
}

int USART_putchar_printf(char var, FILE *stream) {
    if (var == '\n') USART_Transmit('\r');
    USART_Transmit(var);
    return 0;
}

FILE mystdout = FDEV_SETUP_STREAM(USART_putchar_printf, NULL, _FDEV_SETUP_WRITE);

int main(void)
{
  /*  SETUP   */ 
  
   // Nastavenie PB0-PB3 ako vstup
    DDRB &= 0xF0;

    // Inicializacia UART
    USART_Init(MYUBRR);
    stdout = &mystdout; 

    // Globalne prerusenia
    sei();
  
  	DDRD = (1<<LED);       // PORTD: LED na PD7  je output
   
  /*   LOOP   */ 
 
    unsigned char duty = 250;
	
      // Main loop 
    while(1)
    {             	   
     // nase vlastne pocitadlo pocita stale dokola, rychlost dana delay

       for (int time=0;time<255;time++)
	   {
 	     if (time > duty)	
		   LED_ON;
	     else 
	       LED_OFF;	
	     _delay_us(1500);
	   }
	   
	   
	   // Čítanie pinov PB0-PB3
        uint8_t input_pins = PINB & 0x0F;

        // Ked input pin je low tak aktualizuje pocitadlo
        if (input_pins != 0x0F) {
            count = input_pins;
        }

        printf("Counter value: %d\n", count);

        _delay_ms(1000);
	   
	   
	}  /* koniec while */

	return(0); 
}

Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip

Overenie

Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas.

Aplikácia.

Video:

Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.