أنت هنا:إصنعها»العقول الإلكترونية»المتحكم AVR ـ»البرمجة في bascom-AVR ـ»برمجة الأنظمة المدمجة ببيئة bascom avr – الدرس 4

برمجة الأنظمة المدمجة ببيئة bascom avr – الدرس 4

كتبه البرمجة في bascom-AVR ـ 9208 1
آخر تعديل في الجمعة, 11 كانون1/ديسمبر 2020 17:57
برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 4
قيم الموضوع
(4 أصوات)

هذه المحاضرة تشرح طريقة ربط وبرمجة شاشات الإظهار الكريستالية المحرفية مع متحكمات AVR. ثم تقدم تطبيقاً عملياً لبرمجة شاشة الإظهار المحرفية في البيئة BASCOM-AVR ومحاكاتها في البيئة Proteus في نمطي العمل 4bit و 8bit.

 {jumi [*3]}


تسميات

إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:

  • متحكم (مصغر) عوض Microcontroller

  • زوج عوض bit

  • ثمن عوض byte بالإنجليزية و octet بالفرنسية

تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها.


ملفات المقال

يمكنك تحميل ما يلي للاستفاذة أكثر من المقال:

Session_06_PPTX

Session_06_codes

 


محاضرة المقال

 


شاشة الإظهار الكريستالية المحرفية

إن شاشة الإظهار الكريستالية LCD هي عبارة عن مصفوفة نقطية تستخدم لعرض المعلومات والنتائج، ويمكن من خلالها إظهار جميع رموز الآسكي تقريباً والتي يبلغ عددها 189 رمزاً مختلفاً.

 

تعتمد شاشة الإظهار LCD على البلورات السائلة، حيث تم اكتشاف البلورات السائلة أول مرة في عام 1888 من قبل عالم النبات النمساوي فريريك رينتيزير الذي لاحظ أنه عندما يتم صهر الكوليسترول النباتي يصبح غير صافٍ، ومن ثم يأخذ بالصفو عندما ترتفع درجة حرارته. وبالاعتماد على التبريد يبدأ السائل (الكوليسترول) بالتحول إلى اللون الأزرق قبل التبلور الأخير له. في عام 1968 وبعد مرور ثمانين سنة، صنعت شركة RCA شاشة الـLCD الأولى.

 

تحتوي شاشة الإظهار LCD على شريحة معالج إظهار خاص مصنع بتقنية CMOS ويحمل في أغلب شرائح شاشات الإظهار الرقم HD44780 المصنع من قبل شركة Hitachi اليابانية، فتوفر بذلك على المستخدم القيام بالعديد من العمليات الشاقة والمعقدة، كما تزود شاشة الإظهار LCD بذاكرة داخلية خاصة تقسم بدورها إلى قسمين:

  1. ذاكرة المعطيات DD-RAM،

  2. ذاكرة مولد الرموز CG-RAM.

تقوم هذه الذواكر بالاحتفاظ بالرموز المراد إظهارها وتمكن المبرمج من إعادة إظهارها بدون الحاجة إلى إرسالها مرة أخرى. إضافة إلى ذلك تحتوي الشاشة LCD على دارات قيادة (Drivers) لخانات شاشة الإظهار.

تأتي شاشة LCD بمقاسات مختلفة من عدد الأسطر والأعمدة (المحارف)، حيث يمكن أن تكون مؤلفة من سطر حتى أربعة أسطر، ويحتوي كل سطر على عدد من الخانات (المحارف) يتراوح من 16 وحتى 40 الخانة؛ والخانة هي عبارة عن مربع صغير يتم فيه إظهار محرف واحد فقط؛ وأكثر الشاشات شيوعاً هي الشاشات ذات القياسات التالية:

Chars × Lines: 16 x 1 | 16 x 2 | 16 x 4 | 20 x 2 | 20 x 4 | 40 x 2 | 40 x 4

 

تملك شاشات LCD بشكل عام نفس أقطاب التحكم مع وجود بعض الاختلافات البسيطة. يبين الشكل التالي أقطاب التحكم لشاشة LCD ذات سطرين و 16 عمودا وفيما يلي أسماء هذه الأقطاب ووظيفتها.

 

 

الشكل 1: شاشة إظهار كريستالية محرفية ذات قياس 16x2

 

 

الشكل 2: شاشة إظهار كريستالية محرفية ذات قياس 20x4

الشكل 3: الرموز التي يمكن إظهارها على شاشة الإظهار المحرفية

الشكل 4: المحيط الخارجي لشاشة الإظهار المحرفية وتوزع الأقطاب ووظائفها

* القطب Vss: قطب التغذية السالب للشاشة GND.

* القطب Vdd: قطب التغذية الموجب للشاشة 5V+.

* القطب Vo: قطب جهد التباين، ويقصد بالتباين حدة ظهور الرمز على الشاشة. عند أقل قيمة تباين لا يمكن أن تظهر الرموز على الشاشة ويكون هذا عند تطبيق 5v+ على هذا القطب. أعلى تباين للشاشة يكون عند تطبيق GND على هذا القطب ويمكن التحكم بتباين الشاشة عن طريق وصل قطب التباين 0V إلى مقاومة متغيرة 10K.

* القطب RS: قطب مسجل اختيار الدخل للشاشة؛ من أجل إرسال أمر تحكم، يتم وضع أمر التحكم على أقطاب D0-D7 ويتم تطبيق “0” منطقي على هذا القطب؛ ومن أجل إرسال معطيات إلى الشاشة فيتم وضع المعطيات على أقطاب D0-D7 ويتم تطبيق “1” منطقي على هذا القطب.

* القطب R/W: ويتم تطبيق “1” منطقي على هذا القطب للقراءة (R) من ذاكرة الشاشة، ويتم تطبيق “0” منطقي على هذا القطب للكتابة (W) إلى الشاشة.

* القطب E: إن تأكيد عملية إرسال أمر تحكم أو معطيات إلى الشاشة يتم من خلال نبضة تمكين عند الجبهة الهابطة على القطب E.

* الأقطاب منDB0 إلىDB7: هي أقطاب المعطيات (DATA)، حيث يتم كتابة المعطيات أو قراءتها أو كتابة كلمات التحكم إلى شاشة LCD عبر هذه الخطوط.

* القطبين K وA: تملك بعض الشاشات إضاءة خلفية (Backlight) وظيفتها تأمين الإضاءة الكافية للشاشة ليتمكن المستخدم من رؤية العبارات المكتوبة عليها في الليل؛ يتم تشغيل الإضاءة بتطبيق 5V+ على A وGND على K.


أنماط عمل شاشات الإظهار المحرفية

تملك شاشة الإظهار الكريستالية نمطي عمل:

  • نمط العمل 4bit: وفيه يتم استخدام أربعة خطوط من خطوط المعطيات (DB0 إلىDB7) وهي DB4 إلىDB7 ويتم تجاهل (عدم توصيل) باقي خطوط المعطيات (DB0 إلىDB3). وفي هذه الحالة يتم البيانات عبر هذه الخطوط على دفعتين – أي يتم إرسال النصف الأدنى من البايت ثم النصف الأعلى من البايت. ويستخدم هذا النمط بهدف توفير في عدد أقطاب المتحكم المطلوبة وبالتالي سنحتاج إلى ستة أقطاب فقط من المتحكم للتوصيل: DB4 وDB5 وDB6 وDB7 وE وRS.

  • نمط العمل 8bit: وفيه يتم توصيل جميع خطوط المعطيات مع المتحكم وبالتالي سنحتاج إلى عشرة أقطاب من المتحكم لتوصيل الشاشة: DB0 وDB1 وDB2 وDB3 وDB4 وDB5 وDB6 وDB7 وE وRS.

 


برمجة شاشة الإظهار المحرفية LCD في Bascom-AVR

تعليمات التعامل مع شاشة الإظهار الكريستالية LCD في البيئة Bascom-AVR على قسمين:

  1. تعليمات التهيئة (Configuration).

  2. تعليمات الإظهار (Display).

تعليمات التهيئة تتضمن:

  • تحديد أبعاد الشاشة:

ConfigLcd= 16 * 2

  • تحديد نمط العمل والأقطاب الموصولة مع الشاشة

  1. نمط العمل 4bit:من Db4 إلىDb7 تمثل الأقطاب الموصولة مع خطوط المعطيات للشاشة، Rs E, خطوط التحكم.

Config Lcdpin = Pin , Db4 =Portc.2 , Db5 =Portc.3 , Db6 =Portc.4 , Db7 =Portc.5 , E =Portd.3 , Rs =Portd.4

  1. نمط العمل 8bit:تمثل Port أقطاب البوابة الموصولة مع خطوط المعطيات للشاشة، Rs E, خطوط التحكم.

Config Lcdpin = Pin , Port =Portc, E =Portd.3 , Rs =Portd.4

تعليمات الإظهار تتضمن مجموعة من التعليمات:

عرض متحول

Lcd var

عرض عبارة نصية

Lcd“Hello World”

إطفاء الشاشة

DisplayOff

تشغيل الشاشة

DisplayOn

إزاحة المحتوى إلى اليمين خانة

ShiftlcdRight

إزاحة المحتوى إلى اليسار خانة

ShiftlcdLeft

تفعيل مؤشر الكتابة – خفقان

CursorOn [Blink]

إخفاء مؤشر الكتابة

CursorOff

إزاحة مؤشر الكتابة خانة إلى اليمين

ShiftcursorRight

إزاحة مؤشر الكتابة خانة إلى اليسار

ShiftcursorLeft

وضع مؤشر الكتابة عند نقطة محددة (سطر/عمود)

Locate X , Y

الانتقال إلى السطر/العمود الأول (نقطة البداية)

HomeUpper

تحريك مؤشر الكتابة إلى السطر التالي

Lowerline

الانتقال إلى السطر الثالث

Thirdline

الانتقال إلى السطر الرابع

Fourthline

وضع مؤشر الكتابة في بداية السطر الثالث

HomeThird

وضع مؤشر الكتابة في بداية السطر الرابع

HomeFourth

تعريف محرف إضافي باستخدام الأداة LCD Designer

Deflcdchar 0, 14, 17,...

إظهار المحرف الإضافي على الشاشة

LcdChr(x)

 

التجربة الرابعة عشرة

المطلوب كتابة برنامج لتشغيل شاشة إظهار محرفية كريستالية في النمط 4bit موصولة إلى متحكم مصغر ATmega32A وفقاً لمخطط التوصيل للوحة التعليمية.

 

ملاحظة: هذا البرنامج يمكن تشغيله مباشرة على اللوحة التعليمية.

الشكل 5: توصيل شاشة LCD مع المتحكم ATmega32 للتجربة 14

البرنامج Exp.14.bas في بيئة BASCOM-AVR:

'****************************************************************************
' * Title : Exp.14.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : 16 x 2 LCD *
' * Description : 4 bit LCD Mode *
'****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[LCD Configurations]
Config Lcdpin = Pin , Db4 =Portc.2 , Db5 =Portc.3 , Db6 =Portc.4 , Db7 =Portc.5 , E =Portd.3 , Rs =Portd.4
ConfigLcd= 16 * 2
'-----------------------
'-----------------------[Variables]
Dim I AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Cls
Upperline:Lcd"~~Hello World!~~":Wait 1
Lowerline:Lcd"(LCD 4-bit Mode)":Wait 1

Gosub Shift2right :Gosub Shift2left

Locate 1 , 8 :Lcd":":Wait 1
Locate 2 , 1 :Lcd">":Wait 1

ShiftcursorRight:Wait 1 :ShiftcursorLeft

CursorOffNoblink:Wait 1 :CursorOnBlink

DisplayOff:Wait 1 :DisplayOn

HomeUpper:Wait 1 :Cls

Deflcdchar 0 , 32 , 32 , 10 , 21 , 17 , 10 , 4 , 32
Deflcdchar 1 , 4 , 10 , 17 , 10 , 10 , 17 , 10 , 4
Locate 1 , 9 :LcdChr(0):Wait 1
Locate 2 , 9 :LcdChr(1):Wait 1
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Shift LCD Char to Right]
Shift2right
:
For I = 1 To 8
ShiftlcdRight:Waitms 500
Next I
Return
'-----------------------
'--->[Shift LCD Char to Left]
Shift2left
:
For I = 1 To 8
ShiftlcdLeft:Waitms 500
Next I
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

التجربة الخامسة عشرة

المطلوب كتابة برنامج لتشغيل شاشة إظهار محرفية كريستالية في النمط 4bit موصولة إلى متحكم مصغر ATmega32A وفقاً لمخطط التوصيل للوحة التعليمية.

 

ملاحظة: هذا البرنامج لا يمكن تشغيله على اللوحة التعليمية.

الشكل 6: توصيل شاشة LCD مع المتحكم ATmega32 للتجربة 15

البرنامج Exp.15.bas في بيئة BASCOM-AVR:

'****************************************************************************
' * Title : Exp.15.bas *
' * Target Board : Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : 16 x 2 LCD *
' * Description : 8 bit LCD Mode *
' ***************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[LCD Configurations]
Config Lcdpin = Pin , Port =Portc, E =Portd.3 , Rs =Portd.4
ConfigLcd= 16 * 2
'-----------------------
'-----------------------[Variables]
Dim I AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Cls
Upperline:Lcd"~~Hello World!~~":Wait 1
Lowerline:Lcd"(LCD 8-bit Mode)":Wait 1

Gosub Shift2right :Gosub Shift2left

Locate 1 , 8 :Lcd":":Wait 1
Locate 2 , 1 :Lcd">":Wait 1

ShiftcursorRight:Wait 1 :ShiftcursorLeft

CursorOffNoblink:Wait 1 :CursorOnBlink

DisplayOff:Wait 1 :DisplayOn

HomeUpper:Wait 1 :Cls

Deflcdchar 0 , 32 , 32 , 10 , 21 , 17 , 10 , 4 , 32
Deflcdchar 1 , 4 , 10 , 17 , 10 , 10 , 17 , 10 , 4
Locate 1 , 9 :LcdChr(0):Wait 1
Locate 2 , 9 :LcdChr(1):Wait 1
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Shift LCD Char to Right]
Shift2right
:
For I = 1 To 8
ShiftlcdRight:Waitms 500
Next I
Return
'-----------------------
'--->[Shift LCD Char to Left]
Shift2left
:
For I = 1 To 8
ShiftlcdLeft:Waitms 500
Next I
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


الحقوق الفكرية

حقوق النشر محفوطة م.وليد بليد

Copyright © 2012 Walid Balid All rights reserved


تأليف

 

المؤلف: وليد بليد (سوريا)


 {jumi [*3]}
{jumi [*3]}
{jumi [*3]}

التعليقات  

عباد محمد
0 # عباد محمد 2013-10-19 17:14
طلاب كليه الهندسه الكهربيه/ صنعاء _ اليمن مستفيدين و متابعين للمهندس وليد ..
تسلم يالغالي ..
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث