امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
يك مشكل
نویسنده پیام
s.jafarzadeh78 آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 5
تاریخ عضویت: فروردین ۱۳۹۱

تشکرها : 15
( 1 تشکر در 1 ارسال )
ارسال: #1
يك مشكل
سلام
من يه برنامه با كدويژن نوشتم(پيوستش هست).كار برنامه اينه كه اگر كليد وقفه 1 فشرده بشه يك واحد به عدد 7سگمنت اضافه كنه و اگه كليد وقفه 2 فشار داده بشه يك واحد كم بشه. درضمن اگر عدد منفي شد ال اي دي رو به عنوان علامت منفي روشن كنه ولي زماني كه من اين برنامه رو با پروتيوس شبيه سازي كردم ال اي دي به صورت چشمك زن روشن مي شد و زماني كه اون رو به يك پايه ديگه وصل كردم درست شد(به پورت D).اين اشكال در واقعيت هم وجود داره يا فقط ايراد پروتيوس هست؟
سورس برنامه و فايل پروتيوس ضميمه شده.


فایل‌(های) پیوست شده
.rar   1.rar (اندازه: 76.79 KB / تعداد دفعات دریافت: 57)
(آخرین ویرایش در این ارسال: ۰۸-فروردین-۱۳۹۱, ۱۷:۴۸:۱۰، توسط s.jafarzadeh78.)
۰۸-فروردین-۱۳۹۱, ۱۶:۱۳:۳۷
ارسال‌ها
پاسخ
Pardazesh-Gar آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 457
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 330
( 630 تشکر در 286 ارسال )
ارسال: #2
RE: يك مشكل
کد شما دو تا اشکال داشت.
این قسمت از کد رو جایگزین کنید درست کار میکنه.
کد:
while (1)
      {
      if(x>=0){
      PORTA=digit[x%10];PORTD.4=0;}
      if(x<0){PORTA=-0b10000000|digit[(-x%10)];}
      }

در کد قبلی
کد:
while (1)
      {
      if(x>=0){PORTA=digit[x%10];PORTD.4=0;}
      if(x<0){PORTA.7=1;PORTA=digit[0-x]%10;}

      }
گفتید اگر x منفی بود PORTA.7=1 بشود.
اما بعد از دستور SET. امدید کل PORTA رو یه مقدار جدید بهش دادید. که در این مقدار جدید پایه شماره 7 صفر هست. یعنی LED مرتب روشن و خاموش می شود.
راه حل این بود که اگر x منفی هست، PORTA با عدد باینری 10000000 Or شود. نتیجه LED علامت منفی روشن میشود.
اشتباه دوم در نمایش اعداد منفی بود که 10% در جای درستی قرار نداشت.

البته اگر این مدار رو در دنیای واقعی آزمایش میکردید. LED روشن میشد. اما با نور کمتری. و چشمک زدنش با چشمانمون مشخص نمیشد. چون سرعت روشن و خاموش شدنش بسیار زیاد.

---------------------------------------------------------------------------
تیـــز دوم، تیز دوم، تا به سواران برسم
--------------------------------------
(آخرین ویرایش در این ارسال: ۰۸-فروردین-۱۳۹۱, ۱۷:۰۹:۳۹، توسط Pardazesh-Gar.)
۰۸-فروردین-۱۳۹۱, ۱۷:۰۲:۳۴
ارسال‌ها
پاسخ
تشکر شده توسط : s.jafarzadeh78
s.jafarzadeh78 آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 5
تاریخ عضویت: فروردین ۱۳۹۱

تشکرها : 15
( 1 تشکر در 1 ارسال )
ارسال: #3
RE: يك مشكل
بخشيد منظورتون رو از اشتباه دوم نفهميدم. يه بار ديگه بگيد؟
راستي يك سوال ديگه.اگر بخوام 7سگمنت به صورت چشمكزن در بياد چي كار بايد كنم؟
(آخرین ویرایش در این ارسال: ۰۸-فروردین-۱۳۹۱, ۱۸:۴۸:۳۱، توسط s.jafarzadeh78.)
۰۸-فروردین-۱۳۹۱, ۱۸:۰۲:۱۴
ارسال‌ها
پاسخ
Pardazesh-Gar آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 457
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 330
( 630 تشکر در 286 ارسال )
ارسال: #4
RE: يك مشكل
شما به این شکل نوشته بودید.
کد:
digit[0-x]%10;
که اشتباه بود. و نوشتن صحیح به این شکل.
کد:
digit[(-x%10)];
در شبیه ساز آزمایش کنید اعداد منفی رو اشتباه نمایش میداد. دو تا کد بالا رو مقایسه کنید.


برای این که چشمک بزنه کافیه این کد رو جایگزین کنید.
که هر 500 میلی ثانیه چشمک میزنه.
کد:
while (1)
       {
       delay_ms(300);
       PORTA=0;
       delay_ms(200);
       if(x>=0){
       PORTA=digit[x%10];PORTD.4=0;}
       if(x<0){PORTA=-0b10000000|digit[(-x%10)];}
       }
البته فراموش نکنید که در ابتدای برنامه تون کتابخانه مربوط به تاخیر رو به برنامه اضافه کنید.
کد:
#include <delay.h>

---------------------------------------------------------------------------
تیـــز دوم، تیز دوم، تا به سواران برسم
--------------------------------------
۰۸-فروردین-۱۳۹۱, ۱۹:۲۶:۱۹
ارسال‌ها
پاسخ
تشکر شده توسط : s.jafarzadeh78


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشكل با پورت سريال در متلب leila.66 8 11,927 ۱۲-شهریور-۱۳۹۵, ۲۰:۳۹:۳۴
آخرین ارسال: 36taregh
  مشكل با ميكرو ATMEGA64 elec645 12 10,853 ۰۲-شهریور-۱۳۹۴, ۱۳:۳۹:۲۰
آخرین ارسال: mbir92
  مشكل در راه اندازي ميكرو atmega8 fateme67hj 9 6,255 ۲۸-خرداد-۱۳۹۴, ۱۳:۳۲:۱۲
آخرین ارسال: fateme67hj
Question [سوال] مشكل در اندازه گيري دما توسط سنسور ds18b20 moham9d 11 8,196 ۲۴-آبان-۱۳۹۳, ۱۴:۳۵:۵۳
آخرین ارسال: moham9d
  attiny13 و مشكل pcint mohezt 2 3,568 ۲۰-شهریور-۱۳۹۳, ۲۱:۳۹:۲۹
آخرین ارسال: smailhatami
  مشكل در پرگرام كردن avr vb_1985 8 5,637 ۲۴-اردیبهشت-۱۳۹۳, ۱۵:۰۶:۳۱
آخرین ارسال: behzady
  [فوری] مشكل در چك كردن كليد با دستور debounce velakat 12 12,149 ۱۱-دى-۱۳۹۲, ۰۰:۵۸:۱۵
آخرین ارسال: sharin
  مشكل در پروگرام فيوزبيتها nanosi 3 3,728 ۲۱-مرداد-۱۳۹۲, ۱۱:۱۵:۲۶
آخرین ارسال: nanosi
  مشكل در برنامه ريزي كلاك ميكرو nanosi 1 2,257 ۲۰-مرداد-۱۳۹۲, ۱۸:۰۹:۲۷
آخرین ارسال: robojalal
Question مشكل در ارسال اطلاعات از كامپيوتر به ميكرو با استفاده از HM tr 915 HENAS 25 15,592 ۲۳-شهریور-۱۳۹۱, ۱۲:۱۴:۲۰
آخرین ارسال: blackstar368

پرش به انجمن:


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

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