|
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
|
|
نشاط [ مشتاق الله ]
قوة السمعة:
|
|
15-11-2016, 09:24 AM
المشاركة 489
|
|
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
الحمد لله الذى بنعمته تتم الصالحات ,
اولا : اليس هذا العرض الذى نبحث عنه تظهر الحروف تدريجيا ثم تتحرك تدريجيا ثم تتلاشى تدريجيا , اليس هذا ما يستخدم فى العرض للشاشات .
بعون الله يتبقى لنا ان نتحكم فى الرسائل المعروضة . اما عن التحكم فى السرعة فيمكن ذلك بتغيير قيم الاسطر الحمراء فى الكود التالى .
كود:
void step_Move(char step);
unsigned char i = 0 ,j =0 ,k=0 , n=0, START_flag = 0 , RELOAD_flag = 0 ;
char stepdelay = 0;
unsigned int numbofturns = 0;
char letter_M[] = {0xfe,0xfe,0x60,0x30,0x60,0xfe,0xfe};
char letter_i[] = {0x00,0x82,0xfe,0xfe,0x82,0x00,0x00};
char letter_c[] = {0x38,0x7c,0xc6,0x82,0x82,0xc6,0x44};
char letter_R[] = {0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};
char letter_O[] = {0X38,0X7C,0XC6,0X82,0XC6,0X7C,0X38};
char letter_p[] = {0x82,0xfe,0xfe,0x92,0x90,0xf0,0x60};
void interrup() iv IVT_ADDR_PCINT0 ics ICS_AUTO {
PCIFR.PCIF0 = 1;
if ((PINB & 0X02) && (START_flag == 0) ) {START_flag = 1;}
else if ((PINB & 0X02) && (START_flag == 1) ) {RELOAD_flag = 1;}
}
void step_Move(char step){
char i;
for (i=0; i< step; i++){
delay_us(500); // decrease for more speed in moving.
}
}
char *all_letters[] = {letter_m,letter_i,letter_c,letter_r,letter_o} ;
char message[] = "ABCDE";
char divide =0;
void main() {
DDRD = 0XFF;
PORTD = 0;
DDRB = 0XFD;
PORTB = 2;
SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
while(1){
stepdelay = 0;
for(i=0; i<(7*strlen(message)); i++) {
while(1){
while(START_flag == 0){ }
for (k=0 ; k<=i ; k++){
divide = k/7;
PORTD=all_letters[(message[divide] - 65)][k - divide*7];
delay_us(400);
if (( !(k - divide)%6) && (k%7)){
portd = 0;
delay_us(1200);}
}
portd = 0;
START_flag = 0;
numbofturns++;
if (numbofturns == 3 ) { // decrease for more speed in writing message .
numbofturns = 0;
break;
}
}
}
//-------------------------------------------------------------------
stepdelay++;
while(1){
while(START_flag == 0){ }
step_Move(stepdelay);
for(i=0; i<(7*strlen(message)); i++){
divide = i/7;
PORTD=all_letters[(message[divide] - 65)][i - divide*7];
if (RELOAD_flag ==1){ break;}
delay_us(400);
if (( !(i - divide)%6) && (i%7)){
portd = 0;
delay_us(1200);
}
}
portd = 0;
START_flag = 0;
numbofturns++;
if (numbofturns == 3 ) { // decrease for more speed in moving.
numbofturns = 0;
stepdelay++;
}
if (RELOAD_flag ==1){ RELOAD_flag = 0; START_flag = 1; if(i<=1){break;}}
}
}
}
و للاخوة الاعضاء ارفع لكم صورة للمنتج الذى وصلنا اليه حتى الان و لله الحمد و الفضل و المنة :
و هى تكتب تدريجيا و تتحرك كذلك و تتلاشى كذلك بفضل الله .

اللهم صبرك و نصرك
و الله المستعان
ولا حول و لا قوة الا بالله
|