السلام عليكم ورحمه الله وبركاته
بالنسبه لمشكله الميكروسي اخي ياسر حاول ان تستبدل الملف الموجود في المسار
التالي
C:\Program Files\Mikroelektronika\mikroC
بالملف الموجود علي الرابط التالي
http://www.mediafire.com/?wfnvqsnev443g7g
اما عن مشكله تضاعف الحرف اللتي طرحتها
فهي حسب اعتقادي تحدث نتيجه انك تقوم بالانتقال للعمود التالي من دون اعطاء الداتا الجديده في الصف
ساشرح لك بالكود لعله يوضح لك
لنفترض انك موصل ماتريكس 8*8 الصفوف علي بورت dوالاعمده علي بورت b
وساحاول ان اكتب الكود كما تكتبوه دائما
كود:
PORTd=0B11111110;
PORTB=x1; delay_us(300);
في هذه الحاله المعروض علي اول عمود هو الداتا اللتي يحتويها المتغيرx1
ثم بعد ذلك تقوم بكتابه
تقوم بعمل بتحديد العمود الثاني وذلك لاكمال عمليه العرض
وهنا تاتي المشكله عند كتابتك لهذا الكود فتقووم بتحديد العمود الثاني من دون الانتباه ان portdالان يحتوي علي الداتا الخاصه بالمتغير x1
لذلك يبدا العمود الثاني بالاضائه بنفس العمود السابق ومن هنا يظهر ظل خفيف
حتي تقوم بتنفيذ التعليمه التاليه من البرنامج
لتلافي هذا الامر اقوم باطفاء ليدات كل عمود قبل ان انتقل الي عمود اخر
واضع وقت بسيط لتقوم الليدات بالانطفاء بشكل كامل
قد لاتلاحظ ما اقوله لك في الماتريكس الصغيره 8*8 او8*16
ولكن مع الاحجام الاكبر تلاحظ هذه الفرووق وتختلف حسب نوع مسجل الازاحه
وطريقه كتابه البرنامج وتردد الكريستال
ولاني اقوم بعمليات حسابيه قد تستغرق وقت في المكتبه قمت باضافه هذه المتغيرات اللتي ذكرتها مسبقا في سؤالك
ملحوظه المتغيرات تساعدك في ضبط الماتريكس عمليا وفي اوقات كتيره
لايكون البروتس مماثل للواقع
فبعد العديد من التجارب كان الكود يعمل بشكل جيد جدا علي البورتس ولكن
في الواقع كانت تظهر مشكله مضاعفه الحروف والعكس صحيح
وبالتوفيق ان شاء الله