بسم الله الرحمن الرحيم
أنا جداً محرج لأنه كان شرحي غير كامل وربما ليس بتلك الكثافة من حيث المعلومات
على كل حال اليوم آخر درس سأحاول أن أشرح كيفية عمل (Interface) للميكروكونترولر مع أي شاشة (LCD) عادية غير (Graphical) وكيفية استخدام الـ (A/D converter) كل ذلك باستخدام لغة البيسك الخاصة بمترجم برنامج (PIC Simulator IDE)
المتحكم الذي سأتناوله هو متحكم ممتاز جداً يحوي أربع بورتات و (A/D converter) بـ 10 بت أي 1024 مستوى رقمي وهو (PIC 16F877)
1- المحول التمثيلي لرقمي (A/D Converter):
الأمر عمله
Define ADC_CLOCK = 3 يقوم بتعريف عدد نبضات الساعة خلال دورة تشغيلية واحدة و 3 هي أكثر حاجة.
Define ADC_SAMPLEUS = 255 يقوم بتعريف الذاكرة التسلسلية للمحول وأعلى قيمة هي 255
ADCON1 = 0 يقوم بوضع كل المخارج التي تبدأ ب (AN) في الداتا شيت وهي (PORTA) و (PORTE) مداخل تمثيلية، أما عند مساوات الطرف الأيسر ب 1 فسيتعامل معها على إنها رقمية، طبعاً هدي الجملة تكتب بعد تعريف إعدادت البورتات مثل (TRISA = 0xff)
بعد ذلك طبعاً سيقوم المحول بتقسيم الموجة المعطاة لـ 1024 مستوى من 0 فولت إلى 5 فولت.
لأخذ قيمة المستوى أثناء التشغيل بعد ذلك نستخدم الأمر:
Adcin 1, word variable
بحيث أن الـ (
word variable) هو متغير من نوع كلمة تعرفه مسبقاً وتخزَّن قيمة المستوى الرقمي فيه كرقم عشري.
2- شاشة الـ (LCD):
أولاً نحتاج أن نعرف مداخل و مخارج الشاشة:
تحوي شاشة الـ (LCD) نوعين من المخارج:
1- (Data Bus) وهي (D0,D1,D2,D3,D4,D5,D6,D7)
2- (Enable input) وهو (E)
3- (Read/Write input) وهو (R/W)
4- (Reset Input) وهو (RS)
ولتعريف الـ (Data Bus) بحيث يأخذ بياناته من (PORTB) مثلاً نكتب:
Define LCD_DREG = PORTB
ثم نكتب
Define LCD_DBIT = 0 للشاشات ذات 8 بت
أو
Define LCD_DBIT = 4 للشاشات ذات 4 بت
لتعريف (Enable input) ليأخذ بياناته من مثلاً (PORTD) البت رقم 3 نكتب:
Define LCD_EREG = PORTD
Define LCD_EBIT = 3
لتعريف (Read/Write input) ليأخذ بياناته من (PORTD) مثلاً البت رقم 2 نكتب:
Define LCD_RWREG = PORTD
Define LCD_RWBIT = 2
لتعريف (Reset Input) ليأخذ بياناته من (PORTD) مثلاً البت رقم 1 نكتب:
Define LCD_RSREG = PORTD
Define LCD_RSBIT = 1
وتوجد أيضاً هذه الأوامر يجب أن تكتب بعد تعريف المخارج كما يلي:
الأمر عمله
Define LCD_COMMANDUS = 2000 يقوم بتعريف وقت التسويف بعد كتابة أومر المسح
Define LCD_DATAUS = 250 يقوم بتعرف وقت التسويف بعد كتابة أوامر العرض
Define LCD_INITMS = 250 يقوم بتعريف وقت التسويف بعد بدء تشغيل الـ (LCD)
لبدء تشغيل الـ (LCD) بعد ذلك نكتب:
Lcdinit
لمسح الـ(LCD) نكتب:
Lcdcmdout LcdClear
لعرض كلام على الـ (LCD):
"الكلام" Lcdout
لعرض متغير على الـ (LCD):
Lcdout #var_name
للإنتقال إلى سطر آخر:
Lcdcmdout LcdLine2Home