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

موضوع: اسکن lcd

  1. #1
    عضو جدید
    تاریخ عضویت
    Feb 2013
    نوشته ها
    5
    تشکر
    3
    تشکر شده 0 بار در 0 پست

    پیش فرض اسکن lcd

    با سلام
    من یه کیپد به میکرو وصل کردم هر عددی میزنم رو ال سی دی نشون میده حالا میخام اون عددی ک وارد میکنم یه عملیاتی روش انجام بشه(مثلا اول بودنشو نشون بده یا زوج وفرد بودنشو) چطور میتونم یا با چه کدهای میتونم عدد رو ال سی دی رو انتخاب و اون عملیات انجام بدم
    راستش من با c نوشتم به بسکام تسلط زیادی ندارم
    تشکر

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

  3. #2
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    سلام
    به روی ماهت
    ویرایش توسط sadeghbakhshi : 31-08-2015 در ساعت 01:17

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


  5. #3
    عضو جدید
    تاریخ عضویت
    Feb 2013
    نوشته ها
    5
    تشکر
    3
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sadeghbakhshi نمایش پست ها
    سلام
    شما باید از دستورات خوندن ال سی دی استفاده کنید که توی کتابخانه ی ال سی دی موجود هست
    بعد عملیاتهای ریاضی رو روش پیاده کنید
    یا اینکه کاراکترهایی که روی ال سی دی نمایش داده میشه رو توی یه متغییر ذخیره کنید
    یعنی همون عدد وارد شده از کیپد رو استفاده کنید
    راستی زبان سی خیلی بهتر از بسکام هست
    جلوتر که بری متوجه میشی

    تشکر از راهنماییت
    مشکل من تو توابع ریاضی نیست مشکلم تو توابع ال سی دی نمیدون از کجا وچپوری فرا خوانی کنم؟؟؟
    کاراکترهایی روی ال سی دی چطور ذخیره کنم؟؟؟اگه اینو بلد بودم میتونستم بقیه شو بنویسم

  6. #4
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    دوست عزیز (بهتر بود برنامه خودتون رو هم میگذاشتین)
    میکروی شما برای اینکه اعداد روی کی پد را بفهمد که کدام کلید فشرده شده است.
    با استفاده از کدهای مربوطه کی پد شما رو جاروب میکن (همون اسکن) و طبق اون عدد
    مورد نظر رو توی یک متغییر میریزد و بد اون متغییر رو به کارکتر تبدیل میکند و برای ال سی دی
    می فرستد برای نمایش
    حالا شما توی برنامتون ببینید که متغییری که تبدیل به کارکتر شده است چی هست.
    (دستور تبدیل عدد به رشته itoa(نام متغییر,نام رشته که حاصل داخل آن ریخته شود) و دستور تبدیل عدد اعشاری به رشته ftoa(نام متغییر,نام رشته که حاصل تبدیل داخل آن ریخته شود). )
    (مثلا اسم اون متغییر data هستش)
    و حالا عدد مورد نظر شما توی همون متغییر هست که شما می تونید اون متغییر رو
    طبق دستورات ریاضی زبان C برای میکرو عملیات مورد نظر را اجرا کنید.
    شرکت Time Owner

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


  8. #5
    عضو جدید
    تاریخ عضویت
    Feb 2013
    نوشته ها
    5
    تشکر
    3
    تشکر شده 0 بار در 0 پست

    پیش فرض

    این از کد
    خودم ننوشتم کمی تغییر دادم
    #include <mega16.h>
    #include <delay.h>
    #include <lcd.h>

    #asm
    .equ __lcd_port=0x18
    #endasm

    int key();
    int a;
    char i;


    char y=0 ;

    void main(void)
    {
    DDRB=0xFF;
    DDRD=0x0F;

    lcd_init(20);

    while(1)
    {



    y = key();

    if(y == 0) {lcd_putchar('0'); delay_ms(50);}

    if(y == 1) {lcd_putchar('1'); delay_ms(50);}

    if(y == 2) {lcd_putchar('2'); delay_ms(50);}

    if(y == 3) {lcd_putchar('3'); delay_ms(50);}

    if(y == 4) {lcd_putchar('4'); delay_ms(50);}
    if(y == 5) {lcd_putchar('5'); delay_ms(50);}
    if(y == 6) {lcd_putchar('6'); delay_ms(50);}
    if(y == 7) {lcd_putchar('7'); delay_ms(50);}
    if(y == 8) {lcd_putchar('8'); delay_ms(50);}
    if(y == 9) {lcd_putchar('9'); delay_ms(50);}

    if(y == 14) {lcd_putchar('='); delay_ms(50);}
    if(y == 15) {lcd_clear(); delay_ms(50);}

    if (y==14)
    {
    if(a%2==0)
    {
    lcd_puts("ok");
    }

    }

    }
    }

    int key(void)
    {
    while(1)
    {

    PORTD.0 = 1 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 7 ; delay_ms(50);}
    if(PIND.5 == 1){return 8 ; delay_ms(50);}
    if(PIND.6 == 1){return 9 ; delay_ms(50);}

    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 1 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 4 ;}
    if(PIND.5 == 1){return 5 ;}
    if(PIND.6 == 1){return 6 ;}

    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 1 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 1 ;}
    if(PIND.5 == 1){return 2 ;}
    if(PIND.6 == 1){return 3 ;}

    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 1 ;
    if(PIND.4 == 1){return 15;}
    if(PIND.5 == 1){return 0 ;}
    if(PIND.6 == 1){return 14;}


    }
    }

  9. #6
    عضو جدید
    تاریخ عضویت
    Feb 2013
    نوشته ها
    5
    تشکر
    3
    تشکر شده 0 بار در 0 پست

    پیش فرض

    راستش خیلی متوجه نشدم!!
    کجای برنامه ام ایراد داره؟؟

    #include <mega16.h>
    #include <delay.h>
    #include <lcd.h>
    #include <stdio.h>
    #asm
    .equ __lcd_port=0x18
    #endasm

    int key() ;

    char y=0 ;
    char str[20];


    void main(void)
    {

    DDRB=0xFF;
    DDRD=0x0F;

    lcd_init(20);

    while(1)
    {

    y = key();

    if(y == 0)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 1)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 2)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 3)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }

    if(y == 4)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 5)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 6)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 7)
    {sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 8)
    {sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 9)
    {
    sprintf(str,"%u",y);
    lcd_puts(str);
    delay_ms(50);
    }
    if(y == 14)
    {
    lcd_putsf("=");
    delay_ms(200);
    }
    if(y == 15)
    {
    lcd_clear();
    }


    if (y==14)
    {
    delay_ms(20) ;
    lcd_read();
    delay_ms(50);
    }

    با این برنامه فقط رقم آخر ک زدم میاره من میخاوم همه ارقام بیاره(مثلا عدد 125 ک میزنم بعد=5میاره من میخام 125 بیاره)
    لطفا کمک کنید
    ویرایش توسط miladbrave : 27-10-2014 در ساعت 16:53

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

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