|
كل عام و الامة الاسلامية بالف خير
|
مرحبا بك أخ شهاب فى هذا المنتدى الكبير ، ويشرفنى أن تكون أولى مشاركاتك هنا ، وكل عام وأنت بخير
--------
السلام عليكم
نعود من جديد مع كود البرنامج
كود:
unsigned long tmp[128], Var;
char Xx , Yy2 ;
#include "pin_connect.c"
#include "Logo.c"
void main() { delay_ms(2);
trisd = 0;
adcon1=0b111 ;
Glcd_Init();
do{
for ( Xx=0; Xx<127; Xx++){
tmp[xx] = ADC_Read(0);
}
delay_ms(500); Glcd_Image(bldgs);
for ( Xx=0; Xx<127; Xx++){
Var = tmp[xx] * 64 ; Var= Var >> 10 ;
if( Xx==0){ Yy2= 0 ;}
Glcd_Line( Xx , 65-var , Xx , 65-Yy2 , 1);
Yy2= Var ;
}
//
}while (1);
}
كتبت البرنامج بلغة السى لأنى أرى الكثير فى هذا المنتدى يتعامل بها بخلاف مشروعى القديم عن جهاز راسم الموجات منذ أعوام فقد نفذته بلغة المايكرو بيزيك
فى البرنامج قمنا بحجز المتغيرات اللازمة حسب حجمها المطلوب
كود:
unsigned long tmp[128], Var;
char Xx , Yy2 ;
ثم بعدها استدعاء ملف أسماء الأطراف الخاصة بالشاشة وبيانات الرسم
كود:
#include "pin_connect.c"
#include "Logo.c"
ثم بعدها تعيين منفذ B كمنفذ رقمى دخل وخرج
كود:
trisd = 0;
adcon1=0b111 ;
ثم بعدها حلقة تكرارية بعدد أعمدة الشاشة لقراءة القيم الداخلة من الإشارة المطلوب رسمها حيث تتم القراءة فى زمن معلوم يتوقف عليه معرفة تردد الإشارة
كود:
for ( Xx=0; Xx<127; Xx++){
tmp[xx] = ADC_Read(0);
}
بعد ذلك قمت بعمل حلقة تكرارية بعدد أعمدة الشاشة لرسم الإشارة بحسب الإحداثيات التى تم تخزينها فى المصفوفة
كود:
for ( Xx=0; Xx<127; Xx++){
Var = tmp[xx] * 64 ; Var= Var >> 10 ;
if( Xx==0){ Yy2= 0 ;}
Glcd_Line( Xx , 65-var , Xx , 65-Yy2 , 1);
Yy2= Var ;
}
نلاحظ أنى لم أستخدم خاصية الرسم فى الوضع المخفى ثم إظهار الصورة مرة واحدة ولكن يتم هنا الرسم على الشاشة لمراعاة تبسيط البرنامج والتركيز على التعليمات الأساسية
ويتم الرسم باستخدام الخطوط وليست النقاط
أتمنى أن يكون الشرح واضح
انتظروا الملفات إن شاء الله