ايران ويج

نسخه‌ی کامل: 7-seg
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
اگر مقادیر روی 7SEG اشتباه نشون داده می شه یا درست اسکن نمی شه، بخاطر اینه که برنامه تون رو بد نوشتید.
بویژه تاخیر های 200ms ایه مکرر که تو برنامه نوشتید، طبیعتا این روش اسکن 7seg رو خراب می کنه ، حداقل در 1 ثانیه 24 بار هر 7seg باید اسکن بشه. تو کد شما 3 تا 7seg فکر کنم در ثانیه رو هم 5 بار هم مقدار دهی و رفرش نمی شن!
سلام
من ه چی تابع بود همراه با delay ها پاک کردم وفقط delay های مربوط به 7seg گذاشتم که جمعا به 15 میلی میشه
ولی باز همون مشکلو داره
من فکر می کنم هر چی هست مشکل از
مقدار دما خونده است
کد php:
while (1)
      {
      
        
t1=ds18b20_temperature(&rom_codes[0][0]);
        
t2=ds18b20_temperature(&rom_codes[1][0]);
        
t3=ds18b20_temperature(&rom_codes[2][0]);
        
t4=ds18b20_temperature(&rom_codes[3][0]);
        
s=t1+t2+t3+t4;
        
m=(s/4);

      
n1=(unsigned char)(m/100);
      
n2=(unsigned char)((m/10)-(n1*10));
      
n3=(unsigned char)(m-((n1*100)+(n2*10))); 
      
      
PORTD=digit[n3];
      
PORTC.5=1
      
PORTC.6=0;
      
PORTC.7=0
      
delay_ms(5);
      
PORTD=digit[n2];
      
PORTC.5=0
      
PORTC.6=1;
      
PORTC.7=0
      
delay_ms(5); 
      
PORTD=digit[n1];
      
PORTC.5=0
      
PORTC.6=0;
      
PORTC.7=1
      
delay_ms(5);

      } 
هر کدوم از تابع های مربوط به خوندن دما چه مدت زمان طول می کشه؟ توی اون هم حتما دستور delay داری.نه؟
مشکل رو هم نگفتی که دقیقا بدونم در خروجی چی می بینی ... ؟
راه حل هم حذف کردن delay ها نیست!
باید روش اسکن رو تغییر بدید به روش وقفه ای ...

موفق باشید.
سلام
با IC 7448 کار کردید میشه توضیح بدید چطوری باید تو برنامه این چهار بیت اسکن کنم ؟
سلام.
اگر در پایه های میکرو محدودیت داشتید باید از این IC ها استفاده کنید. ورودی BCD می گیرهه روی 4 خط و خودش تبدیل می کنه به اطلاعات مد نظر 7seg .
روش رفرش کردن 7seg باز هم گردن میکرو هست و تفاوتی ندارهه ... .

موفق باشید
یعنی چطور میشه تو کد برنامه برای پورت ها به جایی 7بیت چهار بیت تعریف کنیم
اگه میشه بیشتر توضیح بدید
نمونه پروژه با این نمونه IC ها تو سایت هست.
شما مقدار BCD روی 4 خط می ذارید و معادلش برای 7seg روی 7-8 پایه ی خروجی تولید می شه.
BCD یا binary coded decimal
0001 می شه 1 دسیمال
0010 می شه 2
0011 می شه 3
.
.
.
1001 می شه 9

موفق باشید.
(۱۷-اردیبهشت-۱۳۹۴, ۲۲:۰۱:۴۶)sharin نوشته است: [ -> ]هر کدوم از تابع های مربوط به خوندن دما چه مدت زمان طول می کشه؟ توی اون هم حتما دستور delay داری.نه؟
مشکل رو هم نگفتی که دقیقا بدونم در خروجی چی می بینی ... ؟
راه حل هم حذف کردن delay ها نیست!
باید روش اسکن رو تغییر بدید به روش وقفه ای ...

موفق باشید.

دقیقا نمی دونم چه مدت زمان طول می کشه
دما رو درست نمایش میده ولی مشکلش اینه که عدد یکان و دهگانش پشت سر هم چشمک میزنه و صدگانش مشکلی نداره ثابت

من فکر میکنم مشکل از تابع مربوط به سنسور
ولی چه ربطی داره چرا یک رقم شو درست
نمایش میده؟؟؟؟؟؟
سرعت چشمک زدن یکان نسبت به دهگان هم متفاوته؟ یا با یه سرعت چشمک می زنن؟
یا چون رقم صدگان تغییرات مقدارش کمه چشمک تو دید نمی زنه.
یا به دلیل دستورات قبل و تاخیرهایی که ایجاد می کنن ، رقم صدگان مدت زمان بیشتری نسبت به بقیه روشن هست.
کلا سرعت رفرش درست بشه این قضیه حل می شه.
سرعت چشمک زدن یکان و دهگان برابر
درست منم فکر میکنم رقم صدگان تغییر مقدارش کمه چشمک دیده نمیشه
ولی تو بر نامه همه به یک اندازه تاخیر دارند
بنظر شما سرعت رفرش چطور حل میشه
من بازم فکر میکنم همه چیز زیر سر تابع سنسور ds18b20 است چون همین پروژه با سنسور lm35 استفاده کردم مشکلی نداشت
بنظر شما راحل چیه؟
البته اون تابع هم مشکل ندارهه ، مشکل سبک رفرش کردن 7seg هست. چند پست قبل گفتم باید از روش وقفه ای استفاده کنید ، یعنی باید یه تایمر راه بندازید که در فاصله زمانی ثابت به وقفه برهه و مقدار 7seg ها رو اعمال کنه...
البته باید هوشمندانه انجام بدید که تایمینگ توابع خوندن سنسور دما به هم نریزهه...

موفق باشید.
صفحه‌ها: 1 2 3