ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 30
  1. #1
    2010/01/26
    شبستر گونئی
    688
    306

    اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    دوستان توی این پست در مورد روشها و تکنیکهای بهینه برنامه نویسی در هر زبانی بحث و گفتکو خواهد شد
    لطفا بحث ها رو سخت افزاری نکنید و هر سوالی در این مورد داشته باشید بپرسید تا دوستان یا بنده اگر بتونیم جواب بدیم تا با روشهای همدیگه اشنا بشیم.

    برای ابتدا در مورد روشهای اسکن 7 سگمنت من از این روش استفاده میکنم نظر شما چیه ؟

    موارد نیاز
    1 - یکی از تایمرهارو با پروید حدود 10 تا 50 کلو هرتز تنظیم میکنم
    2 - جدول یا یه ارایه با مقادیر مورد نیاز برای نمایش اعداد یا حروف روی سگمنت ایجاد میکنم
    3 - اگر فرض رو بر این بزاریم که 8 تا سگمنت داریم به دو پرت میکرو نیاز دارم (مشترک این سگمنتهارو SCAN و دیتا رو DATA دیفاین میکنم)

    حالا پروسه برنامه داخل اینتراپت تایمر

    1- مقدار SCAN رو صفر میکنم
    2 - یه تاخیر خیلی کوچیک برای حذف سایه و خاموش شدن سگمنتها
    3 - مقدار متناسب رو بعد از محاسبه از جدول که قبلا درست کردم داخل پرت DATA میریزم
    4 - بعد بیت متناظر با متغیر dg رو از پرت SCAN یک میکنم
    5 - یک واحد به مقدار متغیر dg اضافه میکنم
    6 - چک میکنیم که متغیر dg از 7 بزرگتر نشه اگر بشه صفر میکنیم و از اینتراپت خارج میشیم

    یه برنامه کوچیک هم میزارم البته من این برنامرو توی C نوشتم ولی شما روش رو یاد بگیرید میتونید خودتون توی هر زبانی استفاده کنید نه ؟



    #define DATA PORTA
    #define SCAN PORTB
    unsigned char Cdgit[8];
    unsigned char dg;
    flash unsigned char nom[]=
    {
    // ! " # $ % & ' ( ) * + , - . /
    0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,64 ,0 ,0 ,

    // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
    63 ,6 ,91 ,79 ,102,109,125,7 ,127,111,0 ,0 ,0 ,0 ,0 ,0 ,

    // @ A B C D E F G H I J K L M N O
    0 ,119,124,57 ,94 ,121,113,61 ,118,48 ,14 ,120,56 ,85 ,84 ,63 ,

    // P Q R S T U V W X Y Z [ \ ] ^ _
    115,103,80 ,109,120,62 ,50 ,29 ,100,110,73 ,0 ,0 ,0 ,0 ,0 ,

    // ` a b c d e f g h i j k l m n o
    99 ,119,124,88 ,94 ,121,113,61 ,116,48 ,14 ,120,56 ,85 ,84 ,92 ,

    // p q r s t u v w x y z { | } ~
    115,103,80 ,109,120,28 ,50 ,29 ,100,110,73 ,0 ,0 ,0 ,0 ,
    };

    interrupt [TIM2_COMP] void timer2_comp_isr(void)
    {
    SCAN = 0;
    delay_us(5);
    DATA = nom[Cdgit[dg] - 32];
    SCAN |= (1<<dg);
    dg++;
    if(dg > 7)dg = 0;
    }
    تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
    به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.
  2. #2
    2007/11/25
    1,140
    7

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    با سلا .ممنون از شما میشه بگید این برنامتون چیا روی سون سگمنت نشون میده؟واینها را چه جوری بدست آوردی
    // ! " # $ % & ' ( ) * + , - . /
    0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,64 ,0 ,0 ,
  3. #3
    2010/01/26
    شبستر گونئی
    688
    306

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    نقل قول نوشته اصلی توسط زوار
    با سلا .ممنون از شما میشه بگید این برنامتون چیا روی سون سگمنت نشون میده؟واینها را چه جوری بدست آوردی
    // ! " # $ % & ' ( ) * + , - . /
    0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,64 ,0 ,0 ,
    زوار جان اونهایی که مقدار متناظرشون صفره نمیشه توی سگمت های 7 قسمتی نشون داد
    ولی اونهایی که مقدار دارن رو میتونید نشون بدید

    a = بیت 0
    b = بیت 1
    c = بیت 2
    d = بیت 3
    e = بیت 4
    f = بیت 5
    g = بیت 6
    تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
    به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.
  4. #4
    2007/11/25
    1,140
    7

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    از پاشخت ممنونم تاپیک خوبی راه انداختی منم برای خوندن کلید و تنظیمات یه روتین دارم امروز یا فردا میذارم البته میخوام اساتید نظر بدن برای بهتر شدنش اما تاپیک خیلی خوبی میشه اگر همه همکاری کنند من این قسمت برنامه را متوجه نمیشم DATA = nom[Cdgit[dg] - 32];
    اینی که گذاشتی Cdgit[dg] برای چیه و چه جوری باید مثلا حرف a را انتخاب کرد؟
  5. #5
    2009/10/27
    تهران
    3,301
    762

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    تاپیک خوبی را ایجاد کردید و از شما تشکر می کنم. در روالی که برای Refresh کردن 7segment توضیح دادید، به لحاظ زمانی و پردازشی اشکالاتی مشاهده می شود. زمان مناسب برای Refresh کردن در محدوده نیم تا 2 میلی ثانیه کفایت می کند و با افزایش بیشتر تعداد وقفه ها، CPU بدون جهت زیر بار می رود که اگر بار پردازشی آن زیاد باشد، ممکن است تعداد وقفه های بالا ایجاد مشکل کند. اگر در محدوده ای که شما ذکر کردید، بدترین شرایط را که 50 کیلوهرتز است در نظر بگیریم، این بدین معنی است که هر 20 میکروثانیه یک وقفه اتفاق می افتد. حال با وجود این فرض، ببینیم که وجود خط زیر در برنامه چه تبعاتی را ایجاد می کند:

    کد:
    delay_us(5);


    اگر در هر 20 میکروثانیه، CPU بخواهد 5 میکروثانیه معطل بماند، این بدان معناست که عملا یک چهارم توان پردازشی میکروکنترلر بخاطر همین دستور بدون استفاده شده است. مشکل دوم این دستور این است که کل 7segment ها به غیر از خاموشی ناشی از تکنیک Refresh، در عمل در یک چهارم تمام زمان ها بصورت اضافه خاموش می مانند و بنابراین نور آنها کاهش می یابد. حال اگر زمان وقفه را بجای 20 میکروثانیه، مثلا 1 میلی ثانیه قرار دهید، اولا بار پردازشی CPU به همان نسبت از نظر اجرای روتین وقفه کاهش می یابد و دیگر اینکه حضور تاخیر مذکور اصلا لازم نیست و می توانید بدون آنکه مشکل ایجاد سایه بوجود آید، آن را حذف کنید.
    به عنوان یک توضیح تکمیلی، اگر در برنامه روتین هایی مانند تشخیص صفحه کلید مورد نیاز باشد، می توان در همین روتین وقفه یک شمارنده نرم افزاری را به تعداد مناسب افزایش داد و بعد از رسیدن آن به ضریب مورد نظر ( بین 20 تا 40 بار که معادل 20 تا 40 میلی ثانیه است) عملیات خواندن صفحه کلید را انجام داد که این خواندن با فاصله در حکم یک Debouncing نرم افزاری است.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
    امکان پاسخگویی به سوالات از طریق پیغام خصوصی مقدور نیست
  6. #6
    2010/04/09
    اسلامشهر
    1,494
    29

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    با عرض سلام خدمت اساتید
    با اجازه اساتید من هم یک برنامه برای 7سگمنت های چهار رقمی البته با بسکام نوشته ام ولی یک مشکلی دارم اینکه نمی دونم اعداد اعشاری رو چجوری نشون بدم ، توی جدول اعداد با اعشار روهم نوشتم اما نتونستم ازشون استفاده کنم :
    کد:
    $regfile = "m8def.dat"
    $crystal = 8000000
    '----------------------
    Ddrd = &H0F
    Ddrb = &HFF
    '-----------------------------------------
    Config Timer0 = Timer , Prescale = 8
    Stop Timer0
    Tcnt0 = 6
    Enable Ovf0
    On Ovf0 T0
    Enable Interrupts
    Start Timer0
    '--------------------------------------
    Dim A(8) As Byte , B As Single , Temp(2) As Single
    '--------initial value---------------
    Portb = &HC0
    Portd = &H80
    '-------------------------------------
    Do
    '---B : quantity of 7segment------------------
    B = 4501
    Gosub Column
    Loop
    End 'end program  
    '-----------------------------------
    T0:
    Tcnt0 = 6
    Rotate Portd , Left
    Portb = Lookup(a(portd) , Table)
    If Portd = &H10 Then Portd = &H80
    Return
    '---------------------------------
    Table:
    Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H83 , &HF8 , &H80 , &H98_
      , &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H03 , &H78 , &H00 , &H18
    '-------------
    Column:
    '--------A(1) TO A(8) : calculate columns of 7segment------
    Temp(1) = B / 1000
    A(1) = Fix(temp(1))
    Temp(2) = A(1) * 1000
    B = B - Temp(2)
    '..................
    Temp(1) = B / 100
    A(2) = Fix(temp(1))
    Temp(2) = A(2) * 100
    B = B - Temp(2)
    '..................
    Temp(1) = B / 10
    A(4) = Fix(temp(1))
    Temp(2) = A(4) * 10
    B = B - Temp(2)
    '...............
    A(8) = B
    '---------------------------------------
    Return
    این هم کل فایل ها بهمراه فایل پرتئوسش :

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  7. #7
    2009/10/27
    تهران
    3,301
    762

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    گاهی این امکان وجود دارد که برای صرفه جویی در حافظه و زمان در عین استفاده از اعداد میز دار، اعداد را بصورت صحیح و 10n برابر در نظر بگیریم و فقط در هنگام نمایش، نقطه 7segment مربوطه را روشن کنیم. مثلا اگر منظور نمایش دمای 21.3 درجه روی 7segment است بجای کار با متغیر اعشاری 21.3 می توان عملیات را با 213 انجام داد و فقط نقطه مربوط به 7segment دوم را همیشه موقع نمایش روشن کرد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
    امکان پاسخگویی به سوالات از طریق پیغام خصوصی مقدور نیست
  8. #8
    2009/01/17
    147
    1

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    سلام به همه دوستان
    منم یه سوال داشتم مطرح میکنم وقن داشتین بعد از این موضوع من رو هم راهنمایی کنین
    من می خوام واسه 16 انتخاب 16 پسورد مختلف 4 رقمی داشته باشم
    با بسکام کار میکنم
    کوتاه ترین برنامه ای که میتونم داشته باشم چیه ؟
    به هر انتخاب از 16 انتخاب یه متغیر بدم اینجوری باید اعدادی که وارد میشن رو چطور تو این متغیر ذخیره کنم ؟
    یا اینکه به هر حالت یه ارایه 4 عنصری بدم و هر عددی که وارد میشه رو بترتیب تو عنصر های ارایه ذخیره کنم
    و زمانی که داره از پسورد میشه اعداد ورودی رو در یک ارایه 4 عنصری نگه دارم و در مرحله مقایسه عناصر ارایه ذخیره شده مربوطه به اون 16 انتخاب مورد نظر رو به ترتیب عناصر ورودی مقایسه کنم .
    اگه سوالم رو خوب مطرح نکردم لطفا بگین و بپرین تا بیشتر توضیح بدم
  9. #9
    2010/04/09
    اسلامشهر
    1,494
    29

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    نقل قول نوشته اصلی توسط طراح
    گاهی این امکان وجود دارد که برای صرفه جویی در حافظه و زمان در عین استفاده از اعداد میز دار، اعداد را بصورت صحیح و 10n برابر در نظر بگیریم و فقط در هنگام نمایش، نقطه 7segment مربوطه را روشن کنیم. مثلا اگر منظور نمایش دمای 21.3 درجه روی 7segment است بجای کار با متغیر اعشاری 21.3 می توان عملیات را با 213 انجام داد و فقط نقطه مربوط به 7segment دوم را همیشه موقع نمایش روشن کرد.
    ممنون استاد
    درستش کردم ، الان می تونه اعداد رو از 0.001 تا 9999 نشون بده .
    البته یک چیزی حدود 6 درصد به حافظه اشغال شده از فلش اضافه شد . از 21 درصد به 27 درصد رسید به همراه یک تاخیر زمانی توی نمایش که البته توی پرتئوس خودش رو نشون نمیده نمی دونم به نظرتون امکان داره توی عمل در نمایش با مشکل مواجه بشه ؟

    کد:
    $regfile = "m8def.dat"
    $crystal = 8000000
    '----------------------
    Ddrd = &H0F
    Ddrb = &HFF
    '-----------------------------------------
    Config Timer0 = Timer , Prescale = 8
    Stop Timer0
    Tcnt0 = 6
    Enable Ovf0
    On Ovf0 T0
    Enable Interrupts
    Start Timer0
    '--------------------------------------
    Dim A(8) As Byte , B As Single , Temp(2) As Single
    Dim F1 As Word , F2 As String * 16 , R(3) As Byte , L As Byte
    '--------initial value---------------
    Portb = &HC0
    Portd = &H80
    '-------------------------------------
    Do
    '---B : quantity of 7segment------------------
    B = .6699
    Gosub Aashar
    Gosub Column
    Loop
    End                             'end program
    '-----------------------------------
    T0:
    Tcnt0 = 6
    Rotate Portd , Left
    Portb = Lookup(a(portd) , Table)
    If Portd = &H10 Then Portd = &H80
    Return
    '---------------------------------
    Table:
    Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90_
         , &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H00 , &H10
    '-------------
    Column:
    '--------A(1) TO A(8) : calculate columns of 7segment------
    Temp(1) = B / 1000
    A(1) = Fix(temp(1))
    Temp(2) = A(1) * 1000
    A(1) = A(1) + R(1)
    B = B - Temp(2)
    '..................
    Temp(1) = B / 100
    A(2) = Fix(temp(1))
    Temp(2) = A(2) * 100
    A(2) = A(2) + R(2)
    B = B - Temp(2)
    '..................
    Temp(1) = B / 10
    A(4) = Fix(temp(1))
    Temp(2) = A(4) * 10
    A(4) = A(4) + R(3)
    B = B - Temp(2)
    '...............
    A(8) = B
    Return
    '----------------------------------
    Aashar:
    F1 = Round(b)
    F2 = Str(f1)
    L = Len(f2)
    Select Case L
    Case 0:
    B = B * 10000
    Case 1:
    B = B * 1000 : R(1) = 10 : R(2) = 0 : R(3) = 0
    Case 2:
    B = B * 100 : R(1) = 0 : R(2) = 10 : R(3) = 0
    Case 3:
    B = B * 10 : R(1) = 0 : R(2) = 0 : R(3) = 10
    End Select
    Return

    این هم فایل ها :

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  10. #10
    2006/12/02
    بندرانزلی
    2,478
    52

    پاسخ : اشنایی با روشها و تکنیکهای بهینه برنامه نویسی همدیگه

    نقل قول نوشته اصلی توسط حسام هاشم
    سلام به همه دوستان
    منم یه سوال داشتم مطرح میکنم وقن داشتین بعد از این موضوع من رو هم راهنمایی کنین
    من می خوام واسه 16 انتخاب 16 پسورد مختلف 4 رقمی داشته باشم
    با بسکام کار میکنم
    کوتاه ترین برنامه ای که میتونم داشته باشم چیه ؟
    به هر انتخاب از 16 انتخاب یه متغیر بدم اینجوری باید اعدادی که وارد میشن رو چطور تو این متغیر ذخیره کنم ؟
    یا اینکه به هر حالت یه ارایه 4 عنصری بدم و هر عددی که وارد میشه رو بترتیب تو عنصر های ارایه ذخیره کنم
    و زمانی که داره از پسورد میشه اعداد ورودی رو در یک ارایه 4 عنصری نگه دارم و در مرحله مقایسه عناصر ارایه ذخیره شده مربوطه به اون 16 انتخاب مورد نظر رو به ترتیب عناصر ورودی مقایسه کنم .
    اگه سوالم رو خوب مطرح نکردم لطفا بگین و بپرین تا بیشتر توضیح بدم
    منظورتون رو خوب متوجه نشدم. یعنی 16 تا یوزر دارید که هر کدوم 1 پسورد دارن؟
    چه جوری یوزر ها انتخاب میشن؟
    به نظرم بهتره که از آرایه استفاده کنید.مخصوصا اگه پسورد رو از کی پد میآ*گیرید. به ازای هر کلید زده شده، عدد مربوط رو توی ارایه بریزید .دریافت اعداد که تموم شد میآ*تونید با یه حلقه For-next (البته توی بیسکام. دستور معادل C رو بلد نیستم) هر عضو از آرایه اعداد دریافتی رو با آرایه محتوی پسورد اصلی مقایسه کنید .اگه همهآ*ی اعضا برابر بودند، رمز صحیح وارد شده و اگه حتی یک عضو از آرایه ها نابرابر بودن، رمز اشتباهه.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 30

موضوعات مشابه

  1. بنظر شما این دو میکرو با چه پروتکلی به همدیگه وصل شدن؟
    توسط mohammad_6910 در انجمن میکروکنترلرهای PIC
    پاسخ: 1
    آخرين نوشته: 2012/09/22, 11:52
  2. مقاله در مورد برسی روشها و فناوری ها امضای دیجیتال
    توسط naghi در انجمن كامپيوتر ، اينترنت و علوم مرتبط
    پاسخ: 0
    آخرين نوشته: 2011/07/26, 07:46
  3. تبدیل 2 سطح منطقی متفاوت به همدیگه
    توسط سروش ش در انجمن سایر ماژول ها
    پاسخ: 15
    آخرين نوشته: 2011/06/27, 02:19
  4. تکنیکهای برنامه نویسی
    توسط behnam_kh2002 در انجمن برنامه نويسي و اينترفيس
    پاسخ: 1
    آخرين نوشته: 2010/02/10, 22:32
  5. تکنیکهای عملی برنامه نویسی STEP7
    توسط fafa620 در انجمن PLC
    پاسخ: 0
    آخرين نوشته: 2008/09/03, 07:43

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •