NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4628 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 8 از 8

موضوع: تمرینهای مجله شماره 3

  1. #1
    مدیر باز نشسته arsalan681 آواتار ها
    تاریخ عضویت
    Dec 2009
    نوشته ها
    974
    تشکر
    165
    تشکر شده 1,256 بار در 613 پست

    پیش فرض تمرینهای مجله شماره 3

    دوستان کی جواب این تمرینها رو داره؟

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  4. #2
    مدیر باز نشسته arsalan681 آواتار ها
    تاریخ عضویت
    Dec 2009
    نوشته ها
    974
    تشکر
    165
    تشکر شده 1,256 بار در 613 پست

    پیش فرض

    نقل قول نوشته اصلی توسط arsalan681 نمایش پست ها
    دوستان کی جواب این تمرینها رو داره؟
    منتظر جوابم

  5. تشکرها از این نوشته :


  6. #3
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    بلاخره من اومدم ( فکر کنم دیگه نا امید شده بودین ، یه مقدار گرفتارم )
    تمرین شماره 1 :
    بر نامه ای بنویسید که در ان دما توسط سنسور lm35 اندازه گرفته شود و بر روی lcd نمایش داده شود . با زیادتر شدن دما از 35 درجه بر روی lcd عبارت high و با کمتر شدن ان از 25 درجه بر روی lcd عبارت low نمایش داده شود
    حل :
    قبلا با نحوه ی راه اندازی lcd و نحوه نمایش خروجی اون بر روی lcd اشنا شدیم . در این پروژه باید داده دریفاتی از سنسور lm35 رو به مقدار دما تبدیل کنیم و بعد با دستور if شروط خواسته شده رو انجام بدیم .
    lm35 یک سنسور دمای سه پایه هست که خروجی اون به ازای هر درجه 10 میلی ولت تغییر میکنه ، همچنین خروجی به ازای دمای 0 درجه برابر با صفر است .
    با این حساب مقدار ولتاژ خروجی به ازای 150 درجه که بیشترین مقدار اندازه گیری شده توسط این سنسور هست برابر با 1.5 ولت میباشد .
    ما میدونیم که adc در ارم به ازای 3.3 ولت عدد 1023 رو برمیگردونه ، پس با یک تناسب بندی ساده میشه فهمید که به ازای ولتاژ 1.5 ولت که نماینگر دمای 150 درجه هست ، عدد 465 بر میگرده . عدد 465 به ازای دمای 150 درجه و ولتاژ 1.5 هست ، ما میخواییم که بر روی lcd عدد 150 نمایش داده بشه .
    پس با تقسیم کردن متغییری که عدد 465 در اون ذخیره شده به 3.1 ، مقدار دیجتال نمایش داده شده متناسب با دمای محیط خواهد بود :
    کد:
    #include "AT91SAM7X256.h"
    #include "lib_AT91SAM7X256.h"
    #include "lcd.h"
    #include "delay.h"
    #include "adc.h"
    int main (void){
    unsigned int a ;
    config_adc(0xc0);
    lcd_rs(2,0x1);
    lcd_e (2,0X2 );
    lcd_data(2,0X3FC);
    while(1)
    {
    start_adc();
    lcd_gotoxy(1,1);
    lcd_putsf("adc=");
     	 a = read_adc(6);
    	 a=a/3.1;	
    lcd_gotoxy(2,1);
    lcd_puts(a);
    delay_ms(500);               
    }
    }
    برنامه بالا مقدار دما رو اندازه گیری میکنه و بر روی lcd که به صورت 8 بیت پیکربندی شده ، نمایش میده . برای اینکه شروط در برنامه بیاریم ، باید ببینم که به ازای دمای 35 و 25 درجه ، چه مقدار ولتاژ انالوگ به adc اعمال میشه و مقدار دیجتال برگردونده شده چقدر هست :
    به ازای دمای 35 درجه ، خروجی سنسور 350 میلی وبت هست ، با یک تناسب ساده میشه فهمید که به ازای این ولتاژ adc عدد 108.5 رو برمیگردونه
    به ازای دما ی 25 درجه خروجی سنسور 250 میلی ولت هست ، در این حالت مقدار دیجیتال که توسط adc ایجاد میشه برابر 77.5 است .
    با اضافه کردن یک شرط ساده برنامه به پایان میرسه :
    کد:
    #include "AT91SAM7X256.h"
    #include "lib_AT91SAM7X256.h"
    #include "lcd.h"
    #include "delay.h"
    #include "adc.h"
    int main (void){
    unsigned int a ;
    config_adc(0xc0);
    lcd_rs(2,0x1);
    lcd_e (2,0X2 );
    lcd_data(2,0X3FC);
    while(1)
    {
    start_adc();
    lcd_gotoxy(1,1);
    lcd_putsf("adc=");
     	 a = read_adc(6);
    	 a=a/3.1;	
    lcd_gotoxy(1,5);
    lcd_puts(a);
    delay_ms(500); 
    if (a==108)
    {
    lcd_gotoxy(2,1);
    lcd_putsf("high");
    }
    else if (a==77)
    {
    lcd_gotoxy(2,1);
    lcd_putsf("low ");
    }              
    }
    }
    توی این برنامه از کتابخونه های lcd هشت بیت و adc و تاخیر استفاده شده ، شما باید این کتابخونه ها رو در پوشه ای که پروژه رو در اون ذخیره میکنیدیا محل نصب کیل داشته باشید .
    برنامه زیر مخصوص lcd چهار بیت هست :
    کد:
    #include "AT91SAM7X256.h"
    #include "lib_AT91SAM7X256.h"
    #include "lcd.h"
    #include "delay.h"
    #include "adc.h"
    int main (void){
    unsigned int a ;
    config_adc(0xc0);
    lcd_pin(2,0,1,2,3,4,5);
    while(1)
    {
    start_adc();
    cursor_off();
    lcd_gotoxy(1,1);
    lcd_putsf("adc=");
     	 a = read_adc(6);
    	 a=a/3.1;	
    lcd_gotoxy(1,5);
    lcd_puts(a);
    delay_ms(500); 
    if (a==108)
    {
    lcd_gotoxy(2,1);
    lcd_putsf("high");
    }
    else if (a==77)
    {
    lcd_gotoxy(2,1);
    lcd_putsf("low ");
    }              
    }
    }
    توی این پروژه پایه ی rs به پین b.0 و پایه ی e به پین b.1 و پایه ی db4 به پین b.2 و...... پایه ی db7 به پین b.4 متصل میشه . سنسور به adc شش متصل میشه و ولتاژ تغذیه ی اون باید 5 ولت باشه تا کار کنه .

    پروژه ی بعدی که ساخت ساعت تقویم هست در مجله ی شماره 4 اورده شده بود ، برای اینکه کار دوباره تکرار نشه ، همون پروژه رو جوری تغییر میدیم که بشه ساعت و تقوسم رو با استفاده از سه تا کلید تنظیم کرد . شما روش کار کنید تا چند روز دیگه جوابش رو میزارم .
    پروژه ی 3 در پست بعدی
    ویرایش توسط 1nafar : 06-02-2010 در ساعت 01:52 دلیل: مشکل در قرار گرفتن کد ها

  7. کاربران : 3 تشکر کرده اند از شما 1nafar برای ارسال این پست سودمند:


  8. #4
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    تمرین شماره 3 :
    با استفاده از 10 کلید که به پورت a متصل است ، یک قفل رمز بسازید ( پیغام ها بر روی lcd نمایش داده میشود ) .
    حل :
    هدف از این تمرین ، انشنایی بیشتر با نحوه کار lcd و استفاده از دستورات شرطی هست .
    ما 10 کلید رو به پین های a.0 تا a.9 متصل میکنیم و بعد با استفده از دستور if کلید های مورد نظر رو چک میکنیم و در صورت دسترس بودن انها پیغامی رو بر روی lcd نمایش میدیم :
    در این روش که خیلی هم ساده هست ، با استفاده از دستور if پین های رو که صفر شدن چک میکنیم .
    فرض کنید رمز ما 1235 باشه ، در این حالت اگه پایه های a.1 و a.2 وa.3 وa.5 که به اونا به ترتیب کلید های شماره 1 و 2 و 3 و5 متصل شده ، صفر بشن ، پس رمز درست هست . ( کلید شماره صفر به پین a.0 و کلید شماره ی 9 به پین a.9 متصل شده . ) .
    در برنامه زیر به ازای فشرده شدن کلید های تعیین شده یک مقدار به متغیر ارایه ای a[] تعلق میگیره ، با فشرن کلید تایید که به پایه ی a.10 متصل شده است ، مقدار متغیر های a0 تا a3 که قبلا و با فشرده شدن کلید های 1 و 2 و 3 و 5 مقدار گرفتن ، با هم جمع میشن و در متغیر a4 قرار میگرن ،
    بعد از جمع کردن متغیر ها با استفاده از یک دستور شرطی مقدار a4 چک میشه در صورتی که مقدار ان برابر با 10 باشد رمز صحیح است و عبارت pass ok بر روی lcd نمایش داده میشود . به ازای سایر مقادیر عبارت try agenبه نمایش در میاد :
    کد:
    #include "AT91SAM7X256.h"
    #include "lib_AT91SAM7X256.h"
    #include "lcd.h"
    #include "delay.h"
    int main (void){
    unsigned int a[4] ;
    lcd_pin(2,0,1,2,3,4,5);
    while(1)
    {
    if (( AT91F_PIO_GetInput( AT91C_BASE_PIOA) & AT91C_PIO_PA1) == 0)
    a[0]=3;
    if (( AT91F_PIO_GetInput( AT91C_BASE_PIOA) & AT91C_PIO_PA2) == 0)
    a[1]=1;
    if (( AT91F_PIO_GetInput( AT91C_BASE_PIOA) & AT91C_PIO_PA3) == 0)
    a[2]=2;
    if (( AT91F_PIO_GetInput( AT91C_BASE_PIOA) & AT91C_PIO_PA5) == 0)
    a[3]=4;
    if (( AT91F_PIO_GetInput( AT91C_BASE_PIOA) & AT91C_PIO_PA10) == 0){
    a[4]= a[0]+a[1]+a[2]+a[3];
     if (a[4]==10)
     {
     lcd_gotoxy(1,1);
    lcd_putsf("pass ok   ");
     }
     else
     {
    lcd_gotoxy(1,1);
    lcd_putsf("try again");
    delay_ms(500);
    lcd_gotoxy(1,1);
    lcd_putsf("@@@@@@@@@");
    delay_ms(500);
     }
    }              
    }
    }
    اتصال lcd مانند پروژه ی قبلی هست ، کلید ها باید به زمین متصل بشن ، همچنین پین های میکرو باید با یک مقاومت 10 کیلو به vcc متصل بشن

  9. کاربران : 2 تشکر کرده اند از شما 1nafar برای ارسال این پست سودمند:


  10. #5
    عضو جدید
    تاریخ عضویت
    Apr 2010
    نوشته ها
    10
    تشکر
    3
    تشکر شده 1 بار در 1 پست

    پیش فرض

    سلام ==== یه کمک میخواستم در رابطه با اتصال پایه های lcd2*16
    مداری که من دارم با sam7s64 هستش اتصال پایه های lcd هم به این ترتیبه :
    (rs=pa6)-(e=pa8)-(db0 to db7 = pa11 to pa18 )
    این رو چطوری باید تعریفش کنم -- با توضیحاتی که توی pmm3 بود عمل کردم ولی راه نیفاد
    ممنون

  11. تشکرها از این نوشته :


  12. #6
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    این کتابخونه برای sam7x256 هست و روی میکرو کنترلر دیگه ای تست نشده متاسفانه .
    شما باید فایل هدر رو باز کنید و پایه های که برای lcd استفاده شده رو تغییر بدید ، اگه از هدر 4 بیت استفاده کنید راحت تر هستید .
    اگه موفق به ویرایش هدر نشدید بگید تا درستش کنم

  13. تشکرها از این نوشته :


  14. #7
    تازه وارد
    تاریخ عضویت
    Aug 2008
    نوشته ها
    2
    تشکر
    2
    تشکر شده 1 بار در 1 پست

    پیش فرض

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

  15. تشکرها از این نوشته :


  16. #8
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    سلام
    ویرایش دوم مجلات رو دانلود کنید
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

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

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