arduino හි 1602 ග්‍රැෆික් සංදර්ශකය සමඟ වැඩ කිරීම. Winstar වෙතින් LCD WH1602B. I2C බසය හරහා LCD තිර පාලනය

පැමිණ තිබුණි Arduino නැනෝ, පාන් පුවරුවක් සහ LCD සංදර්ශකයක් අඩංගු කට්ටලයක් පැමිණියේය. පුවරුවේ සංදර්ශකය කියයි - 1602A, පහත - QAPASS. මම පළමු උපාංගය මූර්තිමත් කිරීමට පටන් ගත් අතර, ඇත්ත වශයෙන්ම, මට අවශ්‍ය වූයේ සංදර්ශකයේ තොරතුරු ප්‍රදර්ශනය කිරීමට මිස LEDs ඇසිරීම නොවේ.

ගූගල් උදව් කළා, මට කිව්වා මේක චරිත සංදර්ශකයක් කියලා; ඔබ එය විකෘති නොකරන්නේ නම්, බොහෝ විට ASCII අක්ෂර තිබේ - අංක, ලතින්, මූලික අක්ෂර කිහිපයක්.

සංදර්ශකය දියත් කිරීමට පහත ද්‍රව්‍ය උපකාර විය: PC මුද්‍රණ තොටකින් අක්ෂර වර්ගය LCD ධාවනය කිරීම; LCD අක්ෂරයක් සමඟ Arduino සම්බන්ධ කරන්නේ කෙසේද ; Pwm Servo Driver Motor Control PDF.

සංදර්ශකය ඉතා සුලභ වන අතර, ඒ සඳහා පලිහ දැනටමත් නිර්මාණය කර ඇත - SPI, වැනි, සහ/හෝ I2C සමඟ විකල්ප ඇත, සහ අන්තර්ජාලය මෙම අවස්ථා සඳහා වට්ටෝරු වලින් පිරී ඇත. එත් මගේ ලග තිබ්බේ ඔරිජිනල් 16x2 ඩිස්ප්ලේ එකයි ඒක ඇමිණීමට අවශ්‍ය Arduino එකයි විතරයි.

සංදර්ශකයේ ක්‍රියාකාරී මාදිලියක් සහ දත්ත සම්ප්‍රේෂණ ක්‍රමයක් ඇත, බිටු 4 බැගින් වන අතර බස් රථයේ පහත් බිටු භාවිතා නොවේ. දත්ත බසයෙන් අඩක් පමණක් සම්බන්ධ කිරීම බොහෝ ස්ථානවල විස්තර කර ඇති අතර, සංදර්ශකය සම්බන්ධ කර එය පේළි 8 කට වඩා වැඩ කරන්නේ කෙසේදැයි මම සොයා ගත්තේ නැත. එය ක්‍රියාත්මක වන ආකාරය ගැන මම බෙහෙවින් සතුටු වෙමි.

සංදර්ශක පිළිබඳ හොඳ විස්තරයක් මෙම වර්ගයේමම එය සොයා ගත්තේ මෙතැනින් - http://greathard.ucoz.com/44780_rus.pdf. තවද මෙහි (http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit#comment-40748) අක්ෂර උත්පාදකයක් නියම කිරීමේ උදාහරණයකි.

සම්බන්ධතාවය

මගේ සංදර්ශකය අලෙවි නොකළ සම්බන්ධතා සමඟ පැමිණියේය. මුල සිටම මට අවශ්‍ය වූයේ කේබලය පෑස්සීමට, ඩූපොන්ට් සමඟ වයර් 16 ක් කපා ඒවා පිරිසිදු කිරීමට ය. ඊට පස්සේ මම තල්මසාව හාරා, පුවරුවට පෑස්සීමට DuPont පනාවක් සොයාගත්තා. එතනින් කන්ටැක්ට් 16ක් කඩලා පාස්සලා දැම්මා.
මගේ සංදර්ශකය මේ වගේ දෙයක් (සම්බන්ධතා පෑස්සීමට පෙර):

මුලින්ම මම පින් 15 (A) සිට +5V, 16 (K) බිමට සම්බන්ධ කර, පසුතල ආලෝකය ක්‍රියා කරන බවට වග බලා ගත්තා. සාමාන්‍යයෙන්, 220 Ohm ප්‍රතිරෝධකයක් හරහා කැතෝඩය බිමට සම්බන්ධ කිරීම නිවැරදියි, එය මම පසුව කළෙමි.

ඊට පස්සේ මම බිම (1) සහ බලය (2) සම්බන්ධ කළා. Arduino USB වලින්, 5V ස්ථායී වෝල්ටීයතාවයකින් සහ අස්ථායී 6-12V වලින්, ඉහලම වෝල්ටීයතාවය ස්වයංක්‍රීයව තෝරනු ලැබේ. දැන් Arduino එක USB වලින් බල ගන්වනවා, මම කල්පනා කලේ Volts 5ක් ගන්න කොහෙන්ද කියලා. බාහිර ස්ථාවර 5V සම්බන්ධ කර ඇති Arduino පින් මත 5V ඇති බව පෙනී ගියේය. එසේත් නැතිනම්, එය 4.7V බවට පත් විය, නමුත් එය මට ප්රමාණවත් විය.

බලය සම්බන්ධ කිරීමෙන් පසු, සෑම දෙයක්ම හොඳින් තිබේ නම්, ඉහළ පේළිය හුරුපුරුදු ඝන සෘජුකෝණාස්රා වලින් ආලෝකමත් වේ.

ඉන්පසුව අපි ප්රතිවිරුද්ධ පොටෙන්ටියෝමීටරය (pin 3 V0) සම්බන්ධ කරමු. අපි පොටෙන්ටියෝමීටරයේ ආන්තික පර්යන්ත වලින් එකක් බිමට විසි කරමු, දෙවැන්න +5V දක්වා, මැද එක සංදර්ශකයේ 3 පින් කිරීමට. 10K potentiometer නිර්දේශ කෙරේ. මට තල්මසුන්ගෙන් 50K තිබුණා, මම මුලින්ම එය භාවිතා කළා. ගැලපීම එක් කෙළවරක පමණක් විය; අපේක්ෂිත වෙනස ඉතා සියුම් ලෙස අල්ලා ගැනීමට අවශ්ය විය. ඊට පස්සේ මම තවත් තල්මසාවක 5K දී සමාන එකක් සොයාගෙන එය ස්ථාපනය කළා. සැකසුම එක් කෙළවරක සිට අඩක් හැරීම දක්වා විහිදේ. පෙනෙන විදිහට, ඔබට ඊටත් වඩා කුඩා පොටෙන්ටියෝමීටරයක් ​​ගත හැකිය. පරිපථය අඩුවෙන් පරිභෝජනය වන පරිදි 10K නිර්දේශ කරනු ලැබේ. ඔව්, මට කුඩා පෑස්සීමක් කිරීමට සිදු විය; මම පොටෙන්ටියෝමීටරවල පර්යන්තවලට ඩූපොන්ට් සමඟ වයර් පෑස්සුවෙමි.

පරීක්ෂණ කටු සටහන

අපි Arduino Studio හි උදාහරණ වලින් පරීක්ෂණ කටු සටහනක් ගනිමු - "C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\ex amples\HelloWorld\HelloWorld.ino", අපට සම්බන්ධතා වෙනස් කිරීමට අවශ්‍යයි - LiquidCrystal lcd( 7, 6, 5, 4, 3, 2);

ප්‍රතිපත්තිමය වශයෙන්, මෙම ස්කීච් එකේ කොතැනට සම්බන්ධ කළ යුතුද යන්න පිළිබඳ විස්තරයක් ද අඩංගු වේ. එහි දක්වා ඇති පරිදි ඔබට එය සම්බන්ධ කළ හැකිය, එවිට ඔබට කිසිවක් වෙනස් කිරීමට අවශ්‍ය නොවේ.

// පුස්තකාල කේතය ඇතුළත් කරන්න: #ඇතුළත් // LiquidCrystal lcd(7, 6, 5, 4, 3, 2) අතුරු මුහුණත් කටුවල අංක සමඟ පුස්තකාලය ආරම්භ කරන්න; void setup() ( // LCD "s තීරු සහ පේළි ගණන සකසන්න: lcd.begin(16, 2); // LCD වෙත පණිවිඩයක් මුද්‍රණය කරන්න. lcd.print("hello, world!"); ) void loop() (// කර්සරය තීරුව 0, පේළිය 1 // ලෙස සකසන්න (සටහන: 1 පේළිය දෙවන පේළිය, ගණන් කිරීම 0 න් ආරම්භ වන බැවින්): lcd.setCursor(0, 1); // ගණන මුද්‍රණය කරන්න යළි පිහිටුවීමේ සිට තත්පර: lcd.print(millis() / 1000); )

එය මේ වගේ දෙයක් හැරෙනවා:

මාර්ගය වන විට, මගේ අතට පැමිණි සංදර්ශකය පසුබිම් ආලෝකය නොමැතිව ක්රියා නොකරයි. මම කිව්වේ, එය ක්රියා කරයි, නමුත් ඔබට කිසිවක් දැකිය නොහැක.

1602A සංදර්ශක සම්බන්ධතා

# අමතන්න නම සම්බන්ධ වන්නේ කෙසේද
1 වීඑස්එස් GND
2 VDD +5V
3 V0 ප්රතිවිරුද්ධය - පොටෙන්ටියෝමීටරයේ මැද පර්යන්තයට
4 RS (ලියාපදිංචිය තෝරන්න) D7 Arduino
5 R/W (කියවීම හෝ ලිවීම) GND
6 E (සංඥාව සබල කරන්න) D6 Arduino
7-14 D0-D7 D0-D3 - සම්බන්ධ නොවේ; D4-D7 - Arduino හි D5-D2 කටු වලට සම්බන්ධ කර ඇත
15 Backlight anode, +5V වෙත සම්බන්ධ කර ඇත
16 කේ Backlight කැතෝඩය, 220 Ohm ප්‍රතිරෝධයක් හරහා බිමට සම්බන්ධ කර ඇත

LCD නිවැරදිව Arduino වෙත සම්බන්ධ කරන්නේ කෙසේද යන්න ගැන ලිපිය කතා කරයි, LCD 1602 සහ LCD i2c සම්බන්ධ කිරීම ගැන ඔබ දැනගත යුතු සියල්ල ආවරණය කර ඇත.

HD44780 පාලකයේ පදනම මත නිර්මාණය කරන ලද 1602 ප්‍රමාණයේ LCD සංදර්ශක, අදටත් ඕනෑම ආකාරයක ඉලෙක්ට්‍රොනික උපාංග සංවර්ධනය කිරීම සඳහා වඩාත්ම දැරිය හැකි, සරල සහ ඉල්ලුමක් පවතින එකක් ලෙස පවතී.

දණහිස මත වචනාර්ථයෙන් එකලස් කර ඇති සරල ඒකකවල සහ වඩාත් බැරෑරුම් කාර්මික ඒවා තුළ, උදාහරණයක් ලෙස කෝපි යන්ත්‍රවල ඒවා දැකගත හැකි වීම පුදුමයක් නොවේ. LCD I2C මොඩියුලය සහ LCD Keypad Shield වැනි වඩාත් ජනප්‍රිය Arduino සම්බන්ධ මොඩියුල සහ පලිහ එකලස් කර ඇත්තේ මෙම සංදර්ශකය සමඟිනි.

පහත පියවර වලදී අපි ඔබට LCD Arduino වෙත සම්බන්ධ කර අවශ්‍ය තොරතුරු සංදර්ශකයේ පෙන්වන ආකාරය පින්තූර සමඟ විස්තරාත්මකව ඔබට කියන්නෙමු.

පියවර 2. Arduino සඳහා LCD 1602

1602 සංදර්ශක විවිධ මෝස්තර දෙකකින් පැමිණේ:

  • කළු අකුරු සහිත කහ පසුබිම් ආලෝකය
  • හෝ (මෙය බොහෝ විට සිදු වේ) සුදු ඒවා සමඟ නිල් පසුබිම් ආලෝකය.

HD44780 පාලකයේ සංදර්ශකවල විශාලත්වය විශාල වශයෙන් වෙනස් වේ, නමුත් ඒවා එකම ආකාරයකින් පාලනය වේ. වඩාත් පොදු මානයන් වන්නේ 16 by 02 (එනම්, පේළි දෙකක අක්ෂර 16) හෝ 20 by 04. අක්ෂරවලම පික්සල 5 සිට 8 දක්වා විභේදනයක් ඇත.

බොහෝ සංදර්ශක සිරිලික් සඳහා සහය නොදක්වයි (CTK සලකුණු කළ සංදර්ශක හැර). නමුත් මෙම ගැටළුව අර්ධ වශයෙන් විසඳිය හැකි අතර, මෙය සිදු කරන්නේ කෙසේද යන්න ලිපිය තවදුරටත් විස්තර කරයි.

සංදර්ශකය සම්බන්ධතාවය සඳහා 16-PIN සම්බන්ධකයක් ඇත. පුවරුවේ පිටුපස අල්ෙපෙනති සලකුණු කර ඇත, එය පහත පරිදි වේ:

  • 1 (VSS) - පාලකය සඳහා සෘණ බල සැපයුම.
  • 2 (VDD) - පාලකය සඳහා ධනාත්මක බල සැපයුම.
  • 3 (VO) - ප්‍රතිවිරුද්ධ පාලන සැකසුම්.
  • 4 (RS) - තේරීම ලියාපදිංචි කරන්න.
  • 5 (R/W) - කියවීම සහ ලිවීම, විශේෂයෙන්ම, බිමට සම්බන්ධ වූ විට ලිවීම.
  • 6 (E) - සක්රිය කිරීම (සක්රිය කරන්න).
  • 7-10 (DB0-DB3) - අට-බිට් අතුරුමුහුණතෙන් අඩු ඇණවුම් බිටු.
  • 11-14 (DB4-DB7) - අතුරු මුහුණතෙන් වඩාත් වැදගත් බිටු
  • 15 (A) - පසුතල බල සැපයුම සඳහා ධනාත්මක ඇනෝඩය.
  • 16 (K) - පසුතල බල සැපයුම සඳහා සෘණ කැතෝඩය.

පියවර 3. LCD සංදර්ශකය සම්බන්ධ කරන්න

සංදර්ශකය සම්බන්ධ කිරීමට සහ එයට තොරතුරු මාරු කිරීමට පෙර, එහි ක්රියාකාරිත්වය පරීක්ෂා කිරීම වටී. පළමුව, VSS සහ VDD පාලකය වෙත වෝල්ටීයතාවයක් යොදන්න, පසුතල ආලෝකය (A, K) බල ගැන්වීම, පසුව වෙනස සකස් කරන්න.

එවැනි සැකසුම් සඳහා, 10 kOhm potentiometer සුදුසු වේ; එහි හැඩය වැදගත් නොවේ. +5V සහ GND පිටත පාදවලට සපයනු ලබන අතර මධ්‍යයේ ඇති කකුල VO පින් එකට සම්බන්ධ වේ.

පරිපථයට බලය සපයන විට, ඔබට අවශ්‍ය වෙනස ලබා ගත යුතුය; එය වැරදි ලෙස සකසා ඇත්නම්, තිරයේ ඇති රූපය නොපෙනේ. ප්රතිවිරුද්ධය සකස් කිරීම සඳහා, ඔබ පොටෙන්ටියෝමීටරය සමඟ "සෙල්ලම්" කළ යුතුය. පරිපථය නිවැරදිව එකලස් කර ප්රතිවිරුද්ධය නිවැරදිව සකස් කළ විට, තිරයේ ඉහළ රේඛාව සෘජුකෝණාස්රාකාර පිරවිය යුතුය.

සංදර්ශකය ක්‍රියාත්මක කිරීම සඳහා, Arduino IDE පරිසරය තුළට ගොඩනගා ඇති විශේෂ පුස්තකාලයක් භාවිතා වේ, LiquidCrystal.h, එය මම පහත ලියන්නෙමි. එය 8-bit සහ 4-bit ආකාරයෙන් ක්රියා කළ හැකිය. පළමු විකල්පය තුළ, අවම සැලකිය යුතු සහ වඩාත්ම වැදගත් බිටු පමණක් භාවිතා වේ ( BB0-DB7), දෙවැන්න - බාල අය පමණි ( BB4-DB7).

නමුත් මෙම සංදර්ශකය තුළ 8-bit මාදිලිය භාවිතා කිරීම වැරදි තීරණයකි; එහි නැවුම් කිරීමේ වේගය සෑම විටම තත්පරයට 10 වාරයකට වඩා අඩු බැවින් වේග වාසියක් නොමැති තරම්ය. පෙළ සංදර්ශන කිරීමට, ඔබ විසින් DB7, DB6, DB5, DB4, E සහ RS pins Controller pins වෙත සම්බන්ධ කළ යුතුය. ඒවා ඕනෑම Arduino පින් එකකට සම්බන්ධ කළ හැකිය, ප්රධාන දෙය වන්නේ කේතයේ නිවැරදි අනුපිළිවෙල සැකසීමයි.

අවශ්‍ය සංකේතය තවමත් පාලක මතකයේ නොමැති නම්, ඔබට එය අතින් නිර්වචනය කළ හැකිය (මුළු සංකේත හතක් දක්වා). සලකා බලනු ලබන සංදර්ශකවල සෛලය පික්සල පහක අටක දිගුවක් ඇත. සංකේතයක් නිර්මාණය කිරීමේ කාර්යය වන්නේ වෙස් මුහුණක් ලිවීම සහ තිත් දැල්විය යුතු ස්ථානවල සහ ඒවා නොවිය යුතු ස්ථානවල බිංදු තැබීමයි. Arduino හි අවම වශයෙන් සංඛ්‍යාංක ප්‍රතිදානයන් හයක්වත් භාවිතා කරන බැවින් ඉහත සාකච්ඡා කර ඇති සම්බන්ධතා රූප සටහන සැමවිටම හොඳ නැත.

පියවර 4. බයිපාස් යෝජනා ක්රමය

අපි මෙය මඟහැර දෙකක් පමණක් ලබා ගැනීමට විකල්පයක් ගවේෂණය කරමු. අපට LCD සිට IIC/I2C දක්වා අමතර පරිවර්තක මොඩියුලයක් අවශ්‍යයි. එය සංදර්ශකයට පාස්සන ආකාරය සහ Arduino වෙත සම්බන්ධ කරන ආකාරය පහත රූපවල දැකිය හැකිය.

නමුත් මෙම සම්බන්ධතා විකල්පය ක්‍රියාත්මක වන්නේ විශේෂ පුස්තකාලයක් වන LiquidCrystal_I2C1602V1 සමඟ පමණි, කෙසේ වෙතත්, අන්තර්ජාලයේ සොයා ගැනීමට සහ ස්ථාපනය කිරීමට පහසු වන අතර, පසුව ඔබට එය කිසිදු ගැටළුවක් නොමැතිව භාවිතා කළ හැකිය.

පියවර 4: LiquidCrystal.h පුස්තකාලය

LiquidCrystal.h පුස්තකාලය මෙම පිටුවේ ඇති අපගේ වෙබ් අඩවියේ පුස්තකාල අංශයෙන් හෝ නිල සම්පත් arduino.cc වෙතින් බාගත කළ හැක. නමුත් ඔබට පහත සබැඳි වලින් බාගත හැකිය:

පියවර 5. ස්කීච් (වැඩසටහන් කේතය)

ඔබ සංරක්ෂිතය බාගත කළ පසු, ඔබේ Arduino ස්ථාපන නාමාවලියෙහි පුස්තකාල ෆෝල්ඩරයේ LiquidCrystal ෆෝල්ඩරය ප්‍රතිස්ථාපනය කරන්න.

ඔබට නියැදි සටහනක් මෙහි දැකිය හැකිය:

ගොනුව -> උදාහරණ -> LiquidCrystal -> HelloWorld_SPI

නැතහොත්, ඔබට ඉංග්‍රීසියෙන් මෙනුවක් තිබේ නම්:

ගොනුව -> උදාහරණ -> LiquidCrystal -> HelloWorld_SPI

මෙය අපගේ ඊළඟ පාඩම අවසන් කරයි. අපි ඔබට ගුණාත්මක ව්යාපෘති ප්රාර්ථනා කරමු!

LCD සංදර්ශකය- Arduino ව්‍යාපෘතිවල නිතර ආගන්තුකයෙක්. නමුත් සංකීර්ණ පරිපථ වලදී, බොහෝ පින් ඇති පලිහක් සම්බන්ධ කිරීමේ අවශ්‍යතාවය හේතුවෙන් Arduino ports නොමැතිකම පිළිබඳ ගැටළුව අපට ඇති විය හැකිය. මෙම තත්වය තුළ විසඳුම විය හැකිය I2C/IICසාමාන්‍ය Arduino 1602 පලිහක් Uno, Nano හෝ Mega පුවරු 4ක් පමණක් භාවිතා කරමින් සම්බන්ධ කරන ඇඩප්ටරය. මෙම ලිපියෙන් අපි ඔබට I2C අතුරුමුහුණතක් සමඟ LCD තිරයක් සම්බන්ධ කරන්නේ කෙසේද, ඔබට භාවිතා කළ හැකි පුස්තකාල මොනවාද, කෙටි උදාහරණ සටහනක් ලියන්න සහ පොදු දෝෂ දෙස බලමු.

ද්රව ස්පටික සංදර්ශකය LCD 1602වේ හොඳ තේරීමක්විවිධ ව්‍යාපෘතිවල අක්ෂර තන්තු ප්‍රතිදානය කිරීමට. එය මිළ අඩුයි, විවිධ පසුබිම් වර්ණ සහිත විවිධ වෙනස් කිරීම් ඇත, ඔබට Arduino sketches සඳහා සූදානම් කළ පුස්තකාල පහසුවෙන් බාගත හැකිය. නමුත් මෙම තිරයේ ඇති ප්‍රධාන අවාසිය නම් ඩිස්ප්ලේ එකේ ඩිජිටල් පින් 16ක් තිබීමයි, ඉන් අවම වශයෙන් 6ක් අවශ්‍ය වීමයි.එබැවින් i2c නොමැතිව මෙම LCD තිරය භාවිතා කිරීම Arduino Uno හෝ Nano පුවරු සඳහා බරපතල සීමා කිරීම් එකතු කරයි. ප්‍රමාණවත් සම්බන්ධතා නොමැති නම්, ඔබට Arduino Mega පුවරුවක් මිලදී ගැනීමට හෝ i2c හරහා සංදර්ශකය සම්බන්ධ කිරීම ඇතුළුව සම්බන්ධතා සුරැකීමට සිදුවේ.

LCD 1602 කටු පිළිබඳ කෙටි විස්තරයක්

අපි LCD1602 කටු දෙස සමීපව බලමු:

සෑම පයින් එකකටම තමන්ගේම අරමුණක් ඇත:

  1. බිම් GND;
  2. බල සැපයුම 5 V;
  3. මොනිටරයේ වෙනස සැකසීම;
  4. විධාන, දත්ත;
  5. දත්ත කියවීම සහ ලිවීම;
  6. සබල කරන්න;

7-14. දත්ත රේඛා;

  1. ප්ලස් backlight;
  2. පසුතල ආලෝකය අඩු කරන්න.

සංදර්ශක පිරිවිතර:

  • අක්ෂර සංදර්ශක වර්ගය, එය සංකේත පැටවීමට හැකි ය;
  • LED විදුලි පහන්;
  • පාලක HD44780;
  • සැපයුම් වෝල්ටීයතාව 5V;
  • 16x2 අක්ෂර ආකෘතිය;
  • මෙහෙයුම් උෂ්ණත්ව පරාසය -20C සිට +70C දක්වා, ගබඩා උෂ්ණත්ව පරාසය -30C සිට +80C දක්වා;
  • බැලීමේ කෝණය අංශක 180.

i2C නොමැතිව Arduino පුවරුව වෙත LCD සම්බන්ධ කිරීමේ රූප සටහන

I2C නොමැතිව මොනිටරයක් ​​සෘජුවම Arduino microcontroller වෙත සම්බන්ධ කිරීම සඳහා වන සම්මත රූප සටහන පහත පරිදි වේ.

සම්බන්ධිත සම්බන්ධතා විශාල සංඛ්යාවක් නිසා, අවශ්ය මූලද්රව්ය සම්බන්ධ කිරීමට ප්රමාණවත් ඉඩක් නොතිබිය හැකිය. I2C භාවිතා කිරීමෙන් වයර් ගණන 4 දක්වා සහ වාඩිලාගෙන සිටින පින් 2 දක්වා අඩු කරයි.

Arduino සඳහා LCD තිර සහ පලිහ මිලදී ගත යුතු ස්ථානය

LCD තිරය 1602 (සහ අනුවාදය 2004) තරමක් ජනප්‍රියයි, එබැවින් ඔබට එය දේශීය අන්තර්ජාල වෙළඳසැල් වල සහ විදේශීය වෙබ් අඩවි වල පහසුවෙන් සොයාගත හැකිය. වඩාත්ම පවතින විකල්ප සඳහා සබැඳි කිහිපයක් මෙන්න:

LCD1602+I2C Blue Screen Module, Arduino අනුකූල වේ සරල LCD1602 සංදර්ශකය (හරිත පසුබිම් ආලෝකය) රූබල් 80 ට වඩා අඩුය Arduino සඳහා I2C HD44780 සහිත විශාල LCD2004 තිරය (නිල් සහ කොළ පසුබිම් ආලෝකය)
IIC ඇඩැප්ටරය සහ නිල් පසුතල ආලෝකය සහිත 1602 සංදර්ශකය පාස්සන ලද I2C මොඩියුලයක් සහිත LCD1602 හි තවත් අනුවාදයක් 1602 පලිහ සඳහා Port IIC/I2C/TWI/SPI ඇඩැප්ටර මොඩියුලය, Arduino සමඟ අනුකූල වේ
RGB backlit display! Arduino සඳහා LCD 16×2 + යතුරු පෑඩය +Buzzer Shield බොත්තම් සහ තිරය LCD1602 LCD 1602 සහිත Arduino සඳහා පලිහ 3D මුද්‍රණ යන්ත්‍රය සඳහා LCD සංදර්ශකය (RAMPS 1.4 සඳහා ස්මාර්ට් පාලකය, පෙළ LCD 20×4), SD සහ MicroSD කාඩ්පත් කියවනය මොඩියුලය

I2C ප්‍රොටෝකෝලය පිළිබඳ විස්තරය

i2c ඇඩැප්ටරය හරහා සංදර්ශකය Arduino වෙත සම්බන්ධ කිරීම ගැන සාකච්ඡා කිරීමට පෙර, i2C ප්‍රොටෝකෝලය ගැන කෙටියෙන් කතා කරමු.

I2C/IIC(Inter-Integrated Circuit) යනු සන්නිවේදනය සඳහා මුලින් නිර්මාණය කරන ලද ප්‍රොටෝකෝලයකි ඒකාබද්ධ පරිපථතුල ඉලෙක්ට්රොනික උපාංගය. සංවර්ධනය පිලිප්ස් සතුය. i2c ප්‍රොටෝකෝලය පදනම් වී ඇත්තේ පාලක ඉලෙක්ට්‍රොනික උපකරණවල බ්ලොක් සන්නිවේදනය කිරීමට අවශ්‍ය 8-bit බස් රථයක් සහ ලිපින පද්ධතියක් භාවිතා කිරීම මත වන අතර ඔබට උපාංග කිහිපයක් සමඟ එකම වයර් හරහා සන්නිවේදනය කළ හැකිය. අපි සරලව දත්ත එක් හෝ වෙනත් උපාංගයකට දත්ත මාරු කරන්නෙමු, දත්ත පැකට් වලට අවශ්ය මූලද්රව්යයේ හඳුනාගැනීම එකතු කරන්න.

වඩාත් සරල පරිපථය I2C හි එක් ප්‍රධාන උපාංගයක් (බොහෝ විට Arduino microcontroller) සහ වහලුන් කිහිප දෙනෙකු (උදාහරණයක් ලෙස, LCD සංදර්ශකයක්) අඩංගු විය හැක. සෑම උපාංගයකටම 7 සිට 127 දක්වා පරාසයක ලිපිනයක් ඇත. එකම පරිපථයක එකම ලිපිනය සහිත උපාංග දෙකක් නොතිබිය යුතුය.

Arduino පුවරුව දෘඩාංග සඳහා i2c සඳහා සහය දක්වයි. මෙම ප්‍රොටෝකෝලය භාවිතයෙන් උපාංග සම්බන්ධ කිරීමට ඔබට A4 සහ A5 පින් භාවිතා කළ හැක.

I2C මෙහෙයුමේ වාසි කිහිපයක් තිබේ:

  • මෙහෙයුමට අවශ්‍ය වන්නේ පේළි 2 ක් පමණි - SDA (දත්ත රේඛාව) සහ SCL (සමමුහුර්ත රේඛාව).
  • ප්රමුඛ උපාංග විශාල සංඛ්යාවක් සම්බන්ධ කිරීම.
  • සංවර්ධන කාලය අඩු කිරීම.
  • සම්පූර්ණ උපාංග කට්ටලයම පාලනය කිරීමට අවශ්‍ය වන්නේ එක් ක්ෂුද්‍ර පාලකයක් පමණි.
  • එක් බස් රථයකට සම්බන්ධ කළ හැකි ක්ෂුද්‍ර පරිපථ සංඛ්‍යාව උපරිම ධාරිතාවයෙන් පමණක් සීමා වේ.
  • පරිපථ තුළට ගොඩනගා ඇති විශේෂ සර්ජ් මර්දන පෙරහනක් හේතුවෙන් ඉහළ මට්ටමේ දත්ත ආරක්ෂාව.
  • නැගී එන අසාර්ථකත්වයන් හඳුනා ගැනීම සහ දෝෂ ඉක්මනින් නිදොස් කිරීම සඳහා සරල ක්රියා පටිපාටියක්.
  • බසය දැනටමත් Arduino තුළම ඒකාබද්ධ වී ඇති බැවින් අමතර බස් අතුරු මුහුණතක් සංවර්ධනය කිරීමට අවශ්‍ය නොවේ.

අඩුපාඩු:

  • රේඛාවේ ධාරිත්‍රක සීමාවක් ඇත - 400 pF.
  • බස් රථයේ විවිධ උපාංග කිහිපයක් තිබේ නම් I2C පාලකයක් වැඩසටහන් කිරීම අපහසුය.
  • උපාංග විශාල සංඛ්‍යාවක් සමඟ, ඒවායින් එකක් වැරදි ලෙස අඩු වුවහොත් දෝෂයක් හුදකලා කිරීම දුෂ්කර වේ.

LCD 1602 Arduino සඳහා i2c මොඩියුලය

Arduino හි i2c සංදර්ශකයක් භාවිතා කිරීමට වේගවත්ම සහ පහසුම ක්‍රමය වන්නේ ප්‍රොටෝකෝල සහාය ඇතිව සූදානම් කළ තිරයක් මිලදී ගැනීමයි. නමුත් මෙම තිර බොහොමයක් නොමැති අතර ඒවා ලාභදායී නොවේ. නමුත් විවිධ සම්මත තිර විශාල සංඛ්යාවක් දැනටමත් නිෂ්පාදනය කර ඇත. එමනිසා, අද වඩාත්ම දැරිය හැකි සහ ජනප්‍රිය විකල්පය වන්නේ වෙනම I2C මොඩියුලයක් මිලදී ගැනීම සහ භාවිතා කිරීමයි - ඇඩැප්ටරය, මේ වගේ ය:

මොඩියුලයේ එක් පැත්තක අපි i2c පින් - බිම, බලය සහ දත්ත හුවමාරුව සඳහා 2 දකිමු. අනෙක් ඇඩප්ටරය මත අපි බාහිර බල සම්බන්ධක දකිමු. තවද, ඇත්ත වශයෙන්ම, පුවරුවේ බොහෝ අල්ෙපෙනති ඇති අතර එමඟින් මොඩියුලය සම්මත තිර කටු වලට පෑස්සේ.


Arduino පුවරුවට සම්බන්ධ වීමට i2c ප්‍රතිදානයන් භාවිතා කරයි. අවශ්ය නම්, අපි පසුබිම් ආලෝකය සඳහා බාහිර බලය සම්බන්ධ කරමු. බිල්ට් ට්‍රයිමරය සමඟ අපට අභිරුචි ප්‍රතිවිරුද්ධ අගයන් සැකසිය හැකිය J

වෙළඳපොලේ ඔබට දැනටමත් පෑස්සුණු ඇඩප්ටර සහිත LCD 1602 මොඩියුල සොයාගත හැකිය; ඒවායේ භාවිතය හැකි තරම් සරල කර ඇත. ඔබ වෙනම ඇඩප්ටරයක් ​​මිලට ගත්තේ නම්, ඔබ මුලින්ම එය මොඩියුලයට පෑස්සීමට අවශ්ය වනු ඇත.

I2C හරහා LCD තිරය Arduino වෙත සම්බන්ධ කිරීම

සම්බන්ධ වීමට, ඔබට Arduino පුවරුවම, සංදර්ශකයක්, බ්‍රෙඩ්බෝඩ් එකක්, සම්බන්ධක වයර් සහ පොටෙන්ටියෝමීටරයක් ​​අවශ්‍ය වේ.

ඔබ විශේෂ වෙනම i2c ඇඩැප්ටරයක් ​​භාවිතා කරන්නේ නම්, ඔබ මුලින්ම එය තිර මොඩියුලයට පෑස්සිය යුතුය. එහි වැරැද්දක් කිරීම අපහසුය, ඔබට මෙම යෝජනා ක්රමය අනුගමනය කළ හැකිය.


i2c ආධාරකයක් සහිත LCD මොනිටරයක් ​​වයර් හතරක් භාවිතයෙන් පුවරුවට සම්බන්ධ කර ඇත - දත්ත සඳහා වයර් දෙකක්, බලය සඳහා වයර් දෙකක්.

  • GND පින් එක පුවරුවේ GND වෙත සම්බන්ධ වේ.
  • VCC පින් එක 5V වේ.
  • SCL පින් A5 වෙත සම්බන්ධ කරයි.
  • SDA පින් A වෙත සම්බන්ධ කර ඇත.

සහ ඒ සියල්ල! පැටලීමට ඉතා පහසු කම්බි දැල් නැත. ඒ අතරම, i2C ප්‍රොටෝකෝලය ක්‍රියාත්මක කිරීමේ සියලු සංකීර්ණත්වය පුස්තකාලවලට සරලව භාර දිය හැකිය.

i2c LCD සංදර්ශකය සමඟ වැඩ කිරීම සඳහා පුස්තකාල

I2C බසය හරහා Arduino සහ LCD 1602 සමඟ අන්තර් ක්‍රියා කිරීමට, ඔබට අවම වශයෙන් පුස්තකාල දෙකක් අවශ්‍ය වේ:

  • I2C සමඟ වැඩ කිරීම සඳහා Wire.h පුස්තකාලය දැනටමත් සම්මතයට ඇතුළත් කර ඇත Arduino වැඩසටහන IDE.
  • LiquidCrystal_I2C.h පුස්තකාලය, I2C බසය හරහා මොනිටරය පාලනය කිරීම සඳහා විවිධ විධාන ඇතුළත් වන අතර ඔබට කටු සටහන සරල හා කෙටි කිරීමට ඉඩ සලසයි. ඔබට අතිරේකව පුස්තකාලය ස්ථාපනය කිරීමට අවශ්‍ය වේ සංදර්ශකය සම්බන්ධ කිරීමෙන් පසු, ඔබ අතිරේකව LiquidCrystal_I2C.h පුස්තකාලය ස්ථාපනය කළ යුතුය

ස්කීච් එකට අවශ්ය සියලුම පුස්තකාල සම්බන්ධ කිරීමෙන් පසුව, අපි වස්තුවක් නිර්මාණය කර එහි සියලුම කාර්යයන් භාවිතා කළ හැකිය. පරීක්ෂා කිරීම සඳහා, අපි පහත සම්මත උදාහරණ කටු සටහන පූරණය කරමු.

#ඇතුළත් #ඇතුළත් // පුස්තකාලය ඇතුළුව //#ඇතුළත් // විකල්ප පුස්තකාලයක් සම්බන්ධ කිරීම LiquidCrystal_I2C lcd(0x27,16,2); // I2C ලිපිනය (වඩාත් පොදු අගය), මෙන්ම තිර පරාමිතීන් සඳහන් කරන්න (LCD 1602 - අක්ෂර 16 බැගින් වූ පේළි 2 බැගින් //LiquidCrystal_PCF8574 lcd(0x27); // PCF8574 පුස්තකාලය හිස් සැකසුම සඳහා විකල්පය ( ) ( lcd.init (); // සංදර්ශකය ආරම්භ කිරීම lcd.backlight(); // පසුතලය සම්බන්ධ කිරීම lcd.setCursor(0,0); // කර්සරය පළමු පේළියේ ආරම්භයට lcd.print(" හෙලෝ"); // පළමු පේළියේ පෙළ ටයිප් කිරීම lcd.setCursor(0,1); // කර්සරය දෙවන පේළියේ ආරම්භයට සකසන්න lcd.print("ArduinoMaster"); // දෙවන පේළියේ පෙළ ටයිප් කරන්න ) void loop() ( )

LiquidCrystal_I2C පුස්තකාලයේ කාර්යයන් සහ ක්‍රම පිළිබඳ විස්තරය:

  • home () සහ clear () - පළමු ශ්‍රිතය මඟින් කර්සරය තිරයේ ආරම්භයට ආපසු යාමට ඉඩ සලසයි, දෙවැන්න එයම කරයි, නමුත් ඒ සමඟම මීට පෙර මොනිටරයේ තිබූ සියල්ල මකා දමයි.
  • ලියන්න (ch) - තිරයට ch තනි අක්ෂරයක් මුද්‍රණය කිරීමට ඔබට ඉඩ සලසයි.
  • cursor() සහ noCursor() - තිරය මත කර්සරය පෙන්වයි/සැගවයි.
  • blink() සහ noBlink() – කර්සරය ඇසිපිය හෙළයි/ඇස්වෙන්නේ නැත (එහි සංදර්ශකය මීට පෙර සක්‍රීය කර ඇත්නම්).
  • display() සහ noDisplay() - ඔබට සංදර්ශකය සම්බන්ධ කිරීමට/අබල කිරීමට ඉඩ සලසයි.
  • scrollDisplayLeft() සහ scrollDisplayRight() - තිරය වමට/දකුණට එක් අක්ෂරයක් අනුචලනය කරයි.
  • autoscroll () සහ noAutoscroll () - ඔබට ස්වයංක්‍රීය අනුචලන ප්‍රකාරය සක්‍රිය / අක්‍රිය කිරීමට ඉඩ සලසයි. මෙම මාදිලියේදී, සෑම නව අක්ෂරයක්ම එකම ස්ථානයේ ලියා ඇත, තිරයේ කලින් ලියා ඇති දේ විස්ථාපනය කරයි.
  • leftToRight () සහ rightToLeft () - පෙන්වන පෙළෙහි දිශාව සැකසීම - වමේ සිට දකුණට හෝ දකුණේ සිට වමට.
  • createChar(ch, bitmap) - කලු සහ සුදු ලක්ෂ්‍ය සෑදීමට bitmap bitmaps මාලාවක් භාවිතා කරමින් ch (0 - 7) කේතය සහිත අක්ෂරයක් නිර්මාණය කරයි.

i2c සංදර්ශකය සමඟ වැඩ කිරීම සඳහා විකල්ප පුස්තකාලය

සමහර අවස්ථාවලදී, PCF8574 පාලකයන්ගෙන් සමන්විත උපාංග සමඟ නිශ්චිත පුස්තකාලය භාවිතා කරන විට දෝෂ ඇතිවිය හැක. මෙම අවස්ථාවේදී, LiquidCrystal_PCF8574.h පුස්තකාලය විකල්පයක් ලෙස යෝජනා කළ හැක. එය LiquidCrystal_I2C දිගු කරයි, එබැවින් එය භාවිතා කිරීමේදී ගැටළු ඇති නොවිය යුතුය.

i2c lcd සංදර්ශකය සම්බන්ධ කිරීමේ ගැටළු

ස්කීච් එක උඩුගත කිරීමෙන් පසු ඔබට සංදර්ශකයේ කිසිදු පණිවිඩයක් නොපෙනේ නම්, පහත පියවර උත්සාහ කරන්න.

පළමුව, ඔබට මොනිටරයේ ප්‍රතිවිරුද්ධතාව වැඩි කිරීමට හෝ අඩු කිරීමට හැකිය. ප්‍රතිවිරෝධතා සහ පසුතල ප්‍රකාරය නිසා බොහෝ විට අක්ෂර නොපෙනේ.

මෙය උදව් නොකරන්නේ නම්, සම්බන්ධතා නිවැරදිව සම්බන්ධ වී ඇත්ද සහ පසුතල බලය සම්බන්ධ වී තිබේද යන්න පරීක්ෂා කරන්න. ඔබ වෙනම i2c ඇඩැප්ටරයක් ​​භාවිතා කළේ නම්, සම්බන්ධතා පෑස්සීමේ ගුණාත්මකභාවය නැවත පරීක්ෂා කරන්න.

තිරය ​​මත පෙළ අතුරුදහන් වීමට තවත් පොදු හේතුවක් වැරදි i2c ලිපිනයක් විය හැකිය. මුලින්ම ස්කීච් එකේ උපාංග ලිපිනය 0x27 0x20 හෝ 0x3F දක්වා වෙනස් කිරීමට උත්සාහ කරන්න. විවිධ නිෂ්පාදකයන්ට විවිධ පෙරනිමි ලිපින වැඩසටහන්ගත කර තිබිය හැක. මෙය උදව් නොකරන්නේ නම්, ඔබට i2c ස්කෑනර් ස්කීච් ක්‍රියාත්මක කළ හැකිය, එය සම්බන්ධිත සියලුම උපාංග පරිලෝකනය කර බෲට් බලය භාවිතයෙන් ඒවායේ ලිපිනය තීරණය කරයි. i2c ස්කෑනර් ස්කීච් එකක උදාහරණයක්.

තිරය ​​තවමත් ක්‍රියා නොකරන්නේ නම්, ඇඩැප්ටරය විසන්ධි කර සුපුරුදු පරිදි LCD සම්බන්ධ කිරීමට උත්සාහ කරන්න.

නිගමනය

මෙම ලිපියෙන් අපි සංකීර්ණ Arduino ව්‍යාපෘතිවල LCD තිරයක් භාවිතා කිරීමේ ප්‍රධාන ගැටළු දෙස බැලුවෙමු, අපට පුවරුවේ නොමිලේ පින් සුරැකීමට අවශ්‍ය වූ විට. සරල සහ මිල අඩු i2c ඇඩැප්ටරයක් ​​ඔබට 1602 LCD තිරයක් සම්බන්ධ කිරීමට ඉඩ සලසයි, ඇනලොග් පින් 2 ක් පමණක් ලබා ගනී. බොහෝ අවස්ථාවන්හිදී මෙය ඉතා වැදගත් විය හැකිය. පහසුව සඳහා මිල අතිරේක මොඩියුලයක් භාවිතා කිරීමේ අවශ්යතාවයි - පරිවර්තකයක් සහ පුස්තකාලයක්. අපගේ මතය අනුව, මෙය පහසුව සඳහා ගෙවීමට ඉහළ මිලක් නොවන අතර ව්‍යාපෘතිවල මෙම විශේෂාංගය භාවිතා කිරීම අපි තරයේ නිර්දේශ කරමු.

ඉලෙක්ට්‍රොනික උපාංග විශාල සංඛ්‍යාවක අනිවාර්ය අංගයක් යනු කුමක්ද? ඇත්ත වශයෙන්ම, ඇඟවීමේ මාධ්‍යයන් සහ දත්තවල චිත්‍රක ප්‍රතිදානය. "ස්මාර්ට් පෙට්ටියේ" ප්රතිඵලය දෘශ්යමය වශයෙන් දැකිය හැකි විට එය සෑම විටම පරිශීලකයාට වඩාත් පහසු සහ ප්රසන්න වේ. එමනිසා, අද අපි පෙළ සහ අංක පෙන්වීමට STM32 වෙත සංදර්ශකයක් සම්බන්ධ කරමු. අපගේ අත්හදා බැලීම්වල වීරයා Winstar වෙතින් තරමක් ජනප්‍රිය සංදර්ශනයක් වනු ඇත. මාර්ගය වන විට, මත පදනම් වූ සියලුම සංදර්ශක සඳහා ක්‍රමවේදය මූලික වශයෙන් සමාන බව අදහස් දැක්වීම්වල වැදගත් පැහැදිලි කිරීමක් දක්නට ලැබුණි. HD44780.වැදගත් එකතු කිරීම සඳහා JekaKey ට ස්තූතියි)

පළමුව, සංදර්ශකය පාලකයට සම්බන්ධ කළ යුතුය. දත්ත පත්‍රිකාව බාගත කර WH1602 පින්අවුට් සොයන්න. මෙහෙ බලන්න:

ඔයා දන්නා පරිදි, WH1602 සංදර්ශකයපින් 16 ක් ඇත. අපි එකින් එක වෙන වෙනම බලමු...

Pins Vss, Vdd සහ K බිමට සහ බලයට සම්බන්ධ කළ යුතුය, එනම් හරියටම වගුවේ දක්වා ඇති පරිදි, විස්මයන් නොමැති අතර සාකච්ඡා කිරීමට පවා කිසිවක් නැත)

ප්‍රතිවිරුද්ධතාව සැකසීමට පින් අංක 3 භාවිතා කරයි - අපි එහි +5V යොදන්නේ නම්, අපට කිසිවක් නොපෙනේ, අපි පින් එක බිමට කෙටි පරිපථයක් කළහොත්, අපි කළු කොටු පේළි දෙකක් අගය කරමු 😉 ස්වාභාවිකවම, මෙය අපට නොගැලපේ. , ඒ නිසා විචල්‍ය ප්‍රතිරෝධයක් සහිත පොටෙන්ටියෝමීටරයක් ​​(ප්‍රතිරෝධකයක්) එල්ලා එහි ප්‍රතිවිරෝධය සකස් කිරීමට අපට අවශ්‍ය වේ. මෙම සංදර්ශක පින් එකේ 0.5-0.7 V වෝල්ටීයතාවයකින් අක්ෂරවල හොඳම දෘශ්‍යතාව සපයනු ලැබේ.

ආර්එස් පින් එක දැනටමත් අප විසින්ම ක්ෂුද්‍ර පාලකයක් භාවිතයෙන් පාලනය කරන පින් එකකි. මෙම පින් එකෙහි අඩු වෝල්ටීයතා මට්ටමක් (0) යන්නෙන් අදහස් වන්නේ දැන් විධානයක් අනුගමනය කරන බවයි, ඉහළ මට්ටමක් (1) යනු දැන් සංදර්ශක මතකයට ලිවීමට දත්ත පවතිනු ඇති බවයි.

Pin R/W - එය මෙහි පැහැදිලිය, එක්කෝ අපි දත්ත කියවමු (උදාහරණයක් ලෙස කාර්යබහුල ධජය පෙන්වන්න), මෙම අවස්ථාවේදී මෙම පින් එකේ 1 ක් ඇත, නැතහොත් අපි සංදර්ශකයට විධානය / දත්ත ලියන්නෙමු, එවිට අපට මෙහි 0 ඇත.

DB7 - DB0 - දත්ත බසය, සහ එය සියල්ලම කියයි)

Pin E යනු ඊනියා Enable සංඥාවයි. මේ සඳහා ඔහු අවශ්ය වේ. සංදර්ශකය සමඟ වැඩ කිරීමට - දත්ත වාර්තා කරන්න හෝ විධානයක් නිකුත් කරන්න - අපි මෙම පින් එකට ධනාත්මක ස්පන්දනයක් නිකුත් කළ යුතුය. එනම්, ක්රියා පටිපාටිය මේ ආකාරයෙන් පෙනෙනු ඇත:

  1. පින්ස් මත RS, R/W, DB7 - DB0 - අපගේ විධානයට අනුරූප වන අවශ්ය සංඥා.
  2. අපි ඊ පින් එකට එකක් සප්ලයි කරනවා.
  3. Zhdems (දත්ත පත්‍රිකාවට අනුව - අවම වශයෙන් 150 ns)
  4. E පින් කිරීමට අපි අඩු මට්ටමක් (0) යොදන්නෙමු.

සංදර්ශක පසුතල ආලෝකය බල ගැන්වීමට ඔබ A/Vee කකුලට 4.2 V දැමිය යුතුය.

WH1602 සංදර්ශකය සමඟ සන්නිවේදනය සිදු වන්නේ එලෙස ය.

අපි WH1602 සම්බන්ධ කිරීම හඳුනාගෙන ඇත, නමුත් උදාහරණයට යාමට පෙර, අපගේ සංදර්ශකය සාමාන්‍යයෙන් තේරුම් ගන්නා විධාන මොනවාදැයි බලමු. මෙය සිදු කිරීම සඳහා, අපි දත්ත පත්‍රිකාවට ගොස් රසවත් වගුවක් සොයා ගනිමු:

එක් එක් විශේෂිත විධානය සඳහා WH1602 හි අනුරූප පින් මත තිබිය යුතු සියලුම විධාන සහ සංඥා මෙහි විස්තර කෙරේ. උදාහරණයක් ලෙස, අපට සංදර්ශකය ඉවත් කිරීමට අවශ්යයි, අපි මේසය දෙස බලමු, මෙන්න අපට අවශ්ය විධානය! සංදර්ශකය පැහැදිලි කරන්න!

අපි RS, R/W, DB7, DB6, DB5, DB4, DB3, DB2, DB1, සහ DB0 පින් කිරීමට ශුන්‍ය යොදන්නෙමු. ඉවරයි! ඊළඟට මොකක්ද? ඒක හරි, Pin E එකේ එකක්, ඊට පස්සේ ටිකක් වෙලා ඉඳලා E එක ආයෙත් බිංදුවට අඩු කරන්න. එපමණයි, සංදර්ශකය හිස් වී ඇත 😉 ඊළඟ විධානය ක්‍රියාත්මක කිරීමට පෙර ඔබ විරාම කළ යුතුය, එක් එක් විධානය සඳහා දත්ත පත්‍රිකාවේ දක්වා ඇත. කාර්යබහුල ධජය ඡන්ද විමසීම වඩාත් ඵලදායී වනු ඇත; එය 0 වෙත යළි සැකසූ වහාම, ඔබට දිගටම වැඩ කළ හැක. මෙම ධජය කියවීම සඳහා විශේෂ විධානයක් ද ඇත, එබැවින් මෙය සමඟ සියල්ල පැහැදිලි වේ) අපි ඉදිරියට යමු ...

තවද, ඇත්ත වශයෙන්ම, සෑම දෙයක්ම න්යාය සමඟ ඇත, ඔබට දැනටමත් යමක් ලිවීමට උත්සාහ කළ හැකිය. සංදර්ශකය සමඟ වැඩ කිරීම පහසු කිරීම සඳහා, මම කුඩා පුස්තකාලයක් සෑදුවෙමි, දැන් එය භාවිතා කළ හැකි ආකාරය බලමු. පළමුව, බාගත කරන්න

අප සතුව ගොනු 2 ක් ලැබේ, MT_WH1602.c සහ MT_WH1602.h. අපි දෙවැන්න ඉරා දමමු, මෙහිදී අපි භාවිතා කරන අල්ෙපෙනති සහ පාලකය තෝරා ගත යුතුය.

මාර්ගය වන විට, මගේ සංදර්ශකය මේ ආකාරයට සම්බන්ධ වේ:

RS-PC2
R/W - PB10
E-PB14
DB7-PD2
DB6-PC12
DB5-PA8
DB4-PA10
DB3-PA15
DB2-PD11
DB1-PA3
DB0-PA5

MT_WH1602.h ගොනුව විවෘත කරන්න:

#වේදිකාව නිර්වචනය කරන්න (STM32F10x)

ඊළඟට, සංදර්ශකය සම්බන්ධ කර ඇති මයික්‍රොකොන්ට්‍රෝලර් පින් තෝරන්න. මුලින්ම අපි භාවිතා කරන්නේ කුමන වරායද යන්න තීරණය කරමු. මම සම්බන්ධ වන විට, මම GPIOA, GPIOB, GPIOC සහ GPIOD භාවිතා කරමි, අපි ලියන්නේ:

ඒ හා සමානව අනෙකුත් ක්ෂුද්ර පාලක කකුල් සඳහා.

අපි සැකසුම අවසන්, අපි දිගටම කරගෙන යමු) ලිපියේ ආරම්භයේ දී ලබා දී ඇති විධානයන් ඇමතීමට, MT_WH1602.c ගොනුවේ පහත සඳහන් කාර්යයන් අඩංගු වේ (ඒවා විධානවල නම් වලින් නම් කර ඇත, එබැවින් සියල්ල පැහැදිලි යැයි මම සිතමි) :

void MT_WH1602_ClearDisplay(void ); void MT_WH1602_ReturnHome(void ); හිස් MT_WH1602_EntryModeSet (bool IDaddress, bool shift) ; හිස් MT_WH1602_DisplayOnOff (bool Dbit, bool Cbit, bool Bbit) ; හිස් MT_WH1602_CursorOrDisplayShift (bool SCbit, bool RLbit) ; හිස් MT_WH1602_FunctionSet (bool DLbit, bool Nbit, bool Fbit) ; අවලංගු MT_WH1602_SetCGRAMA ලිපිනය (uint8_t ලිපිනය) ; අවලංගු MT_WH1602_SetDDRAMA ලිපිනය (uint8_t ලිපිනය) ; bool MT_WH1602_ReadBusy(ශුන්‍ය) ; අවලංගු MT_WH1602_WriteData(uint8_t දත්ත) ;

සමහර විධාන සඳහා අපි ශ්‍රිතයට පරාමිති ලබා දිය යුතුය, උදාහරණයක් ලෙස:

හිස් MT_WH1602_DisplayOnOff (bool Dbit, bool Cbit, bool Bbit) ;

අපි විධාන වගුව දෙස බලමු:

Display ON/OFF විධානය මඟින් සංදර්ශකය සක්‍රිය / අක්‍රිය කරනවා පමණක් නොව, කර්සරය සහ කර්සරය දැල්වීම සක්‍රිය / අක්‍රිය කරන බව අපට පෙනේ. දත්ත පත්‍රිකාවේ, මෙම විධාන බිටු D, C සහ B ලෙස නම් කර ඇති අතර, අපි ඒවා ශ්‍රිතයට පරාමිති ලෙස ලබා දෙන්නෙමු. අපට සංදර්ශකය සහ කර්සරය සක්‍රිය කිරීමට අවශ්‍ය නම්, නමුත් කර්සරය දැල්වීම අක්‍රීය කිරීමට, අපි පහත දැක්වෙන විධානය අමතන්නෙමු:

MT_WH1602_DisplayOnOff(1, 1, 0);

පොදුවේ, සෑම දෙයක්ම සරලයි

කෙටියෙන් කිවහොත්, අපි නිර්මාණය කරමු නව ව්යාපෘතිය, WH1602 සංදර්ශකය සමඟ වැඩ කිරීම සඳහා පුස්තකාලයක් එක් කරන්න, හිස් .c ගොනුවක් සාදා එය කේතයෙන් පිරවීම ආරම්භ කරන්න:

// පුස්තකාල ගොනුව ඇතුළත් කරන්න#"MT_WH1602.h" ඇතුලත් කරන්න /*******************************************************************/ int ප්‍රධාන (ශුන්‍ය) ( // ආරම්භක කාර්යය අමතන්න, අපට එය නොමැතිව කළ නොහැක =)() ; // දැන් අපි මූලික සංදර්ශක වින්‍යාසය සෑදිය යුතුයි // ලේඛන සහ අන්තර්ජාලය මෙය කිරීමට නිර්දේශ කරයි;) MT_WH1602_FunctionSet(1, 0, 0); MT_WH1602_Delay(1000 ); MT_WH1602_FunctionSet(1, 0, 0); MT_WH1602_Delay(1000 ); MT_WH1602_FunctionSet(1, 0, 0); MT_WH1602_Delay(1000 ); MT_WH1602_FunctionSet(1, 1, 1); MT_WH1602_Delay(1000 ); MT_WH1602_DisplayOnOff (1, 0, 0); MT_WH1602_Delay(1000 ); MT_WH1602_ClearDisplay() ; MT_WH1602_Delay (2000) ; // උදාහරණයක් ලෙස, මම මතකයට පැමිණි පළමු ප්‍රමාද අගයන් ගත්තෙමි) // පොදුවේ, ඔබ සංදර්ශක කාර්යබහුල ධජය පරීක්ෂා කළ යුතුය // දැන් අපි අපේ අඩවියේ නම වැනි යමක් පෙන්වමු MT_WH1602_WriteData(0x6D) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x69) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x63) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x72) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x6F) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x74) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x65) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x63) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x68) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x6E) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x69) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x63) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x73) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x2E) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x72) ; MT_WH1602_Delay (100) ; MT_WH1602_WriteData(0x75) ; MT_WH1602_Delay (100) ; අතර (1 ) (__NOP() ;) ) /*******************************************************************/

ඉවරයි, අපි බලමු)


ඔබට පෙනෙන පරිදි, සියල්ල නිවැරදිව ක්රියා කරයි)

මාර්ගය වන විට, මෙම හෝ එම චරිතය ප්රදර්ශනය කිරීම සඳහා සංදර්ශකය මත ලිවිය යුතු දේ පිළිබඳ ප්රශ්නය මට කෙසේ හෝ අහිමි විය. දත්ත පත්‍රිකාවේ තහඩුව මෙන්න:

එබැවින්, සංදර්ශක මතකයට ලිවිය යුතු අගය තීරණය කිරීම සඳහා, ඔබ විශේෂිත සංකේතයක් සඳහා මෙම වගුවේ ඉහළින් ලියා ඇති අංක රැගෙන යා යුතුය. උදාහරණයක් ලෙස, "A" සංකේතය. අපි බලමු - මෙම සංකේතය තීරු 0100 (0x4) සහ 0001 (0x1) රේඛාවට අනුරූප වේ. “A” සංකේතය පෙන්වීමට ඔබ 0x41 අගය සංදර්ශකයට ලිවිය යුතු බව පෙනේ.

දැන් එපමණයි =) අපි WH1602 සංදර්ශකයේ සම්බන්ධතාවය සහ ක්‍රියාකාරිත්වය නිරාකරණය කර ඇත, එබැවින් ඉක්මනින් හමුවෙමු!

පී.එස්. පුස්තකාලය සමඟ වැඩ කරන විට, කාර්යබහුල ධජය කියවීමේ කාර්යය මම පරීක්ෂා නොකළෙමි, එබැවින් හදිසියේම යමක් ක්‍රියා නොකරන්නේ නම්, ලියන්න, අපි එය තේරුම් ගනිමු)

සමහර විට අපි Arduino වෙතින් විවිධ තොරතුරු බාහිර ලෝකයට ප්‍රතිදානය කිරීමේ ගැටලුවට මුහුණ දී සිටිමු. බොහෝ විට, අනුක්‍රමික වරායක් භාවිතා කිරීම කළ නොහැකි, අපහසු සහ ලාභ නොලබයි.

අක්ෂර සංදර්ශකය යනු කේතනය කරන ලද අක්ෂර ගබඩා කරන තමන්ගේම ක්ෂුද්‍ර පාලකයක් ඇති නිසා තොරතුරු ප්‍රදර්ශනය කිරීමේ සරලම සහ ලාභම මාධ්‍යයකි. මෙම පද්ධතිය මෙම සංදර්ශක භාවිතය සරල කරයි, නමුත් ඒ සමඟම ඒවායේ භාවිතය ප්‍රතිදානයට පමණක් සීමා කරයි. පෙළ තොරතුරු, ග්‍රැෆික් සංදර්ශක මෙන් නොව.

උදාහරණයේදී, අපි hd44780 පාලකයේ වඩාත් පොදු සංදර්ශක වලින් එකක් වන Winstar wh1602l1 සංදර්ශකය දෙස බලමු. ඊට අමතරව, ඔබට LCD 2004 සහ වෙනත් සමාන ඒවා සම්බන්ධ කළ හැකිය.
පළමු ඉලක්කම් දෙකෙන් පේළියකට අක්ෂර ගණන ද, දෙවැන්න පේළි ගණන ද දක්වයි, එබැවින් තෝරාගත් සංදර්ශකය අක්ෂර 16 කින් යුත් පේළි 2 ක් ඇත.
මෙම සම්බන්ධතා ක්‍රමයට අවම වශයෙන් Arduino ක්ෂුද්‍ර පාලකයේ වරායන් 6 ක් වත් අල්ලා ගැනීම ඇතුළත් වේ. අවශ්ය නම්, ඔබට I2C අතුරුමුහුණත (වරාය 2) හරහා 1602 පෙළ සංදර්ශකය සම්බන්ධ කළ හැකිය.

අපට අවශ්ය අතිරේක මූලද්රව්ය වලින් විචල්ය ප්රතිරෝධකය, පරස්පරතාව පාලනය කිරීමට. එසේ නොමැතිනම්, සෑම දෙයක්ම රූප සටහනට අනුව, දත්ත පත්‍රිකාවට අනුව සහ වැඩසටහනේ තෝරාගත් Arduino ප්‍රතිදාන වලට අනුව සම්බන්ධ වේ.

සංදර්ශකයේ ඇති පින් 15 සහ 16 පසුබිම් ආලෝකය සඳහා වගකිව යුතු ය; එය අක්‍රිය කළ හැකිය, නැතහොත් දීප්තිය සංවේදකයක් ලෙස Arduino වෙත ඡායාරූප ප්‍රතිරෝධකයක් සම්බන්ධ කරන විට දීප්තිය ස්වයංක්‍රීයව සකස් කළ හැකිය.

අපගේ උදාහරණයේදී, අපි අනුක්‍රමික වරායෙන් දත්ත කියවා එය සංදර්ශකයේ පෙන්වමු:

#ඇතුළත් // අක්ෂර සංදර්ශක LiquidCrystal lcd (13, 11, 5, 4, 3, 2) සමඟ වැඩ කිරීම සඳහා පුස්තකාලය සම්බන්ධ කරන්න; // (RS, E, D4, D5, D6, D7) අනුපිළිවෙලට අනුව සංදර්ශක ප්‍රතිදානයන් සම්බන්ධ කරන්න, R/W - GND, මන්ද අපි සංදර්ශකයට දත්ත ලියන අතර හිස් සැකසුම () ( lcd.begin( lcd.begin() 16. ()) // දත්ත පැමිණෙන්නේ වරායෙන් නම්, එසේ නම්... ( delay(100); lcd.clear(); // (Serial.available() > 0) // දත්ත පැමිණෙන්නේ නම්, තිරය සම්පූර්ණයෙන්ම හිස් කරන්න 0 ට වැඩි වරාය, පසුව ... (lcd.write(Serial.read()); // අනුක්‍රමික වරායෙන් අගයන් කියවා ඒවා සංදර්ශකයේ පෙන්වන්න) )

ඔබට කේතය සංකීර්ණ කර Arduino හි DS1307 තත්‍ය කාලීන ඔරලෝසුව ඔබේ LCD1602 වෙත ප්‍රතිදානය කළ හැක.

දැන් අපි පුස්තකාලයේ සියලුම කාර්යයන් දෙස සමීපව බලමු LiquidCrystal:

පළමු හා වැදගත්ම දෙය නම්, මෙම පුස්තකාලය භාවිතා කිරීමෙන් ඔබට රුසියානු අකුරු සංදර්ශණය කළ නොහැක, සංදර්ශකයේ මෙම අක්ෂර මතකයේ තිබුණත්. මෙම ගැටළුව වෙනත් පුස්තකාල මගින් හෝ ෂඩ් දශම කේතය භාවිතයෙන් අගයන් ලිවීමෙන් විසඳා ගත හැක.

lcd.print();- තොරතුරු ප්රදර්ශනය කිරීමට භාවිතා කරන සරලම සහ නිතර භාවිතා වේ.

lcd. පැහැදිලිව(); - සංදර්ශකය පිරිසිදු කිරීමට භාවිතා කරයි.

lcd.setCursor(x, y); - කර්සරය නිශ්චිත ස්ථානයක තබයි.

X - රේඛාවේ පිහිටීම වෙනස් කිරීම

Y - රේඛාව වෙනස් කිරීම

උදාහරණයක් ලෙස, lcd.setCursor(0, 0); මෙය ඉහළ වම් කොටුවයි.

lcd.home(); -කර්සරය 0, 0 ස්ථානයේ තබයි

lcd.home(); = lcd.setCursor(0, 0);

lcd. අනුචලනය DisplayLeft(); - වමට මාරු කරන්න

lcd. අනුචලනය DisplayRight(); - දකුණට මාරු කරන්න

Lcd.createChar(නම, අරාව); - ඔබේම ලකුණක් නිර්මාණය කිරීම.

උදාහරණයක් ලෙස, උපාධි ලකුණ මේ වගේ ය:

Celc = (B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000 );




ඉහල