قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية abdoo_sy
abdoo_sy
:: مهندس ::
تاريخ التسجيل: Jul 2016
الدولة: سوريا
المشاركات: 31
نشاط [ abdoo_sy ]
قوة السمعة:
قديم 29-06-2017, 01:42 PM المشاركة 17   
Arrow الملفات



ممكن ترفع الملفات علي موقع أخر ...

ومشكور جدااا كل عام وانت بخير ...
اخي لم اتمكن من ذلك ..
يمكنك ان تنسخ الكود مما يلي وسوف انشر صورة الملف العملي على بروتيوس ويمكنك ان تنقله
الكود :

كود:
// leeters address in the eeprom

// 74c595 pins
#define shiftp PORTb.F7
#define latchp PORTb.F6
#define dc PORTb.F5
//74hc595 functinon
#define latch latchp=1;latchp=0;
#define shift shiftp=1;shiftp=0;
//74hc164 functinon
#define ser porta.f6
#define clk     porta.f7=1;porta.f7=0;
//some leds
#define led1 porta.f0
#define led2 porta.f1
//delay<s> :::
#define del  delay_us(1);
//------------------------------------------------------------------------------
sbit Soft_I2C_Scl           at Ra2_bit;
sbit Soft_I2C_Sda           at Ra3_bit;
sbit Soft_I2C_Scl_Direction at TRISa2_bit;
sbit Soft_I2C_Sda_Direction at TRISa3_bit;

//------------------------------------------------------------------------------
unsigned char symbol,symbol2,symbol_1=32;
unsigned char ch[64],txt[5];
unsigned char addres,i2c_addres;
unsigned char eow;                     //end of the wtiteing
unsigned char speed;                  //scrolling speed
unsigned char bs;                    //buffer size

unsigned char arabic_e_letters=0;
//scrollingmode = 0 = from the left to the right (for the english words)
//scrollingmode = 1 = from the right to the left  (for the arabic words)



//------------------------------------------------------------------------------
 //senfing data to the 47hc595
void send(unsigned char _shiftdata){
unsigned char i=8;

while (i>0){
if (_shiftdata.F7==0)  {dc = 1;}
else                   {dc = 0;}
_shiftdata = _shiftdata<<1;
shift;
i--;        }  //while
}//send595
//------------------------------------------------------------------------------
void column_num(char cn ){
ser=0;

for(eow=0;eow<64;eow++){clk;}

ser=1;clk;ser=0;
while(cn>0)    {clk;
cn--;}
}

//------------------------------------------------------------------------------
void get_ch(){char llk=0xa0,temp,lc,fl=0;
unsigned char med;
if(symbol>'*'&&arabic_e_letters==0){
 med=symbol;med=med-65;if(symbol>=91){fl=1;med=med+64;}; i2c_addres=med*8;llk=0xa2 ;}// if page 1
 
if(symbol<='*'&&arabic_e_letters==0){med=symbol;med=med-32; i2c_addres=med*8;llk=0xa0 ;}// if page 0



if(arabic_e_letters==1){
if(symbol_1=='v'||symbol_1==']'||symbol_1=='`'||symbol_1=='.'||symbol_1==','||symbol_1=='_'||symbol_1=='*'||symbol_1=='^'){symbol_1=32;}
 if(symbol2=='_'||symbol2=='*'||symbol2=='^'){symbol2=32;};
switch (symbol) {
   case 32:if(addres>4){arabic_e_letters=0;}break;
   case '_':i2c_addres=0;llk=0xa0;break;
//-----------------------
case 'h':i2c_addres=16;llk=0xa4;break;   //alef

case 'f':if(symbol2==32){i2c_addres=32;llk=0xa4;}
else{i2c_addres=24;llk=0xa4;}break;


case 'j': i2c_addres=40;llk=0xa4;if(symbol2==32){i2c_addres=48;llk=0xa4;} break;;


case 'e':i2c_addres=56;llk=0xa4;if(symbol2==32){addres=64;llk=0xa4;}break;;


case '[':i2c_addres=72;llk=0xa4;if(symbol2==32){i2c_addres=80;llk=0xa4;} break;;

                         
case 'p':i2c_addres=88;llk=0xa4;if(symbol2==32){i2c_addres=96;llk=0xa4;} break;;


case 'o':i2c_addres=104;llk=0xa4;if(symbol2==32){i2c_addres=112;llk=0xa4;}break;;


case ']':i2c_addres=120;llk=0xa4;break;;

case '`':i2c_addres=128;llk=0xa4;break;

case 'v':i2c_addres=136;llk=0xa4;break;;

case '.':i2c_addres=144;llk=0xa4;break;;

case 's':
i2c_addres=152;llk=0xa4;
if(symbol2==32){i2c_addres=160;llk=0xa4;} break;


case 'a':i2c_addres=168;llk=0xa4;
if(symbol2==32){i2c_addres=176;llk=0xa4;} break;


case 'w':i2c_addres=184;llk=0xa4;
if(symbol2==32){i2c_addres=192;llk=0xa4;}break;


case 'q':i2c_addres=200;llk=0xa4;
if(symbol2==32){i2c_addres=208;llk=0xa4;}   break;


case 39: i2c_addres=216;llk=0xa4;break;;//  '

case '/':i2c_addres=224;llk=0xa4;break;;

case 'u':if(symbol_1==32){i2c_addres=232;llk=0xa4;}
else if(symbol2==32){i2c_addres=248;llk=0xa4;}
else{i2c_addres=240;llk=0xa4;}break;

case 'y':if(symbol2==32){i2c_addres=0;llk=0xa6;}
        if(symbol_1==32){i2c_addres=8;llk=0xa0;}
                    else{i2c_addres=0;llk=0xa0;}break;

case 't':i2c_addres=8;llk=0xa6;
if(symbol2==32){i2c_addres=16;llk=0xa6;}break;;


case 'r':i2c_addres=24;llk=0xa6;
if(symbol2==32){i2c_addres=32;llk=0xa6;}   break;



case ';': i2c_addres=40;llk=0xa6;
if(symbol2==32){i2c_addres=48;llk=0xa6;} break;

                         
case 'g':i2c_addres=56;llk=0xa6;
if(symbol2==32){i2c_addres=64;llk=0xa6;} break;

                         
case 'l':
i2c_addres=80;llk=0xa6;
if(symbol_1==32&&symbol2!=32){i2c_addres=152;llk=0xa6;}
if(symbol_1!=32&&symbol2!=32){i2c_addres=72 ;llk=0xa6;}
break;

                         
case 'k': i2c_addres=88;llk=0xa6;
if(symbol2==32){i2c_addres=96;llk=0xa6;} break;

                         
case 'i':
if(symbol_1==32&&symbol2==32){i2c_addres=144;llk=0xa6;}
if(symbol_1!=32&&symbol2==32){i2c_addres=112;llk=0xa6;}
if(symbol_1!=32&&symbol2!=32){i2c_addres=104;llk=0xa6;}
 break;

case 'm':
if(symbol_1==32&&symbol2==32){i2c_addres=144;llk=0xa6;}
if(symbol_1!=32&&symbol2==32){i2c_addres=112;llk=0xa6;}
if(symbol_1!=32&&symbol2!=32){i2c_addres=104;llk=0xa6;}
 break;
                         
case ',':i2c_addres=120;llk=0xa6;break;
                         
case 'd':i2c_addres=128;llk=0xa6;if(symbol2==32){i2c_addres=136;llk=0xa6;} break;


                         
}//end of case
}//end if id arabic_englis

if(symbol=='3'&&symbol2=='>'){i2c_addres=160;llk=0xa6;}
//DUME WRITE
Soft_I2C_Start();          //start signal
Soft_I2C_Write(llk);      //device addres
Soft_I2C_Write(i2c_addres);//start froma adress 0 to write

//real read
Soft_I2C_Start();//start signal
Soft_I2C_Write(llk+1);//eeprom adress  page (adress)

for(lc=0;lc<8;lc++){
ch[lc]=Soft_I2C_Read(1); }
Soft_I2C_Read(0);

Soft_I2C_Stop();

if(fl==1){
for(lc=0;lc<8;lc++){
temp=ch[lc];
ch[lc].f7=temp.f0;
ch[lc].f6=temp.f1;
ch[lc].f5=temp.f2;
ch[lc].f4=temp.f3;
ch[lc].f3=temp.f4;
ch[lc].f2=temp.f5;
ch[lc].f1=temp.f6;
ch[lc].f0=temp.f7;
} fl=0;
}
}//get_ch
//------------------------------------------------------------------------------
//main
void main(){
char x,z,fre,s;
cmcon=0x07;
trisa.f0=0;trisa.f1=0;
trisa.f4=1;trisa.f6=0;
trisa.f7=0;

trisb.f0=0;trisb.f1=1;
trisb.f2=0;trisb.f3=0;
trisb.f4=0;trisb.f5=0;
trisb.f6=0;trisb.f7=0;

//init uart
UART1_Init(9600);
delay_ms(100);
UART1_Write(0x0d);
//get hc595 ready
send(255);latch;
//get leds ready
led1=0;led2=0;

addres=0;
UART1_Write('r');
UART1_Write(0x0d);
UART1_Write_Text("the screen is ready ");
UART1_Write(0x0d);
delay_ms(100);
//get buffer size
UART1_Write_Text( "input how many units : ");
UART1_Write(0x0d);
while(UART1_Data_Ready()==0){;}UART1_Write(0x0d);
bs=UART1_Read();
bs=bs*8+16;
//get scrrolling speed
UART1_Write_Text("input speed : ");
UART1_Write(0x0d);
delay_ms(100);
while(UART1_Data_Ready()==0){;} UART1_Write(0x0d);
speed=UART1_Read();
speed=speed-47;
UART1_Write_Text("input words: ");
UART1_Write(0x0d);

//receive words & store it in the internal eeprom
if(porta.f4==0){goto len;};
for(;;){
led1=0;
while(UART1_Data_Ready()==0){;}
 led1=1;delay_ms(100);
 fre= UART1_Read();
 if(fre==0x0d){goto len;}
 EEPROM_Write(addres,fre);
 addres++;
 eow=addres;
   EEPROM_Write(127,1);
        }

len:
delay_ms(100);
led2=1;led1=0;
addres=0;
//-------------------------
loop:
//getting symbol
symbol=EEPROM_Read(addres);
delay_ms(5);
symbol2=EEPROM_Read(addres+1);
if(symbol2==0xff){symbol2=32;}
if(addres>0){symbol_1=EEPROM_Read(addres-1);}
if(symbol_1=='*'){symbol_1=32;}
if(addres>eow){symbol=32;};
if(symbol==0xff){symbol=32;};
if(arabic_e_letters==0){
if(symbol=='*'&&symbol2=='*'){symbol_1=32;symbol2=32;arabic_e_letters=1;addres++;addres++;goto loop;} ;}


UART1_Write(symbol);
//------------------------------------------------------------------------------
get_ch();
for(z=0;z<8;z++){
s=speed;
while(s>0){
for(x=0;x<64;x++){

send(ch[x]);
latch;symbol=symbol-32;
send(0);
latch;
column_num(x);

};
s--;
} //while




for(x=63;x>0;x--){ch[x]=ch[x-1];}   //move to right




} // for z
addres++;
goto loop;
;}

اعلانات

الصورة الرمزية abdoo_sy
abdoo_sy
:: مهندس ::
تاريخ التسجيل: Jul 2016
الدولة: سوريا
المشاركات: 31
نشاط [ abdoo_sy ]
قوة السمعة:
قديم 30-06-2017, 12:44 AM المشاركة 18   
x4


الان اريد منكم اخواني ان تقرأوا الكود جيداً مراراً وتكراراً ومن ثم ان واجهتكم اي مشكلة في اي جزء من الكود فقط قم بنشرها هنا وسوف اشرحها لك

<<<<عذراً عن عدم الرد بسبب الظروف الحالية للكهرباء>>>>

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية abdoo_sy
abdoo_sy
:: مهندس ::
تاريخ التسجيل: Jul 2016
الدولة: سوريا
المشاركات: 31
نشاط [ abdoo_sy ]
قوة السمعة:
قديم 30-06-2017, 11:30 PM المشاركة 19   
not funny هيا


هيا اخواني...
الم ترو الكود بعد؟
انتظر اسئلتكم

.................................................. .

..


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 01-07-2017, 05:20 AM المشاركة 20   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


هيا اخواني...
الم ترو الكود بعد؟
انتظر اسئلتكم

.................................................. .

..
السلام عليكم ورحمه الله ..

عمل ممتاز أخي الكريم وجاري دراسه الكود بالتوفيق ..


عندي لك اقتراح أو خلينا نقول تطوير للمشروع هل يمكنك عمل برنامج وسيط علي ذاكرة خارجيه يمكن من خلالها وضع النص المراد عرضه علي كارت ميمورى أو فلاشه .. وهنا لكي يتم العرض من كارت الميموري أو الفلاشه .. لأن الشاشه كده هتكون مرتبطه بالكمبيوتر بستمرار ...

بالمناسبه لقد تم مشاركه رابط ملف تفعيل برنامج ميكروسي برو .. واسف لم انتبه للمشاركه الملف ..


الصورة الرمزية abdoo_sy
abdoo_sy
:: مهندس ::
تاريخ التسجيل: Jul 2016
الدولة: سوريا
المشاركات: 31
نشاط [ abdoo_sy ]
قوة السمعة:
قديم 01-07-2017, 05:30 PM المشاركة 21   
Talking


السلام عليكم ورحمه الله ..

عمل ممتاز أخي الكريم وجاري دراسه الكود بالتوفيق ..


عندي لك اقتراح أو خلينا نقول تطوير للمشروع هل يمكنك عمل برنامج وسيط علي ذاكرة خارجيه يمكن من خلالها وضع النص المراد عرضه علي كارت ميمورى أو فلاشه .. وهنا لكي يتم العرض من كارت الميموري أو الفلاشه .. لأن الشاشه كده هتكون مرتبطه بالكمبيوتر بستمرار ...

بالمناسبه لقد تم مشاركه رابط ملف تفعيل برنامج ميكروسي برو .. واسف لم انتبه للمشاركه الملف ..
اخي اريد ان تقرأ ما سأكتبه جيداً كي تحصل على مرادك والذي هو موجود ضمن المشروع ولكنك لم تنتبه له :

بعد الوصول للدالة الرئيسية .
وتعريف المداخل و المخارج و البروتوكول i2c ستجد اني كتبت:
كود:
addres=0;
UART1_Write('r');
UART1_Write(0x0d);
UART1_Write_Text("the screen is ready ");
UART1_Write(0x0d);
delay_ms(100);
//get buffer size
UART1_Write_Text( "input how many units : ");
UART1_Write(0x0d);
while(UART1_Data_Ready()==0){;}UART1_Write(0x0d);
bs=UART1_Read();
bs=bs*8+16;
//get scrrolling speed
UART1_Write_Text("input speed : ");
UART1_Write(0x0d);
delay_ms(100);
while(UART1_Data_Ready()==0){;} UART1_Write(0x0d);
speed=UART1_Read();
speed=speed-47;
UART1_Write_Text("input words: ");
UART1_Write(0x0d);

//receive words & store it in the internal eeprom
if(porta.f4==0){goto len;};
for(;;){
led1=0;
while(UART1_Data_Ready()==0){;}
 led1=1;delay_ms(100);
 fre= UART1_Read();
 if(fre==0x0d){goto len;}
 EEPROM_Write(addres,fre);
 addres++;
 eow=addres;
   EEPROM_Write(127,1);
        }
عندها سوف يرسل المتحكم رسالة وبعدها سوف ينتظر حتى يقوم المستخدم بارسال المطلوب
وهذا مكرر عدة مرات.
الان نأتي الى مطلبك
ملاحظة: ان كنت تقصد انك تريد ان تقوم بادخال الكلمات مرة واحدة فستلاحظ اني كتبت
if(porta.f4==0){goto len;};
وهذا الامر عندما المستخدم يريد ان يدخل الكلمات يضغط على الزر الموصل ب a4 ومن ثم يقوم باعادي التشغيل و لن يتحقق الشرط المكتوب لأن ضغطة الزر جعلت ال a4 ب 1 ولن يقوم بالقفز للبرنامج الرئيسي
بل سوف يقوم بما يلي :
ينتظر حتى يقوم المستخدم بارسال حرف ما ومن ثم يقوم بتخزينه باليبرومة الداخلية (لا الخارجية انتبه جيداً) في عناوين متتالية وفي كل عملية تخزين يقوم ليد خارجي ليس من ضمن الماتركس بالوميض
وبعد ان ينتهي المستخدم من اضافة الكلمات يضغط enter كي ينتقل المتحكم للبرنامج الأساسي
ويضغض السويتش كي تعود قيمة الa4 الى 0 ومن ثم لن يقوم الكود عند تشغيله مرة ثانية بالمرور على هذا الجزء مجدداً ..... افهمت النقطة اخي ؟؟ ارجو ذلك .....
............................................








كود:
//receive words & store it in the internal eeprom
if(porta.f4==0){goto len;};
for(;;){
led1=0;
while(UART1_Data_Ready()==0){;}
 led1=1;delay_ms(100);
 fre= UART1_Read();
 if(fre==0x0d){goto len;}
 EEPROM_Write(addres,fre);
 addres++;
 eow=addres;
   EEPROM_Write(127,1);
        }

len:
delay_ms(100);
led2=1;led1=0;
addres=0;
//-------------------------
تحياتي للجميع.


roony
:: مهندس ::
تاريخ التسجيل: Sep 2015
المشاركات: 1
نشاط [ roony ]
قوة السمعة:
قديم 04-07-2017, 04:29 AM المشاركة 22   
افتراضي


السلام عليكم
قد صنعت ليد ماتركس ترسل لها حروف عربية او انكليزية او بعض المحارف الخاصة عبر بروتوكول usart.
الميزات:
1 - قابلية تغيير المحتويات في اي وقت, ولا تحتاج تعلم البرمجة للقيام بذلك.
2 -تتسع لما يقارب 125 حرف .
3 - المعالج هو pic16f628a و ذاكرة خارجية 24c16 ومسجل ازاحة 74hc595 و 74hc164 و الباقي ليدات.
4 - الكود بالمايكرو سي.

فقط قومو بالرد كي ارى عدد المهتمين لتشجيعي على نشرها مع شرح وافي لها.
جزاك الله خيرا يا بشمهندس


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 04-07-2017, 05:43 AM المشاركة 23   
افتراضي


بارك الله بك عمل رائع
لي عندك رجاء وهو ان تتريث قليلا على الاخوة هنا في المتابعة .
تابع ما تقدمه واطلب اجرك من بارئك .
حياك الله 👍👍👍


محمود2020
:: مهندس ::
تاريخ التسجيل: Jul 2017
المشاركات: 7
نشاط [ محمود2020 ]
قوة السمعة:
قديم 14-07-2017, 04:37 AM المشاركة 24   
افتراضي


موفق ان شاء الله



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:51 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)