Deney-9
Transkript
Deney-9
Mikrobilgisayar Laboratuvarı CSM-12C32 Deneyleri DENEY 5 Deney 5 LCD Göstergeli Saat Tasarımı Deneyin Amacı LCD Göstergelerin çalıĢma prensiplerinin öğrenilmesi Gerçek zaman saati, seri programlama ara birimi ve LCD sürme yetenekleri ile proje geliĢtirme yetisinin kazandırılması Deney Öncesi Yapılması Gerekenler 1. LCD göstergelerin çalıĢma ilkeleri araĢtırılmalıdır. 2. HY1602 tipinde gösterge katalog bilgileri incelenmelidir. Gereken Malzemeler 1. 2. 3. 4. CSM-12C32 Deney Kiti C.A.D.E.T. Ara bağlantı kablosu 1 x HY-1602 LCD Gösterge Referans Belgeler [R1] [R2] [R3] [R4] MC9S12C Family Datasheet CSM12C32 Bağlantı ġeması (CSM12C32_SCH_B.pdf) HY-1602 LCD Datasheet SPLC780A Controller Datasheet Notlar C.A.D.E.T. ve/veya CSM-12C32 eğitim kitinde herhangi bir bağlantı yapmadan önce mutlaka elektrik gücünü kapatınız. Kit üzerinden aktarma kablosu ile C.A.D.E.T. üzerine aldığınız bacak bağlantılarından emin olmak için deney masalarındaki ölçü cihazlarını (multimeter) kullanabilirsiniz. Ölçü cihazını kısa devre kontrol kipinde açtıkan sonra kit üzerindeki hangi bacağın, C.A.D.E.T. üzerinde hangi bacağa karĢılık geldiğini kontrol ediniz. C.A.D.E.T. bağlantı noktarından ölçüm almak için ölçüm cihazının probunu bağlantı noktalarına sokmayınız. Bunun yerine ilgili bağlantı noktasına bir sokunuz ve probu bu tele bağlayınız. LCD göstergeler çok hassas cihazlardır. Yanlış bağlantı kurulması durumda kolayca bozulmaktadır. Yapmış olduğunuz bağlantıları MUTLAKA en ince ayrıntısına kadar kontrol ediniz. Yanlış bağlantılar sonucu doğabilecek hasarlardan tüm grup olarak sorumlu olacaksınız. Son Değişiklik : 11.12.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 1 Mikrobilgisayar Laboratuvarı CSM-12C32 Deneyleri DENEY 5 Deney İçeriği Bu deneyde, seri iletiĢim ile ayarlanabilen ve sorgulanabilen bir elektronik saat gerçeklenecektir. Gerçek zaman saati kullanılarak saniye hassasiyetinde zaman ölçümü yapılacaktır. Geçerli tarih ve saat, LCD göstergede iki satırda aĢağıdaki gibi gösterilecektir. ġekil 1 – Saatin genel görünüĢü Deneyde kullanılan HY-1602 tipi göstergeler HD44780 uyumlu 2x16 (2 satır x 16 karakter) arka aydınlatmalı (backlight) göstergelerdir. Bu tip göstergelerin bacak bağlantıları aĢağıda verilmiĢtir: Pin Sembol/AlternatifSembol Tipik Değer 1 Vss - 2 3 4 5 6 7 8 9 10 11 12 13 14 Vdd/Vcc Vee/Vo RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 0/1 0/1 1, 1-->0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 Görevi Power supply (GND) Power supply (+5V) Contrast adjust 0 = Instruction input / 1 = Data input 0 = Write to LCD module / 1 = Read from LCD module Enable signal Data pin 0 Data pin 1 Data pin 2 Data pin 3 Data pin 4 Data pin 5 Data pin 6 Data pin 7 Tablo 1 – Gösterge bacak bağlantılarının açıklamaları Bunların haricindeki 15 (LEDA+) ve 16 (LEDK-) numaralı bacaklar, arka aydınlatma için kullanılmaktadır. Son Değişiklik : 11.12.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 2 Mikrobilgisayar Laboratuvarı CSM-12C32 Deneyleri DENEY 5 DĠKKAT 1 : LCD göstergenin giriĢlerin numaralandırılması ARDIġIL DEĞĠLDĠR. Sıralama Ģu Ģekildedir: 16 – 15 – 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 – 10 – 11 – 12 – 13 – 14 ġekil 2 – LCD göstergenin arka yüzü Göstergenin çalıĢması için dıĢarıdan çeĢitli komutlarla programlanması gerekmektedir. Komutlarla ilgili özet bir tbalo diğer sayfada verilmiĢtir. Tablodan da anlaĢılabileceği gibi komutların gösterge tarafından anlaĢılabilmesi için belirli bir süre geçmelidir. Bunun için LCD’ye gönderilen her komuttan sonra bir miktar bekleme yapan bir döngü alt programına gidilmelidir: delay delayLoop LDY #$01000 JSR delay2 DEY BNE delayLoop RTS Bir diğer seçenek de LCD göstergenin MEġGUL (BUSY) bayrağını okumak ve buna göre ilgili komutun bitlerini çıkıĢta bekletmektir. LCD gösterge, veri hattındaki komutları E izin giriĢinin düĢen kenarında (1->0 geçiĢinde) değerlendirir. Bu yüzden her komut gönderildiğinde aĢağıdaki iĢlemler yapılmalıdır: 1. 2. 3. 4. 5. E->1 yap Veri yoluna komut kodunu yerleĢtir Bekleme alt programını çağır E->0 yap Bekleme alt programını çağır Bu komutların ayrıntıları için lütfen SPLC780A.pdf isimli kaynağa baĢvurunuz. Son Değişiklik : 11.12.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 3 Mikrobilgisayar Laboratuvarı CSM-12C32 Deneyleri Instruction Code DB5 DB4 0 0 0 0 RS 0 0 R/W 0 0 DB7 0 0 DB6 0 0 DB3 0 0 DB2 0 0 DB1 0 1 DB0 1 * mode 0 0 0 0 0 0 0 1 I/D S Display On/Off control 0 0 0 0 0 0 1 D C B Cursor/display shift 0 0 0 0 0 1 S/C R/L * * Function set 0 0 0 0 1 DL N F * * Set CGRAM address Set DDRAM address Read busyflag and address counter 0 0 0 1 0 0 1 DDRAM address 0 1 BF CGRAM / DDRAM address Write CGRAM DDRAM Read CGRAM DDRAM to or 1 0 from or 1 1 Clear display Cursor home Entry set CGRAM address DENEY 5 Description Execution time** Clears display and returns cursor to the home position (address 0). Returns cursor to home position (address 0). Also returns display being shifted to the original position. DDRAM contents remains unchanged. Sets cursor move direction (I/D), specifies to shift the display (S). These operations are performed during data read/write. I/D = 0 --> cursor is in decrement position. I/D = 1 --> cursor is in increment position. S = 0 --> Shift is invisible. S = 1 --> Shift is visible Sets On/Off of all display (D), cursor On/Off (C) and blink of cursor position character (B). D = 0 --> Display off. D = 1 --> Displan on. C = 0 --> Cursor off. C = 1 --> Cursor on. B = 0 --> Cursor blink off. B = 1 --> Cursor blink on. Sets cursor-move or display-shift (S/C), shift direction (R/L). DDRAM contents remains unchanged. S/C = 0 --> Move cursor. S/C = 1 --> Shift display. R/L = 0 --> Shift left. R/L = 1 --> Shift right Sets interface data length (DL), number of display line (N) and character font(F). DL = 0 -> 4 bit interface. DL = 1 --> 8 bit interface. N = 0 --> 1/8 or 1/11 Duty (1 line). N = 1 --> 1/16 Duty (2 lines). F = 0 --> 5x7 dots. F = 1 --> 5x10 dots. Sets the CGRAM address. CGRAM data is sent and received after this setting. 1.64mS 1.64mS Sets the DDRAM address. DDRAM data is sent and received after this setting. 40uS 40uS 40uS 40uS 40uS 40uS write data Reads Busy-flag (BF) indicating internal operation is being performed and reads CGRAM or DDRAM address counter contents (depending on previous instruction). I used some delay functions in my code which are ThreadSleep if you don't want to use these you can check the Busy Flag and make your LCD speedy. BF = 0 --> Can accept instruction. BF = 1 --> Internal operation in progress no additional operation can be accepted. Writes data to CGRAM or DDRAM. 40uS read data Reads data from CGRAM or DDRAM. 40uS Tablo 2 – Gösterge komutları özet tablosu Son Değişiklik : 11.12.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 4 0uS Mikrobilgisayar Laboratuvarı CSM-12C32 Deneyleri DENEY 5 LCD ile Kit Bağlantısı Deneye baĢlamadan önce LCD gösterge ile deney kitinin çıkıĢ portları arasında uygun bağlantılar yapılmalıdır. LCD göstergenin veri yolu (DB7-DB0), kitin T PĠAsına (PT7-PT0), LCD göstergenin izin giriĢi E, kitin M PĠAsının 0. bitine (PM0), LCD göstergenin kütük seçicisi RS, kitin M PĠAsının 1. bitine (PM1) bağlanmalıdır. Besleme gerilimlerinin tamamı CADET üzerinden kullanılacaktır. ġekil 3 – Gösterge – Deney kiti bağlantı Ģeması DĠKKAT : Vo giriĢini kesinlikle +5V’a BAĞLAMAYINIZ. Bunun yerine toprağa (0 V) bağlayınız. Son Değişiklik : 11.12.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 5 Mikrobilgisayar Laboratuvarı CSM-12C32 Deneyleri DENEY 5 Deneyde Yapılacaklar Bölüm 1 Yalın Saat Yazılımı Deneyin ilk adımı, yalın saatin gerçekleĢtirilmesidir. Yalın saat, gerçek zaman saati kullanılmadan, yaklaĢık 1 saniye süren bir döngü ile gerçekleĢtirilecektir. Ayrıca tarih ve saat alanlarının ilk değerleri değiĢtirilemeyecektir, yani seri iletiĢim kullanılmayacaktır. Programınızın ana çatısı, aĢağıdaki gibi olabilir: ; tarih/saat bilgileri BCD tipinde saklanabilir SANIYE DC.B $10 DAKIKA DC.B $58 SAAT DC.B $23 GUN DC.B $30 AY DC.B $12 YIL DC.B $7 anaDongu … JSR JSR JSR JSR BRA … ilkIslemler birSaniyeGecik birSaniyeArttir goster anaDongu NOT : Deneyi gerçeklerken her ay için gün sayısını 30 olarak kabul edebilirsiniz. Bölüm 2 Gerçek Saat Yazılımı Bir önceki bölümde yaklaĢık 1 saniyelik bir döngü ile gerçeklediğiniz süre ölçme kısmını gerçek zaman saatinden gelen kesmelerle çalıĢacak Ģekilde programınızı değiĢtiriniz. ĠlkiĢlemler adımında gerçek zaman saatinin koĢullamasını da eklemeyi unutmayınız. Son Değişiklik : 11.12.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 6 DENEY 5 Mikrobilgisayar Laboratuvarı CSM-12C32 Deneyleri Bölüm 3 Seri Haberleşme Arayüzü Bu saatin programlanması için seri iletiĢim arabirimi üzerinden aĢağıdaki biçimde $00 ile baĢlayan bir ayar verisi alınması gereklidir. $00 1 sekizli SANĠYE DAKĠKA (tamsayı) (tamsayı) 1 sekizli 1 sekizli SAAT GÜN AY YIL (tamsayı) (tamsayı) (tamsayı) (tamsayı) 1 sekizli 1 sekizli 1 sekizli 1 sekizli $0D 1 sekizli Tablo 3 –Tarih/saat ayarlama paketi biçimi Seri iletiĢim, 9600 bit/saniye hızda aktarılan 8 bitlik veriler ile tek eĢlik ve 1 dur biti ile sağlanacaktır. Seri iletiĢim ile aynı zamanda sistemde geçerli olan saat de sorgulanabilecektir. Sorgulama için deney kitine $01 $0D sekizlileri gönderilmelidir. Deney kitinden bilgisayar dönecek cevap paketinin biçimi ise aĢağıdaki gibi olacaktır: $01 1 sekizli SANĠYE DAKĠKA (tamsayı) (tamsayı) 1 sekizli 1 sekizli SAAT GÜN AY YIL (tamsayı) (tamsayı) (tamsayı) (tamsayı) 1 sekizli 1 sekizli 1 sekizli 1 sekizli $0D 1 sekizli Tablo 4 – Sorgulama cevabı paket biçimi Programınızın ana döngüsünde, seri haberleĢme kanalından bir veri gelip gelmediğini kontrol ediniz. Tarih/saat ayarlama verisi seri iletiĢim arabiriminden okunarak değiĢken içerikleri sırayla güncellenecek ve sayma kaldığı yerden devam edecektir. Sorgulama verisi gelmiĢse, güncel değiĢkten içerikleri seri iletiĢim arabirimi üzerinden bilgisayara gönderilecektir. ĠlkiĢlemler adımında seri iletiĢim arabirimini uygun Ģekilde koĢullamayı unutmayınız. Raporda İstenenler Gerçeklediğiniz yazılımlarının blok diyagramlarını ve akıĢ Ģemalarını veriniz. Aya göre ayın gün sayısını döndüren bir altprogram yazınız. Yukarıdaki altprogramı kullanarak programınızı doğru gün sayısında (artık yıllar dahil) güncelleyiniz. Son Değişiklik : 11.12.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 7