ايران ويج

نسخه‌ی کامل: 7-seg
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
درود بر اساتید محترم
من میخوام
یک متغییر سه رقمی را روی 3 تا 7-seg بدم نمیدونم چرا عددی که نمایش میده هیچ ربطی به متغییر من نداره؟؟؟؟؟؟؟؟
اینم از کدش :
کد php:
#include <mega8.h>
#include <delay.h>
unsigned char digit [10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f};
unsigned char n1,n2,n3;
unsigned char t,e;
void main(void)
{

PORTD=0x00;
DDRD=0xFF;

PORTB=0x00;
DDRB=0xFF;
while (
1)
      {
      
t=651;
      
n1=t%10;
      
e=t/10;
      
n2=e%10;
      
n3=e/10;
      
      
PORTD=digit[n3];
      
PORTB.0=1
      
PORTB.1=0;
      
PORTB.2=0
      
delay_ms(5);
      
PORTD=digit[n2];
      
PORTB.0=0
      
PORTB.1=1;
      
PORTB.2=0;
      
delay_ms(5); 
      
PORTD=digit[n1];
      
PORTB.0=0
      
PORTB.1=0;
      
PORTB.2=1;
      
delay_ms(5);
      }

بدونه تقسیم متوالی چک کردم ولی مشکلی نداشت یعنی به جای n1,n2,n3 عدد گذاشتم
نمیدونم متغییر سه رقمی را روی 3 تا 7-seg بدم نمیدونم چرا عددی که نمایش میده هیچ ربطی به متغییر من نداره
به نظر من هرچی که هست مشکل از تقسیم متوالی نمید ونم چرا ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
من پروتئوس استفاده نکردم تو عمل این مشکل داره
اول سعی کنید به طور همزمان 123 را روی 3 تا 7سگمنت نشون بدید. بعد مشکل رو پیدا کنید، بعد از رفع روی برنامه ای که می خواید کار کنید.

موفق باشید.
بدونه تقسیم متوالی چک کردم ولی مشکلی نداشت یعنی به جای n1,n2,n3 عدد گذاشتم
نمیدونم متغییر سه رقمی را روی 3 تا 7-seg بدم نمیدونم چرا عددی که نمایش میده هیچ ربطی به متغییر من نداره
به نظر من هرچی که هست مشکل از تقسیم متوالی نمید ونم چرا ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟///
من پروتئوس استفاده نکردم تو عمل این مشکل داره
متغییر char ، به اندازه ی 8 بیت یا 1 بایت فضا می گیرهه یعنی اعداد بین 0 تا 255 .
رنج اعداد شما بالاتر هست. از uint استفاده کنید و بعد از انجام محاسبات به char کست (cast) اشون کنید و درون n ها قرار بدید و نمایش بدید. محاسبات رو در C در یک خط هم می تونید انجام بدید.

موفق باشید.
سلام اینجوری که من متوجه شدم مشکل از عملگر % هست وقتی متغییر از جنس float تعریف میکنیم error میگیره
اگرم مثل بالا ازجنسunsigned char تعریف کنیم چون عددی که میده ممیز داره جواب درت نیست
بنظر شما راحل چیه؟؟؟؟؟؟؟؟؟؟؟
اگر امکانش هست بصورت کد بهم بگین خیلی به c مسلط نیستم
متشکرم از پاسخ
اینوقت شب از مغزم نمی تونم توقع زیادی داشته باشم!
باید کارت رو راه بندازه، اما لزوما بهترین کار ممکن نیست!
کد php:
uint t;
uchar n1,n2,n3;

t=651;
n1=(uchar)(t/100);
n2=(uchar)((t/10)-(n1*10));
n3=(uchar)(t-(n1*100)+(n2*10)); 

موفق باشی.
متشکرم
ولی نمیدم چرا بازم error میده

کد php:
while (1)
      {
      
lcd_clear();
      
t=651;
      
n1=(uchar)(t/100);
      
n2=(uchar)((t/10)-(n1*10));
      
n3=(uchar)(t-(n1*100)+(n2*10)); 
      
sprintf(x,"s=%2.2f",n1);
      
lcd_gotoxy(0,0);   
      
lcd_puts(x); 
      
delay_ms(500);
      }

فکنم مشکل از فرمت sprintf
lcd برای تست نوشتم
مخوام رو همون s-seg پیادش کنم
چه اروری؟
اون Sprintf چیه؟! کلی زحمت کشیدیم عدد صحیحشون کردیم ها!!
روی همون 7seg نشونش بدید.
صفحه‌ها: 1 2 3