Мазмуну:

5x4 LED дисплей матрицасы 2 (bs2) жана Charlieplexing:
5x4 LED дисплей матрицасы 2 (bs2) жана Charlieplexing:

Video: 5x4 LED дисплей матрицасы 2 (bs2) жана Charlieplexing:

Video: 5x4 LED дисплей матрицасы 2 (bs2) жана Charlieplexing:
Video: RGB светодиодный дисплей 64x32 P2.5/P3 в связке с Arduino 2024, Ноябрь
Anonim
5x4 LED Display Matrix Basic Stamp 2 (bs2) жана Charlieplexing колдонуу
5x4 LED Display Matrix Basic Stamp 2 (bs2) жана Charlieplexing колдонуу

Негизги Марка 2 жана кээ бир кошумча светодиоддор барбы? Эмне үчүн charlieplexing түшүнүгү менен ойноп, 5 казыкты колдонуп чыгууну түзүүгө болбойт.

Бул үчүн мен BS2e колдоном, бирок BS2 үй -бүлөсүнүн ар бир мүчөсү иштеши керек.

1 -кадам: Charlieplexing: эмне, эмне үчүн жана кантип

Келгиле, эмне үчүн жолдон чыгып кетели? Эмне үчүн негизги марка 2 менен charlieplexing колдонушат? --- Түшүнүктүн далили: charlieplexing кантип иштээрин жана BS2 жөнүндө бир нерсе билиңиз. Бул кийинчерээк тезирээк 8-пин чиптерди колдонуу менен мага пайдалуу болушу мүмкүн (алардын ичинен 5и гана i/o болот).--- Пайдалуу себеп: Негизи жок. BS2 байкалбагандай жарк этпей туруп көрсөтүү үчүн өтө жай. Charlieplexing деген эмне? --- Charlieplexing-бул аз сандагы микропроцессорлуу i/o казыктары бар көп сандагы светодиоддорду айдоонун ыкмасы. Мен charlieplexing жөнүндө www.instructables.com сайтынан билдим жана сиз дагы: Charlieplexing LEDs- TheoryHow кантип көп LEDди бир нече микроконтроллердин казыгынан кууп чыгуу керек. Ошондой эле википедияда: CharlieplexingHow мен 20 ледди 5 i/o pin менен айдай алам? --- "Charlieplexing деген эмне?" Деген үч шилтемеден окуңуз. Бул мен билгенден да жакшыраак түшүндүрөт. Charlieplexing салттуу мультиплекстөөдөн айырмаланып турат, ага ар бир сап жана ар бир мамыча үчүн бир кирүү/чыгаруу төөнөгүч керек (бул 5/4 дисплей үчүн 9 i/o казыктары болмок).

2 -кадам: Аппараттык жана схемалык

Аппараттык жана схемалык
Аппараттык жана схемалык

Материалдардын тизмеси: 1x - Негизги Марка 220x - бирдей типтеги жарык берүүчү диоддор (LED) 5x - каршылыгы (каршылыгынын мааниси жөнүндө төмөндө караңыз) Көмөкчү/Кошумча: BS2Momentary баскычын баштапкы абалга келтирүү үчүн программалоо ыкмасы6v -9vБС2 версияңызга жараша электр менен камсыздоо (колдонмоңузду окуңуз) Схема: Бул схема механикалык макетти эске алуу менен бирге коюлган. Сиз солго орнотулган диоддордун торун көрөсүз, бул BS2 коду жазылган багыт. LED ар бир жуп анод экинчисинин катодуна туташканына көңүл буруңуз. Алар анда беш i/o pins. Resistor баалуулуктарынын бирине туташкан: Сиз өзүңүздүн резистор баалуулуктарыңызды эсептеп алышыңыз керек. Жарык диоддоруңуздун маалымат баракчасын текшериңиз же диоддук мультиметрдеги LED орнотууларын колдонуңуз. Кээ бир эсептөөлөрдү кылалы: Берилиш чыңалуусу - Чыңалуу Drop / Desired Current = Resistor Value учурдагы. Менин светодиоддорумда 1.6в тамчы бар жана 20ma.5v - 1.6v /.02amps = 155ohms иштейт BS2ди коргоо үчүн сиз эсептөөдө алган нерсеңизден кийинки жогорку резистордун маанисин колдонушуңуз керек, бул учурда мен бул 180ohms болот деп ишенем. Мен 220 Ом колдондум, анткени менин иштеп чыгуу тактамда ар бир киргизүү/чыгаруу үчүн орнотулган резистордун мааниси бар. ЭСКЕРТҮҮ: Мен ар бир пинде каршылык бар болгондуктан, бул эффективдүү түрдө ар бир жетектөөчү каршылыкты эки эсе жогорулатат деп ишенем, анткени бир пин V+, экинчиси Gnd. Эгер андай болсо, анда резистордун маанилерин эки эсе азайтуу керек. Өтө чоң резистордун терс таасири - бул светодиод. Кимдир бирөө муну текшерип, мага премьер же комментарий калтыра алабы, мен бул маалыматты жаңырта аламбы? Программалоо: Мен DB9 туташтыргычы бар өнүгүү тактасын чипти тактага программалоо үчүн колдонуп келе жатам. Мен дагы бул чипти ширем жок нан тактасында колдоном жана Circuit Serial Programming (ICSP) башын кошконмун. Башы 5 төөнөгүч, 2ден 5ке чейин төөнөгүчтөр DB9 сериялык кабелиндеги 2-5 пинге туташат (Pin 1 колдонулбайт). Сураныч, DB9 кабелиндеги ICSP аталышынын 6 жана 7 -казыктарын колдонуу үчүн бири -бирине туташып турушу керек. Баштапкы абалга келтирүү: Ыкчам басуу баскычы милдеттүү эмес. Бул 22 -пинти түрткөндө жерге тартат.

3 -кадам: Breadboarding

Breadboarding
Breadboarding
Breadboarding
Breadboarding

Эми матрицаны нан тактасына куруу убактысы келди. Мен ар бир жетелеген жуптун бир бутун бириктирүү үчүн терминалдык тилкени, ал эми башка буттарды туташтыруу үчүн кичинекей секирүүчү зымды колдондум. Бул сүрөттө кеңири сүрөттөлгөн жана бул жерде терең түшүндүрүлгөн: 1. Нан тактаңызды чоңураак сүрөткө дал келиңиз2. LED 1ди анод (+) менен сизге жана катодго (-) алысыраак коюңуз. LED 2 катодун туташтыруучу терминалдын тилкесине анод (+) менен бир багытта коюңуз. LED 1 анодун LED 2.5 катодуна туташтыруу үчүн кичинекей секирүүчү зымды колдонуңуз. BS2 I/O казыктары үчүн автобус тилкелери катары, адатта, нан тактасынын электр автобустук тилкелери боло турган нерселерди колдоном. Бар болгону 4 автобус тилкеси бар, мен P4 үчүн терминалдык тилкени колдоном (бешинчи I/O туташуусу). Муну төмөндөгү чоңураак сүрөттөн көрүүгө болот. LED 1 катодунун терминалдык тилкесин P0 шина тилкесине туташтырыңыз. Ар бир жуп үчүн ылайыктуу P* дегенди алмаштырган ар бир так сандагы LED үчүн кайталаңыз (схеманы караңыз).7. LED 2 катодунун терминалдык тилкесин P1 шина тилкесине туташтырыңыз. Ар бир жуп үчүн ылайыктуу P* дегенди алмаштырган ар бир так сандагы LED үчүн кайталаңыз (схеманы караңыз).8. Ар бир автобус тилкесин BS2 (P0-P4) боюнча тиешелүү I/O пинке туташтырыңыз. Бардык туташууларды текшериңиз, алар схемага шайкеш келет. ЭСКЕРТҮҮ: Жакындан тартылганда, мен 7-кадамды аткарганым көрүнбөйт, анткени экинчи I/O пинине туташуу так светодиоддордун анодунда. Унутпаңыз, жуп сандагы светодиоддордун катоду так сандагы светодиоддордун анодуна туташкан, андыктан байланыш бирдей. Эгерде бул жазуу сизди чаташтырса, ага көңүл бурбаңыз.

4 -кадам: программалоонун негиздери

Чарлиплекстин иштеши үчүн бир эле учурда бир ледди күйгүзүңүз. Бул биздин BS2 менен иштөө үчүн бизге эки негизги кадам керек: 1. OUTS буйругун колдонуу менен казыктардын чыгуу режимдерин орнотуңуз.2. BS2ге DIRS буйругун колдонуп, кайсы казыктарды чыгаруу катары колдонуу керектигин айтыңыз Бул иштейт, анткени BS2ге кайсы казыктарды бийик жана төмөн айдаш керектигин айтууга болот жана кайсы казыктар чыгарылганын көрсөтмөйүнчө муну күтөт. Жөн гана LED жарк этүүгө аракет кылып жатасыз. Эгерде схеманы карасаңыз, анда P0 LED 1дин катодуна (-) жана P1 ошол эле светодиоддун анодуна илингенин көрө аласыз. Бул P0 төмөн жана P1 бийик айдагысы келет дегенди билдирет. Муну төмөнкүчө жасоого болот: "OUTS = % 11110", бул P4-P1ди бийик жана P0 төмөн айдайт. (% Экилик санды ээрчиш керектигин көрсөтөт. Эң төмөнкү экилик сан ар дайым оң жакта. 0 = ТӨМӨН, 1 = ЖОГОРУ) BS2 бул маалыматты сактайт, бирок биз кайсы казыктар чыгарылганын жарыя кылмайынча ал боюнча иш кылбайт. Бул кадам өтө маанилүү, анткени бир эле учурда эки казык гана чыгышы керек. Калгандары киргизүү керек, алар ошол казыктарды Жогорку Импеданс режимине коёт, андыктан алар эч кандай токту чөктүрбөйт. Биз P0 жана P1 айдаш керек, ошондуктан биз аларды чыгууга, калганын мындай киргизебиз: "DIRS = % 00011". (% Экилик санды ээрчиш керек экенин көрсөтөт. Эң төмөнкү экилик цифр дайыма оң жакта. 0 = INPUT, 1 = OUTPUT) Келгиле, муну бир нече пайдалуу кодго чогулталы: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS = %11110 'Drive P0 төмөн жана P1-P4 жогорку DIRS = %00011' P0- коюу Чыгыш катары P1 жана Киргизүү катары P2-P4 ТЫНЫТУУ 250 'LEDдын DIRS бойдон калышы үчүн тыныгуу = 0' Бардык казыктарды Киргизүүгө коюңуз. Бул LED PALUOP 250 'тыныгуусун өчүрүп, LED өчүп кала берет

5 -кадам: Өнүгүү цикли

Эми биз алардын иштешине ынануу үчүн бир иштөө убактысын көрдүк.20led_Zig-Zag.bseБул тиркелген код 20 LEDдин ар бирин зиг-заг үлгүсүндө жарык кылышы керек. Сиз байкайсыз, ар бир төөнөгүч күйгүзүлгөндөн кийин, мен бардык төөнөгүчтөрдү кайра киргизүүгө "DIRS = 0" колдоном. Эгерде сиз OUTSти чыкмаларды өчүрбөстөн өзгөртө турган болсоңуз, анда кандайдыр бир "элес" пайда болушу мүмкүн, бул жерде жарык болбошу керек болгон LED циклдердин ортосунда жарк этип кетиши мүмкүн. Эгерде сиз W1 өзгөрмөсүн ушул коддун башында "W1 = 1" кылып өзгөртсөңүз ар бир светодиоддун ортосундагы 1 миллисекунддук тыныгуу болот. Бул көрүнүштүн туруктуулугуна алып келет (POV), бул бардык диоддор күйүп кеткендей көрүнөт. Бул светодиоддорду күңүрт кылуучу эффектке ээ, бирок биз бул матрицада символдорду кантип көрсөтөбүз. 20led_Interpreter_Proto. Жарык диоддор колдонууга жарамдуу. Бул файл менин биринчи аракетим. Сиз файлдын ылдый жагында белгилер 5 орундуу бинардык төрт сапта сакталганын көрөсүз. Ар бир сызык окулат, талданат жана ар бир жолу жарык берүү керек болгондо чакан программа чакырылат. Бул код 1-0 цифралары аркылуу велосипед менен иштейт. Эгер сиз аны иштетүүгө аракет кылсаңыз, анда ал өтө жай жаңыруу ылдамдыгынан улам байкалып турат, бул белгилердин таанылышы үчүн өтө жай жаркырашына алып келет. Бул код көптөгөн себептерден улам начар. Биринчиден, экиликтин беш цифрасы EEPROMда экиликтин 8 цифрасы сыяктуу эле көп орунду ээлейт, анткени бардык маалыматтар төрт биттен турган топтордо сакталат. Экинчиден, кайсы пинти күйгүзүү керектигин чечүүдө колдонулган SELECT CASE 20 учурду талап кылат. BS2 SELECT операциясына 16 учур менен чектелген. Бул чектөөнү IF-THEN-ELSE билдирүүсү менен бузууга туура келгенин билдирет. Жакшы жол болушу керек. Бир нече сааттан кийин башым тырмалып, мен аны таптым.

6 -кадам: Жакшы котормочу

Биздин матрицанын ар бир сабы 4 светодиоддон турат, ар бири күйүп же өчүп калышы мүмкүн. BS2 EEPROMда маалыматты төрт битке топтоп сактайт. Бул корреляция бизди бир топ жеңилдетиши керек. Бул фактыдан тышкары, төрт бит 0-15 ондук сандарга туура келет жана жалпысынан 16 мүмкүнчүлүктү түзөт. Бул EEPROMда сакталган 7 саны: '7 %1111, %1001, %0010, %0100, %0100, Ар бир саптын 0-15ке чейин ондук эквиваленти бар, андыктан биз окуйбуз эстутумга киргизиңиз жана аны SELECT CASE функциясына түз бериңиз. Бул адам окуй турган бинардык матрицанын ар бир белгини (1 = күйгүзүү, 0 = өчүрүү) чечмелөөчү үчүн ачкыч экенин билдирет. Ошол эле SELECT CASEди колдонуу үчүн, мен 5 катардын ар бирин тандап алдым өзгөрмөлөр катары DIRS жана OUTS орнотуу. Мен биринчи жолу ROW1-ROW5 өзгөрмөлөрүнө мүнөздүн беш сабынын ар бирин окудум. Негизги программа анда белгини көрсөтүү үчүн чакан программаны чакырат. Бул кичи программа биринчи катарды алат жана төрт мүмкүн болгон OUTS комбинациясын outp1-outp4 өзгөрмөсүнө жана DIRSтин эки мүмкүн болгон комбинациясын direc1 & direc2ге дайындайт. Жарык диоддору жарк этип, катар эсептегичтери көбөйтүлөт жана ошол эле процесс башка төрт катарлардын ар бири үчүн иштейт. Бул биринчи котормочу программасынан алда канча ылдамыраак. Айтор, дагы эле байкалаарлык жылтырак бар. Видеону карап көрүңүз, камера жаркыроону бир топ начарлатат, бирок сиз түшүнүккө ээ болосуз. Бул түшүнүктү picMicro же AVR чипи сыяктуу тезирээк чипке жеткирүү бул белгилерди көрүнбөгөн ирмебестен көрсөтүүгө мүмкүндүк берет.

7 -кадам: Бул жерден кайда баруу керек

Менде схемаларды жасоо үчүн cnc тегирмени же чийүү жабдыктары жок, ошондуктан мен бул долбоорду өткөрбөйм. Эгерде сизде тегирмен бар болсо жана бул жерден алдыга жылуу үчүн кызматташууга кызыкдар болсоңуз, мага билдирүү жөнөтүңүз. Мен бул проекттин даяр продуктусун көрсөтүү үчүн материалдарды жана жеткирүүнү дагы кубаныч менен төлөөгө кубанычта болом.

Башка мүмкүнчүлүктөр: 1. Муну башка чипке порт. Бул матрицанын дизайны үч абалга жөндөмдүү болгон 5 i/o казыктары бар каалаган чип менен колдонулушу мүмкүн (бийик, төмөн же кире турган казыктар (жогорку импеданс)). 2. Тезирээк чипти (балким AVR же picMicro) колдонуу менен масштабды көбөйтө аласыз. 20pin микросхемасы менен 8x22 дисплейди charlieplex үчүн 14 пинди колдонсоңуз болот жана калган пиндерди компьютерден же башка контроллерден сериялык буйруктарды алуу үчүн колдоно аласыз. Дагы үч 20-чиптүү чиптерди колдонуңуз жана 8x88 өлчөмүндөгү жылдыруучу дисплейге ээ болосуз, бардыгы бир убакта 11 белгиден турат (албетте, ар бир белгинин туурасына жараша). Ийгилик, көңүл ачыңыз!

Сунушталууда: