اطلاعیه

Collapse
No announcement yet.

نمایش معادل باینری با استفاده از میکرو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نمایش معادل باینری با استفاده از میکرو

    یک جا لازم شد با استفاده از Atmega16معادل باینری یک عدد رو تو یک LCD کاراکتری 16*2 نمایش بدم. البته خیلی راحت میشه با دو خط دستور این معادل باینری رو روی یک پورت میکرو نشون داد. اینجوری:

    Unsigned char a=یک عددی

    PORTA=a

    ولی نمیشه خیلی راحت همین عدد باینری رو تو LCD نمایش داد چون کامپایلر فرض میکنه این عدد کد اسکی یک کاراکتره و اون کاراکترو نشون میده

    راهی که به نظرم رسید این بود که اون عدد رو روی یک پورت میکرو بنویسم، بعد با استفاده از حلقه for برنامه تک تک پین های اون پورت رو بخونه و با استفاده از دستور زیر، بسته به مقدار پین تو LCD صفر یا یک چاپ کنه:

    LCD_ putchar(ASCII code of 0 or 1)

    ولی کامپایلر به PORTA.i گیر داد(i شمارنده حلقه است) و مجبور شدم برای تک تک پین ها یه همچین کدی رو copy-paste کنم:

    lcd_gotoxy(0,1);

    if(PORTA.7==0)

    lcd_putchar(o); //o = ASCII code of 0

    else

    lcd_putchar(l); //l = ASCII code of 1

    اگه کسی راه آسونتری بلد بود خوشحال میشم به منم بگه
    **همیشه به این فکر کن که خداوند با توست**

    #2
    پاسخ : نمایش معادل باینری با استفاده از میکرو

    با سلام
    تبدیل یک عدد به رشته باینری آن کار ساده است نیاز به استفاده از پورت و این حرفآ‌ها نداره. در مثال زیر این کار در تابع binary2lcd انجام میآ‌شود و به عنوان مثال عدد number برای تبدیل به LCD فرستاده میآ‌شود...



    کد PHP:
    void binary2lcd(unsigned char num)
    {
        
    char i;
        for(
    i=7;i>=0;--i)
            
    lcd_putchar( ( (num>>i) &amp0x1 ) + '0');
        
    return;
    }
    .
    .
    .
    lcd_gotoxy(0,1);
    binary2lcd(number);
    .

    من دوست دارم آزاد فکر کنم، نرمآ‌افزارآ‌ و سختآ‌افزارهای آزاد را به کار ببرم و اگر توانستم نرمآ‌افزار، سختآ‌افزار و محتوای آزاد درست کنم!

    دیدگاه

    لطفا صبر کنید...
    X