Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:display:segment_display [2014/10/07 12:17] rellermaaet:examples:display:segment_display [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~ 
 ====== Numberindikaator ====== ====== Numberindikaator ======
  
-//Vajalikud teadmised: [HW] [[et:hardware:homelab:digi]], [LIB] [[et:software:homelab:library:module:segment_display]], \\ [LIB] [[et:software:homelab:library:delay]][PRT] [[et:examples:digi:led]]//+//Vajalikud teadmised:  
 +[HW] [[et:hardware:homelab:digi]],  
 +[LIB] [[et:software:homelab:library:module:segment_display]], \\ [LIB] [[et:software:homelab:library:delay]]  
 +[PRT] [[et:examples:digi:led]]//
  
 ===== Teooria ===== ===== Teooria =====
  
-[{{  :examples:display:segment_display:7-seg.jpg?100|7-segement}}]+[{{  :examples:display:segment_display:7-seg.jpg?100|7-segment}}]
  
 7-segmendiline LED numberindikaator on seitsmest number 8-kujuliselt paigutatud valgusdioodist koosnev näidik. Vastavaid LED-e (segmente) süüdates või kustutades saab nendega kuvada numbreid nullist üheksani ning mõningaid tähti. 7-segmendiline LED numberindikaator on seitsmest number 8-kujuliselt paigutatud valgusdioodist koosnev näidik. Vastavaid LED-e (segmente) süüdates või kustutades saab nendega kuvada numbreid nullist üheksani ning mõningaid tähti.
  
 +Elektriliselt on kõigi LED-ide anoodid ühendatud ühise anoodi viiguga (inglise keeles //common anode//) - //ca//. LED-e süüdatakse nende katoode (//a, b, c...//) lülitades. Olemas on ka vastupidi ühendusi, kus indikaatoritel on ühine katood (inglise keeles //common cathode//) - //cc//. Tavaliselt kasutatakse mitut numberindikaatorit, et kuvada mitmekohalisi arve - selleks puhuks on indikaatorid varustatud ka koma(punkti) segmendiga //dp//. Kokkuvõttes on ühel indikaatoril siiski 8 segmenti, kuid nimetatakse neid ikkagi numbrisegmentide arvu järgi 7-segmendilisteks.
 [{{  :examples:display:segment_display:segment_display_leds.png?300|Indikaatori segmentide asetus ja elektriskeem}}] [{{  :examples:display:segment_display:segment_display_leds.png?300|Indikaatori segmentide asetus ja elektriskeem}}]
 [{{  :examples:display:segment_display:segment_display_driver_logic.png?300|LED ajuri nihkeregistri ülesehitus koos vastavate indikaatori segmentidega}}] [{{  :examples:display:segment_display:segment_display_driver_logic.png?300|LED ajuri nihkeregistri ülesehitus koos vastavate indikaatori segmentidega}}]
- 
-Elektriliselt on kõigi LED-ide anoodid ühendatud ühise anoodi viiguga (inglise keeles //common anode//) - //ca//. LED-e süüdatakse nende katoode (//a, b, c...//) lülitades. Olemas on ka vastupidi ühendusi, kus indikaatoritel on ühine katood (inglise keeles //common cathode//) - //cc//. Tavaliselt kasutatakse mitut numberindikaatorit, et kuvada mitmekohalisi arve - selleks puhuks on indikaatorid varustatud ka koma(punkti) segmendiga //dp//. Kokkuvõttes on ühel indikaatoril siiski 8 segmenti, kuid nimetatakse neid ikkagi numbrisegmentide arvu järgi 7-segmendilisteks. 
- 
 LED numberindikaatoreid on lihtne kasutada, sest neid võib juhtida kas või otse mikrokontrolleri viikudelt, kuid on ka spetsiaalseid ajureid (inglisekeeles //draiver//), mis võimaldavad numberindikaatorit juhtida vähemate mikrokontrollerite viikude arvuga. LED numberindikaatoreid on erinevat värvi, nad võivad olla väga eredad ja väga suured. Kogu ladina tähestiku kuvamiseks on olemas ka lisasegmentidega indikaatoreid. Ajureid on erinevaid, kuid levinud ajurid kasutavad järjestikliidest, mis on on sarnane SPI-ga, kus kasutatakse ka taktsignaali ja andmesignaali. Erinevalt SPI-st pole kasutusel kiibi valikut (inglise keeles //chip-select//), kuid selle asemel on andmete lukustussignaal (inglise keeles //latch//). Nimetatud kolm liini on ühendatud kontrolleri viikudega. LED numberindikaatoreid on lihtne kasutada, sest neid võib juhtida kas või otse mikrokontrolleri viikudelt, kuid on ka spetsiaalseid ajureid (inglisekeeles //draiver//), mis võimaldavad numberindikaatorit juhtida vähemate mikrokontrollerite viikude arvuga. LED numberindikaatoreid on erinevat värvi, nad võivad olla väga eredad ja väga suured. Kogu ladina tähestiku kuvamiseks on olemas ka lisasegmentidega indikaatoreid. Ajureid on erinevaid, kuid levinud ajurid kasutavad järjestikliidest, mis on on sarnane SPI-ga, kus kasutatakse ka taktsignaali ja andmesignaali. Erinevalt SPI-st pole kasutusel kiibi valikut (inglise keeles //chip-select//), kuid selle asemel on andmete lukustussignaal (inglise keeles //latch//). Nimetatud kolm liini on ühendatud kontrolleri viikudega.
  
Line 29: Line 28:
  
 <code c> <code c>
-// Märgikaart. +// Märgikaart 
-// Bitid tähistavad segmente. Madalaim järk Akõrgeim DP.+// Bitid tähistavad segmente, madalaim järk A ja kõrgeim DP
 const unsigned char __attribute__ ((weak)) segment_char_map[11] =  const unsigned char __attribute__ ((weak)) segment_char_map[11] = 
 { {
Line 43: Line 42:
  0b01111111,  0b01111111,
  0b01100111,  0b01100111,
- 0b01111001   // E like Error+ 0b01111001   // E nagu Error
 }; };
    
Line 49: Line 48:
 void segment_display_init(void) void segment_display_init(void)
 { {
- // Set latch, data out and clock pins as output+ // Juhtviikude väljundiks seadmine
  pin_setup_output(segment_display_latch);  pin_setup_output(segment_display_latch);
  pin_setup_output(segment_display_data_out);  pin_setup_output(segment_display_data_out);
Line 67: Line 66:
  }  }
   
- // Number segmentide kaardiks.+ // Numbri segmentide kaardiks teisendamine
  map = segment_char_map[digit];  map = segment_char_map[digit];
    
- // Lukustussignaal maha+ // Lukustussignaali madalaks muutmine
  pin_clear(segment_display_latch);  pin_clear(segment_display_latch);
    
- // Bittide saatmine. Kõrgeim järk esimesena.+ // Bittide saatmine, kõrgeim järk esimesena
  for (i = 7; i >= 0; i--)  for (i = 7; i >= 0; i--)
  {  {
Line 79: Line 78:
  pin_set_to(segment_display_data_out, bit_is_set(map, i));  pin_set_to(segment_display_data_out, bit_is_set(map, i));
    
- // Taktsignaal kõrgeks hetkeks+ 
 + // Taktsignaali hetkeks kõrgeks muutmine
  pin_set(segment_display_clock);  pin_set(segment_display_clock);
  _delay_us(1);  _delay_us(1);
    
- // Taktsignaal madalaks+ // Taktsignaali madalaks muutmine
  pin_clear(segment_display_clock);  pin_clear(segment_display_clock);
  _delay_us(1);  _delay_us(1);
  }  }
    
- // Lukustussignaal peale+ // Lukustussignaali kõrgeks muutmine
  pin_set(segment_display_latch);  pin_set(segment_display_latch);
 } }
Line 112: Line 112:
  
  // Lõputu tsükkel  // Lõputu tsükkel
- while (true)+ while (1)
  {  {
- // Kui loenduri väärtus on suurem kui 9,  + // Numbri kuvamine ekraanile 
- // siis näitab 7-segment E - Error + segment_display_write(counter % 10);
- segment_display_write(counter);+
  
- // Loenduri suurendamine+ // Loenduri suurendamine kuni kümneni
  counter++;  counter++;
 + if (counter>19) counter=0;
  
  // Paus 1 sekund  // Paus 1 sekund
et/examples/display/segment_display.1412684249.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0