LCD I2C მოდული Arduino-სთან დასაკავშირებლად. LCD I2C მოდული Arduino LCD კავშირის ეკრანთან დასაკავშირებლად i2c ინტერფეისის უკან

LCD დისპლეი- Arduino პროექტების ხშირი სტუმარი. თუმცა, დასაკეცი სქემებში შეიძლება გვქონდეს პრობლემა Arduino-ს პორტების არარსებობის გამო ეკრანის დაკავშირების აუცილებლობის გამო, რომელსაც ბევრი კონტაქტი აქვს. ამ სიტუაციიდან გამოსავალი შეიძლება იყოს I2C/IICადაპტერი, რომელიც აკავშირებს პრაქტიკულად სტანდარტულ Arduino 1602 ეკრანს Uno, Nano ან Mega დაფებთან დამატებით 4 ქინძისთავთან ერთად. ეს სტატია გვიჩვენებს, თუ როგორ შეგიძლიათ დააკავშიროთ LCD ეკრანი I2C ინტერფეისით, როგორ შეხვიდეთ ბიბლიოთეკებზე, დაწეროთ მოკლე მაგალითი და გადახედოთ ტიპურ აპლიკაციებს.

Თხევად კრისტალური ეკრანი LCD 1602ეს არის პირველი არჩევანი სხვადასხვა პროექტში სიმბოლოების რიგების ჩვენებისთვის. ეს არის იაფი, სხვადასხვა მოდიფიკაციით, სხვადასხვა განათების ფერებით, შეგიძლიათ მარტივად შექმნათ მზა ბიბლიოთეკები Arduino-ს ესკიზისთვის. მაგრამ ამ ეკრანის ყველაზე დიდი ნაკლი არის ის, რომ დისპლეს აქვს 16 ციფრული ელემენტი, რომელთაგან სულ მცირე 6 არის. ეს LCD ეკრანი i2c-ის გარეშე სერიოზული პრობლემაა Arduino Uno ან Nano დაფებისთვის. თუ კონტაქტები არ არის, მოგიწევთ იყიდოთ Arduino Mega დაფა ან დაიცვათ კონტაქტები, მათ შორის დისპლეის დასაკავშირებლად i2c-ის საშუალებით.

LCD 1602 ქინძისთავის მოკლე აღწერა

მოდით უფრო ახლოს მივხედოთ LCD1602 ტექნოლოგიას:

ვაზის კანს აქვს თავისი მნიშვნელობა:

  1. სახმელეთო GND;
  2. ხარჩუვანია 5;
  3. მონიტორის კონტრასტის დაყენება;
  4. გუნდი, მონაცემები;
  5. მონაცემების ჩაწერა და წაკითხვა;
  6. ჩართვა;

7-14. მონაცემთა ხაზები;

  1. პლუს მხარდაჭერა;
  2. მინუს განათება.

ჩვენების სპეციფიკაციები:

  • ჩვენების სიმბოლური ტიპი - სიმბოლოების დანერგვის შესაძლებლობა;
  • LED განათება;
  • კონტროლერი HD44780;
  • ცოცხალი ძაბვა 5V;
  • ფორმატირება 16x2 სიმბოლო;
  • ოპერაციული ტემპერატურის დიაპაზონი: -20°С-დან +70°С-მდე, შენახვის ტემპერატურის დიაპაზონი: -30°С-დან +80°С-მდე;
  • ნება მომეცით 180 გრადუსზე ვიხედო.

LCD-ის დაკავშირების დიაგრამა Arduino დაფაზე i2C-ის გარეშე

მონიტორის პირდაპირ Arduino მიკროკონტროლერთან I2C-ის გარეშე დაკავშირების სტანდარტული სქემა ასე გამოიყურება.

დაკავშირებული კონტაქტების დიდი რაოდენობის გამო, შეიძლება არ იყოს საკმარისი სივრცე საჭირო ელემენტების მისაღებად. I2C გადამრთველი ცვლის ისრების რაოდენობას 4-მდე, ხოლო დაკავებული ქინძისთავების რაოდენობა 2-მდე.

სად ვიყიდოთ LCD ეკრანები და ფარები Arduino-სთვის

LCD ეკრანი 1602 (და ვერსია 2004) ძალიან პოპულარულია, ასე რომ თქვენ შეგიძლიათ მარტივად იპოვოთ იგი როგორც ადგილობრივ ონლაინ მაღაზიებში, ასევე უცხოურ ბაზრებზე. მოდით შევხედოთ არსებულ ვარიანტებს:

LCD1602+I2C მოდული ლურჯი ეკრანით, კომბინირებული Arduino-სთან მარტივი LCD1602 დისპლეი (მწვანე განათება) 80 რუბლზე იაფი დიდი LCD2004 ეკრანი I2C HD44780 Arduino-სთვის (ლურჯი და მწვანე განათება)
ეკრანი 1602 IIC ადაპტერით და ლურჯი განათებით LCD1602-ის კიდევ ერთი ვერსია შედუღებული I2C მოდულით პორტი IIC/I2C/TWI/SPI ადაპტერის მოდული ეკრანისთვის 1602, შესაფერისი Arduino-სთვის
ჩვენება RGB კონცენტრატორებით! LCD 16×2 + კლავიატურა + Buzzer Shield Arduino-სთვის ფარი Arduino-სთვის ღილაკებით და ეკრანით LCD1602 LCD 1602 LCD დისპლეი 3D პრინტერისთვის (ჭკვიანი კონტროლერი RAMPS 1.4-ისთვის, ტექსტური LCD 20×4), SD და MicroSD ბარათის წამკითხველის მოდული

I2C პროტოკოლის აღწერა

პირველ რიგში, მოდით მოკლედ ვისაუბროთ დისპლეის Arduino-სთან i2c ადაპტერის საშუალებით დაკავშირებაზე, მოკლედ ვისაუბროთ თავად i2C პროტოკოლზე.

I2C/IIC(Inter-Integrated Circuit) არის პროტოკოლი, რომელიც თავდაპირველად შეიქმნა ელექტრონული მოწყობილობის შუაში ინტეგრირებული სქემების დასაკავშირებლად. დიზაინი ეკუთვნის ფილიპსის კომპანიას. i2c პროტოკოლი დაფუძნებულია ვიკორისტულ 8-ბიტიან ავტობუსზე, რომელიც საჭიროა ელექტრონიკის ბლოკების დასაკავშირებლად, რომლებიც აკონტროლებენ მას, და მისამართების სისტემას, რომელიც შეიძლება დაკავშირებული იყოს იმავე სადენებთან ერთად და გარე შენობებთან. ჩვენ უბრალოდ ვაწვდით მონაცემებს ამა თუ იმ მოწყობილობას, მონაცემთა პაკეტებს ვამატებთ საჭირო ელემენტის იდენტიფიკატორს.

უმარტივეს I2C წრეში შეიძლება განთავსდეს ერთი სადენიანი მოწყობილობა (ჩვეულებრივ Arduino მიკროკონტროლერი) და მრავალი მოწყობილობა (მაგალითად, LCD დისპლეი). თითოეულ მოწყობილობას აქვს მისამართი 7-დან 127-მდე დიაპაზონში. ერთი და იგივე მისამართის მქონე ორი მოწყობილობა არ არის საჭირო ერთ წრეში ყოფნა.

Arduino დაფა მხარს უჭერს i2c-ს აპარატურის დონეზე. ამ პროტოკოლის გამოყენებით მოწყობილობების დასაკავშირებლად შეგიძლიათ გამოიყენოთ A4 და A5 პინები.

I2C რობოტში შეგიძლიათ იხილოთ მთელი რიგი უპირატესობები:

  • სამუშაოსთვის საჭიროა მინიმუმ 2 ხაზი - SDA (მონაცემთა ხაზი) ​​და SCL (სინქრონიზაციის ხაზი).
  • დიდი რაოდენობით სადენიანი მოწყობილობების დაკავშირება.
  • არეულობის საათის შეცვლა.
  • მოწყობილობების მთელი ნაკრების გასაკონტროლებლად საჭიროა მხოლოდ ერთი მიკროკონტროლერი.
  • ნებისმიერი რაოდენობის მიკროსქემები, რომლებიც დაკავშირებულია ერთ ავტობუსთან, გარშემორტყმულია მხოლოდ სასაზღვრო სიმძლავრით.
  • სპეციალური ფილტრის საშუალებით მონაცემთა დაზოგვის მაღალი დონე თრგუნავს სქემებში წარმოქმნილ ნაპერწკლებს.
  • მარტივი პროცედურა წარმოქმნილი ხარვეზების დიაგნოსტიკისა და ხარვეზების აღმოსაფხვრელად.
  • ავტობუსი უკვე ინტეგრირებულია თავად Arduino-ში, ამიტომ არ არის საჭირო ავტობუსის ინტერფეისის შემდგომი გაფართოება.

ნედოლიკი:

  • ხაზის ძირითადი მიკერძოება არის 400 pF.
  • მნიშვნელოვანია I2C კონტროლერის დაპროგრამება, რადგან ავტობუსში არის მრავალი სხვადასხვა მოწყობილობა.
  • მოწყობილობების დიდი რაოდენობით, ძნელი ხდება მარცხის ლოკალიზაცია, რადგან ერთ-ერთი მათგანი ავტომატურად აყენებს დაბალი დონის ფაქტორს.

i2c მოდული LCD 1602 Arduino-სთვის

Arduino-ში i2c დისპლეის დაყენების საუკეთესო და მარტივი გზა არის მზა ეკრანის შეძენა ჩაშენებული პროტოკოლით. მაგრამ ასეთი ეკრანები ვერ იტანს სუნს, არ არის იაფი. და სხვადასხვა სტანდარტული ეკრანების ღერძმა უკვე დიდი ძალა გამოიღო. ამიტომ, დღეს ყველაზე ხელმისაწვდომი და ყველაზე პოპულარული ვარიანტია მიმდებარე I2C მოდულის შეძენა და შეცვლა - ადაპტერი, რომელიც ასე გამოიყურება:

მოდულის ერთ მხარეს არის i2c ქინძისთავები - მიწა, სიცოცხლე და 2 მონაცემთა გადაცემისთვის. სხვა ადაპტერიდან ჩვენ გამოვიყენებთ გარე სიცოცხლის ვარდებს. და, რა თქმა უნდა, დაფაზე არის შიშველი ქვედა ნაწილი, გარდა ამისა, მოდული არის შედუღებული ეკრანის სტანდარტულ კომპონენტებზე.


Arduino-ს გადახდასთან დასაკავშირებლად გამოიყენეთ i2c გამოსვლა. საჭიროების შემთხვევაში, ჩვენ ვუკავშირდებით გარე წყაროს განათებისთვის. ჩაშენებული მორთვითი რეზისტორის დახმარებით შეგვიძლია დაარეგულიროთ კონტრასტის პარამეტრები J

ბაზარზე შეგიძლიათ იპოვოთ LCD 1602 მოდულები შედუღებული გადამყვანებით, მათი მონტაჟი მაქსიმალურად გამარტივებულია. თუ იგივე ადაპტერი იყიდეთ, წინასწარ დაგჭირდებათ მოდულზე შედუღება.

RK ეკრანის დაკავშირება Arduino-სთან I2C-ის საშუალებით

დასაკავშირებლად გჭირდებათ თავად Arduino დაფა, დისპლეი, პურის დაფა, კონექტორები და პოტენციომეტრი.

თუ იყენებთ სპეციალურ i2c ადაპტერს, ჯერ დაგჭირდებათ მისი შედუღება ეკრანის მოდულზე. მნიშვნელოვანია იქ მოწყალება, შეგიძლიათ ჩაერთოთ ასეთ სქემაში.


RCD მონიტორი i2c-ის მხარდაჭერით დაკავშირებულია დამატებითი ოთხი ისრის გადახდამდე - ორი ისარი მონაცემებისთვის, ორი ისარი სიცოცხლისთვის.

  • GND კავშირი უკავშირდება GND-ს დაფაზე.
  • VCC არის 5 ვ.
  • SCL უკავშირდება პინ A5-ს.
  • SDA უკავშირდება პინ A-ს.

Სულ ეს არის! მოგზაურობის გრძელი ქსელები, რომლებშიც ადვილია დაიკარგო. ამ შემთხვევაში, ჩვენ შეგვიძლია უბრალოდ ბიბლიოთეკებს მივანდოთ i2C პროტოკოლის განხორციელების მთელი სირთულე.

ბიბლიოთეკები რობოტებისთვის i2c LCD დისპლეით

Arduino-სა და LCD 1602-ს შორის I2C ავტობუსის საშუალებით კომუნიკაციისთვის, დაგჭირდებათ მინიმუმ ორი ბიბლიოთეკა:

  • Wire.h ბიბლიოთეკა I2C-თან მუშაობისთვის უკვე შედის სტანდარტულ Arduino IDE პროგრამაში.
  • LiquidCrystal_I2C.h ბიბლიოთეკა, რომელიც მოიცავს მრავალფეროვან ბრძანებებს მონიტორის I2C ავტობუსის საშუალებით მართვისთვის, საშუალებას გაძლევთ შექმნათ უფრო მარტივი და მოკლე ესკიზი. აუცილებელია ბიბლიოთეკის დამატებით დაინსტალირება ეკრანის დაკავშირების შემდეგ, თქვენ უნდა დააინსტალიროთ ბიბლიოთეკა LiquidCrystal_I2C.h

ყველა საჭირო ბიბლიოთეკის ესკიზთან დაკავშირების შემდეგ, ჩვენ ვქმნით ობიექტს და შეგვიძლია მისი ფუნქციების მორგება. ტესტირებისთვის მნიშვნელოვანია კონდახზე სტანდარტული ესკიზის გამოყენება.

#შეიცავს #შეიცავს // ბიბლიოთეკის კავშირები //#include // ალტერნატიული ბიბლიოთეკის დაკავშირება LiquidCrystal_I2C lcd(0x27,16,2); // მიუთითეთ I2C მისამართი (ყველაზე ფართო მნიშვნელობა) და მიუთითეთ ეკრანის პარამეტრები (LCD 1602-ისთვის - 2 სტრიქონი 16 სიმბოლოთი თითო //LiquidCrystal_PCF8574 lcd(0x27); // ვარიანტი PCF8574 ბიბლიოთეკის void setup() ( lcd. init ( // დისპლეის ინიციალიზაცია lcd.backlight( // lcd.setCursor(0,0) კურსორის დაყენება; .print("ArduinoMaster") // აკრიფეთ ტექსტი სხვა რიგში)

LiquidCrystal_I2C ბიბლიოთეკის ფუნქციებისა და მეთოდების აღწერა:

  • home() და clear() – პირველი ფუნქცია საშუალებას გაძლევთ მოატრიალოთ კურსორი ეკრანის ზედა ნაწილში, ასევე აჩვენოთ ყველაფერი, რაც ადრე იყო მონიტორზე.
  • write(ch) – გაძლევთ საშუალებას დაწეროთ ერთი სიმბოლო ch ეკრანზე.
  • კურსორი() და noCursor() - კურსორის ჩვენება/დამალვა ეკრანზე.
  • blink() და noBlink() – კურსორი ციმციმებს/არ ციმციმებს (თუ მისი ჩვენება ადრე იყო ჩართული).
  • display() და noDisplay() – საშუალებას გაძლევთ დააკავშიროთ/ჩართოთ ეკრანი.
  • scrollDisplayLeft() და scrollDisplayRight() – ეკრანის გადახვევა ერთი მარცხენა/მარჯვენა ნიშნით.
  • autoscroll() და noAutoscroll() – საშუალებას გაძლევთ ჩართოთ/გამორთოთ ავტოსკროლი რეჟიმი. კანის რომელი რეჟიმისთვის, ახალი სიმბოლო ჩაიწერება იმავე ადგილას, რომელიც ადრე ეწერა ეკრანზე.
  • leftToRight() და rightToLeft() – პირდაპირ ნაჩვენები ტექსტის ჩასმა – მარცხნიდან მარჯვნივ ან მარჯვნივ მარცხნივ.
  • createChar(ch, bitmap) – ქმნის სიმბოლოს კოდით ch (0 – 7), ბიტმაპ ბიტმაპების მასივის გამოყენებით შავი და თეთრი წერტილების შესაქმნელად.

ალტერნატიული ბიბლიოთეკა რობოტებისთვის i2c დისპლეით

ზოგიერთ შემთხვევაში, როდესაც მინიჭებული ბიბლიოთეკა PCF8574 კონტროლერებით აღჭურვილი მოწყობილობებით დაზიანებულია, შეიძლება მოხდეს შეცდომები. ამ ვარიანტის ალტერნატივა არის ბიბლიოთეკა LiquidCrystal_PCF8574.h. ის აფართოებს LiquidCrystal_I2C-ს, რაც არ არის პრობლემების მიზეზი გამარჯვებულებისთვის.

პრობლემები i2c LCD დისპლეის დაკავშირებისას

თუ ესკიზზე დაჭერის შემდეგ ეკრანზე ვერ ხედავთ სასურველ შეტყობინებას, სცადეთ დააწკაპუნოთ ამ მოქმედებებზე.

უპირველეს ყოვლისა, შეგიძლიათ გაზარდოთ ან შეცვალოთ მონიტორის კონტრასტი. ხშირად პერსონაჟები უბრალოდ არ ჩანს კონტრასტული და განათების რეჟიმებით.

თუ ეს არ დაგვეხმარება, შეამოწმეთ, რომ კონტაქტები სწორად არის დაკავშირებული და ელექტრომომარაგება ჩართულია. თუ იყენებდით თავსებადი i2c ადაპტერს, კვლავ შეამოწმეთ კონტაქტების შედუღების წერტილი.

ეკრანზე ტექსტის გამოტოვების კიდევ ერთი გავრცელებული მიზეზი შეიძლება იყოს არასწორი i2c მისამართები. შეეცადეთ დაიმახსოვროთ ესკიზებში მოწყობილობის მისამართი 0x27 0x20 ან 0x3F. სხვადასხვა დისტრიბუტორს შეიძლება ჰქონდეს განსხვავებული მისამართი გადახდისთვის. თუ ეს არ დაგვეხმარება, შეგიძლიათ გაუშვათ i2c სკანერის ესკიზი, რომელიც უყურებს მოწყობილობის ყველა კავშირს და განსაზღვრავს მათ მისამართებს უხეში ძალის მეთოდის გამოყენებით. i2c სკანერის კონდახის ესკიზი.

თუ ეკრანი ჯერ კიდევ არ მუშაობს, სცადეთ ადაპტერის შედუღება და LCD ეკრანის დაკავშირება, როგორც ყოველთვის.

ვისნოვოკი

ამ სტატიაში ჩვენ გადავხედეთ LCD ეკრანის მთავარ კვების წყაროს Arduino-ს დასაკეცი პროექტებში, თუ დაფაზე დამატებითი თანხის დაზოგვა გვჭირდება. მარტივი და იაფი i2c ადაპტერი საშუალებას გაძლევთ დააკავშიროთ 1602 LCD ეკრანი მხოლოდ 2 ანალოგური პინის გამოყენებით. უფრო მეტ სიტუაციაში, თქვენ შეიძლება გახდეთ უფრო მნიშვნელოვანი. ხელმისაწვდომობის საფასური - დამატებითი მოდულის - კონვერტორისა და ბიბლიოთეკის გამოყენების აუცილებლობა. ჩვენი აზრით, მოქნილობის ფასი სულაც არ არის მაღალი და გირჩევთ ისარგებლოთ ამ მოქნილობით პროექტებში.

სასურსათო მაღაზიას აქ რომ დაემატა, Chip Resistor არის ჭიის მოწყობილობა ყავისფერ მოწყობილობებში ინსტალაციისა და სტაგნაციისთვის. ეს მოწყობილობა შექმნილია LCD დისპლეით გამოსაყენებლად HD44780 კონტროლერის ქვეშ, 4 ბიტიან რეჟიმში. ამ მიზნით დაფაზე დამონტაჟებულია მიკროსქემა, რომელიც გარდაქმნის I2C ავტობუსს პარალელურ 8-ბიტიან პორტად.

დაფა არის გაყვანილი ისე, რომ მისი დაუყოვნებლივ შერწყმა შესაძლებელია PK ეკრანთან. ცოცხალი I2C ხაზი მიეწოდება შესასვლელს. დაფა აღჭურვილია ასაწევი რეზისტორებით SCL და SDA ხაზებზე, პოტენციომეტრით კონტრასტის და თავად დისპლეის სიცოცხლის რეგულირებისთვის.

მარჯვენა ჯუმპერი აციმციმებს/ციმციმებს. შემდეგ, ტესტერის გამოყენების შემდეგ, ნიშანი დაიკეცა. მოდულის დაყენების შემდეგ გაირკვა, რომ P3ზრუნავს სანთლებზე. როგორც ჯუმპერი, 1 ჩართავს უკანა განათებას და 0 ითიშება. როდესაც ჯუმპერი ამოღებულია, გადამრთველი ყოველთვის გამორთულია. შემდეგი, მიღებულ იქნა გადაწყვეტილება axlib ბიბლიოთეკის შევსება I2C ავტობუსით მუშაობის ფუნქციებით (პროგრამული უზრუნველყოფის დანერგვა) და ფუნქციებით ელექტრომომარაგებისთვის PCF8574 მიკროსქემით. ორი სიტყვით, როგორ მუშაობს მოდული. ბაიტის პარალელურად გამოსასვლელად, რისთვისაც უნდა გაგზავნოთ მიკროსქემის მისამართი I2C ავტობუსში (ნაგულისხმევად ეს არის 0x4E. თქვენ ასევე შეგიძლიათ შეცვალოთ მისამართი დაფაზე ჯემპერის შედუღებით და მნიშვნელობების შეცვლით. მისამართის სამი დაბალი რიგის ბიტიდან და), შემდეგ ACK-ის უარყოფის შემდეგ, მონაცემთა ბაიტი იგზავნება. მას შემდეგ, რაც მიკროსქემა პასუხობს ACK-ით, ბაიტი გამოჩნდება მიკროსქემის პარალელურ პორტზე. PK დისპლეის გასაკონტროლებლად, მე ავიღე ფუნქციები axlib ბიბლიოთეკიდან და ოდნავ შევცვალე ისინი I2C ავტობუსთან მუშაობისთვის. #შეიცავს #შეიცავს #შეიცავს #შეიცავს #define ADD 0x4E // მიკროსქემის მისამართები /* LCD ჩიპი RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 შუქი დაკავშირებულია P3-ის ქვედა ნაწილში. 1 on, 0 vik. */ // Videdennya ხარკი com | = 0x04; // ე ერთს pcf8574_byte_out (com, ADD); // Videdennya ხარკი com &= 0xFB; // Є ნულამდე pcf8574_byte_out (com, ADD); // Videdennya ხარკი) void init (void) (_delay_ms (30); com (0x30); _ დაგვიანებით_ჩვენ(40); com (0x30); // 4-ბიტიან რეჟიმში გადასვლა _ დაგვიანებით_ჩვენ(40); // Trimming to Vikonannya ბრძანება com (0x30); // 4-ბიტიან რეჟიმში გადასვლა _ დაგვიანებით_ჩვენ(40); // Trimming to Vikonannya ბრძანება com (0x20); // 4-ბიტიან რეჟიმში გადასვლა _ დაგვიანებით_ჩვენ(40); // Trimming to Vikonannya ბრძანება com (0x20); // პარამეტრების დაყენება com (0x80); // პარამეტრების დაყენება com (0x00); // Vimicable ჩვენება com (0x80); // Vimicable ჩვენება com (0x00); // ეკრანის გასუფთავება com (0x10); // ეკრანის გასუფთავება com (0x00); com (0x60); // დააყენეთ მონაცემთა შეყვანის რეჟიმი com (0x00); com (0xC0); // ჩართეთ ეკრანი არჩეული კურსორით) void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // გადაიტანეთ ყველაზე მნიშვნელოვანი 4 ბიტი data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // გადაიტანეთ უმაღლესი 4 ბიტი // გადაიტანეთ უმაღლესი 4 ბიტი // უმცროსი 4 ბიტის გადაცემა // უმცროსი 4 ბიტის გადაცემა // უმცროსი 4 ბიტის გადაცემა) void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) int main(void) (init(); str_out("ЁPҐBET MҐP!" );ვლასნა, რა ხდება აქ? ამიერიდან ჩვენ შეგვიძლია დავაკავშიროთ ბიბლიოთეკები I2C და PCF8574-ისთვის. მე უკვე დავწერე I2C-ზე, კიდევ ერთხელ გეტყვით ამის შესახებ და გეტყვით PCF8574.h-ში ღერძის შესახებ. ბიბლიოთეკის საწყობს მხოლოდ სამი ფუნქცია დაემატა.
BYTE pcf8574_test(BYTE დამატება) (BYTE შეკითხვა = ACK; დამატება &= 0xFE; i2c_start(); ask = i2c_send_byte(add); i2c_stop(); დაბრუნება თხოვნა; )პირველი ფუნქცია დაიწერა ავტობუსში მოწყობილობის არსებობის შესამოწმებლად. პრინციპში, მათი გამოყენება შესაძლებელია ავტობუსში მყოფი ნებისმიერი მოწყობილობის მოსაძებნად. ფუნქცია იღებს მოწყობილობის მისამართს და თუ ემთხვევა, ის ნულის ტოლია. თუ ავტობუსში არ არის ასეთი მისამართის მოწყობილობა, ჩართეთ ერთი.
BYTE pcf8574_byte_out (BYTE მონაცემები, BYTE დამატება) ( BYTE შეკითხვა = ACK; დამატება &= 0xFE; i2c_start(); ask = i2c_send_byte(add); if(!ask) ask = i2c_send_byte(მონაცემები); )ეს ფუნქცია უკვე მორგებულია ამ მიკროსქემზე. როგორც არგუმენტი, ბაიტი იგზავნება ავტობუსში მიკროსქემის მისამართზე. ფუნქციაა ჯერ მოითხოვოს მიკროსქემის მისამართი და შემდეგ იპოვო ბაიტი. თუ მიკროსქემმა მიიღო ბაიტი და გაგზავნა ACK, მაშინ ფუნქცია ამთავრებს მიკროსქემთან მუშაობას და აბრუნებს ნულს, რადგან მან გაგზავნა ბაიტი. და მიკროსქემა ახლა გამოსცემს ამ ბაიტს მის პარალელურ პორტში. წინააღმდეგ შემთხვევაში, NACK უარყოფილია და გადაცემა უბრუნდება ერთს, გადაცემა ვერ მოხერხდა.
BYTE pcf8574_str_out(BYTE *data, BYTE col, BYTE add) ( BYTE ask = ACK; დამატება &= 0xFE; i2c_start(); ask = i2c_send_byte(add); for(BYTE i=0; i ეს ფუნქცია განკუთვნილია ექსპერიმენტებისთვის. ინდიკატორი იღებს ერთბაიტიანი მონაცემების მასივს, ბაიტების რაოდენობას და მიკროსქემის მისამართს. გთხოვთ, შეეცადოთ გადაიტანოთ ყველა მონაცემი ერთ სესიაში და არა ერთი ბაიტი სესიაზე. ფუნქცია მუშაობს, მაგრამ ის არ არის შესაფერისი PK ეკრანისთვის. ახლა დავუბრუნდეთ მთავარ პროგრამას. ბიბლიოთეკების შეერთების შემდეგ ჩაწერეთ მიკროსქემის მისამართი. შემდეგი, ჩვენ ვქმნით lcd.h-ის მსგავს სამ ფუნქციას. გადაცემის პრინციპს ნაკლები მნიშვნელობა აქვს.
void com (BYTE com) (com | = 0x08; // P3 ერთზე, ისე რომ გადამრთველი იწვის pcf8574_byte_out (com, ADD); // Videdennya ხარკი com | = 0x04; // ე ერთს pcf8574_byte_out (com, ADD); // Videdennya ხარკი com &= 0xFB; // Є ნულამდე pcf8574_byte_out (com, ADD); // Videdennya ხარკი } ეს ფუნქცია მხოლოდ ეკრანზე გადასცემს ბრძანებებს. პირველი რიგი გამოჩნდა ბრძანების ლოგიკური დამატებიდან 0x08-დან. ეს აუცილებელია იმის გამო, რომ ჩვენ გადავცემთ ბაიტს არა პირდაპირ RK დისპლეის პორტში, არამედ ჩვენი განმეორებით. თუ ჩვენ გამოვიგზავნეთ ბაიტი და შემდეგ მხოლოდ ერთი ბიტი უნდა გამოვიტანოთ, გთხოვთ, მიიღოთ საჭირო ბიტი ბოლო ბაიტამდე და შემდეგ კვლავ გაგზავნოთ პორტში. Ეს პრობლემაა. 0x08-დან დამატებისას აუცილებელია ერთეულის სამუდამოდ შემცირება მესამე კატეგორიამდე. გახსოვთ სანთლის შუქი? თავად ღერძი ემატება და მოიცავს განათებას. ამის შემდეგ იწოდება ავტობუსში ბაიტის გადაცემის ფუნქცია. მის შესახებ ბევრი დაიწერა. შემდეგ ჩვენ გადავიტანთ ბაიტს ავტობუსზე მიკროსქემზე. შემდეგ ჩადეთ კვალი E ერთეულში, რაც კეთდება 0x04-დან ბაიტის ლოგიკური მიმატებით. E.-ის გასუფთავების შემდეგ ამ გზით თქვენ შეგიძლიათ გამოაგზავნოთ ბრძანება ეკრანზე თავად ბრძანების არგუმენტად გადაცემის გარეშე. void init(void) (_delay_ms(30); // საჭმლის მიტანის შემდეგ პაუზა com (0x30); // 4-ბიტიან რეჟიმში გადასვლა _ დაგვიანებით_ჩვენ(40); // Trimming to Vikonannya ბრძანება com (0x30); // 4-ბიტიან რეჟიმში გადასვლა _ დაგვიანებით_ჩვენ(40); // Trimming to Vikonannya ბრძანება com (0x30); // 4-ბიტიან რეჟიმში გადასვლა _ დაგვიანებით_ჩვენ(40); // Trimming to Vikonannya ბრძანება com (0x20); // 4-ბიტიან რეჟიმში გადასვლა _ დაგვიანებით_ჩვენ(40); // Trimming to Vikonannya ბრძანება com (0x20); // პარამეტრების დაყენება com (0x80); // პარამეტრების დაყენება com (0x00); // Vimicable ჩვენება com (0x80); // Vimicable ჩვენება com (0x00); // ეკრანის გასუფთავება com (0x10); // ეკრანის გასუფთავება com (0x00); // დააყენეთ მონაცემთა შეყვანის რეჟიმი com (0x60); // დააყენეთ მონაცემთა შეყვანის რეჟიმი com (0x00); // ჩართეთ ეკრანი არჩეული კურსორით com (0xC0); // ჩართეთ ეკრანი არჩეული კურსორით } ეს ფუნქცია მეტს არაფერს აკეთებს, ვიდრე ეკრანის ინიციალიზაცია. ბრძანებების თანმიმდევრობა აღებულია მონაცემთა ფურცლიდან RK ეკრანზე. void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // გადაიტანეთ ყველაზე მნიშვნელოვანი 4 ბიტი data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // გადაიტანეთ უმაღლესი 4 ბიტიმონაცემები_სთ &= 0xF9; pcf8574_byte_out (data_h, ADD); // გადაიტანეთ უმაღლესი 4 ბიტი pcf8574_byte_out(data_l, ADD); // უმცროსი 4 ბიტის გადაცემამონაცემები_l | = 0x04; pcf8574_byte_out(data_l, ADD); // უმცროსი 4 ბიტის გადაცემა data_l &= 0xF9; pcf8574_byte_out(data_l, ADD); // უმცროსი 4 ბიტის გადაცემა } ეს ფუნქცია გადასცემს RC მონაცემებს ეკრანზე. გამოდის ისევე, როგორც ბრძანებები იმის უკან, რომ ბაიტი გადადის ჯერ უფრო ძველი ბაიტით, შემდეგ კი უმცროსით. და რეშტა იგივე. void str_out (BYTE *str) ( while((*str) != "\0") (char_out(*str); str++; ) )ისე, ეს ფუნქცია არის მხოლოდ მწკრივის ეკრანზე გადასატანად. ვლასნე ჩვენამდე, ვინც ას ცენტს არ მიიღებს.

პროექტი AtmelStudio 6.2-ისთვის

წიგნიერი 01.08.15 17:11

კომა გაუშვა. მართალია: "HELLO, SWIT!" ეს აქსესუარი არ არის მხოლოდ HD44780-ისთვის. ასაწევი რეზისტორები მოთავსებულია ოსტატის მხარეს. სპეციფიკაციის მიხედვით, მონაცემები ჩაიწერება LCD კონტროლერის მიერ E-ს დაცემის შემდეგ. ნაჩვენებია პირველი ფუნქცია: void com (BYTE com) (com | = 0x08; // გადართვა pcf8574_byte_out (com | 0x04, ADD); / / ნაჩვენებია დიახ); // E ნულამდე) სხვებსაც შეუძლიათ ბევრად ნაკლები. მაგალითად, void char_out (BYTE მონაცემები) დასჭირდება მხოლოდ ორ დაწკაპუნებას და განსაკუთრებით დამატებითი ცვლილებების გარეშე. LCD-ის ინიციალიზაცია გამორთულია დროის გატეხვის სპეციფიკაციების გამო.

Oleksiy 02.08.15 19:11

კომის არარსებობის გამო, ჩვენება არ იმოქმედებს. ეს მოწყობილობა განთავსებულია დისპლეის ქვეშ იგივე ან მსგავსი კონტროლერით. და თავად მიკროსქემის ღერძი ნამდვილად არის პორტის მარტივი გაფართოება. კარგი, საკმარისად კარგი ვარ. საჭიროა დამატებითი ცვლილებები. თუ არგუმენტს გადასცემთ ფუნქციას ლოგიკის გამოყენებით, შეიძლება გამოჩნდეს ხარვეზები. მე უკვე ასე დავრჩი. ინიციალიზაცია მთავრდება დროის შეფერხების გარეშე. დოკუმენტაციაში ნათქვამია, რომ ბრძანებებს შორის მოთავსებულია პაუზა 40 μs. იმის გამო, რომ გადაცემა ხორციელდება i2c ავტობუსით და ეს თავისებურად არის დაპროგრამებული, მაშინ ძალიან ბევრი უნდა ინერვიულოთ. თუ მაინც არ გეზარებათ დაწერეთ თქვენი ვერსია და გამომიგზავნეთ. გამოვაქვეყნებ. Zreshtoyu ამ საიტზე დანიშვნები სამოყვარულო აუდიტორია და კანის, ვისაც გინდათ, შეუძლია გამოხატოს თქვენი აზრები და იდეები ცხოვრების MK.

Oleksiy 06.08.15 09:14

დისპლეის ინიციალიზაციისას დროის დამატება „კომპეტენტური“-ს მიმართ

დიმიტრო 14.06.16 21:57

შუადღე მშვიდობისა ოლექსი. შეგიძლიათ დაამატოთ ბიბლიოთეკა რობოტებისთვის PCF8574 კოდის გენერატორში.

Oleksiy 14.06.16 22:32

Ვიფიქრებ.))

რუსლან 21.12.16 19:54
Oleksiy 12/21/16 21:53

ოჰ ასე. განსაკუთრებით კოდი ASMI-ში. არდუინის ინჟინრები კვლავ დააფასებენ)))

P.C.
ისე, არ გაგიკვირდეთ ASM-ზე, იქ პროგრამა დაწერილია PIC კონტროლერისთვის. არის თუ არა ეს ინფორმაცია „კიდევ უფრო“ სასარგებლო AVR სპეციალისტებისთვის? განსაკუთრებით დამწყებთათვის))) PIC-ის საწინააღმდეგო არაფერი მაქვს, მაგრამ სიმართლე ისაა, რომ PIC და AVR განსხვავებულია. და დისკიდან არის RC დისპლეის მუშაობის დეტალები, შეგიძლიათ გადახედოთ))) მართალია, მე ასევე დავწერე CVAVR ქვეშ და ყველა ბრძანება თაროებზე დახარისხებისა და დახარისხებისთვის. თუ მოხდა გადაუდებელი შემთხვევა, თავად უნდა ნახოთ რა წერია ასე გარკვევით))) ავტორი წერს, მკითხველი აგროვებს.

GeK 01/04/17 12:52

"I2C მიკროსქემების მისამართები (ნაგულისხმევის შემდეგ, 0x4E")

მისამართის უმაღლესი 4 ბიტი ფიქსირდება,
PCF8574-ის პრეფიქსი არის 0100, ხოლო PCF8574A არის 0111
უმცროსი 3 ბიტი დევს A2-A0 მიკროსქემების შეყვანაში. როდესაც დაკავშირებულია, სამივე მხტუნავი ღიაა, მიკროსქემის მისამართის მითითებით, ნაჩვენებია მნიშვნელობა 0111111.
// A2 A1 A0 PCF8574 PCF8574A
// 1 1 1 0x20 0x38
// 1 1 0 0x21 0x39
// 1 0 1 0x22 0x3A
// 1 0 0 0x23 0x3B
// 0 1 1 0x24 0x3C
// 0 1 0 0x25 0x3D
// 0 0 1 0x26 0x3E
// 0 0 0 0x27 0x3F

Oleksiy 01/04/17 14:27

აბა, დაიბნე.
Vityag მიკროსქემის დოკუმენტაციით

0b01001110 ce 0x4E
ასე რომ აქ ყველაფერი სწორია. და თუ თქვენ გჭირდებათ მისამართის შეცვლა, თქვენ უბრალოდ უნდა შეცვალოთ იგი Define-ში.

იური 14.12.17 21:26

Კარგ დღეს გისურვებთ! ასევე შეგიძლიათ იპოვოთ კოდი lcdgotoxy და lcdclear ფუნქციებისთვის PCF8574 ადაპტერთან მუშაობისთვის.

ალექსანდრე 20.05.18 18:14

Კარგ დღეს გისურვებთ! როგორ აწარმოებთ რუსულ ტექსტს?

Oleksiy 05.20.18 23:04

ეს არის სრულიად ახალი დისპლეი დამზადებული MELT-ის მიერ. მას მეხსიერებაში კირიული ანბანი აქვს ჩაწერილი.

ალექსანდრე 05/21/18 04:55

Კარგ დღეს გისურვებთ! მე ვწერ, რომ თქვენ გაქვთ პროექტი AtmelStudio 6.2-ისთვის „ЁPҐBET MҐP!“ მაშინ ნორმალურია დანახვა
და თუ დაწერთ "HELLO SWIT!" გამოიტანეთ ყველანაირი სისულელე. მე მაქვს ორი
ჩვენების ვარიანტები ერთში იწერება კირილიცაზე. კიდევ ერთი ჩინელი.

Oleksiy 21.05.18 09:22

მირჩევნია სატესტო პროგრამა დავწერო. იმეორებს მთელ მეხსიერებას ნაჩვენები სიმბოლოებით და მათი მისამართით. და მერე გავიგებთ რა არის პრობლემა. რაც მთავარია, სიმბოლოების ცხრილი არ შეესაბამება ascii ცხრილს.

ანდრია 03.09.18 08:32

Კარგი დღე!

შეგიძლიათ გამომიგზავნოთ პროტეუსის მიკროსქემის სქემა?

ანდრია 03.09.18 10:22

პროტეუსში ვინმეს ხომ არ გადაამოწმეთ?

ანდრია 03.09.18 10:56

Rozіbravsya main_init

პავლო 30.05.19 23:35

წიქავა მდიდარია, ჩვენების მისამართები არის 0x4E და თუ იმავე დისპლეს დააკავშირებ Arduino-ს, მაშინ მისამართები არის 0x27.

პავლო 31.05.19 11:04

გმადლობთ თქვენი მუშაობისთვის! მთელი ინტერნეტის შეფერხება მოსალოდნელია მიზნობრივი აპლიკაციებიდან, თქვენის გარდა, ფულის გამომუშავების გარეშე. ერთი რამ, ეკრანის ინიციალიზაციის არქივირებული პროექტის ფუნქციაში _delay_ დაგვიანება არ არის რეგისტრირებული და, შესაბამისად, არ მუშაობს

Oleksiy 06/01/19 09:52

ისე, ეს უფრო საჩვენებელი პროექტია. კარგია, რომ axlib ბიბლიოთეკას გადაწერა სჭირდება, მაგრამ იმის გათვალისწინებით, რომ STM32 და STM8 ნახტომებით იშლება, AVR-ში აზრი აღარ არის ჰაერში.

პავლო 06/05/19 12:57

STM არ საჭიროებს DIP პაკეტებს, რაც აადვილებს სხვა დაფების გამოყენებას. ჩემი პროექტებისთვის AVR გამოდის მარაგიდან ერთი Atmega 8-ს შეუძლია ბევრის მოთავსება

Oleksiy 06/05/19 15:20

მაშ რა ღირს Atmega8 და stm8s003)))

დიმიტრო 06/07/19 00:41

გამარჯობა ოლექსია.
მითხარით, გთხოვთ, როგორ არის საჭირო pcf8574-დან პორტამდე წაკითხვა?
მე მინდა შევქმნა გარე ბლოკი, 8 GPIO i2c ავტობუსით - ეს არის ის.

დიმიტრო 06/07/19 17:56

ჩემს თავს ვეუბნები
ფუნქცია აბრუნებს ბაიტს - მიკროსქემის პორტის პორტს
uint8_t pcf8574_byte_rcv(uint8_t adr)
{
uint8_t ask = ACK;
დამატება | = 0b01; //წაიკითხე
uint8_t მონაცემები=0;
i2c_start();
ask = i2c_send_byte(addr);
if(!ask) data = i2c_read_byte(NACK);
i2c_stop();

დაბრუნების მონაცემები;
}

პავლო 06/07/19 20:37

რა ღირს, 150 მანეთი, ჯოხის ფასად) და როგორ იხდით STM-ს? LUT არასანდოა, CNC საღარავი მანქანა არ მუშაობს, რა შემიძლია წავიღო (გამოცდის გარეშე)

  • FC-113 მოდული აგებულია PCF8574T მიკროსქემზე, რომელსაც აქვს 8-ბიტიანი საერთო რეგისტრი, რომელიც „აფართოვებს“ I2C სერიული ავტობუსის შეყვანას და გამომავალს. პატარა მიკროსქემას აქვს ეტიკეტირება DD1.
  • R1 არის რეგულირებადი რეზისტორი RC დისპლეის კონტრასტის რეგულირებისთვის.
  • Jumper J1 გამოიყენება ეკრანის განათების გასაზრდელად.
  • ქინძისთავები 1…16 ემსახურება მოდულის დაკავშირებას LCD ეკრანის ქინძისთავებთან.
  • საკონტაქტო ფირფიტებს A1…A3 დასჭირდება I2C მისამართის შეცვლა. მავთულის მხტუნავების შედუღებით შეგიძლიათ შეცვალოთ მოწყობილობის მისამართი. ცხრილი გვიჩვენებს მისამართის და ჯუმპერის ტიპს: "0" მიუთითებს ღია კონექტორზე, "1" მიუთითებს დაინსტალირებულ ჯუმპერზე. კავშირების უკან არის 3 ჯუმპერი გათიშული და მისამართები მიმაგრებულია 0x27.

2 RC დისპლეის Arduino-სთან დაკავშირების სქემა I2C პროტოკოლის უკან

Arduino მოდულის შეერთება ხორციელდება სტანდარტულად I2C ავტობუსისთვის: SDA მოდულის კავშირები დაკავშირებულია A4 ანალოგურ პორტთან, SCL კავშირები უკავშირდება Arduino-ს ანალოგურ პორტს A5. მოდული იკვებება Arduino-დან +5 ვ ძაბვით. თავად მოდული დაკავშირებულია კავშირებით 1…16 შესაბამისი კავშირებით 1…16 PK ეკრანზე.


3 ბიბლიოთეკა რობოტებისთვის I2C პროტოკოლის უკან

ახლა ჩვენ გვჭირდება ბიბლიოთეკა LCD-თან მუშაობისთვის I2C ინტერფეისის უკან. შეგიძლიათ დააჩქაროთ, მაგალითად, cym ღერძი (იხ. "ჩამოტვირთეთ ნიმუშის კოდი და ბიბლიოთეკა" მწკრივი).

ზავანტაჟენიას არქივები LiquidCrystal_I2Cv1-1.rarგახსნილია საქაღალდეში \ბიბლიოთეკები\რომელიც მდებარეობს Arduino IDE დირექტორიაში.

ბიბლიოთეკა მხარს უჭერს სტანდარტული ფუნქციების კომპლექტს LCD ეკრანებისთვის:

ფუნქციადავალება
თხევადი კრისტალი () ქმნის ცვლილებას LiquidCrystal ტიპის და იღებს დისპლეის კავშირის პარამეტრებს (ნაწილის ნომრებს);
დაწყება () LCD დისპლეის ინიციალიზაცია, პარამეტრების დაყენება (სტრიქონების და სიმბოლოების რაოდენობა);
ნათელი () ეკრანის გასუფთავება და კურსორის გადაქცევა კობის პოზიციაზე;
სახლი () კურსორის როტაცია cob პოზიციაზე;
setCursor() კურსორის დაყენება მოცემულ პოზიციაზე;
დაწერე () სიმბოლოს ჩვენება RK ეკრანზე;
ბეჭდვა () ტექსტის ჩვენება RK ეკრანზე;
კურსორი () აჩვენებს კურსორს, შემდეგ. სავარძელი წინსვლის სიმბოლოს ადგილის ქვეშ;
noCursor() სად არის კურსორი;
თვალის დახამხამება() მომენტი კურსორამდე;
noBlink () მომენტალური მომენტი;
არაჩვენება () გამორთეთ ეკრანი და შეინახეთ ნაჩვენები ყველა ინფორმაცია;
ჩვენება () ეკრანის ჩართვა და ყველა ნაჩვენები ინფორმაციის შენახვა;
scrollDisplayLeft() გადაახვიეთ ეკრანის 1 პოზიცია მარცხნივ;
scrollDisplayRight() ეკრანის ნაცვლად გადახვევა 1 პოზიციით მარჯვენა ხელით;
autoscroll() ავტომატური გადახვევის ჩართვა;
noAutoscroll() autoscroll vimicanny;
მარცხნიდან მარჯვნივ() აყენებს ტექსტს პირდაპირ მარჯვნივ;
rightToLeft () ტექსტის მიმართულება მარჯვნიდან მარცხნივ;
createChar() მე ვქმნი კორისტუვაჩის სიმბოლოს LCD ეკრანისთვის.

4 ესკიზი ტექსტის ჩვენებისთვის LCD ეკრანზე I2C ავტობუსით

ვნახოთ ნიშანი: Zrazka ფაილი LiquidCrystal_I2C CustomCharsდა მისი ცოტაოდენი დაფქვა შეიძლება. ჩვენ ვიცით, რომ ბოლოს იქნება წარმავალი სიმბოლო. კოდექსამდე კომენტარები კომენტარს აკეთებს ესკიზის ყველა ნიუანსზე.

#შეიცავს // ჩართეთ Wire ბიბლიოთეკა #include // მოიცავს RK ბიბლიოთეკას#define printByte(args) write(args); // uint8_t გული = (0x0,0xa,0x1f,0x1f,0xe,0x4,0x0); // ბიტიანი ნიღაბი "გულის" სიმბოლო LiquidCrystal_I2C lcd(0x27, 16, 2); // დააყენეთ მისამართი 0x27 16x2 LCD ეკრანისთვის void setup() ( lcd.init(); // ჩვენების ინიციალიზაცია RC lcd.backlight(); // ეკრანის გაზრდილი განათება lcd.createChar(3, გული); // შექმენით „გულის“ სიმბოლო მეხსიერების მე-3 შუაში lcd.home(); // მოათავსეთ კურსორი ზედა მარცხენა კუთხეში, პოზიციაზე (0,0) lcd.!"); // ტექსტის სხვა მწკრივი lcd.setCursor(0, 1); // გადაიტანეთ კურსორი მე-2 მწკრივზე, სიმბოლო 1 lcd.print(i)) // სხვა შენიშვნა მე-2 მწკრივზე lcd.printByte(3); } void loop() (// დარჩენილი სიმბოლოს მომენტი lcd.setCursor(13, 1); // კურსორის გადატანა მე-2 რიგში, სიმბოლო 1 lcd.print("\t"); დაგვიანებით (500); lcd.setCursor(13, 1); // კურსორის გადატანა მე-2 რიგში, სიმბოლო 1 lcd.print(" "); დაგვიანებით (500); }

სიტყვის წინ, ბრძანებით დაწერილი სიმბოლოები lcd.createChar();, დისპლეის მეხსიერებას სიცოცხლის დაკარგვის შემდეგ ჩამოერთმევა სიცოცხლე, რადგან დაიწეროს ეკრანზე ROM 1602.

5 ძალაუფლების სიმბოლოების შექმნა RC ეკრანისთვის

შემდეგი, ჩვენ გადავხედავთ კვების სიმბოლოების შექმნას RK ეკრანებისთვის. კანის სიმბოლო ეკრანზე შედგება 35 წერტილისგან: 5 კუთხისა და 7 წრისგან (+1 სარეზერვო რიგი მხარდაჭერისთვის). ჩვენ მიერ შექმნილი ესკიზის მე-6 სტრიქონისთვის დავაყენეთ 7 რიცხვის მასივი: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). კონვერტირებადი 16-ნიშნა რიცხვები ბინარში: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . ეს რიცხვები სხვა არაფერია, თუ არა კანის ბიოლოგიური ნიღბები სიმბოლოების 7 მწკრივით, სადაც "0" მიუთითებს ნათელ წერტილზე, ხოლო "1" მიუთითებს ბნელ წერტილზე. მაგალითად, გულის სიმბოლო, ამოცანები ღამურის ნიღბის სახით, გამოჩნდება ეკრანზე, როგორც ნაჩვენებია ბავშვზე.

6 RK ეკრანის მართვა I2C ავტობუსით

გასაოცარი ჩანახატი Arduino-სთვის. ამოცანები გამოჩნდება ეკრანზე მოციმციმე კურსორის ბოლოს.


7 რისთვის არის იქ? I2C ავტობუსი

ბონუსად, მოდით გადავხედოთ ლათინური სიმბოლოების "A", "B" და "C" ჩვენების დროის დიაგრამას RK ეკრანზე. ეს სიმბოლოები არის ROM-ის ეკრანზე და ნაჩვენებია ეკრანზე უბრალოდ მათი მისამართების ეკრანზე გადაცემით. დიაგრამა აღებულია RS, RW, E, D4, D5, D6 და D7 დისპლეის დონეებიდან და ა.შ. უკვე FC-113 "I2C პარალელური ავტობუსი" გადამუშავების შემდეგ. შეიძლება ითქვას, რომ „ზალიზოში“ წვრილმანებს „ღრმად“ ვყრით.


ლათინური სიმბოლოების "A", "B" და "C" ჩვენების დროის დიაგრამა LCD ეკრანზე 1602

დიაგრამა გვიჩვენებს, რომ სიმბოლოები, რომლებიც დისპლეის ROM-შია (მონაცემთა ფურცლის მე-11 მხარე, ნაჩვენებია ქვემოთ) გადაცემულია ორ ბაიტში, რომელთაგან პირველი მიუთითებს ცხრილის სვეტის ნომერზე, ხოლო მეორე - რიგის ნომერზე. ამ ეტაპზე, მონაცემები "აწკაპუნებს" ხაზის სიგნალის წინა მხარეს (ჩართვა) და ხაზი რ.ს.(რეგისტრაცია აირჩიეთ) არის ლოგიკურ ერთეულზე, რაც ნიშნავს მონაცემთა გადაცემას. RS ხაზის დაბალი სიმაღლე ნიშნავს ჩანართების გადატანას, რომელსაც ვრეცხავთ კანის სიმბოლოს გადატანამდე. ეს შეყვანა გადასცემს ინსტრუქციის კოდს ვაგონის გადასაბრუნებლად PK დისპლეის პოზიციაზე (0, 0), რომლის იდენტიფიცირება ასევე შესაძლებელია ეკრანის ტექნიკური აღწერილობის წაკითხვით.

და კიდევ ერთი კონდახი. ეს საათობრივი დიაგრამა აჩვენებს "გულის" სიმბოლოს PK ეკრანზე.


კიდევ ერთხელ ვიტყვი, პირველ ორ იმპულსს ჩართვამიჰყევით ინსტრუქციას მთავარი ()(0000 0010 2) - ვაგონის როტაცია პოზიციაზე (0; 0), ხოლო დანარჩენი ორი - ჩვენება ციფრულ ეკრანზე, რომელიც ინახება მეხსიერებაში 3 10 (0000 0011 2) სიმბოლო "გული" (ინსტრუქციები). lcd.createChar(3, გული);ესკიზი).

რამდენიმე მარტივი თვითმმართველობის კომპონენტის შემდეგ, რადიო გამაძლიერებელი უახლოვდება დიდი რაოდენობის სენსორებისა და ღილაკების აგებას. ასევე უფრო ეფექტურია მონაცემების ჩვენება ეკრანზე ქვედა მონიტორის პორტზე. როდესაც საკვები ამოდის: რომელი ეკრანი უნდა აირჩიოთ? და გაინტერესებთ როგორ დავაკავშიროთ, რა არის საჭირო კავშირისთვის? ამ დიეტის შესახებ გამოხმაურება განხილული იქნება ამ სტატიაში.

LCD 1602

ჩვენების მრავალ ვარიანტს შორის, ჩვენ ნამდვილად გვინდა აღვნიშნოთ თავად LCD1602 დისპლეი, რომელიც დაფუძნებულია HD4478 კონტროლერზე. ამ ეკრანს აქვს ორი ფერი: თეთრი ასოები შავ ფონზე, შავი ასოები ყვითელ ფონზე. LCD 1602-ის Arduino-სთან დაკავშირება ასევე არ იწვევს ჩვეულებრივ პრობლემებს, რადგან ბიბლიოთეკა დაინსტალირებულია და დამატებითი არაფერია საჭირო. დისპლეები განსხვავდება არა მხოლოდ ფასით, არამედ ზომითაც. ყველაზე ხშირად, რადიომაუწყებლები იყენებენ 16 x 2, ანუ 16 სიმბოლოს 2 მწკრივს. ის ასევე არის 20 x 4, არის 4 მწკრივი 20 სიმბოლოთი. ზომები და ფერები არ ასრულებენ ერთსა და იმავე როლს Arduno-სთან დაკავშირებულ LCD 1602 ეკრანზე, თუმცა ისინი დაკავშირებულია. ერთი შეხედვით 35 გრადუსია, ეკრანის ნახვის საათი 250 ms. მისი გამოყენება შესაძლებელია ტემპერატურაზე -20-დან 70 გრადუს ცელსიუსამდე. მუშაობისას ვიკორი არის 4 mA თითო ეკრანზე და სარეზერვო არის 120 mA.

აპირებ ვიკორისტობას?

ეს ჩვენება თავისი პოპულარობით სარგებლობს არა მხოლოდ რადიომოყვარულებში, არამედ დიდ მაუწყებლებს შორისაც. მაგალითად, პრინტერები და სხვა მოწყობილობები ასევე იყენებენ LCD1602. ეს გამოწვეულია მისი დაბალი ფასით, ეს ჩვენება ჩინურ მაიდანზე ღირს 200-300 რუბლი. შეიძინეთ საქონელი იქ თავად, რადგან ჩვენს მაღაზიებში ამ ჩვენებაზე მარკირება ძალიან მაღალია.

კავშირები Arduino-სთან

LCD 1602 Arduino Nano-სა და Uno-სთან დაკავშირება არ იმოქმედებს. დისპლეის გამოყენება შესაძლებელია ორ რეჟიმში: 4 ბიტიანი და 8. 8-ბიტიანთან მუშაობისას გამოიყენება როგორც ახალგაზრდა, ასევე ძველი ბიტი, ხოლო 4-ბიტიანი - კიდევ უფრო ახალგაზრდა. 8-ბიტიანთან მუშაობას განსაკუთრებული აზრი არ აქვს, რადგან დასაკავშირებლად მხოლოდ 4 კონტაქტი გექნებათ, რაც საკმარისი არ არის და სითხეც კი არ იქნება მეტი, ეკრანის განახლებას შორის - 10-ჯერ წამში. ზოგადად, LCD 1602-ის Arduino-სთან დასაკავშირებლად, საჭიროა გამოიყენოთ უამრავი მოწყობილობა, რომელიც იძლევა გარკვეულ უხერხულობას, მათ შორის სპეციალურ ფარებს და ა.შ. ფოტო გვიჩვენებს დისპლეის კავშირს Arduino Uno-სთან:

პროგრამის კოდის მაგალითი:

#შეიცავს // დაამატეთ საჭირო ბიბლიოთეკა LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // დააყენეთ ეკრანის ზომა lcd.setCursor(0, 0); // დააყენეთ კურსორი to ear 1 rows lcd.print("Hello, world!" // ნაჩვენები ტექსტი lcd.setCursor(0, 1) ) ()()

რატომ დაარღვიე კოდი? ჩვენ პირველ რიგში ვუკავშირდებით ბიბლიოთეკას ეკრანთან მუშაობისთვის. როგორც ზემოთ უკვე ითქვა, ეს ბიბლიოთეკა უკვე შედის Arduino IDE საცავში და დამატებითი ინსტალაცია არ არის საჭირო. შემდეგი არის კონტაქტები, რომლებიც დაკავშირებულია კავშირებთან: RS, E, DB4, DB5, DB6, DB7 ხაზში. ამის შემდეგ დაყენებულია ეკრანის ზომა. ასე რომ, როდესაც ვმუშაობთ ვერსიასთან, სადაც არის 16 სიმბოლო და 2 სტრიქონი, შემდეგ ვწერთ შემდეგ მნიშვნელობებს. ჩვენ ვათავსებთ კურსორს პირველი რიგის თავზე და ვაჩვენებთ ჩვენს პირველ ტექსტს Hello World. შემდეგ ვათავსებთ კურსორს მეორე რიგში და ვაჩვენებთ საიტის სახელს. Სულ ეს არის! გადახედეთ LCD 1602 Arduino Uno-ს კავშირებს.

რა არის I2C და რა არის საჭირო?

როგორც უკვე აღვნიშნეთ, ეკრანის დაკავშირება ბევრ კონტაქტს იღებს. მაგალითად, ბევრ სენსორთან და LCD ეკრანთან მუშაობისას, 1602 კონტაქტი შეიძლება უბრალოდ არ იყოს დაკავშირებული. ყველაზე ხშირად, რადიომოყვარულები იყენებენ Uno-სა და Nano-ს ვერსიებს, მაგრამ ამდენი კონტაქტი არ არის. შემდეგ ხალხმა გამოიცნო სპეციალური სახელების ფირფიტები. მაგალითად, I2C. ის საშუალებას გაძლევთ დააკავშიროთ ეკრანი 4-ზე მეტ კონტაქტთან. ორჯერ მეტია. I2C მოდული იყიდება ცალკე, შედუღების საჭიროების გარეშე, ან LCD 1602 ეკრანზე შედუღებამდე.

კავშირები დამატებით I2C მოდულთან

LCD 1602-ის დაკავშირება Arduino Nano-სთან I2C-ით იკავებს მცირე ადგილს, მხოლოდ 4 კონტაქტს: მიწა, ცოცხალი და 2 გამომავალი მონაცემთა გადაცემისთვის. სიცოცხლე და დამიწება უკავშირდება 5V-ს და GND-ს Arduino-ზე არის დაკავშირებული. ორი კონტაქტი აკლია: SCL და SDA შეიძლება დაუკავშირდეს ნებისმიერ ანალოგურ პინებს. ფოტოში შეგიძლიათ იხილოთ LCD 1602-ის არდუინოსთან I2C მოდულით დაკავშირების მაგალითი:

პროგრამის კოდი

მოდულის გარეშე დისპლეით მუშაობას მხოლოდ ერთი ბიბლიოთეკა სჭირდება, მოდულთან მუშაობისას ორი ბიბლიოთეკა. ერთი მათგანი უკვე Arduino IDE – Wire საწყობშია. ჩვენი ბიბლიოთეკა, LiquidCrystal I2C, უნდა იყოს დაინსტალირებული და დაინსტალირებული. გადმოწერილი არქივის ნაცვლად Arduino-ში ბიბლიოთეკის დასაყენებლად, თქვენ უნდა ჩამოტვირთოთ root ბიბლიოთეკების საქაღალდეში. პროგრამის კოდის მაგალითი I2C ვიკიდან:

#შეიცავს #შეიცავს LiquidCrystal_I2C LCD (0x27,16,2); // დააყენეთ ეკრანის void setup() ( lcd.init(); lcd.backlight(); // ჩართეთ ეკრანის განათება lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // დააყენეთ კურსორი სხვა მწკრივზე და ნულ სიმბოლოზე. lcd.setCursor(0, 1); // ნაჩვენებია ეკრანზე რამდენიმე წამის განმავლობაში Arduina-ს დაწყების მომენტიდან lcd.print(millis( )/1000);

როგორც თქვენ შეგიძლიათ, კოდი შეიძლება არ შეიცვალოს.

როგორ დავამატო სიმბოლო?

ამ დისპლეების პრობლემა ის არის, რომ არ არის მხარდაჭერილი კირიული ანბანისა და სიმბოლოებისთვის. მაგალითად, თქვენ უნდა დაამატოთ სიმბოლო ეკრანზე, რათა ის გამოჩნდეს. ამ მიზნით, დისპლეი საშუალებას გაძლევთ აჩვენოთ 7-მდე სიმბოლო. ცხრილის გაგზავნა:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

თუ 0 ნიშნავს, რომ იქ არაფერია, თუ 1 ნიშნავს, რომ ნაკვეთი არ არის შეფუთული. აპლიკაციაში შეგიძლიათ დაამატოთ სიმბოლო „სმაილი, რომელიც გაცინებს“ სიმბოლოს. პროგრამის მაგალითზე Arduino-ში ასე გამოიყურება:

#შეიცავს #შეიცავს // საჭირო ბიბლიოთეკის მდებარეობა // ბიტი ნიღაბი ღიმილის სიმბოლოსთვის ბაიტი smile = (B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal LCD (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // დააყენეთ ეკრანის ზომა lcd.createChar(1, smile); // შექმენით სიმბოლოს ნომერი 1 lcd.setCursor(0, 0) // მოათავსეთ კურსორი 1-ლი რიგის თავზე lcd.print("\1" // სმაილის ჩვენება (სიმილის ნომერი 1) - "\1" ) ; () ()

როგორც ხედავთ, ღამურის ნიღაბი ისევე შეიქმნა, როგორც მაგიდა. შექმნის შემდეგ, ის შეიძლება გამოჩნდეს როგორც ცვლილება ეკრანზე. გახსოვდეთ, რომ თქვენ შეგიძლიათ შეინახოთ ამ სიმბოლოებზე მეტი მეხსიერებაში. პრინციპში, რაც საკმარისია. მაგალითად, აუცილებელია ხარისხის სიმბოლოს ჩვენება.

პრობლემები, რომლებშიც ეკრანი შეიძლება არ იმუშაოს

ასეთი შეცდომები ჩნდება, თუ ეკრანი არ მუშაობს. მაგალითად, ის აწკაპუნებს, მაგრამ არ აჩვენებს სიმბოლოებს. ან საერთოდ არ ჩაირთვება. მაშინვე გაოცდით, როგორ დააკავშირეთ კონტაქტები სწორად. თუ თქვენ სცადეთ LCD 1202 Arduino-ს დაკავშირება I2C-ის გარეშე, ძალიან ადვილია სადენებში დაიკარგოთ, რამაც შეიძლება გამოიწვიოს ეკრანის არასწორად მუშაობა. ასევე მნიშვნელოვანია აღინიშნოს, რომ ეკრანის კონტრასტი გაიზარდა, რადგან მინიმალური კონტრასტის ფრაგმენტები არ ჩანს და LCD 1602 არ არის გააქტიურებული. თუ არაფერი დაგვეხმარება, მაშინ შესაძლებელია, რომ პრობლემა წარმოიშვას უამრავ კონტაქტში, თუნდაც I2C მოდული გაუმართავი იყოს. კიდევ ერთი გავრცელებული მიზეზი, რის გამოც ეკრანი შეიძლება არ იმუშაოს, არის ის, რომ I2C მისამართი არასწორად არის დაყენებული. მარჯვნივ, უამრავი ამომრჩევია და ისინი შეიძლება განსხვავდებოდეს მისამართისგან, აქ უნდა გამოასწოროთ:

LiquidCrystal_I2C LCD (0x27,16,2);

მკლავებს შეიძლება ჰქონდეს ორი მნიშვნელობა, 0x27 და 16.2 (16, 2 არის ეკრანის ზომა, ხოლო 0x27 არის თავად I2C მისამართი). შეგიძლიათ სცადოთ ამ მნიშვნელობების შეცვლა 0x37 ან 0x3F დაყენებით. კიდევ ერთი მიზეზი არის უბრალოდ გაუმართავი LCD 1602. თუ გადავხედავთ იმ ფაქტს, რომ პრაქტიკულად ყველაფერი Arduino-სთვის იწარმოება ჩინეთში, შეუძლებელია 100%-ით იმის თქმა, რომ დამატებული პროდუქტი არ არის კარგი იდეა.

LCD 1602-ის დადებითი და უარყოფითი მხარეები

მოდით გადავხედოთ LCD 1602 დისპლეის დადებით და უარყოფით მხარეებს.

  • ფასი. ამ მოდულის შეძენა შესაძლებელია ჩინურ მაღაზიებში გონივრულ ფასად. ფასი 200-300 რუბლია. ზოგჯერ ისინი იყიდება I2C მოდულთან ერთად.
  • მარტივი დაკავშირება. ალბათ არავინ აკავშირებს LCD 1602-ს I2C-ის გარეშე. და ამ მოდულით, კავშირი იღებს მხოლოდ 4 კონტაქტს, არ იქნება მავთულის ქსელები.
  • პროგრამირება ჩვენ მზად ვართ ბიბლიოთეკებმა მარტივად იმუშაონ ამ მოდულთან, ყველა ფუნქცია უკვე რეგისტრირებულია. და თუ თქვენი სიმბოლოს დამატება გჭირდებათ, დახარჯავთ მხოლოდ რამდენიმე მონეტას.
  • ათასობით რადიოამატორის მიერ ჩატარებული ერთსაათიანი კვლევისას დიდი მინუსები არ გამოვლენილა, მხოლოდ კარიბჭის შესყიდვები დაიჭირეს, რის გამოც ძირითადად ჩინური ეკრანის ვარიანტები დარჩა.

ამ სტატიაში განხილული იყო 1602 Arduino-ს კავშირები და ასევე წარმოდგენილი იყო აპლიკაციები რობოტებისთვის ამ დისპლეით. მართალია, ეს კატეგორია ერთ-ერთი ყველაზე ლამაზია და ეს არ არის მხოლოდ ის, რომ ისინი აგროვებენ ათასობით რადიოგამაძლიერებელს თავიანთი პროექტებისთვის!

  • FC-113 მოდული აგებულია PCF8574T მიკროსქემზე, რომელსაც აქვს 8-ბიტიანი საერთო რეგისტრი, რომელიც „აფართოვებს“ I2C სერიული ავტობუსის შეყვანას და გამომავალს. პატარა მიკროსქემას აქვს ეტიკეტირება DD1.
  • R1 არის რეგულირებადი რეზისტორი RC დისპლეის კონტრასტის რეგულირებისთვის.
  • Jumper J1 გამოიყენება ეკრანის განათების გასაზრდელად.
  • ქინძისთავები 1…16 ემსახურება მოდულის დაკავშირებას LCD ეკრანის ქინძისთავებთან.
  • საკონტაქტო ფირფიტებს A1…A3 დასჭირდება I2C მისამართის შეცვლა. მავთულის მხტუნავების შედუღებით შეგიძლიათ შეცვალოთ მოწყობილობის მისამართი. ცხრილი გვიჩვენებს მისამართის და ჯუმპერის ტიპს: "0" მიუთითებს ღია კონექტორზე, "1" მიუთითებს დაინსტალირებულ ჯუმპერზე. კავშირების უკან არის 3 ჯუმპერი გათიშული და მისამართები მიმაგრებულია 0x27.

2 RC დისპლეის Arduino-სთან დაკავშირების სქემა I2C პროტოკოლის უკან

Arduino მოდულის შეერთება ხორციელდება სტანდარტულად I2C ავტობუსისთვის: SDA მოდულის კავშირები დაკავშირებულია A4 ანალოგურ პორტთან, SCL კავშირები უკავშირდება Arduino-ს ანალოგურ პორტს A5. მოდული იკვებება Arduino-დან +5 ვ ძაბვით. თავად მოდული დაკავშირებულია კავშირებით 1…16 შესაბამისი კავშირებით 1…16 PK ეკრანზე.


3 ბიბლიოთეკა რობოტებისთვის I2C პროტოკოლის უკან

ახლა ჩვენ გვჭირდება ბიბლიოთეკა LCD-თან მუშაობისთვის I2C ინტერფეისის უკან. შეგიძლიათ დააჩქაროთ, მაგალითად, cym ღერძი (იხ. "ჩამოტვირთეთ ნიმუშის კოდი და ბიბლიოთეკა" მწკრივი).

ზავანტაჟენიას არქივები LiquidCrystal_I2Cv1-1.rarგახსნილია საქაღალდეში \ბიბლიოთეკები\რომელიც მდებარეობს Arduino IDE დირექტორიაში.

ბიბლიოთეკა მხარს უჭერს სტანდარტული ფუნქციების კომპლექტს LCD ეკრანებისთვის:

ფუნქციადავალება
თხევადი კრისტალი () ქმნის ცვლილებას LiquidCrystal ტიპის და იღებს დისპლეის კავშირის პარამეტრებს (ნაწილის ნომრებს);
დაწყება () LCD დისპლეის ინიციალიზაცია, პარამეტრების დაყენება (სტრიქონების და სიმბოლოების რაოდენობა);
ნათელი () ეკრანის გასუფთავება და კურსორის გადაქცევა კობის პოზიციაზე;
სახლი () კურსორის როტაცია cob პოზიციაზე;
setCursor() კურსორის დაყენება მოცემულ პოზიციაზე;
დაწერე () სიმბოლოს ჩვენება RK ეკრანზე;
ბეჭდვა () ტექსტის ჩვენება RK ეკრანზე;
კურსორი () აჩვენებს კურსორს, შემდეგ. სავარძელი წინსვლის სიმბოლოს ადგილის ქვეშ;
noCursor() სად არის კურსორი;
თვალის დახამხამება() მომენტი კურსორამდე;
noBlink () მომენტალური მომენტი;
არაჩვენება () გამორთეთ ეკრანი და შეინახეთ ნაჩვენები ყველა ინფორმაცია;
ჩვენება () ეკრანის ჩართვა და ყველა ნაჩვენები ინფორმაციის შენახვა;
scrollDisplayLeft() გადაახვიეთ ეკრანის 1 პოზიცია მარცხნივ;
scrollDisplayRight() ეკრანის ნაცვლად გადახვევა 1 პოზიციით მარჯვენა ხელით;
autoscroll() ავტომატური გადახვევის ჩართვა;
noAutoscroll() autoscroll vimicanny;
მარცხნიდან მარჯვნივ() აყენებს ტექსტს პირდაპირ მარჯვნივ;
rightToLeft () ტექსტის მიმართულება მარჯვნიდან მარცხნივ;
createChar() მე ვქმნი კორისტუვაჩის სიმბოლოს LCD ეკრანისთვის.

4 ესკიზი ტექსტის ჩვენებისთვის LCD ეკრანზე I2C ავტობუსით

ვნახოთ ნიშანი: Zrazka ფაილი LiquidCrystal_I2C CustomCharsდა მისი ცოტაოდენი დაფქვა შეიძლება. ჩვენ ვიცით, რომ ბოლოს იქნება წარმავალი სიმბოლო. კოდექსამდე კომენტარები კომენტარს აკეთებს ესკიზის ყველა ნიუანსზე.

#შეიცავს // ჩართეთ Wire ბიბლიოთეკა #include // მოიცავს RK ბიბლიოთეკას#define printByte(args) write(args); // uint8_t გული = (0x0,0xa,0x1f,0x1f,0xe,0x4,0x0); // ბიტიანი ნიღაბი "გულის" სიმბოლო LiquidCrystal_I2C lcd(0x27, 16, 2); // დააყენეთ მისამართი 0x27 16x2 LCD ეკრანისთვის void setup() ( lcd.init(); // ჩვენების ინიციალიზაცია RC lcd.backlight(); // ეკრანის გაზრდილი განათება lcd.createChar(3, გული); // შექმენით „გულის“ სიმბოლო მეხსიერების მე-3 შუაში lcd.home(); // მოათავსეთ კურსორი ზედა მარცხენა კუთხეში, პოზიციაზე (0,0) lcd.!"); // ტექსტის სხვა მწკრივი lcd.setCursor(0, 1); // გადაიტანეთ კურსორი მე-2 მწკრივზე, სიმბოლო 1 lcd.print(i)) // სხვა შენიშვნა მე-2 მწკრივზე lcd.printByte(3); } void loop() (// დარჩენილი სიმბოლოს მომენტი lcd.setCursor(13, 1); // კურსორის გადატანა მე-2 რიგში, სიმბოლო 1 lcd.print("\t"); დაგვიანებით (500); lcd.setCursor(13, 1); // კურსორის გადატანა მე-2 რიგში, სიმბოლო 1 lcd.print(" "); დაგვიანებით (500); }

სიტყვის წინ, ბრძანებით დაწერილი სიმბოლოები lcd.createChar();, დისპლეის მეხსიერებას სიცოცხლის დაკარგვის შემდეგ ჩამოერთმევა სიცოცხლე, რადგან დაიწეროს ეკრანზე ROM 1602.

5 ძალაუფლების სიმბოლოების შექმნა RC ეკრანისთვის

შემდეგი, ჩვენ გადავხედავთ კვების სიმბოლოების შექმნას RK ეკრანებისთვის. კანის სიმბოლო ეკრანზე შედგება 35 წერტილისგან: 5 კუთხისა და 7 წრისგან (+1 სარეზერვო რიგი მხარდაჭერისთვის). ჩვენ მიერ შექმნილი ესკიზის მე-6 სტრიქონისთვის დავაყენეთ 7 რიცხვის მასივი: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). კონვერტირებადი 16-ნიშნა რიცხვები ბინარში: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . ეს რიცხვები სხვა არაფერია, თუ არა კანის ბიოლოგიური ნიღბები სიმბოლოების 7 მწკრივით, სადაც "0" მიუთითებს ნათელ წერტილზე, ხოლო "1" მიუთითებს ბნელ წერტილზე. მაგალითად, გულის სიმბოლო, ამოცანები ღამურის ნიღბის სახით, გამოჩნდება ეკრანზე, როგორც ნაჩვენებია ბავშვზე.

6 RK ეკრანის მართვა I2C ავტობუსით

გასაოცარი ჩანახატი Arduino-სთვის. ამოცანები გამოჩნდება ეკრანზე მოციმციმე კურსორის ბოლოს.


7 რისთვის არის იქ? I2C ავტობუსი

ბონუსად, მოდით გადავხედოთ ლათინური სიმბოლოების "A", "B" და "C" ჩვენების დროის დიაგრამას RK ეკრანზე. ეს სიმბოლოები არის ROM-ის ეკრანზე და ნაჩვენებია ეკრანზე უბრალოდ მათი მისამართების ეკრანზე გადაცემით. დიაგრამა აღებულია RS, RW, E, D4, D5, D6 და D7 დისპლეის დონეებიდან და ა.შ. უკვე FC-113 "I2C პარალელური ავტობუსი" გადამუშავების შემდეგ. შეიძლება ითქვას, რომ „ზალიზოში“ წვრილმანებს „ღრმად“ ვყრით.


ლათინური სიმბოლოების "A", "B" და "C" ჩვენების დროის დიაგრამა LCD ეკრანზე 1602

დიაგრამა გვიჩვენებს, რომ სიმბოლოები, რომლებიც დისპლეის ROM-შია (მონაცემთა ფურცლის მე-11 მხარე, ნაჩვენებია ქვემოთ) გადაცემულია ორ ბაიტში, რომელთაგან პირველი მიუთითებს ცხრილის სვეტის ნომერზე, ხოლო მეორე - რიგის ნომერზე. ამ ეტაპზე, მონაცემები "აწკაპუნებს" ხაზის სიგნალის წინა მხარეს (ჩართვა) და ხაზი რ.ს.(რეგისტრაცია აირჩიეთ) არის ლოგიკურ ერთეულზე, რაც ნიშნავს მონაცემთა გადაცემას. RS ხაზის დაბალი სიმაღლე ნიშნავს ჩანართების გადატანას, რომელსაც ვრეცხავთ კანის სიმბოლოს გადატანამდე. ეს შეყვანა გადასცემს ინსტრუქციის კოდს ვაგონის გადასაბრუნებლად PK დისპლეის პოზიციაზე (0, 0), რომლის იდენტიფიცირება ასევე შესაძლებელია ეკრანის ტექნიკური აღწერილობის წაკითხვით.

და კიდევ ერთი კონდახი. ეს საათობრივი დიაგრამა აჩვენებს "გულის" სიმბოლოს PK ეკრანზე.


კიდევ ერთხელ ვიტყვი, პირველ ორ იმპულსს ჩართვამიჰყევით ინსტრუქციას მთავარი ()(0000 0010 2) - ვაგონის როტაცია პოზიციაზე (0; 0), ხოლო დანარჩენი ორი - ჩვენება ციფრულ ეკრანზე, რომელიც ინახება მეხსიერებაში 3 10 (0000 0011 2) სიმბოლო "გული" (ინსტრუქციები). lcd.createChar(3, გული);ესკიზი).