 |
:: ضو فضي ::
تاريخ التسجيل: Aug 2010
المشاركات: 350
|
|
نشاط [ DELTA67 ]
قوة السمعة:81
|
|
28-03-2013, 10:25 AM
المشاركة 1
|
|
تعتبر شاشة تلفونات نوكيا 3310 من أكثر الشاشات استعمالا من طرف الهواة نظرا لتوفرها و رخص سعرها و سهولة توصيلها بالمكروكنترولر. و هي صغيرة الحجم و لا تحتاج الا لعنصر خارجي واحد اضافي و هو مكثفة.
هذه الشاشات هي من النوع البياني Graphical حيث يمكنها عرض ما نشاء من نصوص أو رموز أو صور. و هي تحتوي على 84X48 بكسل أي 84 بكسل أفقيا و 48 بكسل عموديا ( 96X65 بكسل للـ 3410).
تتغذى هذه الشاشة بجهد 3,3 فو و تستعمل بروتوكول SPI للتواصل مع المكروكنترولر.
هذه هي المواصفات الفيزائية للشاشة و ترتيب أطرافها:
و هذا شرح لوظيفة كل طرف:
هذه الشاشة تعتمد على المتكاملة Philips PCD8544 التي يمكننا ايجاد الداتاشيت لها بسهولة على الشبكة.
بما أن هذه الشاشة تشتغل تحت جهد 3,3 فو يجب أخذ الاحتياطات اللازمة عند استعماها في دارة مغذاة بــ 5 فو.
سوف أشرح كيفية استعمال شاشة الـ 3410 التي جربتها و التي لها نفس خصائص شاشة الـ 3310 ما عدا بعض الاختلاف في العرض حيث أن لها 102X 72 بكسل لا يظهر منها سوى 96X 65 بكسل على الشاشة (المساحة المحصورة بالمستطيل الاسود في الصورة أسفله).
لا يمكن التحكم بكل بكسل على حدة بل تجمع 8 بكسلات معا و بالتالي تقسم الشاشة لـ 9 اسطر أفقية (9 في 8 = 72) كل سطر به 102 عمودا (كما هو واضح على الصورة). لاحظ أن في السطر الاخير لا يظهر سوى بكسل واحد من الثمانية و أن الـ 6 أعمدة الاخيرة من كل سطر لا تظهر.
لملئ الشاشة نحتاج لـ 9 في 102 = 918 بايت .
ترقم الاسطر من 0 الى 8 و الاعمدة من 0 الى 101 .
قبل استعمال الشاشة يجب اعدادها أولا بارسال الاوامر التالية بالترتيب:
0x21 ; Function set - extended commands set
0xC8 ; Set Vop (contrast) = 3.06 + 0.06*66 = 7.02 V
0x06 ; Set Temp coefficent
0x13 ; Set bias system, MUX = 1:48
0x20 ; Function set -Standard Commands, Horizontal addressing mode
0x0C ; Display control - normal mode
ثم نمحي الشاشة بارسال 918 بايت من الاصفار.
هناك مجموعة من الاوامر للتحكم فمثلا نستطيع عكس الفيديو (الكتابة بالابيض على خلفية سوداء) او وضع المؤشرة في مكان ما من الشاشة (نحدد رقم السطر و رقم العمود).....الخ نجدها في الداتاشيت.
و هذا مثال تطبيقي عن توصيل شاشة الـ 3410 بالـ PORTB للـ ATMEGA8 حيث نقوم باعداد الشاشة و محيها و عرض الحرف H .
مخطط الدراة هو كالتالي :

و هذا هو الكود:
كود:
;***************************************************************
.include "m8def.inc" ; Definition file for ATmega8
;***************************************************************
; PORTB
; -----
.EQU RST = 0
.EQU CE = 2
.EQU SDin = 3
.EQU CLK = 5
.EQU DC = 1
;************
.CSEG
.ORG 0x00
rjmp RESET
RESET:
ldi r16, high(RAMEND) ; Initialize stack
out SPH, r16
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, 0b00101111 ; Set MOSI, CE , SCK, RST and DC as outputs
out DDRB, r16
ldi r16, 0b00000101 ; CE=1, RST=1
out PORTB, r16
; Wait a moment
ldi r17, 100
rcall long_delay
; Reset LCD :
cbi PORTB, RST
ldi r17, 10
rcall long_delay
sbi PORTB, RST
; Intialize LCD:
ldi r16, 0x21 ; Function set - extended commands set
rcall Send_Command
ldi r16, 0xC8 ; Set Vop (contrast) = 3.06 + 0.06*66 = 7.02 V
rcall Send_Command
ldi r16, 0x06 ; Set Temp coefficent
rcall Send_Command
ldi r16, 0x13 ; Set bias system, MUX = 1:48
rcall Send_Command
ldi r16, 0x20 ; Function set -Standard Commands,Horizontal addressing mode
rcall Send_Command
ldi r16, 0x0C ; Display control - normal mode
rcall Send_Command
;******************
; Clear LCD Device
ldi r16, 0x80 ; X adress = 0
rcall Send_Command
ldi r16, 0x40 ; Y adress = 0
rcall Send_Command
ldi r20, high(918)
ldi r21, low(918)
; clear LCD
ldi r16, 0 ;
lcd_loop:
rcall Send_Data
ldi r23, 0 ; Decrease counter
ldi r24, 1
sub r21, r24
sbc r20, r23
mov r0, r20 ; Check if zero
mov r1, r21
or r0, r1
brne lcd_loop
;**************************************
; Write some stuff to LCD
ldi r16, 0x80 ; X adress = 0
rcall Send_Command
ldi r16, 0x40 ; Y adress = 0
rcall Send_Command
; write lettre H on the screen
ldi r16, 255
rcall Send_Data
ldi r16, 255
rcall Send_Data
ldi r16, 0x18
rcall Send_Data
ldi r16, 0x18
rcall Send_Data
ldi r16, 0x18
rcall Send_Data
ldi r16, 0x18
rcall Send_Data
ldi r16, 255
rcall Send_Data
ldi r16, 255
rcall Send_Data
loopn:
rjmp loopn
;*************
; Routine for sending data or command ( in R16) to LCD
Send_Data:
sbi PORTB, DC
rjmp send
Send_Command:
cbi PORTB, DC
send:
cbi PORTB, CE ; CE=0
cbi PORTB, CLK
ldi r17, 8
bitloop:
cbi PORTB, SDin ; Set data = 0
sbrc r16, 7
sbi PORTB, SDin ; If MSB = 1, set data = 1
rol r16
sbi PORTB, CLK ; Clock = 1
dec r17
cbi PORTB, CLK ; Clock = 0
brne bitloop
sbi PORTB, CE ; CE=1
ret
;*****************
delay:
nop
nop
dec r16
brne delay
ret
long_delay:
ldi r16, 255
rcall delay
dec r17
brne long_delay
ret
هذا مثال عن استعمال شاشة 3410 مع دارة الحاسوب الذي تكلمت عنه في الرابط أدناه (الموافق للـ IBM PC 5150 ).

أتمنى أنكم قد أستفدتم.
أحبــــــــــك و الله يا مرســـــــــــــي --------------------------------------------------------------------------------------
مـــــواضـــيعــي: (أنقـــر على العنوان لتصفح الموضوع)
- ما رأيكم في مشروع يناء حاسوب موافق للـ IBM PC 5150 ؟؟
- كيف تستعمل شاشة تلفون نوكيا 3310 أو 3410؟
- مبرمجة الـــ PIC داخل الدارة In Circuit.
- وصل بطاقة SD أو MMC بالـــ ATMEGA8.
- مبرمجة لعائلة الــ AVR سهلة جدا جدا جدا !!!
- دارة بسيطة جدا لعرض نص على شاشة التلفزيون.
- مبرمجات PIC بسيطة جدا.
- أشعل شمعة الكترونية، استرخي تحت وقع زخات المطرثم نم نوما هادئا!!!
- مبرمجـــة الــ ATMEL AVRs عن طريق الــ USB .
- أضف شاشة عرض LCD الى مشاريعك.
- ما رأيكم في مشروع دايزك DISEQC ؟؟
- هل تعرف LTSPICE IV ؟ برنامج محاكاة احترافي قوي و مجاني.
- تعالوا نتعرف على الصوت المحيطي SURROUND SOUND .
التعديل الأخير تم بواسطة : DELTA67 بتاريخ 28-03-2013 الساعة 11:50 AM
|