|
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
|
|
نشاط [ مشتاق الله ]
قوة السمعة:
|
|
03-10-2016, 09:49 PM
المشاركة 282
|
|
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
كود:
حياك الله اخي العزيز ، كما يقال خذني علي قد عقلي ، اذا فرضنا ان المسار الدائري يكتمل كل 4ms اي في كل دورة للمحرك يمسح 150 عمود في 4ms ثم يعود البرنامج من البداية فلو عملنا ازاحة عمود واحد في كل دورة. عن طريق نبضة السينسور تنتهي المسالة ههههههه. هل هناك صيغة برمجية لهذا الكلام اخي العزيز بصفتك محترف برمجة بصدق فانا لدي افكار ولكن لاملك الخبرة اللتي عند حضرتك اكيد ، فانا مجرد مبتدء لهذه اللغة السحرية والرائعة ،بارك الله فيك اخي
اخى اخر نسخة من البرنامج معك تستخدم فكرتك هذه (فكرة رائعة تدل علىك)
كود:
حياك الله اخي العزيز، في مجال طلب صغير لو تكرمت ، لقد ارسلت لك اول كود بعثته حضرتك بخصوص التحريك والذي اشتغل تمام ماعدا عيبة واحدة هي وميض الاحرف وكان علي porta.bo واريد منك ان تشرح كل سطر بالبرنامج لاني اتوقع ان الحل موجود فيه ، ادخل حضرتك عالخاص تجد الكود بارك الله فيك اخي
و هو ما فعلته هذان نسختين احدهما القديمة و الاخرى الجديدة و لا تغير شئ فى الدائرة كلاهما تستخدم portb0 .
ارجو تجربتهم و المقارنة بينهما , المفروض كلاهما تعرض الحروف ثابتة عند بداية السنسور.
كود:
char letter_p[] = { 0xff, 0xff,0x09 , 0x09, 0x0f, 0x06} ;
char letter_i[] = { 0x00, 0x81, 0xff, 0xff, 0x81, 0x00};
char letter_c[] = { 0x1c, 0x3e, 0x41, 0x41, 0x41, 0x22};
char i = 0;
char shift = 0 , count = 0;
void TIMER0() iv 0x0004 ics ICS_AUTO {
if(INTCON.TMR0IF==1){
INTCON.TMR0IF = 0;
count++;
if(count>= 8){
count = 0;
shift++;
}
}
}
void main() {
INTCON |= 1<<GIE | 1<<T0IE ;
OPTION_REG &= ~1<<T0CS & ~1<<PSA ;
OPTION_REG |= 0X07; // PRESC=256
trisb=0x01;
portb=0;
//cmcon=7;
//trisa=0x01;
porta=0;
while(1){
while(portb.b0==1){}
// vdelay_ms(shift * 1);
for(i=0; i<6; i++){portb=letter_p[i]; delay_us(300);} //P
portb=0; delay_us(500);
for(i=0; i<6; i++){portb=letter_i[i]; delay_us(300);} // I
portb=0; delay_us(500);
for(i=0; i<6; i++){portb=letter_c[i]; delay_us(300);}// C
portb=0;
}
}
البرنامج الثانى :
كود:
char letter_p[] ={0xff,0xff,0x09,0x09,0x0f,0x06};
char letter_i[] ={0x00,0x81,0xff,0xff,0x81,0x00};
char letter_c[] ={0x1c,0x3e,0x41,0x41,0x41,0x22};
unsigned int i=0, shift=0, count=0;
void varDelay_us( unsigned int uss);
void interrupt() iv 0x0004 ics ICS_AUTO {
/*if(INTCON.TMR0IF==1)
{
INTCON.TMR0IF=0;
count++;
if(count>=3)
{
count=0;
shift++;
}
}*/
if(INTCON.INTF==1)
{
/*shift++;
if(shift > 255){shift=0;}
vdelay_ms(shift/5);*/
INTCON.INTF=0;
// porta=~porta;
for(i=0;i<6;i++){portb=letter_p[i]<<1; delay_us(300);}
portb=0; delay_us(500);
for(i=0;i<6;i++){portb=letter_i[i]<<1 ; delay_us(300);}
portb=0; delay_us(500);
for(i=0;i<6;i++){portb=letter_c[i]<<1 ; delay_us(300);}
portb=0;
}
}
/*void varDelay_us( unsigned int uss){
for (i=0; i<(uss/5); i++)
{
delay_ms(5);
}
}*/
void main() {
INTCON.GIE= 1;
INTCON.INTE=1;
OPTION_REG.INTEDG=1;
/*INTCON.T0IE=1;
OPTION_REG &=~1<<T0CS &~1<<PSA ;
OPTION_REG |=0X07;*/
trisa=0;
porta=0;
trisb=1;
portb=0;
//cmcon=7;
while(1){ }
}
الله ولى التوفيق
اللهم اجعلنا مؤمنين حقا
و علمنا ما ينفعنا و ينفع بنا
اللهم اكتب حياة ترضيك و ميتة تضحكك منا
و احفظ حلب و اهلها و سائر بلادنا
|