رفتن به مطلب
تخفیف تهیه دوره های آموزشی مشاهده دوره ها
تخفیف انواع برد و قطعات الکترونیکی ورود به فروشگاه
  • 0

چجوری دوتا مقادیر char اضافه کنیم


nimat.avassoli
 اشتراک گذاری

سوال

سلام استاد من میخواهم با استفاده از ماژول رطوبت سنج چند تا دکمه اضافه کنم اما نمیتوانم دو تا مقادیر char بنویسم چون ارور میدهد راه حلش چیست

اینم کدش

#define F_CPU 8000000UL
#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
#include <stdlib.h>
#include "LCD.h"

#define Butten_plas PD0
#define Butten_mains PD1


uint8_t c=0,I_RH,D_RH,I_TEMP,D_TEMP;

volatile uint8_t lms=20;


void Request(){
    DDRD |= (1<<6);
    PORTD |= (1<<6);
    _delay_ms(100);
    PORTD &= ~(1<<6);
    _delay_ms(20);
    PORTD |= (1<<6);
}

void Response(){
    DDRD &= ~(1<<6);
    while(PIND & (1<<6));
    while((PIND & (1<<6)) ==0);
    while(PIND & (1<<6));
}

uint8_t Receive(){
    for(int q=0;q<8;q++){
        while((PIND & (1<<6)) == 0);
        _delay_us(30);
        if(PIND & (1<<6)){
            c = (c<<1)|(0x01);
        }
        else{
            c = (c<<1);
        }
        while(PIND & (1<<6));
    }
    return c;
}
void button_init(){
    if (!(PIND & (1<<Butten_plas)))
    {  _delay_us(30);
        if (!(PIND & (1<<Butten_plas)))
        { lms++;
            if (lms == 50)
            {lms =20;
                LCD_Clear();
                sprintf(fgh,"%d",lms);
                LCD_String_xy(1,1,fgh);
                _delay_ms(1000);
                LCD_Clear();
            }
        }
    }
        if (!(PIND & (1<<Butten_mains)))
        {  _delay_us(30);
            if (!(PIND & (1<<Butten_mains)))
            { lms--;
                if (lms == 19)
                {lms =50;
                }
            }
        }
    }


int main(void)
{
    DDRD |= (1<<7);
    LCD_Init();
    char data[50];
    unsigned char fgh [20];
    _delay_ms(100);
    while (1) {
        Request();
        Response();
        I_RH = Receive();
        D_RH = Receive();
        I_TEMP = Receive();
        D_TEMP = Receive();
        LCD_Clear();
        LCD_String_xy(0,0,"Rotubat:");
        
        itoa(I_RH,data,10);
        LCD_String_xy(0,9,data);
        LCD_String(".");
        
        itoa(D_RH,data,10);
        LCD_String(data);
        LCD_String("%");
        
        itoa(I_TEMP,data,10);
        LCD_String_xy(1,0,"Dama:");
        LCD_String_xy(1,6,data);
        LCD_String(".");
        
        itoa(D_TEMP,data,10);
        LCD_String(data);
        LCD_String("C");
        if(I_RH > lms){
            PORTD |=(1<<7);
        }
        else{
            PORTD &= ~(1<<7);
        }
        _delay_ms(1000);
    }
}
 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

2 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

  • 0
در ۱۴۰۳/۱/۱۵ در ۰۰:۴۷، nimat.avassoli گفته است:

سلام استاد من میخواهم با استفاده از ماژول رطوبت سنج چند تا دکمه اضافه کنم اما نمیتوانم دو تا مقادیر char بنویسم چون ارور میدهد راه حلش چیست

اینم کدش

#define F_CPU 8000000UL
#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
#include <stdlib.h>
#include "LCD.h"

#define Butten_plas PD0
#define Butten_mains PD1


uint8_t c=0,I_RH,D_RH,I_TEMP,D_TEMP;

volatile uint8_t lms=20;


void Request(){
    DDRD |= (1<<6);
    PORTD |= (1<<6);
    _delay_ms(100);
    PORTD &= ~(1<<6);
    _delay_ms(20);
    PORTD |= (1<<6);
}

void Response(){
    DDRD &= ~(1<<6);
    while(PIND & (1<<6));
    while((PIND & (1<<6)) ==0);
    while(PIND & (1<<6));
}

uint8_t Receive(){
    for(int q=0;q<8;q++){
        while((PIND & (1<<6)) == 0);
        _delay_us(30);
        if(PIND & (1<<6)){
            c = (c<<1)|(0x01);
        }
        else{
            c = (c<<1);
        }
        while(PIND & (1<<6));
    }
    return c;
}
void button_init(){
    if (!(PIND & (1<<Butten_plas)))
    {  _delay_us(30);
        if (!(PIND & (1<<Butten_plas)))
        { lms++;
            if (lms == 50)
            {lms =20;
                LCD_Clear();
                sprintf(fgh,"%d",lms);
                LCD_String_xy(1,1,fgh);
                _delay_ms(1000);
                LCD_Clear();
            }
        }
    }
        if (!(PIND & (1<<Butten_mains)))
        {  _delay_us(30);
            if (!(PIND & (1<<Butten_mains)))
            { lms--;
                if (lms == 19)
                {lms =50;
                }
            }
        }
    }


int main(void)
{
    DDRD |= (1<<7);
    LCD_Init();
    char data[50];
    unsigned char fgh [20];
    _delay_ms(100);
    while (1) {
        Request();
        Response();
        I_RH = Receive();
        D_RH = Receive();
        I_TEMP = Receive();
        D_TEMP = Receive();
        LCD_Clear();
        LCD_String_xy(0,0,"Rotubat:");
        
        itoa(I_RH,data,10);
        LCD_String_xy(0,9,data);
        LCD_String(".");
        
        itoa(D_RH,data,10);
        LCD_String(data);
        LCD_String("%");
        
        itoa(I_TEMP,data,10);
        LCD_String_xy(1,0,"Dama:");
        LCD_String_xy(1,6,data);
        LCD_String(".");
        
        itoa(D_TEMP,data,10);
        LCD_String(data);
        LCD_String("C");
        if(I_RH > lms){
            PORTD |=(1<<7);
        }
        else{
            PORTD &= ~(1<<7);
        }
        _delay_ms(1000);
    }
}
 

سلام

دوست عزیز لطفاً خطا و ارور قرار بدید تا بتوانیم بیشتر کمک کنیم

و اینکه در کدتون  می‌تونی متغیر fgh را به صورت char و نه unsigned char تعریف کنی 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
 اشتراک گذاری

  • عضو شوید

    در انجمن ثبت نام کنید

  • دستاورد‌های اخیر

    • شاگرد
      حسین طاها نیاوند
      درجه حسین طاها نیاوند ارتقا پیدا کرد
      شاگرد
    • مشارکت کننده
      حسین طاها نیاوند
      حسین طاها نیاوند یک نشان کسب کرد
      مشارکت کننده
    • شروع کننده گفتگو
      گیتی حسن پور
      گیتی حسن پور یک نشان کسب کرد
      شروع کننده گفتگو
    • هفته اول
      Msh
      Msh یک نشان کسب کرد
      هفته اول
    • هفته اول
      habib barahmani
      habib barahmani یک نشان کسب کرد
      هفته اول
  • پست ها

  • آمارهای کاربران

    • کل کاربران
      1,697
    • بیشترین افراد آنلاین
      567

    mamadrkn
    جدیدترین کاربر
    mamadrkn
    تاریخ عضویت
×
×
  • اضافه کردن...