امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
7-seg
نویسنده پیام
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #1
Exclamation  7-seg
درود بر اساتید محترم
من میخوام
یک متغییر سه رقمی را روی 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);
      }


"... the quieter you become the more you are able hear "
۱۵-اردیبهشت-۱۳۹۴, ۱۷:۱۲:۲۸
ارسال‌ها
پاسخ
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #2
RE: 7-seg
بدونه تقسیم متوالی چک کردم ولی مشکلی نداشت یعنی به جای n1,n2,n3 عدد گذاشتم
نمیدونم متغییر سه رقمی را روی 3 تا 7-seg بدم نمیدونم چرا عددی که نمایش میده هیچ ربطی به متغییر من نداره
به نظر من هرچی که هست مشکل از تقسیم متوالی نمید ونم چرا ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
من پروتئوس استفاده نکردم تو عمل این مشکل داره

"... the quieter you become the more you are able hear "
۱۵-اردیبهشت-۱۳۹۴, ۲۱:۵۶:۱۴
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #3
RE: 7-seg
اول سعی کنید به طور همزمان 123 را روی 3 تا 7سگمنت نشون بدید. بعد مشکل رو پیدا کنید، بعد از رفع روی برنامه ای که می خواید کار کنید.

موفق باشید.

۱۵-اردیبهشت-۱۳۹۴, ۲۳:۱۶:۰۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : رسول, hosseinip
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #4
RE: 7-seg
بدونه تقسیم متوالی چک کردم ولی مشکلی نداشت یعنی به جای n1,n2,n3 عدد گذاشتم
نمیدونم متغییر سه رقمی را روی 3 تا 7-seg بدم نمیدونم چرا عددی که نمایش میده هیچ ربطی به متغییر من نداره
به نظر من هرچی که هست مشکل از تقسیم متوالی نمید ونم چرا ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟///
من پروتئوس استفاده نکردم تو عمل این مشکل داره

"... the quieter you become the more you are able hear "
۱۵-اردیبهشت-۱۳۹۴, ۲۳:۵۳:۴۴
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #5
RE: 7-seg
متغییر char ، به اندازه ی 8 بیت یا 1 بایت فضا می گیرهه یعنی اعداد بین 0 تا 255 .
رنج اعداد شما بالاتر هست. از uint استفاده کنید و بعد از انجام محاسبات به char کست (cast) اشون کنید و درون n ها قرار بدید و نمایش بدید. محاسبات رو در C در یک خط هم می تونید انجام بدید.

موفق باشید.

۱۶-اردیبهشت-۱۳۹۴, ۰۰:۲۸:۲۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hosseinip
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #6
RE: 7-seg
سلام اینجوری که من متوجه شدم مشکل از عملگر % هست وقتی متغییر از جنس float تعریف میکنیم error میگیره
اگرم مثل بالا ازجنسunsigned char تعریف کنیم چون عددی که میده ممیز داره جواب درت نیست
بنظر شما راحل چیه؟؟؟؟؟؟؟؟؟؟؟

"... the quieter you become the more you are able hear "
۱۶-اردیبهشت-۱۳۹۴, ۰۰:۳۶:۵۵
ارسال‌ها
پاسخ
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #7
RE: 7-seg
اگر امکانش هست بصورت کد بهم بگین خیلی به c مسلط نیستم
متشکرم از پاسخ

"... the quieter you become the more you are able hear "
۱۶-اردیبهشت-۱۳۹۴, ۰۰:۳۹:۲۰
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #8
RE: 7-seg
اینوقت شب از مغزم نمی تونم توقع زیادی داشته باشم!
باید کارت رو راه بندازه، اما لزوما بهترین کار ممکن نیست!
کد 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)); 

موفق باشی.

۱۶-اردیبهشت-۱۳۹۴, ۰۰:۵۱:۰۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : رسول, hosseinip
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #9
RE: 7-seg
متشکرم
ولی نمیدم چرا بازم 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);
      }


"... the quieter you become the more you are able hear "
۱۶-اردیبهشت-۱۳۹۴, ۰۰:۵۸:۵۷
ارسال‌ها
پاسخ
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #10
RE: 7-seg
فکنم مشکل از فرمت sprintf
lcd برای تست نوشتم
مخوام رو همون s-seg پیادش کنم

"... the quieter you become the more you are able hear "
۱۶-اردیبهشت-۱۳۹۴, ۰۱:۰۱:۴۲
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #11
RE: 7-seg
چه اروری؟
اون Sprintf چیه؟! کلی زحمت کشیدیم عدد صحیحشون کردیم ها!!
روی همون 7seg نشونش بدید.

۱۶-اردیبهشت-۱۳۹۴, ۰۱:۰۵:۵۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hosseinip


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 7 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS