Mga indicator ng LED na pitong-segment. LED indicator At ngayon, paano ito na-program?

Sa araling ito matututunan natin ang tungkol sa mga diagram para sa pagkonekta ng pitong-segment na LED indicator sa microcontrollers at kung paano kontrolin ang mga indicator.

Ang mga indicator ng LED na pitong-segment ay nananatiling isa sa mga pinakasikat na elemento para sa pagpapakita ng digital na impormasyon.

Ang kanilang mga sumusunod na katangian ay nakakatulong dito.

  • Mababa ang presyo. Sa mga tuntunin ng pagpapakita, walang mas mura kaysa sa mga LED digital indicator.
  • Iba't ibang laki. Ang pinakamaliit at pinakamalaking tagapagpahiwatig ay LED. May alam akong mga LED indicator na may mga digit na taas mula 2.5 mm hanggang 32 cm.
  • Umiilaw sa dilim. Sa ilang mga aplikasyon ang ari-arian na ito ay halos mapagpasyahan.
  • Mayroon silang iba't ibang kulay ng glow. Mayroong kahit dalawang kulay.
  • Medyo mababa ang control currents. Ang mga modernong LED indicator ay maaaring konektado sa mga pin ng microcontrollers nang walang karagdagang mga susi.
  • Angkop para sa malupit na mga kondisyon sa pagpapatakbo (saklaw ng temperatura, mataas na kahalumigmigan, panginginig ng boses, mga agresibong kapaligiran, atbp.). Para sa kalidad na ito, ang mga tagapagpahiwatig ng LED ay walang katumbas sa iba pang mga uri ng mga elemento ng display.
  • Walang limitasyong buhay ng serbisyo.

Mga uri ng LED indicator.

Ang pitong-segment na LED indicator ay nagpapakita ng isang character gamit ang pitong LEDs - digit na mga segment. Ang ikawalong LED ay nag-iilaw sa decimal point. Kaya mayroong 8 mga segment sa isang pitong-segment na tagapagpahiwatig.

Ang mga segment ay itinalaga ng mga letrang Latin mula sa "A" hanggang sa "H".

Ang mga anode o cathodes ng bawat LED ay pinagsama sa indicator at bumubuo ng isang karaniwang wire. Samakatuwid, may mga tagapagpahiwatig na may isang karaniwang anode at isang karaniwang katod.

LED indicator na may karaniwang anode.

LED indicator na may karaniwang katod.

Static na kontrol ng LED.

Ang mga tagapagpahiwatig ng LED ay dapat na konektado sa microcontroller sa pamamagitan ng mga resistor na naglilimita sa kasalukuyang.

Ang pagkalkula ng mga resistors ay kapareho ng para sa mga indibidwal na LED.

R = (U supply - U segment) / I segment

Para sa circuit na ito: I segment = (5 – 1.5) / 1000 = 3.5 mA

Ang mga modernong tagapagpahiwatig ng LED ay kumikinang nang maliwanag kahit na sa kasalukuyang 1 mA. Para sa isang circuit na may isang karaniwang anode, ang mga segment ay iilaw, sa mga control pin kung saan ang microcontroller ay bubuo ng isang mababang antas.

Sa diagram ng koneksyon ng isang tagapagpahiwatig na may isang karaniwang katod, nagbabago ang polarity ng power supply at mga signal ng kontrol.

Mag-iilaw ang segment, sa control pin kung saan bubuo ng mataas na antas (5 V).

Multiplexed mode para sa pagkontrol ng mga LED indicator.

Walong pin ang kinakailangan upang ikonekta ang bawat pitong-segment na indicator sa microcontroller. Kung mayroong 3-4 na mga tagapagpahiwatig (mga digit), kung gayon ang gawain ay magiging halos imposible. Kulang lang ang mga microcontroller pin. Sa kasong ito, maaaring ikonekta ang mga indicator sa multiplexed mode, sa dynamic na indication mode.

Ang mga natuklasan ng parehong pinangalanang mga segment ng bawat tagapagpahiwatig ay pinagsama. Nagreresulta ito sa isang matrix ng mga LED na konektado sa pagitan ng mga segment na pin at ng mga karaniwang indicator pin. Narito ang isang circuit para sa multiplexed na kontrol ng isang tatlong-digit na tagapagpahiwatig na may isang karaniwang anode.

Upang ikonekta ang tatlong mga tagapagpahiwatig, 11 pin ang kinakailangan, at hindi 24, tulad ng sa static control mode.

Sa dynamic na display, isang digit lang ang naiilawan anumang oras. Ang isang mataas na antas ng signal (5 V) ay ibinibigay sa karaniwang pin ng isa sa mga bit, at ang mga mababang antas ng signal ay ipinapadala sa mga pin ng segment para sa mga segment na iyon na dapat lumiwanag sa bit na ito. Pagkatapos ng isang tiyak na oras, ang susunod na discharge ay naiilawan. Ang isang mataas na antas ay inilalapat sa karaniwang pin nito, at ang mga signal ng status para sa bit na ito ay ipinapadala sa mga pin ng segment. At iba pa para sa lahat ng mga digit sa isang walang katapusang loop. Ang cycle time ay tinatawag na indicator regeneration time. Kung ang oras ng pagbabagong-buhay ay sapat na maikli, ang mata ng tao ay hindi mapapansin ang paglipat ng mga discharge. Tila ang lahat ng mga discharges ay patuloy na kumikinang. Upang maiwasan ang pagkutitap ng mga tagapagpahiwatig, pinaniniwalaan na ang dalas ng ikot ng pagbabagong-buhay ay dapat na hindi bababa sa 70 Hz. Sinusubukan kong gumamit ng hindi bababa sa 100 Hz.

Ang dynamic na indication circuit para sa mga LED na may karaniwang katod ay ganito ang hitsura.

Ang polarity ng lahat ng signal ay nagbabago. Ngayon isang mababang antas ang inilalapat sa karaniwang wire ng aktibong paglabas, at isang mataas na antas ang inilalapat sa mga segment na dapat umilaw.

Pagkalkula ng mga dynamic na elemento ng display ng light-emitting diode (LED) indicator.

Ang pagkalkula ay medyo mas kumplikado kaysa sa static na mode. Sa panahon ng pagkalkula, kinakailangan upang matukoy:

  • average na kasalukuyang ng mga segment;
  • kasalukuyang pulso ng mga segment;
  • paglaban ng risistor ng segment;
  • pulse current ng mga karaniwang terminal ng discharges.

kasi Ang mga digit ng tagapagpahiwatig ay lumiwanag sa turn, ang liwanag ng glow ay tumutukoy sa average na kasalukuyang. Dapat nating piliin ito batay sa mga parameter ng tagapagpahiwatig at ang kinakailangang liwanag. Ang average na kasalukuyang ay tutukuyin ang liwanag ng indicator sa isang antas na naaayon sa static na kontrol na may parehong pare-pareho ang kasalukuyang.

Pumili tayo ng average na kasalukuyang segment na 1 mA.

Ngayon kalkulahin natin ang kasalukuyang pulso ng segment. Upang maibigay ang kinakailangang average na kasalukuyang, ang kasalukuyang pulso ay dapat na N beses na mas malaki. Kung saan ang N ay ang bilang ng mga digit na tagapagpahiwatig.

Nagse-segment ako imp. = I segment avg. *N

Para sa aming scheme I segment. imp. = 1 * 3 = 3 mA.

Kinakalkula namin ang paglaban ng mga resistors na naglilimita sa kasalukuyang.

R = (U supply - U segment) / I segment. imp.

R = (5 – 1.5) / 0.003 = 1166 Ohm

Tinutukoy namin ang mga alon ng pulso ng mga karaniwang terminal ng mga paglabas. Maaaring umilaw ang 8 segment nang sabay-sabay, na nangangahulugang kailangan mong i-multiply ang pulse current ng isang segment sa 8.

Kategorya ko imp. = I segment imp. * 8

Para sa aming circuit I category imp. = 3 * 8 = 24 mA.

  • Pinipili namin ang resistor resistance na 1.1 kOhm;
  • ang mga pin ng segment control microcontroller ay dapat magbigay ng kasalukuyang hindi bababa sa 3 mA;
  • ang mga pin ng microcontroller para sa pagpili ng indicator digit ay dapat magbigay ng kasalukuyang hindi bababa sa 24 mA.

Sa ganitong mga kasalukuyang halaga, ang indicator ay maaaring direktang konektado sa mga pin ng Arduino board, nang hindi gumagamit ng mga karagdagang key. Para sa maliwanag na mga tagapagpahiwatig, ang mga naturang alon ay sapat na.

Mga scheme na may karagdagang mga susi.

Kung ang mga tagapagpahiwatig ay nangangailangan ng mas kasalukuyang, pagkatapos ay kinakailangan na gumamit ng mga karagdagang key, lalo na para sa mga signal ng pagpili ng digit. Ang kabuuang kasalukuyang discharge ay 8 beses ang kasalukuyang ng isang segment.

Diagram ng koneksyon para sa isang LED indicator na may karaniwang anode sa multiplexed mode na may mga transistor switch para sa pagpili ng mga discharge.

Upang pumili ng kaunti sa circuit na ito, kinakailangan upang makabuo ng isang mababang antas ng signal. Ang kaukulang key ay magbubukas at magbibigay ng kapangyarihan sa indicator discharge.

Diagram ng koneksyon para sa isang LED indicator na may karaniwang cathode sa multiplexed mode na may mga transistor switch para sa pagpili ng mga discharge.

Upang pumili ng kaunti sa circuit na ito, kinakailangan upang makabuo ng isang mataas na antas ng signal. Ang kaukulang key ay magbubukas at magsasara ng karaniwang discharge terminal sa lupa.

Maaaring may mga circuit kung saan kinakailangan na gumamit ng mga transistor switch para sa parehong mga segment at karaniwang mga bit pin. Ang ganitong mga scheme ay madaling synthesize mula sa nakaraang dalawang. Ang lahat ng ipinapakitang circuit ay ginagamit kapag ang indicator ay pinapagana ng boltahe na katumbas ng microcontroller power supply.

Mga susi para sa mga tagapagpahiwatig na may tumaas na boltahe ng supply.

Mayroong malalaking tagapagpahiwatig kung saan ang bawat segment ay binubuo ng ilang LED na konektado sa serye. Upang mapagana ang mga naturang indicator, kinakailangan ang isang source na may boltahe na higit sa 5 V. Ang mga switch ay dapat magbigay ng switching ng tumaas na boltahe na kinokontrol ng mga signal ng antas ng microcontroller (karaniwan ay 5 V).

Ang circuit ng mga key na nagkokonekta sa mga signal ng indicator sa lupa ay nananatiling hindi nagbabago. At ang mga switch ng kapangyarihan ay dapat itayo ayon sa ibang pamamaraan, halimbawa, tulad nito.

Sa circuit na ito, ang aktibong bit ay pinili ng mataas na antas ng control signal.

Sa pagitan ng pagpapalit ng mga digit ng indicator, dapat na i-off ang lahat ng segment sa loob ng maikling panahon (1-5 μs). Ang oras na ito ay kinakailangan upang makumpleto ang mga lumilipas na proseso ng key switching.

Sa istruktura, ang mga discharge pin ay maaaring pagsamahin sa isang kaso ng isang multi-digit na indicator, o ang isang multi-digit na indicator ay maaaring tipunin mula sa magkahiwalay na single-digit na indicator. Bukod dito, maaari kang mag-ipon ng isang tagapagpahiwatig mula sa mga indibidwal na LED na pinagsama sa mga segment. Ito ay karaniwang ginagawa kapag ito ay kinakailangan upang mag-ipon ng isang napakalaking tagapagpahiwatig. Ang lahat ng mga scheme sa itaas ay magiging wasto para sa mga naturang opsyon.

Sa susunod na aralin, ikokonekta namin ang isang pitong-segment na LED indicator sa Arduino board at magsusulat ng library para makontrol ito.

Kategorya: . Maaari mong i-bookmark ito.

Hindi pinapayagan kang direktang i-on/i-off ang LED indicator o flash ng camera; may ganitong opsyon ang ilang telepono.

Paano mag-programmatically blink ng maraming kulay na mga ilaw, kung paano isulat ang iyong sariling "Flashlight" o kung ano ang maaaring kontrolin ng iba pang mga LED ng device - malalaman mo ang tungkol dito sa ibaba.

Nagsimula ang lahat nang, habang ginalugad ang file system ng aking HTC Desire gamit ang ES Explorer, hindi ko sinasadyang nakatagpo ng mga interesanteng direktoryo: /sys/class/leds/blue, /sys/class/leds/flashlight, atbp.
Ano pa ba ang blue?! Isang orange at green na indicator lang ang nakita ko. Ngunit ang pinaka-kagiliw-giliw na bagay ay na sa loob ng mga direktoryo na ito ay mayroong isang file ng liwanag na may pahintulot sa pagsulat! Na agad kong sinamantala.

Sa katunayan, ito ay hindi isang simpleng file, ngunit isang interface para sa pagtatrabaho sa isang LED driver. Kaya, sa pamamagitan ng pagsusulat ng isang positibong numero sa file /sys/class/leds/blue/brightness, i-on namin ang asul na indicator sa case ng telepono, sa pamamagitan ng pagsusulat ng 0 - isasara namin ito. Katulad din sa mga amber at berdeng tagapagpahiwatig. Sa pamamagitan ng pag-on ng dalawang LED nang magkasama, nakakakuha kami ng mga bagong kulay: amber + blue = purple; berde + asul = aqua.

Ngayon paano ito na-program?
public void ledControl(String name, int brightness) (

subukan (

FileWriter fw = new FileWriter("/sys/class/leds/" + pangalan + "/brightness" );

fw.write(Integer.toString(brightness));

fw.close();

) catch (Exception e) (

// Hindi available ang LED control

}

}


// I-on ang purple indicator

ledControl("amber" , 255 );

ledControl("asul" , 255 );


// Gawing mas madilim ang display

ledControl("lcd-backlight" , 30 );


// I-off ang backlight ng button

ledControl("button-backlight" , 0 );


// Ayusin ang isang flashlight na may katamtamang liwanag

ledControl("flashlight" , 128 );

Maaaring ma-download ang isang halimbawang application na may mga source code.

Konklusyon
Lahat! Ngayon ang telepono ay umiilaw na parang Christmas tree. Ang code ay sinubukan lamang sa HTC Desire na nagpapatakbo ng Android 2.2, ngunit malamang na gagana sa iba pang mga device. Sumulat sa akin kung gagana ang focus o hindi sa iyong telepono.

Ipakita ang mga simbolo sa mga scoreboard, electronic na orasan at marami pang iba. Ang LED indicator ay isang simpleng disenyo na nagpapakita ng mga alphabetic o symbolic na character. Sa istruktura, ito ay isang pagpupulong ng mga LED, kung saan ang bawat elemento ay iluminado ng isang tagapagpahiwatig ng sign-segment.

Mga tampok at uri ng disenyo

Ang mga LED indicator ay binubuo ng mga integrated circuit na nagpapakita ng iba't ibang impormasyon. Ang operating boltahe ay mula 2V hanggang 8V. Maaari silang maging:

Segmental;
- Matrix;
- Linear scale;
- Walang asawa

Ang unang uri ay madalas na ginagamit at ang karaniwang uri. Depende sa modelo, ang istraktura ay maaaring tipunin mula sa 1-4 pitong-segment na grupo. Ang laki ng bagay at ang bilang ng mga ipinapakitang character ay depende sa kanilang numero. Kaya, ang isang pitong-segment na pangkat ay magpapakita lamang ng isang numero o titik. Apat na grupo ang ginagamit sa mga elektronikong relo. Kapag pumipili ng isang circuit para sa gamit sa bahay, dapat bigyang-pansin ng mamimili ang pagkakaroon ng isang karaniwang anode at katod.
Bukod sa maliliit na indicator, mayroon ding makikita sa mga pampublikong lugar. Upang mapataas ang kanilang liwanag, ang mga sunud-sunod na konektadong LED ay ginagamit, na binuo sa bawat indibidwal na bahagi. Upang ang tagapagpahiwatig ay magpakita ng isang tiyak na numero o simbolo, isang boltahe na 11.2 Volts ang inilalapat. Ang mga elemento ay may sariling mga pangalan: A, B, C, D, F o G. Ang operasyon ay tinutukoy ng mga digital shift register at decoder.

Pag-encrypt ng data at mga integrated circuit

Ang mga naturang elemento ay naka-install sa isang board na kumokontrol sa supply ng boltahe. Ang gawain ay dahil sa pag-access sa code ng programa at paggamit ng mga espesyal na microcontroller. Gamit ang programming, itinakda ang timing na nakakaapekto sa pagpapakita ng mga bahagi sa isang tiyak na oras.
Kino-convert ng integrated circuit ang binary at binary decimal code na ibinigay sa display. Ang mga karaniwang circuit para sa pagkontrol sa mga domestic indicator ay K514ID2 o K176ID2, sa mga imported na modelong 74HC595. Ang pamamahala ay posible sa dalawang paraan:

Direkta, sa pamamagitan ng microcontrollers;
- Paggamit ng shift registers

Ang unang pagpipilian ay hindi gaanong matagumpay dahil sa pangangailangan na ikonekta ang maraming mga pin. Bilang karagdagan, ang kasalukuyang pagkonsumo ay maaaring mas mataas kaysa sa posible sa mga microcontroller. Ang malalaking pitong-segment na tagapagpahiwatig ay nakasalalay sa MBI5026 chip.

Mga tampok ng mga tagapagpahiwatig ng segment

Sa electronics ginagamit ang mga ito para sa visual na inspeksyon. Ang istraktura ay binubuo ng mga sumusunod na elemento:

Ang tagapagpahiwatig ng pag-synthesize ng character ay isang aparato kung saan ipinapakita ang visual na impormasyon gamit ang isa o higit pang mga bahagi;
- Field ng pagpapakita ng data - ang mga numero o iba pang mga simbolo ay ipinapakita sa loob nito;
- Display element - isang bahagi ng istruktura na may sariling kontrol;
- Segment – ​​isang elemento ng pagpapakita ng impormasyon, na ipinakita sa anyo ng mga tuwid o hubog na linya;
- Pamilyar na espasyo – ang puwang na kinakailangan upang ipakita ang isang karakter

Ang lahat ng mga elektronikong aparato ay gumaganap ng mga pangunahing gawain:

1. Visual na impormasyon.
2. Mayroon silang kumpletong disenyo.
3. Nilagyan ng electronic control

Ang mga pagbabago sa segment ay naiiba sa mga pagbabago sa matrix dahil ang bawat elemento ay natatangi. Ang hugis ng mga character ay partikular na idinisenyo upang ipakita ang ilang mga numero o simbolo. Ang huli ay batay hindi sa pito, ngunit sa siyam, labing-apat o labing-anim na mga segment. Kapag ang bilang ay lumampas sa 7, kung gayon ito ay lubos na makatwiran na gumamit ng dynamic na indikasyon ng paglipat. Ang LED display at indikasyon ay posible rin sa dalawang kulay na anyo. Ang mga bombilya ng iba't ibang kulay ay ginagamit at konektado sa isang karaniwang circuit. Sa pamamagitan ng pagsasama-sama ng mga natuklasan, ang isang pinagsamang lilim ay nakuha.

Konklusyon

Ang pagpapatakbo ng mga tagapagpahiwatig ay imposible nang walang LEDs. Ang ganitong mga aparato ay may kaugnayan hindi lamang para sa mga kagamitan sa radyo, ngunit matagumpay na ginagamit para sa mga palatandaan, timer at tagapagpahiwatig. Maaaring gamitin ang mga device ng iba't ibang uri ng circuit at kontrol upang magpakita ng impormasyon.
Magbahagi ng impormasyon sa iyong mga pahina ng social media tungkol sa paksang ito.

Fig.1 Lokasyon ng mga segment ng LED indicator

Ang mga LED indicator ay ang pinakasimpleng paraan para sa pagpapakita ng simbolikong impormasyon. Ang kanilang disenyo ay isang hanay ng mga LED na ginawa sa anyo ng mga segment ng isang tiyak na hugis. Ipinapakita ng Figure 1 ang pinakakaraniwang layout ng segment, na nagbibigay-daan sa iyong ipakita ang mga numero 0...9 at marami pang ibang mga karagdagang character. Sa loob ng pabahay, ang lahat ng mga LED ay may isang karaniwang punto ng koneksyon. Pinagsama-sama ay maaaring anodes (karaniwang anode) o cathodes (karaniwang cathode). Ang pinakakaraniwang mga kulay ng glow ay pula at berde. Sa pantay na kasalukuyang pagkonsumo, ang mga pulang LED, bilang panuntunan, ay may mas malaking liwanag na output. Ang pagkonsumo ng enerhiya ay nakasalalay sa boltahe ng suplay at teknolohiya ng pagmamanupaktura. Ang kasalukuyang segment ng mga modernong tagapagpahiwatig ay maaaring mas mababa sa 1 mA.


Fig.2 Pagkonekta sa indicator para sa dynamic na indikasyon

Upang i-highlight ang kinakailangang simbolo sa indicator, kakailanganin mong gumamit ng 8 pin sa microcontroller. Maaaring i-save ang isang linya sa pamamagitan ng pag-aalis ng H segment kapag hindi kailangan ang pagpapakita ng tuldok (kuwit). Sa mas malaking bilang ng mga indicator na ginamit, ang bilang ng mga linya ng I/O ay tataas nang malaki. Ang dalawang tagapagpahiwatig ay mangangailangan ng 16 na linya, 3 mga tagapagpahiwatig ay mangangailangan ng 24, atbp. Maliwanag, para sa karamihan ng mga aplikasyon ang gayong maaksayang paggamit ng mga pin ay ganap na hindi katanggap-tanggap. Ang problemang ito ay maaaring malutas sa pamamagitan ng paggamit ng dynamic na display. Upang gawin ito, sa halip na direktang ikonekta ang mga segment sa microcontroller, pinagsama sila sa mga karaniwang grupo, tulad ng ipinapakita sa Fig. 2. Gumagamit ang circuit ng TOT-3361AH-LN indicator para sa 3 pamilyar na lokasyon na may mga karaniwang cathode. Ginagamit ang Port D upang kontrolin ang mga LED ng mga segment na A...H. Ang mga Cathode K0...K2 ay direktang konektado sa mga linya 0...2 ng port B, ayon sa pagkakabanggit (para sa mga tagapagpahiwatig ng iba pang mga uri na may kabuuang kasalukuyang ≥20 mA, kakailanganin ang mga karagdagang elemento ng buffer). Sa simula, ang simbolo na naaayon sa zero familiarity ay ipinapakita sa indicator. Sa kasong ito, ang antas ng boltahe ay nakatakda sa mababa sa linyang PB0, at mataas sa PB1 at PB2 (kung hindi, ang simbolo ay ipapakita sa lahat ng tatlong posisyon). Pagkatapos ng isang tiyak na tagal ng panahon, ang susunod na simbolo sa pagkakasunud-sunod ay output at ngayon ang katod K1 ay konektado sa lupa (may mababang antas sa linya ng PB1, isang mataas na antas sa PB0 at PB2). Susunod, ang impormasyon ay ipinapakita sa pinakamataas na posisyon ng indicator (sa PB2 log.0, sa PB0, PB1 log.1), pagkatapos ay muli sa zero, atbp. Sa mga rate ng pag-refresh ng character na ≥ 50 Hz, nagsisimulang lumitaw ang inertia ng paningin ng tao. Ang pagkutitap (switching effect) ay nawawala. Ang imahe ay patuloy na nakikita, na parang ang lahat ng mga simbolo ay patuloy na nag-iilaw. Ang isang halimbawa ng isang dynamic na display subroutine ay ibinigay sa ibaba. Kailangan ng dalawang parameter: ang character code at ang numero ng posisyon kung saan dapat ipakita ang character na ito.

; Dahil ang indicator ay naglalaman ng 3 pamilyar na lugar, ang subroutine; ang output ng character ay dapat na tinatawag na may dalas na ≥ 150 Hz (3 ; familiarity x 50 Hz = 150 Hz). Ang panahon ng paglipat ay dapat; maging 1/150 Hz = 6667 μs, na nasa frequency na 1 MHz para sa AVR; ay magiging 6667 cycle ng generator clock frequency. Permanente; Ito ay pinaka-maginhawa upang sukatin ang mga agwat ng oras na may tumatakbong timer; sa coincidence reset mode (CTC mode). Ang ATmega8 ay mayroon nito; umiiral ang mode para sa 16-bit na timer-counter 1 at 8-; bit timer-counter 2. Para sa mga layuning ito (sa kaso ng paggamit ng timer-counter 1) mayroong dalawang rehistro; Mga puwang ng RVV: OCR1AH ​​​​(mataas na byte), OCR1AL (mababang byte). ; Kapag pinagana ang circuit ng paghahambing, ang rehistro ng pagbibilang; Magsisimula ang TCNT1H:TCNT1L pagkatapos ng bawat papasok na pulso; dagdagan ng yunit ang mga nilalaman nito hanggang sa ito; ang halaga ay hindi katumbas ng halaga na nakasulat sa; OCR1AH:OCR1AL. Sa sandaling ito ang mga nilalaman ng TCNT1H:TCNT1L ; ay na-reset at ang OCF1A flag ay nakatakda sa TIMSK RV. Kung; i-preset ang OCIE1A bit sa TIMSK at ang I bit sa SREG, ; pagkatapos ay magkakaroon ng isang paglipat sa interrupt handler sa pamamagitan ng pagkakataon; mula sa module ng paghahambing A. Umiiral din ang timer-counter 1; isa ring pangalawang katulad na module para sa paghahambing ng B sa mga rehistro; paghahambing OCR1BH:OCR1BL na ang paggana ay magkatulad; inilarawan sa itaas. .def data = R16 ;magrehistro gamit ang code ng simbolo.def pos = R17 ;magrehistro gamit ang numero ng kasalukuyang posisyon ng indicator.def temp = R18 ;magrehistro para sa mga intermediate na operasyon.dseg .org SRAM_START ;mga cell sa SRAM para sa display buffer: . byte 3 ;on indicator.cseg .org 0 rjmp initial ;start program.org 0x0006 ;interrupt handler para sa rjmp service_T1COMPA ;tugma mula sa paghahambing na module A ; Abala sa panahon sa CTC mode: T=(OCR1AH:OCR1AL+1) ; /(Fclk/N), kung saan ang N ay ang prescaler division coefficient; frequency sa input ng timer-counter 1. Ang operating mode ay nakatakda; bits WGM13:WGM10 (WGM10 at WGM11 sa control RV TCCR1A, ; WGM12 at WGM13 sa TCCR1B), at ang halaga N ay tinukoy ng mga bit; CS12:CS10 sa rehistro ng TCCR1A. Para sa panahon T = 6667 μs; (WGM13:WGM10 = 0100 – cut CTC), N =1(CS12:CS10 = 001 – ; prescaler disabled) at Fclk=1 MHz – mga nilalaman ng OCR1AH:OCR1AL ; = 6667. .org 0x0020 initial: ldi temp,high(RAMEND) ;stack initialization out SPH,temp ldi temp,low(RAMEND) out SPL,temp . clr pos clr temp ldi temp,1 ;punan ang display buffer ng mga numero 1...3 sts buffer,temp ldi temp,2 sts buffer+1,temp ldi temp,3 sts buffer+2,temp out TCCR1A,temp ldi temp ,(1<< WGM12)|(1<< CS10) out TCCR1B,temp ldi temp,high(6667) out OCR1AH,temp ldi temp,low(6667) out OCR1AL,temp ldi temp,1<< OCIE1A out TIMSK,temp sei . service_T1COMPA: ;обработчик прерывания по совпадению OCR1A in temp,SREG ;при входе сохраняем в стеке push temp ;регистры temp, SREG clr temp ldi YH,high(buffer) ;заносим в указатель Y адрес ldi YL,low(buffer) ;буфера индикации buffer add YL,pos ;добавляем к Y смещение, что соответствует adc YH,temp ;ячейке с текущей позицией pos индикатора ld data,Y ;заносим в data кодом символа текущей позиции rcall din_ind ;вызов подпрограммы индикации inc pos ;циклически изменяем номер позиции cpi pos,3 ;индикатора 0->1->2->0, atbp. brne PC+2 clr pos pop temp ;sa paglabas, ibalik mula sa stack out SREG,temp ;nagrerehistro ng temp, SREG reti ; Dynamic na display subroutine; ZH:ZL – index para sa tabular na conversion; R18 – magparehistro para sa mga intermediate na operasyon; R16 – numero ng karakter sa talahanayan ng conversion na ind_tabl; kapag pumapasok sa isang subroutine; R17 – numero ng posisyon kapag pumapasok sa subroutine (0…2); ang T flag sa pasukan sa subroutine ay tumutukoy; presensya (T=1) o kawalan (T=0) ng kuwit din_ind: clr R18 ;i-clear ang auxiliary register sa pagpasok ng ldi ZH,high(2*ind_tabl) ;ipasok ang panimulang address ng ldi ZL,low(2*ind_tabl ) sa Z index; ang mga talahanayan ng conversion ng character ay nagdaragdag ng ZL,R16 ; magdagdag sa Z pointer ng isang offset, adc ZH,R18 ; naaayon sa posisyon ng simbolo sa talahanayan lpm R16,Z ; i-extract ang simbolo bld R16,7 mula sa ang talahanayan sa R16;ipasok ang halaga sa pinakamahalagang bit ng R16 (segment H) clt ;comma, na ipinapadala sa pamamagitan ng flag T ldi R18,0b11111110 sbrc R17,0 ;kung ang kasalukuyang digit ay 1, pagkatapos ay ilagay namin sa R18 ang mask ldi R18,0b11111101 ;port B para i-on ang cathode K1 sbrc R17,1 ;kung ang kasalukuyang digit ay 2, pagkatapos ay ilagay sa R18 ang mask ldi R18,0b11111011 ;port B para i-on ang cathode K2 push R17 ; i-save sa stack ang rehistro na may numero ng posisyon sa R17,PORTB;basahin sa buffer R17 ang kasalukuyang estado ng port ori R17,0b00000111 at R18,R17 out PORTB,R17; patayin ang lahat ng mga segment sa pamamagitan ng paglalapat ng log.1 sa K0. ..K2 out PORTD,R16 ; ilabas ang susunod na simbolo palabas PORTB, R18 sa port D ; ikonekta ang susunod na cathode pop R17 sa ground ; ibalik ang rehistro na may numero ng posisyon mula sa stack ret ind_tabl: ; talahanayan ng ilang mga simbolo na may karaniwan katod; HGFEDCBA HGFEDCBA character number sa table.db 0b00111111, 0b00000110 ; 0,1 0, 1 .db 0b01011011, 0b01001111 ; 2,3 2, 3 .db 0b01100110, 0b01101101 ; 4,5 4, 5 .db 0b01111101, 0b00000111 ; 6,7 6, 7 .db 0b01111111, 0b01101111 ; 8,9 8, 9 .db 0b01110111, 0b01111100 ; A,b 10, 11 .db 0b01011110, 0b01011110 ; C,d 12, 13 .db 0b01111001, 0b01110001 ; E,F 14, 15 .db 0b01000000, 0b00000000 ; -,space 16, 17

Ang mga linya ng I/O port ng AVR ay may simetriko na katangian ng pagkarga. Pinapayagan nila ang pantay na pag-agos at pag-agos ng mga alon hanggang sa 20 mA. Samakatuwid, ang mga tagapagpahiwatig na may parehong isang karaniwang anode at isang karaniwang katod ay maaaring magamit nang may pantay na tagumpay. Bilang karagdagan, ang mga pin para sa pagkonekta ng mga segment ay madalas na gumaganap ng mga karagdagang pag-andar ng mga pindutan ng botohan. Sa Fig. 2, halimbawa, ang pindutan ng SBN ay konektado sa linya ng segment A sa pamamagitan ng kasalukuyang naglilimita sa risistor RN. Pana-panahon, ang PD0 ay naka-configure bilang isang input upang basahin ang estado ng button. Sa kasong ito, ang panloob na pull-up na risistor ay nagsisilbing paglaban sa pagkarga.


Fig.3 Pagbawas ng bilang ng mga microcontroller pin
a - gamit ang isang shift register
b - gamit ang mga indicator na may iba't ibang pattern ng koneksyon sa LED

Ang bilang ng mga pin ay maaaring makabuluhang bawasan kung ang auxiliary microcircuits ay ginagamit kasama ng microcontroller. Ang Figure 3a, halimbawa, ay nagpapakita kung paano ginagamit ang isang 74HC164 shift register o katulad nito para sa layuning ito. Ang koneksyon na ito ay nagpapalaya ng 6 na linya ng I/O. Sa ilang mga kaso, maaaring makatwiran na gumamit ng pitong-segment na code decoder at mga counter ng iba't ibang uri. Bilang karagdagan, mayroong isa pang pagkakataon sa pag-save batay sa paggamit ng mga linya ng port ng z-state. Ang circuit sa Fig. 3b ay katulad ng circuit sa Fig. 2, na may tanging pagbubukod na ang isang tatlong-digit na tagapagpahiwatig na may isang karaniwang anode HG2 ay karagdagang konektado kahanay sa tagapagpahiwatig na may isang karaniwang katod HG1. Ang mga linyang PB0...PB2 ay sabay-sabay na nagsasagawa ng paglipat ng anodes A0...A2 ng HG2 indicator at ang mga cathodes na K0...K2 ng HG1, ayon sa pagkakabanggit. Kapag ang impormasyon ay ipinapakita sa zero na posisyon ng HG2 (anode A0), isang mataas na antas ng boltahe ang nabuo sa linyang PB0. Sa mga linya ng port D, ang log.0 ay nakatakda sa mga segment na iyon na dapat iluminado at z-state sa mga segment na dapat patayin. Kapag ang pinakamababang sign na HG1 (cathode K0) ay aktibo, ang isang mababang antas ng boltahe ay dapat na naroroon sa linya PB0, at isang lohikal na halaga ay output sa port D kung saan ang logic 1 na antas sa mga linya ay tumutugma sa mga iluminado na mga segment at ang z-estado upang mapatay. Kung ang mga character ay output sa mga posisyon ng tagapagpahiwatig maliban sa A0 at K0, dapat na ilipat ang PB0 sa isang high-impedance na estado. Naturally, ang output program na may tulad na switching scheme ay magiging kapansin-pansing mas kumplikado kaysa sa ipinapakita sa Fig. Ang talahanayan ng simbolo ay magiging mas malaki dahil, una, para sa bawat isa sa kanila ito ay kinakailangan, bilang karagdagan sa halaga ng PORTD, kakailanganin ding iimbak ang mga nilalaman ng rehistro ng DDRD, kung saan ang mga kaukulang linya ay dapat inilipat sa z-state (set up para sa input). At pangalawa, ang mga simbolo ng HG1 ay tumutugma sa iba pang, kabaligtaran na mga halaga ng PORTD na may kaugnayan sa tagapagpahiwatig na may isang karaniwang katod HG2.

Nasa isang electronics store ako noong isang araw. Minsan lumilitaw dito ang iba't ibang ginamit na bahagi ng radyo sa mababang presyo. Sa pagkakataong ito ay nakita ko ang microcircuit, dahil ito ay nagkakahalaga ng isang sentimos, binili ko ito nang walang pag-aalinlangan. Nagpasya akong gumawa ng simpleng mono signal indicator. Bakit mono at hindi stereo? Dahil mayroon lamang isang chip. Tatapusin ko ang pangalawang channel mamaya...

Ang pagkakaroon ng pag-print ng circuit gamit ang isang laser printer sa makintab na papel, sinimulan naming ilipat ang toner (tinta) sa board. Ginagawa namin ito bilang mga sumusunod: inilalagay namin ang papel sa isang board na mahusay na buhangin at pinapatakbo ito sa ibabaw ng board gamit ang isang pinainit na bakal sa loob ng 10 minuto. Naghihintay kami hanggang sa lumamig ang board at maingat na alisin ang papel sa ilalim ng mainit na tubig. Dapat itong magmukhang ganito:

Pagkatapos ay inukit namin ang board sa ferric chloride. Pagkatapos ng halos isang oras, ang aking board ay ganap na nakaukit. Gamit ang isang solvent, inaalis namin ang pintura at gumamit ng papel de liha upang bigyan ang board ng isang mas hugis-parihaba na hitsura.

Nagbabayad kami. Pagkatapos ay sinimulan namin ang paghihinang ng mga bahagi. Una kong ihinang ang chip. Pagkatapos ng mga LED, at pagkatapos ay ang natitirang bahagi. Larawan ng ganap na tapos na board:


Pagpapatakbo ng circuit

Sasabihin ko sa iyo nang maikli ang tungkol sa mga layunin ng mga bahagi. Gamit ang R2 inaayos namin ang antas ng signal ng input. Sa pamamagitan ng kapasitor C1, ang signal ay napupunta sa base ng transistor VT1, na nagsisilbing isang amplifier. Ang risistor R3 ay nagtatakda ng bias sa base ng transistor. Pagkatapos ang amplified signal ay "dumating" sa pamamagitan ng capacitor C2 sa diodes VD1 at VD2.

Ang negatibong signal ay napupunta sa minus, ang positibong signal sa 5th leg ng microcircuit. Ang C3 at R4 ay nagsisilbing filter. Kung mas mataas ang boltahe sa leg 5, mas maraming LED ang umiilaw. Sa pamamagitan ng paraan, kung paikliin mo ang pin 9 sa positibo, ang mga LED ay liliwanag nang linearly. Sa video makikita mo kung paano gumagana ang bagay na ito.

Video ng pagpapatakbo ng LED indicator