7.7. oheisrautaa. 7-segm

4
Seven-segmentti näytön ohjaus 16.8.2008 pva ”Jos naisella ei ole vähintään 100 ha hyvää honkametsää, niin jotain olennaista hänen kauneudestaan puuttuu.” - Pertti Aitio Yleistä LED (Ligth Emitted Diode) diodi, joka loistaa valoa, kun sen päästösuuntainen virta ylittää muutaman milliampeerin. Päästösuunnan jännite riippuu LEDin väristä ja se on noin 1,6 V--2,5. V. LEDeistä rakennetut 7-segmenttinäytöt ovat sinnikkäästi käytössä edelleenkin sulautettujen systeemien näyttöinä. Näytön perusidea on seitsemässä LEDissä, jotka on asennettu siten, että segmenteistä voi LEDien loistamista ohjaamalla saada aikaan kaikki numerot ja jopa joitakin kirjaimia. Idea ja toiminta selviää oheista kuvaa tutkimalla. Rakenneperiaate on kaikissa sama, vain toteutukset vaihtelee, joten ota selvää ennen kuin kytket. Vielä aloittelijaa hämää se, että näyttöjä on yhteiskatodi- ja yhteisanodikytkettyjä. On ehdottomasti käytettävä LEDin ohjauksessa virranrajoitusvastusta, muuten olet entisen ohjaimen omistaja. ATmega32 ohjaimessa outputvirta on maksimissaan 20 mA, mikä riittää mainiossti LEDin ohjaamiseen (yhteiskatodinäyttö). Toinen tapa on ohjata LEDin virta portin kautta maihin, silloin on yhteisanodinäyttö käytössä. Kolmas ja turvallisin tapa on käyttää välissä puskurivahvistinta.

Upload: digindom

Post on 09-Apr-2015

154 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 7.7. Oheisrautaa. 7-segm

Seven-segmentti näytön ohjaus 16.8.2008 pva ”Jos naisella ei ole vähintään 100 ha hyvää honkametsää, niin jotain olennaista hänen kauneudestaan puuttuu.”

- Pertti Aitio

Yleistä LED (Ligth Emitted Diode) diodi, joka loistaa valoa, kun sen päästösuuntainen virta ylittää muutaman milliampeerin. Päästösuunnan jännite riippuu LEDin väristä ja se on noin 1,6 V--2,5. V. LEDeistä rakennetut 7-segmenttinäytöt ovat sinnikkäästi käytössä edelleenkin sulautettujen systeemien näyttöinä. Näytön perusidea on seitsemässä LEDissä, jotka on asennettu siten, että segmenteistä voi LEDien loistamista ohjaamalla saada aikaan kaikki numerot ja jopa joitakin kirjaimia. Idea ja toiminta selviää oheista kuvaa tutkimalla. Rakenneperiaate on kaikissa sama, vain toteutukset vaihtelee, joten ota selvää ennen kuin kytket. Vielä aloittelijaa hämää se, että näyttöjä on yhteiskatodi- ja yhteisanodikytkettyjä. On ehdottomasti käytettävä LEDin ohjauksessa virranrajoitusvastusta, muuten olet entisen ohjaimen omistaja.

ATmega32 ohjaimessa outputvirta on maksimissaan 20 mA, mikä riittää mainiossti LEDin ohjaamiseen (yhteiskatodinäyttö). Toinen tapa on ohjata LEDin virta portin kautta maihin, silloin on yhteisanodinäyttö käytössä. Kolmas ja turvallisin tapa on käyttää välissä puskurivahvistinta.

Page 2: 7.7. Oheisrautaa. 7-segm

7-segmenttinäytön avulla on rakennettavissa opetuskäyttöön mielekkäitä ohjelmointiharjoituksia, joten siihen kannattaa tutustua. Opiskelu sujuu parhaiten littäämällä 7-segmenttinäyttö koekytkentälevylle ja liittämällä se PV-M322-kortin porttiin, kuten kuva osoittaa. Kytkentä on kerrottu mallikoodin kommenteissa.

7-mallikoodi /************************************************** ******** Project : seven.c Hardware: PV-M322 + koekytkentälevy, jossa on 7-segmenttinäyttö TDSR5150 Commond Anode, katso liitteenä 7-segm.-näytön pdf-dokumentti Date : 17.7.2008 Author : pva Comments: tulostaa "juoksevan ledin" 7-segmentti-nä yttöön Bitti - kaapelin väri - näytön segmentti data_0 = oranssi = a data_1 = keltainen = b data_2 = vihreä = c data_3 = sininen = d data_4 = sinipuna = e data_5 = harmaa = f data_6 = valkoinen = g data_7 = musta = DP, desimal point punainen = +5V ruskea = GND Kytke ylläolevaa soveltaen oma näyttösi, ja laita jokaiselle ledille 330R etuvastus (I = n. 10 mA). Huomioi, että 7-segmenttisi voi olla joko yhteisano di tai yhteiskatodi. *************************************************** *******/

Page 3: 7.7. Oheisrautaa. 7-segm

#include <avr/io.h> #include <util/delay.h> // *** Primitive wait() *** void wait(uint16_t time) { volatile uint16_t i; for(i=0;i<2000;i++) _delay_loop_2(time); } int main(void) { uint8_t i; // kierroslaskuri uint8_t seven[] = {(1<<0), (1<<1), (1<<2), (1<<3 ), (1<<4), (1<<5), (1<<6), (1<<7)}; DDRB = 0xFF; // 7-segmenttinäyttö B-portissa PORTB = 0x00; // kaikki ledit ON wait(500); PORTB = 0xFF; // kaikki ledit EI wait(500); while(1) { PORTB = 0xFF; wait(200); for(i = 0; i<8; i++) { PORTB = ~(seven[i]); // taulukon ii:s solu n äyttöön wait(50); } } }

Toinen mallikoodi, tulostaa numerot /************************************************** ******** Project : seven_numerot.c Hardware: PV-M322 + koekytkentälevy, jossa on 7-segmenttinäyttö TDSR5150 Commond Anode, katso liitteenä 7-segm.-näytön pdf-dokumentti Date : 17.7.2008 Author : pva Comments: tulostaa numerot 0-9 ja DP 7-segmentti-nä yttöön Bitti - kaapelin väri - näytön segmentti data_0 = oranssi = a data_1 = keltainen = b data_2 = vihreä = c data_3 = sininen = d data_4 = sinipuna = e data_5 = harmaa = f data_6 = valkoinen = g data_7 = musta = DP, desimal point punainen = +5V ruskea = GND

Page 4: 7.7. Oheisrautaa. 7-segm

Kytke ylläolevaa soveltaen oma näyttösi, ja laita jokaiselle ledille 330R etuvastus (I = n. 10 mA). Huomioi, että 7-segmenttisi voi olla joko yhteisano di tai yhteiskatodi. *************************************************** *******/ #include <avr/io.h> #include <util/delay.h> #include "seven.h" // *** Primitive wait() *** void wait(uint16_t time) { volatile uint16_t i; for(i=0;i<2000;i++) _delay_loop_2(time); } int main(void) { uint8_t i; // kierroslaskuri uint8_t numerot[] ={yksi, kaksi, kolme, nelja, v iisi, kuusi, seiska, kahdeksan, ysi, nolla, DP}; DDRB = 0xFF; // 7-segmenttinäyttö B-portissa while(1) { for(i=0; i<11;i++) { PORTB = numerot[i]; wait(600); } } }