 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
16-09-2012, 05:52 PM
المشاركة 42
|
|
لتحقيق الاستخدام الأمثل للحروف يمكن للمبرمج تسجيل الإعدادات الابتدائية بالذاكرة ثم بعد ذلك يقوم بطباعة الحروف التى تم تحريرها وتخصيص الأرقام من 0 إلى 7 لها . لتوضيح هذا المفهوم راقب وحلل المثال التالى:
كود:
// Declaring Constants represent bitmaps,
// Animate a FIGs. These are the result code character editor
// MikroC PRO.
const char Fig1 [] = {17,14,21,14,31,4,27,0}; // Start CGRAM address 64 (Char=8 bit).
const char Fig2 [] = {17,14,21,14,31,4,10,0}; // start address 72(=64+8).
const char Fig3 [] = {17,14,21,14,31,21,10,0}; // start address 80(=72+8).
const char Fig4 [] = {24,28,30,31,30,28,24,0}; // start address 88(=80+8).
// Output pins for LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;
// Configuration bits TRIS
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;
// Function to save Declamation characters in RAM.
// This function is designed by the developer.
void Lcd_RAM_Car (char IntDir , const char * Map) // RAM Address & Char. Map
{
char i;
LCD_Cmd (IntDir); // Start RAM address.
// Loop to save the map in the LCD RAM.
for (i= 0; i <8; i ++) LCD_Chr_Cp (Map [i]);
}
void main (void)
{
Lcd_init (); // Start the LCD.
Lcd_RAM_Car (64, Fig1); // Creat & Store the character 1 in first RAM address >>64
Lcd_RAM_Car (72, Fig2); // Creat &Store the character 2 ( 72=64+8)
Lcd_RAM_Car (80, Fig3); // Creat &Store the character 3 ( 80=72+8)
Lcd_RAM_Car (88, Fig4); // Creat &Store the character 4 ( 88=80+8)
LCD_Chr (1, 1, 0); // Finally : Print the character Fig1.(0 in ASCII) in pos ( 1,1)
LCD_Chr (1, 2, 1); // Print the character Fig2.(1 in ASCII) in pos ( 1,2)
LCD_Chr (1, 3, 2); // Print the character Fig3.(2 in ASCII) in pos ( 1,3)
LCD_Chr (1, 4, 3); // Print the character Fig4.(3 in ASCII) in pos (1,4)
while (1) // infinite loop.
{
}
}
بعد الترجمة والمحاكاة نحص على النتيجة التالية :
طباعة المعلومات على LCD , فى بعض الحالات قد تحتاج لتغيير خواص المؤشر cursor . لهذا , فمن الممكن تغيير المؤشر بآخر غير ممتلىء أو ليس به تأثير الوميض , بل يمكنك عدم إظهاره . لتغيير خواص LCD يتم استخدام الدالة : Lcd_Cmd (char out_char), والتى تدخل ضمن أوامر الإعداد , باستخدام البارامتر out_char . لتغيير المؤشر بآخر غير ممتلىء أو قى شكل شريط يتم استخدام الدالة :
Lcd_Cmd (_LCD_UNDERLINE_ON) ولتفعيل وميض المؤشر نستخدم الدالة :
Lcd_Cmd (_LCD_BLINK_CURSOR_ON) ,. ولعدم إظهار المؤشر نستخدم الدالة :
Lcd_Cmd (_LCD_CURSOR_OFF) .
|