74НС595 жылжымалы тіркелімнің көмегімен шығуларды көбейту

  • Образовательные программы
  • docx
  • 22.10.2018
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Қарапайым жағдайды қарастырайық, сізге Arduino контроллері ұсына алатыннан да көп шығулар (пиндар) қажет. Бұл жағдайдағы қарапайым шығу - жылжымалы тіркелімді қолдану. Осы мысалда 74НС595 пайдаланылған. 74НС595 - бірізді кірісі бар, сегіз разрядты, бірізді немесе параллельді ақпаратты шығарумен, триггер - ілгегі және шығарда үш жағдайы бар жылжымалы тіркелім. Басқаша айтқанда, бұл тіркелім, контроллердің өзінде бар-жоғы бірнеше шығыстарды қолдана отыра, 8 шығысты бақылауға мүмкіндік береді. Осы ретте бірнеше осындай тіркелімдерді бірізді тізімдеме үшін біріктіруге болады. Басқа лайықты тіркелімдерді "595"
Иконка файла материала 7.3.4 Сдвиг регистра 74HC595.docx
«Роботты техника». 5­ші деңгей. 4 сабақ. Сабақтың тақырыбы: Тіркелім жылжуы. Сабақтың ұзақтығы: 2 сағ. 74НС595 жылжымалы тіркелімнің көмегімен шығуларды көбейту Қарапайым жағдайды қарастырайық, сізге Arduino контроллері ұсына  алатыннан да көп шығулар (пиндар) қажет. Бұл жағдайдағы қарапайым шығу ­ жылжымалы тіркелімді қолдану. Осы мысалда 74НС595 пайдаланылған. 74НС595 ­ бірізді кірісі бар, сегіз разрядты, бірізді немесе  параллельді ақпаратты шығарумен, триггер ­ ілгегі және шығарда  үш жағдайы бар жылжымалы тіркелім. Басқаша айтқанда, бұл тіркелім, контроллердің өзінде бар­жоғы бірнеше  шығыстарды қолдана отыра, 8 шығысты бақылауға мүмкіндік береді. Осы  ретте бірнеше осындай тіркелімдерді бірізді тізімдеме үшін біріктіруге  болады. Басқа лайықты тіркелімдерді "595" және "596" қисындары бойынша  сериялық нөмерлерінде іздеп көруге болады. Сонымен, мысалы STP16C596  қосымша резисторларды қолданбай бір уақытта 16 жарықдиоды басқара  алады. Дабылдарды бір мезгілде жүйелі беру ұстанымы осы сызбада қолданылады.  Дабылдың қажетті мәндері (HIGH немесе LOW биттері) бірінен соң бірі  тіркелімге беріледі, бұл уақытта тіркелім синхрондаушы дабылды алады, ол  оны кірістен келген дабылдарды санауға мәжбүрлейді. Байт (1 байт = 8 бит)  есептелген кезде, барлық 8 биттің мәндері шығыстармен есептелген. Яғни,  тіркелімге дабылды бірізді беріп отырамыз, тіркелімнің шығысында 8  параллельді дабылымыз бар. 74HC595 дабылды тек қана параллельді емес, бірізді де бере алады. Бұл 16  және одан да жоғары шығыстарды алу үшін бірнеше тіркелімдерді біріктірген  кезде қажет. Бұл жағдайда дабылдың алғашқы 8 биты онда параллельді шығу  үшін келесі тіркелімге беріледі, бұл туралы толығырақ екінші мысалда  айталатын болады.Жоғарыда айтылған, шығыстағы үш мүмкін жағдай, тіркелімнің шығуының  тек қана нөлге немесе бірлікке ие болатынын білдіреді HIGH немесе LOW),  алайда кіріс сызбадан сөніп тұрған кезде (жоғары импеданстық) жоғары  омдық жағдайда да бола алады. Жоғары омдық жағдай жеке шығысқа  ауыстырыла алмайды, тек қана тіркелімнің барлық шығыстары бір ретпен  ауыса алады. Егер біз жарық диодтарын басқару туралы айтатын болсақ, бұл,  біз оларды басқаруды басқа контроллерге ауыстырғымыз келген кезде  пайдалы болуы мүмкін. Төмендегі мысалда бұл жағдай ешқалай  қолданылмайды және айтарлық сирек кәдеге жарайды. Тіркелімнің кірістер/шығыстарын пиндеу 1­7, 15  пиндер Q0 "  Q7 Параллельді шығыстар 8 пины GND Жер 9 пины Q7" 10 пины MR Тіркелімдерді бірізді  біріктіруге арналған  шығыстар Тіркелімнің мәндерін  лақтыру. Лақтыру LOW  алған кезде жүзеге асады 11 пины SH_CP Тактті импульстерге  арналған кіріс 12 пины ST_CP Шығыстарды синхрондау  («бекітулер») 13 пины OE 14 пины DS Жоғары омдық  жағдайдан жұмыстық  шығуларға көшуге  арналған кіріс Бірізді деректерге  арналған кіріс 16 пины Vcc Қуаттандыру Бір тіркеліммен мысал Қосайық:       GND (8 пины) жерге Vcc (16 пины) 5В қуат көзіне OE (13 пины) жерге MR (10 пины) 5В қуат көзіне Сонымен, біз тіркелімді қуаттандырдық және барлық шығыстарды белсенді  еттік. Бұл, қосылудың кішкене қарапайым түрі, себебі, сызбаға қорек көзін  беру кезінде шығыстарда кездейсоқ белгілер болады. Кірістерді нөлдендіріп  және/немесе керек кезде шығыстарды қосу үшін, Arduino­дан MR және OE  пиндерін тікелей бақылауға болады. Arduino пайдаланылушы шығыстар санын азайту және сызбаны қысқарту үшін, біз өте қарапайым сызбаны қолданатын  боламыз, себебі, бағдарламалар жұмыс істей бастағанда, тіркемелер мен  қорытындылардың мәні қайта көшірілетін болады.  Arduino­мен қосылу: DS (14 пины) Arduino­ның 11­ші с  андық шығысымен (сызбада көк сым) SH_CP (11 пины) 12­ші сандық шығысымен (сары сым) ST_CP (12 пины) 8­шімен (жасыл сым) Бұдан әрі бұл шығыстар мәтін мен кодта dataPin, clockPin және latchPin  сәйкес атаулары ауыстырылады. latchPin­дегі микрофарадтың 0.1конденсаторына назар аударыңыз, ол, «бекітілетін» импульс беру кезінде  сызбадағы шуды азайтады. 74HC595 тіркелімінің шығыстарына жарықдиодтарды қосамыз, жарықдиод  катоды (қысқа аяқ) ортақ жерге қосылады, ал анод (ұзын аяқ), 220 ОМ  шектеуіш резистор арқылы тіркелім шығысына. 74HC595­тен өзгеше  тіркелімдерді пайдалану кезінде, құжаттаманы салыстырып алған және  қосылу сызбасын тексерген абзал. Кейбір тіркелімдерге жарықдиодтар  керісінше ­ катод шығысқа қосылады. Қосу сызбасыТөменде үш бағдарламаның коды келтірілген. Бірінші, "Hello world", байт  көрсеткіштерін 0 ден 255 дейін шығарады. Екіншісі бір­бірлеп  жарықдиодтарды қосады. Үшіншісі массивтен циклді түрде өтеді. Кодтарды түсінуге тіркелімнің «дабылдардың уақытша диаграммасы» және  «логика кестесі» көмектесе алады. clockPin, LOW­дан HIGH­ке қосылған  кезде, тіркелім, көрсеткіштерді DS пиннен есептейді. Есептеу қажеттілігіне  қарай мәліметтер ішкі жадқа жазылады. latchPin, LOW­дан HIGH­ке  қосылғанда, мәліметтер «бекітіледі», яғни, жарықдиодтарды қоса тіркелім  шығысына беріледі.  1.1. мысалының коды кодты көрсету  1.2. мысалының коды кодты көрсету  Ығысу тіркелімі каскадын пайдалану үлгісіБұл үлгіде, шығыстар санын 16 дейін жеткізе отырып, екі тіркелім қосылады,  бұған қоса Arduino­да әлі күнге дейін шығыстардың сол саны қолданылады. Екінші тіркелімді қуатқа және ортақ жерге, біріншіні қосқандай қосамыз. Бұдан әрі DS кірісі (14 пины) бірінші тіркелімнің (көк сым) Q7' шығысына (9  пины) қосылады. Ал, SH_CP (11 пины) және ST_CP (12 пины) бірінші  тіркелімнің сәйкес келетін кірістеріне параллель тіркелімге қосалды. Сары  және жасыл сым сәйкес.Екінші тіркелім шығыстарына жасыл жарықдиодтарды қосамыз.Қосу сызбасы2.1. мысалының коды //**************************************************************// //  Name    : shiftOutCode, Hello World                                //  Author  : Carlyn Maw,Tom Igoe, David A. Mellis //  Date    : 25 Oct, 2006    //  Modified: 21 Mar 2010  //  Modified: 19 Feb 2011                               //  Version : 2.0//  Notes   : Бағдарлама, 74HC595 екі ығыспалы тіркелімдерін пайдаланады //          : 0 ден 255 дейін мәндерін шығару үшін                          //****************************************************************   //Пин 74HC595 шығысының ST_CP қосылған int latchPin = 8; //Пин 74HC595 шығысының SH_CP қосылған int clockPin = 12; //Пин 74HC595 шығысының DS қосылған int dataPin = 11;       void setup() {   //OUTPUT тәртібін орнатамыз   pinMode(latchPin, OUTPUT);   pinMode(clockPin, OUTPUT);   pinMode(dataPin, OUTPUT); }   void loop() {   // 0 ден 255 дейін санаймыз және мәндерін жарықдиодта бейнелейміз   for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {     // LOW­да «бекіту» синхрондауын бекітеміз     digitalWrite(latchPin, LOW);     // жасыл жарықдиодтарға шығару үшін есеп жібереміз     shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay);      // қызыл жарықдиодтарға шығару үшін кері есеп жібереміз     shiftOut(dataPin, clockPin, MSBFIRST, 255­numberToDisplay);     //тіркелімді «бекітеміз», осылайша шығыстарда мәндер бекітеміз     digitalWrite(latchPin, HIGH);     // келесі итерация алдындағы үзіліс     delay(500);   } } 2.2. мысалының коды: /*74HC595 екі ығыспалы тіркелімдеріне қосылған, барлық жарықдиодтарды тізбекті қосылады.Created 22 May 2009  Modified 23 Mar 2010  by Tom Igoe  */   //Пин 74HC595 шығысының ST_CP қосылған const int latchPin = 8; //Пин 74HC595 шығысының SH_CP қосылған const int clockPin = 12; //Пин 74HC595 шығысының DS қосылған const int dataPin = 11;   char inputString[2];   void setup() {    //OUTPUT тәртібін орнатамыз   pinMode(latchPin, OUTPUT);   pinMode(dataPin, OUTPUT);    pinMode(clockPin, OUTPUT);   Serial.begin(9600);   Serial.println("reset"); }   void loop() {   // екі тіркелімнің барлық 16 шығыстан циклмен өтеміз   for (int thisLed = 0; thisLed < 16; thisLed++) {     // дабылды тіркелімге кезекті жарықдиод үшін жазамыз     registerWrite(thisLed, HIGH);     // егер бұл бірінші жарықдиод болса, онда алдыңғыны ағытамыз     if (thisLed > 0) {       registerWrite(thisLed ­ 1, LOW);     }     // егер бұл бірінші жарықдиод болса, онда соңғыны ағытамыз     else {       registerWrite(15, LOW);     }     // келесі итерация алдында үзіліс жасаймыз     delay(250);}   }   // бұл әдіс, битті ығыстырмалы тіркелімге жібереді   void registerWrite(int whichPin, int whichState) {   // 16 битті сақтау үшін, unsigned int қолданамыз   unsigned int bitsToSend = 0;        // биттерді жіберу кезінде жарық диодын өшіреміз   digitalWrite(latchPin, LOW);     // сәйкес битке HIGH орнатамыз   bitWrite(bitsToSend, whichPin, whichState);     // біздің 16 битімізді 2 байтқа бөлеміз   // бірінші және екінші тіркелімге жазу үшін   byte registerOne = highByte(bitsToSend);   byte registerTwo = lowByte(bitsToSend);     // тіркелімдерге байттарды «итермелейміз»   shiftOut(dataPin, clockPin, MSBFIRST, registerTwo);   shiftOut(dataPin, clockPin, MSBFIRST, registerOne);     // тіркелім шығыстарында биттер пайда болу үшін, тіркелімді «бекітеміз»   digitalWrite(latchPin, HIGH); }