» »

Ekranı ve çıkışı Arduino'ya bağlama. Ekranı mikrodenetleyiciye bağlama

21.08.2020

Nasıl yapılacağını öğrendik: bir mikro denetleyiciyi kontrol etmeyi ve bir mikro denetleyiciyi kullanarak bir şeyi kontrol etmeyi. Şimdi cihazımızı daha kullanıcı dostu hale getirmek için ona bir ekran bağlayacağız.

Hemen rezervasyon yaptırayım: Gösterim semboliktir. Bu, hafızasında zaten bir alfabenin olduğu anlamına gelir. Tek ihtiyacımız olan satırı yazdırmak için komutu vermek.

Ekranlar farklıdır: ekran arka ışığının farklı renkleri, farklı satır sayısı, satır başına farklı sayıda karakter. Bu nedenle burada WH0802A-YGK-CT ekranı, 8 karakterden oluşan 2 satır, sarı LED arka aydınlatmayı ele alıyoruz.

CodeVision'da bir proje oluşturalım. LCD sekmesinde ekranımızın bağlanacağı portu (PORTD) belirtiyoruz. Char/Line satırında LCD ekranımızın karakter sayısını (8) belirtiyoruz.

Projeyi üretip kaydediyoruz. Kodu aşağıdaki forma getiriyoruz:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #katmak #asm .equ __lcd_port= 0x12 ; PORTD #endasm #include void main(void ) ( PORTD= 0x00 ; DDRD= 0x00 ; lcd_init(8 ) ; while (1 ) ( ) ; )

#katmak #asm .equ __lcd_port=0x12 ;PORTD #endasm #include void main(void) ( PORTD=0x00; DDRD=0x00; lcd_init(8); while (1) ( ); )

Program kodumuzu biraz değiştirelim:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #katmak #asm .equ __lcd_port= 0x12 #endasm #include void main(void) ( PORTD= 0x00 ; DDRD= 0x00 ; lcd_init(8 ) ; lcd_gotoxy(0 , 0 ); lcd_putsf("ders3" ) ; #pragma rl+ lcd_gotoxy(0 , 1 ) ; lcd_putsf("Lesson3" ) ; #pragma rl- while (1 ) ( ) ; )

#katmak #asm .equ __lcd_port=0x12 #endasm #include void main(void) ( PORTD=0x00; DDRD=0x00; lcd_init(8); lcd_gotoxy(0,0); lcd_putsf("ders3"); #pragma rl+ lcd_gotoxy(0,1); lcd_putsf("Ders3"); #pragma rl- while (1) ( ); )

Ortaya çıkan kodu IŞİD Proteus'ta simülasyon için çalıştıralım. Gördüğünüz gibi, ilk satır doğru görüntüleniyor ancak ikinci satır berbat. Gerçek şu ki, Proteus Rus alfabesini tanımıyor ve ekranınız bunu desteklemiyorsa, gerçek ekranda da anlaşılmaz karakterler olacaktır.

Şimdi hepsini gerçek bir ekranda denememiz gerekiyor. Burada bazı nüanslar var. Veri sayfasını ekranımızda açıyoruz ve bu tabloyu pinoutlarla birlikte görüyoruz:

Muhtemelen burada her şey açıktır, ancak yine de:

1 - Toprak 0V.

2 - Güç kaynağı +5V.

3 - Kontrast kontrolü. Değişken bir direnç aracılığıyla bağlanır.

LED ışıklar. Normal bir LED gibi bağlarız.

A - akım sınırlayıcı bir direnç aracılığıyla “+” ya bağlanın, K - “toprak” a (GND) bağlanın.

Bir diğer önemli nokta ise mikro denetleyicinin kuvars rezonatörden saatlenmesi gerektiğidir, aksi halde doğru çalışma garanti edilmez.

Firmware cihazının görünümü

Firmware ve protein dosyası mevcut

HD44780 denetleyici temelinde oluşturulan 1602 boyutlu LCD ekranlar, bugün hala her türlü elektronik cihazın geliştirilmesi için en uygun fiyatlı, basit ve talep gören ekranlardan biri olmaya devam ediyor. Hem kelimenin tam anlamıyla diz üzerine monte edilmiş basit ünitelerde hem de kahve makineleri gibi daha ciddi endüstriyel ünitelerde görülmeleri şaşırtıcı değildir. Arduino ile ilgili en popüler modüller ve ekranlar, örneğin LCD I2C modülü ve LCD Tuş Takımı Kalkanı bu ekranla birleştirilir.

Bu makalede, bir LCD'nin Arduino'ya nasıl bağlanacağı ve bilgilerin nasıl görüntüleneceği resimlerle ayrıntılı olarak açıklanmaktadır.

Adım 1: Arduino için 1602 LCD Ekran

1602 ekran var iki farklı versiyon:

Siyah harflerle sarı arka ışık
- veya (bu çok daha sık olur) beyaz olanlarla mavi arka ışık.

HD44780 denetleyicideki ekranların boyutu büyük ölçüde farklılık gösterir ancak aynı şekilde kontrol edilirler. En yaygın boyutlar 16 x 02 (yani iki satırda 16 karakter) veya 20 x 04'tür. Karakterlerin çözünürlüğü 5 x 8 pikseldir.

Çoğu ekran Kiril alfabesini desteklemez (CTK işaretli ekranlar hariç). Ancak bu sorun kısmen çözülebilir ve makalede bunun nasıl yapılacağı ayrıntılı olarak açıklanmaktadır.

Ekranda bağlantı için 16 PIN'li bir konektör bulunur. Sonuçlar var tahtanın arkasındaki işaretler, aşağıdaki gibidir:

1 (VSS) – denetleyici için negatif güç kaynağı.
2 (VDD) – denetleyici için pozitif güç kaynağı.
3 (VO) – kontrast kontrolü ayarları.
4 (RS) – kayıt seçimi.
5 (R/W) – okuma ve yazma, özellikle toprağa bağlandığında yazma.
6 (E) – etkinleştirme (etkinleştirme).
7–10 (DB0-DB3) – sekiz bitlik arayüzden düşük dereceli bitler.
11–14 (DB4-DB7) – arayüzdeki en önemli bitler
15 (A) – arka ışık güç kaynağı için pozitif anot.
16 (K) – arka ışık güç kaynağı için negatif katot.

Adım 2: LCD Ekranı bağlayın

Ekranı bağlamadan ve ona bilgi aktarmadan önce işlevselliğini kontrol etmeye değer. Öncelikle VSS ve VDD denetleyicisine voltaj uygulayın, arka ışığı açın (A, K), ardından kontrastı ayarlayın. Bu tür ayarlar için 10 kOhm'luk bir potansiyometre uygundur, şekli önemli değildir. Dış bacaklara +5V ve GND beslenir, ortadaki bacak ise VO pinine bağlanır.

Devreye güç verildiğinde gerekli kontrastı elde etmeniz gerekir, yanlış ayarlanırsa ekrandaki görüntü görünmeyecektir. Kontrastı ayarlamak için potansiyometreyle "oynamanız" gerekir. Devre doğru şekilde kurulduğunda ve kontrast doğru ayarlandığında ekranın üst satırı dikdörtgenlerle doldurulmalıdır.

Ekranın çalışmasını sağlamak için, aşağıda yazacağım Arduino IDE'ye yerleşik LiquidCrystal.h adlı özel bir kütüphane kullanılıyor. 8 bit ve 4 bit modunda çalışabilir. İlk seçenekte, yalnızca en az önemli ve en önemli bitler (BB0-DB7) kullanılır, ikincisinde ise yalnızca en az anlamlı olanlar (BB4-DB7) kullanılır.

Ancak bu ekranda 8 bit modunu kullanmak yanlış bir karar; yenileme hızı her zaman saniyede 10 kerenin altında olduğundan hız avantajı neredeyse yok. Metni görüntülemek için DB7, DB6, DB5, DB4, E ve RS pinlerini denetleyici pinlerine bağlamanız gerekir. Herhangi bir Arduino pinine bağlanabilirler, asıl önemli olan koddaki doğru sırayı ayarlamaktır.

Gerekli sembol henüz kontrol cihazının hafızasında değilse, bunu manüel olarak tanımlayabilirsiniz (toplamda yedi sembole kadar). Söz konusu ekranlardaki hücrenin beşe sekiz piksellik bir uzantısı vardır. Bir sembol oluşturmanın görevi, bir bit maskesi yazmak ve noktaların yanması gereken yerlere birleri, yanmaması gereken yerlere ise sıfırları yerleştirmektir.

Arduino'da en az altı dijital çıkış kullanıldığından yukarıda tartışılan bağlantı şeması her zaman iyi değildir.

3. Adım: Geçici Çözüm

Bu sorunu aşmak ve yalnızca iki taneyle yetinmek için bir seçenek keşfedelim. LCD'den IIC/I2C'ye ek bir dönüştürücü modüle ihtiyacımız var. Ekrana nasıl lehimlendiği ve Arduino'ya nasıl bağlandığı aşağıdaki resimlerde görülebilir.

Ancak bu bağlantı seçeneği yalnızca LiquidCrystal_I2C1602V1 adlı özel bir kitaplıkla çalışır, ancak bunu internette bulmak ve yüklemek kolaydır, ardından sorunsuzca kullanabilirsiniz.

Adım 4: LiquidCrystal.h Kütüphanesi

LiquidCrystal.h kütüphanesi resmi kaynaktan indirilebilir -. Aşağıdaki bağlantılardan da indirebilirsiniz:

Eskiz

Arşivi indirdikten sonra Arduino kurulum dizininizin kütüphaneler klasöründeki LiquidCrystal klasörünü değiştirin.

Örnek krokiyi şurada görebilirsiniz Dosya -> Örnekler -> LiquidCrystal -> HelloWorld_SPI(Dosya -> Örnekler -> LiquidCrystal -> HelloWorld_SPI).

Bu bir sonraki dersimizi tamamlıyor. Size kaliteli projeler diliyoruz!

Elektroniğe olan tutkum boyunca birçok üreticinin LCD'lerini kullanma fırsatım oldu. DataVision, WINSTAR, Uniworld Technology Corp. Kontrolörün türü, pin sayısı ve hatların uzunluğu bakımından farklıydılar, ancak hepsi aynı bağlantı şemasına, komut sistemine sahipti ve mikrodenetleyiciden aynı program tarafından servis ediliyordu. Bu nedenle, şimdi ekran hakkında konuşacak olsak da WINSTAR'dan WH0802A Aşağıda belirtilen her şey diğer şirketlerin karakter LCD ekranları için geçerlidir.

Böylece WH0802A-YGH-CT ekranını mikrodenetleyiciye bağlıyoruz

WH0802A, yerleşik KS0066 kontrol denetleyicisine sahip 8 karakterlik iki satırlı karakter ekranıdır.
Şimdi ekran pinlerinin amacına bakalım.

Bazı ekranlarda iki ek pin bulunur: arka ışık pinleri +LED ve –LED. Üstelik sonuçlar varsa, bu arkadan aydınlatmanın olduğu anlamına gelmez. Aynı şekilde tam tersi. Ekranımın arka ışığı var ama kontrol pinleri yok.

Varsayılan olarak WH0802A-YGH-CT ekranının arka ışığı devre dışıdır. Açmak için birkaç basit manipülasyon yapmanız gerekir, yani akım sınırlayıcı bir dirence iki atlama teli ve lehim takmanız gerekir (sırasıyla fotoğraf RK, JF ve RA'ya bakın).

Bağlantı şemasını görüntüle

Bu, karakter LCD'lerini bağlamak için tipik bir şemadır. Ekran arka ışık kontrol devresini kullanmayacağız ama her ihtimale karşı çizdim.

Kodu başlat

Devreye güç uyguladıktan sonra kontrast regülatörünü (direnç R1) çevirmeniz gerekir. Ekranda üst satır görünüyorsa bu, canlı olduğu ve kod yazmaya başlama zamanının geldiği anlamına gelir. İlk aşamada 8 bitlik bir veri yolu kullanacağız. İlk sonuçları elde etmek için iki fonksiyon yazmamız gerekecek; bir veri kayıt fonksiyonu ve bir komut kayıt fonksiyonu. Sadece bir satırda farklılık gösterirler - veri yazıldığında RS sinyali 1 olmalı, komut yazıldığında RS 0 olmalıdır. Şimdilik okuma fonksiyonlarını kullanmayacağız, bu nedenle R/W sinyali her zaman 0 olacaktır. .

8 bitlik bir veri yolunun yazma döngüsü şuna benzer:
1. RS'yi ayarlayın (0 - komut, 1 - veri)
2. Veri baytının değerini DB7…DB0 veri yoluna gönderin
3. E=1'i ayarlayın
4. Yazılım gecikmesi 1
5. E=0'ı ayarlayın
6. Yazılım gecikmesi 2

LCD karakter ekran denetleyicisi sonsuz hızlı olmadığından bazı işlemler arasında yazılım gecikmeleri kullanılır. Birincisi, flaş sinyalini bir süre tutmak için gereklidir, ikincisi ise kontrolörün veri yazması veya bir komutu yürütmesi için zamana sahip olması için gereklidir. Gecikme değerleri her zaman ekran denetleyicisinin açıklamasında verilmiştir ve her zaman en azından minimum değerlerini korumalısınız, aksi takdirde denetleyicinin çalışmasında arızalar kaçınılmazdır.

Genel olarak, ekran denetleyicisinde meşgul bayrağı - BF bulunur. Bayrak 1 ise kontrolör meşgul, 0 ise boş demektir. İkinci bir yazılım gecikmesi yerine meşgul işaretini okuyabilir ve ekran denetleyicisinin boş olup olmadığını kontrol edebilirsiniz. Ancak ilk sonuçları hızlı bir şekilde almak istediğimiz için meşgul bayrağıyla daha sonra ilgileneceğiz.

//karakter LCD ekranını AVR'ye bağlayın
#katmak
#katmak

//LCD veri yolunun bağlı olduğu port
#define PORT_DATA PORTD
#define PIN_DATA PIND
#DDRX_DATA DDRD'yi tanımlayın

//kontrol pinlerinin bağlı olduğu port
#define PORT_SIG PORTB
#define PIN_SIG PINB
#DDRX_SIG DDRB'yi tanımlayın

//mikrodenetleyici pin numaraları
//LCD kontrol pinlerinin bağlı olduğu yer
#RS 5'i tanımlayın
#RW 6'yı tanımla
#tanımla EN 7

//bitlerle çalışmak için makrolar
#define ClearBit(reg, bit) reg &= (~(1<<(bit)))
#define SetBit(reg, bit) reg |= (1<<(bit))

#define F_CPU 8000000
#define_delay_us(biz) __delay_cycles((F_CPU / 1000000) * (biz));
#define_delay_ms(ms) __delay_cycles((F_CPU / 1000) * (ms));

//komut kayıt fonksiyonu
geçersiz LcdWriteCom( imzasız karakter veri)
{
ClearBit(PORT_SIG, RS); // RS'yi 0'a ayarla
PORT_DATA = veri; // veriyi veri yoluna gönderiyoruz
SetBit(PORT_SIG, EN); // E'yi 1'e ayarla
_delay_us(2);
ClearBit(PORT_SIG, EN); // E'yi 0'a ayarla
_delay_us(40);

//veri kayıt fonksiyonu

geçersiz LcdWriteData( imzasız karakter veri)
{
SetBit(PORT_SIG, RS); //RS'yi 1'e ayarladık
PORT_DATA = veri; // veriyi veri yoluna aktarıyoruz
SetBit(PORT_SIG, EN); //E'yi 1'e ayarladık
_delay_us(2);

ClearBit(PORT_SIG, EN); // E'yi 0'a ayarla

Gecikme_us(40);
}

int ana( geçersiz )
{
sırasında (1);
geri dönmek 0;
}

Burada karmaşık kısımlar yok, her şey net olmalı. Devam etmek.

Herhangi bir LCD ekranın kullanımdan önce başlatılması gerekir. Başlatma işlemi genellikle ekran denetleyicisinin veri sayfasında açıklanır. Ama orada bir bilgi olmasa bile sıralama büyük ihtimalle bu şekilde olacaktır.

1. Yemek servisi yapın

2. Bekleyin >40 ms

3. Fonksiyon seti komutunu verin

D.L.– veri yolu genişliği ayar biti
0 – 4 bit veri yolu, 1 – 8 bit veri yolu

N– ekran satırlarının sayısını ayarlamak için bit
0 – tek hatlı mod, 1 – iki hatlı mod

F– yazı tipi ayar biti
0 – 5*8 formatı, 1 – 5*11 formatı

* - bu parçalarda ne olacağı önemli değil

4. Ekran AÇIK/KAPALI komutunu verin

D– açma/kapama bitini görüntüleme
0 – ekran kapalı, 1 – ekran açık

C– imleç açma/kapama biti
0 – imleç devre dışı, 1 – imleç etkin

B– titremeyi etkinleştirme biti
0 – titreyen imleç etkin, 1 – titreyen imleç devre dışı

5. Ekranı Temizle komutunu verin


6. Bekleyin > 1,5 ms

7. Giriş Modu Ayarı komutunu verin

İD– DDRAM adresini artırma/azaltma sırası (veri RAM'ini görüntüleme)
0 – imleç sola hareket eder, adres 1 azalır, 1 – imleç sağa hareket eder, adres 1 artar

SH– tüm ekranın kaydırma sırası
0 – kaydırma yok, 1 – kaydırma I/D sinyaline göre gerçekleşir – eğer varsa 0 – ekran sağa kayar, 1 – ekran sola kayar

Örneğimiz için başlatma fonksiyonu şöyle görünecek

Bazen Arduino'dan dış dünyaya çeşitli bilgiler çıkarma sorunuyla karşı karşıya kalıyoruz. Çoğu zaman seri bağlantı noktası kullanmak imkansızdır, zahmetlidir ve kârsızdır.

Karakter ekranı, kodlanmış karakterleri saklayan kendi mikro denetleyicisine sahip olduğundan, bilgiyi görüntülemenin en basit ve en ucuz yollarından biridir. Bu sistem, bu ekranların kullanımını basitleştirir, ancak aynı zamanda grafik ekranların aksine bunların kullanımını yalnızca metin bilgilerinin görüntülenmesiyle sınırlar.

Örnekte hd44780 denetleyicide en yaygın ekranlardan biri olan Winstar wh1602l1 ekranına bakacağız. Ayrıca LCD 2004 ve benzeri olanları da bağlayabilirsiniz.
İlk iki rakam satır başına karakter sayısını, ikincisi ise satır sayısını gösterir, böylece seçilen ekranda 16 karakterlik 2 satır bulunur.
Bu bağlantı yöntemi, Arduino mikro denetleyicisinin en az 6 bağlantı noktasının kullanılmasını içerir. Gerekirse 1602 metin ekranını I2C arayüzü (2 port) üzerinden bağlayabilirsiniz.

Kontrastı kontrol etmek için ek elemanlardan değişken bir dirence ihtiyacımız var. Aksi takdirde her şey şemaya göre, veri sayfasına ve programdaki seçilen Arduino çıkışlarına göre bağlanır.

Ekrandaki 15 ve 16 numaralı pinler arka ışıktan sorumludur; Arduino'ya parlaklık sensörü olarak bir foto direnç bağlandığında kapatılabilir veya parlaklık otomatik olarak ayarlanabilir.

Örneğimizde seri porttan veri okuyacağız ve ekranda görüntüleyeceğiz:

#katmak // Karakter ekranlarıyla çalışmak için kitaplığı bağlayın LiquidCrystal lcd(13, 11, 5, 4, 3, 2); // (RS, E, D4, D5, D6, D7) ekrana veri yazacağımız ve void setup()'ı okumayacağımız için ekran çıkışlarını R/W – GND sırasına göre bağlayın ( lcd.begin( 16, 2); // LCD 1602'yi başlat // lcd.begin(20, 4); // LCD 2004'ü başlat Serial.begin(9600); // Seri bağlantı noktasını başlat ) void loop() ( if (Serial.available) ()) // Porttan veri geliyorsa... ( gecikme(100); lcd.clear(); // (Serial.available() > 0) iken ekranı tamamen temizleyin // Veri porttan geliyorsa port 0'dan büyükse ... ( lcd.write(Serial.read()); // Seri porttan değerleri okuyun ve ekranda gösterin )) )

Kodu karmaşıklaştırabilir ve Arduino'daki DS1307 gerçek zamanlı saatini LCD1602'nize gönderebilirsiniz.

Şimdi kütüphanedeki tüm fonksiyonlara daha yakından bakalım Likit kristal:

İlk ve en önemli şey, bu kütüphaneyi kullanarak, ekranın hafızasında bu karakterler olsa bile Rusça harfleri görüntüleyememenizdir. Bu sorun ya diğer kütüphaneler tarafından ya da onaltılık kod kullanılarak değerler yazılarak çözülebilir.

lcd.print();- bilgileri görüntülemek için kullanılan en basit ve en sık kullanılanıdır.

lcd. temizlemek(); - ekranı temizlemek için kullanılır.

lcd.setCursor(X, sen); - imleci belirli bir yere yerleştirir.

X – hattaki konum değişikliği

Y – çizgi değişikliği

Örneğin, lcd.setCursor(0, 0); burası sol üst hücre.

lcd.home(); - imleci 0, 0 konumuna yerleştirir

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

lcd. kaydırmaEkranSol(); - sola kay

lcd. kaydırmaEkranSağ(); - sağa kaydır

Lcd.createChar(İsim, sıralamak); - kendi tabelanızı yaratmak.

Örneğin derece işareti şuna benzer:

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

Bu sefer size Nokia 1202 cep telefonunun ekranının Atmega8 mikro denetleyicisine nasıl bağlanacağını anlatmak istiyorum. CodeVision ortamında programlıyoruz. Orada burada yanılmış olabilirim. Neyin ne olduğunu anlamam çok uzun sürmedi. Programlama konusunda hiçbir tecrübem yok ve kütüphaneyi ekranla çalışmak için yazmadım. İnternetteki bir projeden kopyalandılar. Gerekli tüm fonksiyonlar orada yazılı olup, Latin harfleri ve Kiril alfabesiyle 5*8 yazı tipi bulunmaktadır. Ayrıca kitaplıkların yazarının cihazında kullandığı birkaç 12*16 ve 24*32 karakteri de vardır. Bunları kaldırırsanız, 5*8 ​​yazı tipi yaklaşık 700 bayt mikro denetleyici flaşını kaplar. Bu nedenle proje için mikrodenetleyicinin "daha yağlı" alınması gerekiyor.Benim durumumda ben kullandım Atmega8. Oldukça yeterli. Tüm dosyalar - kaynaklar, kütüphane vb.

Gösterge bağlantı şeması

LCD ekranı MK'ye bağlamanın şematik diyagramı

Bağlantı şeması çizdim. Ekrana güç sağlamak için 3,3V'luk bir voltaja ihtiyacınız vardır. Mikrodenetleyiciye 5V'tan güç veriyorsanız, direnç bölücüler ve bir mikro devre takın 78L33. Devrenin tamamı 3,3V'tan besleniyorsa direnç bölücülere gerek yoktur. Atmega8A'nın frekansı 8 MHz'den yüksek olmamak koşuluyla 3.3V'den çalışabileceği görülüyor. Şahsen ben denemedim. Her şeyi 5V ile çalışan bir hata ayıklama panosunda topladım. Hiçbir durumda ekranın önüne büyük kapasiteli bir elektrolit koymamalısınız. Çalışmanın en başında kontrol cihazı ekrana başlatma komutları gönderir. Kapasitörün şarj edilmesi zaman alır. Şarj olurken ve ekran çalışmaya başlarken bir süre geçecek ve başlatma komutu almayacaktır. Elbette bunlar milisaniyedir ancak bu durumda etki farkedilir.


Pin şemasını görüntüle

Nokia 1202 ekranı 9 bitlik bir SPI arayüzüne sahiptir. Seçtiğimiz mikrodenetleyicinin bu lüksü yok. Bu nedenle, ekranla iletişim kurmak için donanım değil, yazılım SPI'sini kullanıyoruz, tabiri caizse "hiç düşünmeden". CodeVision'da nasıl yeni projeler oluşturacağınızı size söylemeyeceğim - kendiniz düşünün. Sadece şunu söyleyeceğim: tüm PORTB pinleri çıkış olarak yapılandırılmalıdır. Proje ayarlarında " seçeneğini işaretlemeniz gerekir. Global Sabitleri FLASH Bellekte Saklayın" Bu eylem, yazı tipi dizilerinin ve görsellerimizin flash'ta saklanması için gereklidir.


Böylece projeyi oluşturduk. Bir mikrodenetleyici seçtik, saat frekansını ayarladık ve projeyi yapılandırdık. Sıradaki ne? Daha sonra görüntüleme ve gecikme kitaplıklarıyla çalışmak için kitaplıklar eklemeniz gerekir. Arşivi paketinden çıkarın. Orada iki dosya var. Belirli klasörlere kopyalanmaları gerekir. Umarım CodeVision'ı doğrudan C:\ sürücüsüne yüklemişsinizdir. Evetse, dosyaları uygun yollara kopyalayın:

1100.inc dosyası için C:\cvavreval\inc ve
1100.h dosyası için C:\cvavreval\lib .


Ayrıca dosyada mikrodenetleyici pinlerinin atamasının değiştirilebileceğini de söylemek istiyorum. 1100.saat. Daha sonra bağlantı şeması değişecektir. Kodlamaya başlayalım. Ekranda 5*8 ana yazı tipinde bazı yazılar görüntüleyelim. Başlangıçta kütüphaneler ekleyeceğiz.

#katmak< 1100.h>// kütüphaneyi göster
#katmak // kütüphaneyi geciktir

En altta, ana while(1)() döngüsünden önce ekranı başlatıyoruz ve temizliyoruz.

lcd_init(); // başlatmayı göster
lcd_clear(); // ekranı temizle

Ayrıca yazımızı ana döngünün önüne yerleştireceğiz. Denetleyicinin önce mesajı ekranda göstermesine ve ardından ana döngüde dönmesine izin verin. Bunu yazıyoruz:

print_string("Yazıyı çıktıla",5,0);
print_string("Ne istersek",0,1);
print_string("BUCKER",10,2);

Burada her şeyin açık olduğunu düşünüyorum. İlk rakam ekrandaki x koordinatıdır. 0'dan 96'ya kadar değer alabilir. İkincisi ise string'dir. 0'dan 7'ye kadardır. Prensip olarak oraya 8 buçuk satır sığar ama biz yarım satır okumayacağız. Derleyip flashlıyoruz. Sonuca bakalım. Ayrıca Proteus'u kurup test edebilirsiniz. Kontrolör, projede belirtilen frekansta, 64 ms başlatma gecikmesiyle dahili bir jeneratörden çalışacak şekilde yapılandırılabilir. Derlenmiş projeyle birlikte bir arşiv ekliyorum. Frekans 8 MHz.


Ama başta da yazdığım gibi kütüphanede başka semboller de var. Doğru, harf yok, yalnızca sayılar var. Şimdi görevi biraz karmaşıklaştıralım. Yazıtın hareketsiz kalmasına izin vermeyin, değişin. Diyelim ki 1 saniye aralıklarla 0'dan 9'a kadar sayıyor. 9’a ulaştığında sıfırlanıp yeniden başlayacaktır. 24*32 ölçülerinde büyük sayılar alalım. Peki, başlayalım. Önceki projeyi alıp üç “print_string” satırını silebilirsiniz.Kütüphaneleri ekledikten hemen sonra belli bir global değişken tanımlayalım. M.

karakter m = 0;

Basitçe şunu yazabilirsiniz:

Bu durumda otomatik olarak 0 değeri atanacaktır. Ana döngüde şunu yazıyoruz:

char_24_32(m,35,2); //sembol çıkış fonksiyonu 24*32
gecikme_ms(1000); // 1 saniye bekle
m++; // m değişkenine 1 ekleyin
if(m>9)m=0; // Durum. M değişkeni 9'dan büyükse m 0'a eşittir.

Programın çalışmasını gösteren kısa bir video hazırladım

Sizlere nasıl resim çizileceğini ve ekranda nasıl görüntüleneceğini anlatmaya çalışacağım. Bunların çıktısını almak için diziler ve işlevler nasıl oluşturulur ve bir görüntünün nasıl tersine çevrileceği. Kütüphaneler cxem.net sitesinden ödünç alınmıştır. Hazırlanan materyal İçki.

BİR EKRANIN MİKRO DENETLEYİCİYE BAĞLANMASI makalesini tartışın