الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يتم التحكم بشاشة Lcd Lm020 عن طريق المتحكم 16f84 ؟

بدأه ديمتري في 12 ديسمبر 2008 · 10 رد · 2,914 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لقد حاولت التحكم بشاشة LCD من نوع lm020 عن طريق المتحكم PIC 16F84 عبر برنامج بسيط فقط لإظهار كلمة HELLO على الشاشة لكن عند تشغيل الدارة فإنها أظهرت

محارف غريبة .....

لا أدري أي الخطأ ( ربما في تهيئة الشاشة )

و هذا هو البرنامج الذي كتبته :

list p=16c84

radix hex

indf equ 0x00

status equ 0x03

fsr equ 0x04

porta equ 0x05

portb equ 0x06

trisa equ 0x85

trisb equ 0x86

count1 equ 0x0c

count2 equ 0x0d

timer equ 0x0e

z equ 2

rp0 equ 5

;********************************************************************

org 0x00

start bsf status,rp0

movlw 0x00

tris porta

tris portb

bcf status,rp0

movlw 0x00

movwf porta

movwf portb

call blanks

call dimitri

call del_5

call initlcd

call disp

circle goto circle

;---------------------------------------------------------------------------------------------

blanks movlw 0x10

movwf count1

movlw 0x20

movwf fsr

movlw 0x20

store movwf indf

decfsz count1,f

goto incfsr

return

incfsr incf fsr,f

goto store

;**********************************************************************

dimitri movlw 'H'

movwf 0x20

movlw 'E'

movwf 0x21

movlw 'L'

movwf 0x22

movlw 'L'

movwf 0x23

movlw 'O'

return

;*****************************************************************

initlcd bcf porta,1

bcf porta,2

call del_125

movlw 0x38

movwf portb

call pulse

movlw 0x0c

movwf portb

call pulse

movlw 0x06

movwf portb

call pulse

call del_5

return

;******************************************************************

disp bcf porta,1

bcf porta,2

call del_125

movwf 0x80

movwf portb

call pulse

bsf porta,2

call del_125

movlw 0x20

movwf fsr

getchar movf 0x00,w

movwf portb

call pulse

movlw 0x27

subwf fsr,w

btfsc status,z

goto half

movlw 2f

subwf fsr,w

btfsc status,z

return

incf fsr,f

goto getchar

half bcf porta,2

call del_125

movlw 0xc0

movwf portb

call pulse

bsf porta,2

incf fsr,f

call del_125

goto getchar

;---------------------------------------------------------------------------------

del_125 movlw 0x2a

movwf count1

x1 decfsz count1,f

goto x1

return

;--------------------------------------------------------------------------------

;---------------------------------------------------------------------------------

del_5 movlw 0x29

movwf count2

x2 call del_125

decfsz count2,f

goto x2

return

;****************************************************************

pulse bsf porta,1

nop

bcf porta,1

call del_125

return

;-----------------------------------------------------------------------

end

و ارفقت صورة الدارة التي توصل مع المتحك لأداء هذا البرنامج

ارجو أن يدلني أحد اين الخطأ في عمل الشاشة أو شرح التحكم بهذا النوع من الشاشات مع برنامج مثال

post-178113-1229030755_thumb.jpg

#2

شيل السهم الى انت حاطه فوقوحط source

vcc وخليه على جهد مناسب

وشيل الكرستاله خالص

انت ممكن تظبط التردد عن طريق right click على البيك وتحدد التردد من الخصائص بتعتها

ونصيحه الأول جرب أعمل برنماج بينور ليدات عادى بعد كده انتقل الى الكتابه على ال lcd

ان أردت ان تستزيد من العلم فاهلاً بك فى مدونتى ولا تنسانى بالدعاء

هنا

#3

عزيزي eng.omar1987 هذا المثلث هو التغذية .....( هو يعطي التغذية المناسبة دون تحديدها من قبل المستخدم ....)

الكريستالة ( يمكن وضعها و يمكن ان لا تضعها بال proteus هذا الأمر اختياري طبعا بعد وضعا يجب ضبط ترددها على نفس تردد ال pic )

اما بالنسبة للليدات فأنا لم أبتدئ بالشاشة مباشرة فأنا لست مبتدئ ...... لكن التحكم بشاشة ال lcd لم يسبق ان تعاملت معه و إنني بحاجته الآن

#4

كم الكريستال اللي أنت تستعملها

شاشات الـ LCD لاتعمل فوق سرعات 6

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#5

الكريستالة المستخدمة ترددها نفس تردد المتحكم 4Mhz

و هذه صورة التشغيل :

فقط ما أريده من الأخوة الذين لديهم تجربة سابقة في التحكم بشاشات ال lcd عن طريق متحكمات pic ان يضعو البرنامج المستخدم للمتحكم و سأحاول فهمه

لأنني شبه متأكد أن الخطأ في البرنامج ....

فقط ما أريده من الأخوة الذين لديهم تجربة سابقة في التحكم بشاشات ال lcd عن طريق متحكمات pic ان يضعو البرنامج المستخدم للمتحكم و سأحاول فهمه

لأنني شبه متأكد أن الخطأ في البرنامج ....

post-178113-1229096325_thumb.jpg

#6

فقط ما أريده من الأخوة الذين لديهم تجربة سابقة في التحكم بشاشات ال lcd عن طريق متحكمات pic ان يضعو البرنامج المستخدم للمتحكم و سأحاول فهمه

لأنني شبه متأكد أن الخطأ في البرنامج ....

فقط ما أريده من الأخوة الذين لديهم تجربة سابقة في التحكم بشاشات ال lcd عن طريق متحكمات pic ان يضعو البرنامج المستخدم للمتحكم و سأحاول فهمه

لأنني شبه متأكد أن الخطأ في البرنامج ....

يااخي ديمتري عندما تريد المسا عدة من المنتدى حاول ان تساعدنا في نفس الوقت اقصد( من تعتقد سيقوم برسم دارتك ثم يحمل البرنامج ) من اجل ايجابك اعرف انك بحاجة لها ولكن اختصر الوقت بارسال عملك كله ليساعدك اي كان له دراية بذلك تفيد وتستفيد فانا لم اجد مااجيبك به من هذا المطلق

لانني لم اتمكن من تفسير برنامجك ولم تعطي الملفات بالكامل هناك امثلة ضمن البرنامج حول lcd فقد تفيدك لاحظ انك لم تعطي ما تطلبه منا

فانا بحاجة لفهم برنامج لكي اساعدك( كمثال) كما يجب علي وعليك كتابة خطوات الفكرة وعلى اي برامج- عدا (proteus)- تعمل الاوامر البرمجية وماهو المترجم الذي اعتمدته في عملك لتسهل الامر فيتاح للكل ان يدلوا او يقترحوا

وفقك الله

تم تعديل هذه المشاركة بواسطة نبيل سيد طه في 13 ديسمبر 2008 في 03:03

#7

أعتقد يا صديقي انك محق ..............

الملفان المرفقان هما دارة ال proteus7 و ملف البرنامج مكتوب على برنامج MPLAB IDE .........

ملاحظات القطب R/s هو لإرسال كلمات التحكم أو البيانات

E هو enable

r/w read/write

اما شرح وفكرة البرنامج :

list p=16c84

radix hex

indf equ 0x00

status equ 0x03

fsr equ 0x04

porta equ 0x05

portb equ 0x06

trisa equ 0x85

trisb equ 0x86

count1 equ 0x0c

count2 equ 0x0d

timer equ 0x0e

z equ 2

rp0 equ 5

;********************************************************************

org 0x00

start bsf status,rp0

movlw 0x00

tris porta

tris portb

bcf status,rp0

movlw 0x00

movwf porta

movwf portb

call blanks

call dimitri

call del_5

call initlcd

call disp

circle goto circle

;------------------------------------------- هنا هذا المقطع إظهار فراغات على الشاشة --------------------------------------------------

blanks movlw 0x10

movwf count1

movlw 0x20 ;رمز الفراغ0x20

movwf fsr

movlw 0x20

store movwf indf; إظهار البرنامج عن طريق العنونة غير المباشرة

decfsz count1,f

goto incfsr

return

incfsr incf fsr,f

goto store

;**********************************************************************

dimitri movlw 'H';تحميل المواقع الذاكرية بالكلمة

movwf 0x20

movlw 'E'

movwf 0x21

movlw 'L'

movwf 0x22

movlw 'L'

movwf 0x23

movlw 'O'

return

;*****************************************************************

initlcd bcf porta,1;هنا هذا المقطع هو تهيئة الشاشة التي أظن أن الخطأ منها أو من كلمات التحكم المستخدمة فيها

bcf porta,2

call del_125

movlw 0x38

movwf portb

call pulse

movlw 0x0c

movwf portb

call pulse

movlw 0x06

movwf portb

call pulse

call del_5

return

;******************************************************************

disp bcf porta,1; 0cهنا مقطع الإظهار المقسوم إلى قسمين لأن عناوين الشاة بحد ذاتها مقسومة لقسمين الأول يبتدئ من العنوان 80 و الثاني من العنوان

bcf porta,2

call del_125

movwf 0x80

movwf portb

call pulse

bsf porta,2

call del_125

movlw 0x20

movwf fsr

getchar movf 0x00,w

movwf portb

call pulse

movlw 0x27

subwf fsr,w

btfsc status,z

goto half

movlw 2f

subwf fsr,w

btfsc status,z

return

incf fsr,f

goto getchar

half bcf porta,2

call del_125

movlw 0xc0

movwf portb

call pulse

bsf porta,2

incf fsr,f

call del_125

goto getchar

;---------------------------------------------------------------------------------

del_125 movlw 0x2a

movwf count1

x1 decfsz count1,f

goto x1

return

;--------------------------------------------------------------------------------

;---------------------------------------------------------------------------------

del_5 movlw 0x29

movwf count2

x2 call del_125

decfsz count2,f

goto x2

return

;****************************************************************

pulse bsf porta,1;نبضة تفعيل

nop

bcf porta,1

call del_125

return

;-----------------------------------------------------------------------

end

l.rar

New_Text_Document.rar

#8

بســم الله الـرحمــن الرحيــم

اخي د يميتري لاحظ ان برنامجك فيه مشاكل ويقف بعد تنفيذ تعليمة تظهر الاشكال التي سميتها غريبة

واهم مافي الامر انه قلة من الناس يستخدمون المجمع( 16C84) لعملية اظهار الاحرف والارقام بدون

دارات لاتش وازاحة كما ان امكانياته متواضعة لكي تستخدمه لذلك دون ذاكرة خارجية - واكون صادقا معك لم اعرف الخطا في برنامجك

لوارسلت البرنامج بغلة البيسك اذا كنت تستخدمها كان من الافضل للفهم ولاحظ اننا عادة نرسل ملف ( HEX ) لسرعة الوصول لنتيجة. وامكانية تشغيله بكل انواع البرامج

البرنامج الذي تراه يستخدم ( MPASMWIN) للترجمة لملف ( HEX ) بالاضاف لخصوصيات الشركة المصنعة للترجمة لغات البرمجة من

البيزيك الخاص بالشركة البرنامج جيد لانة صغير وموقع البرنامج به املثة والاصدار الذي اجرب به ولااقول ابرمج هو6.65 مع الكرك ولا اعرف

هل المنتدى يسمح لي برفعه ام لا . دعنا نعرف من خلال قراءة ردي لك او من خلال قراءة هذا الموضوع وقد يكون لديك لا ادري

ولكن لاحظ الفرق بين برنامجك والبرنامج المرسل كمثال والذي يلبي احتياجاتك لفهم التعامل مع وحدات الاظهار بيزيك -اسمبلي ثم هيكس ثم بروتس

والصور توضح قولي فانا لست مبرمج بل في بداية الطريق لقد حورت مثال من الامثلة لامكنك من سلوك الطريق

الذي تريده (لا انني احب ان اكتب تعابيري باللغة العربية - ارجوا ان اكون قد اوصلت المعنى)

مرفق لك ملف اطلع عليه وقد يفيد من هم مثلي ومثلك................وفقك الله كما نبغى من مشاركاتنا.... وايضا المعرفة

NST_DIMITRI.rar

post-172286-1229225033_thumb.jpg

تم تعديل هذه المشاركة بواسطة نبيل سيد طه في 14 ديسمبر 2008 في 06:31

#9

شكرا ً جزيلاً أخي نبيل على جهودك...

بالنسبة لملف الhex كلامك صحيح كان يجب ان أرفقه بدل ملف ال asm و لكن أنا جديد على هذا المنتدى ( هلق انت علمتني شغلة جديدة بالمنتدى :lol: )

لكن المشكلة أنني لا أعرف برمجة المايكرو إلا على ال c و ال assembly لا أعرف ال basic

#10
ديمتري كتب:
شكرا ً جزيلاً أخي نبيل على جهودك...

بالنسبة لملف الhex كلامك صحيح كان يجب ان أرفقه بدل ملف ال asm و لكن أنا جديد على هذا المنتدى ( هلق انت علمتني شغلة جديدة بالمنتدى :lol: )

لكن المشكلة أنني لا أعرف برمجة المايكرو إلا على ال c و ال assembly لا أعرف ال basic

اخي ديميتري واسمك الذي توقع به محبب لدي لانه لصديق لي خبير بالبرمجة بلعة باسكال اما حول كلامك هذا لا يتناقض مع البرنامج الذي حاولت لفت انتباهك له لان بامكانك توجيه البرنامج المذكور ليتفاعل مع اللغة التي تريد واصدق القول ان لغة البيزيك به بسيطة ومفهومة فقط اطلع عليه من خلال الشركة وحمله وستجد ما يوسع افاق معلوماتك او عليك الانتظار لرد من هم لهم نفس الاهتمام ففي المنتدي شباب لايبخلون بالعلم على الكل وحاول ان تبحث في الشبكة العالمية فلا شيء بقي سر ونحن فقط علينا المثابرة فقط دون ملل انالا اعرف لغة السي

وفقك الله

تم تعديل هذه المشاركة بواسطة نبيل سيد طه في 14 ديسمبر 2008 في 20:02

#11

ارفع الكود بالسي و ان شاء الله نساعدك

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…