عضویت     ورود  مردان شجاع فرصت می آفرینند ، ترسوها و ضعفا منتظر فرصت می نشینند . گوته دوشنبه، 2 مهر ماه ، 1397

کانال تلگرام


تبلیغات متنی


منوی سایت


جست و جو در بانك مقالات




مقالات جدید
تعداد شاخه ها: 30 عدد
تعداد مقالات: 758 عدد 1: آزمايشگاه الكترونيك - استاد محرري 
[دفعات مشاهده : 4958 بار]
 2: جزوه درس مخابرات 1 - دانشگاه فردوسي مشهد 
[دفعات مشاهده : 4957 بار]
 3: كتاب مهندسي تاسيسات / دكتر كلهر 
[دفعات مشاهده : 4911 بار]
 4: مجموع اعوجاج هارمونیک T.H.D 
[دفعات مشاهده : 4855 بار]
 5: كتاب "روش طراحي و تحليل مدارهاي الكترونيك" 
[دفعات مشاهده : 11328 بار]
 6: ادوات نوري 
[دفعات مشاهده : 4908 بار]
 7: كتاب اصول تلويزيون رنگي 
[دفعات مشاهده : 6496 بار]
 8: پروژه دزد گیر با سنسور تشخیص حرکت pir با قفل رمز الکترونیکی 
[دفعات مشاهده : 6105 بار]
 9: جزوه اندازه گیری الکتریکی 
[دفعات مشاهده : 5272 بار]
 10: سوالات کنکور کارشناسی ارشد 90 / گروه مهندسی برق 
[دفعات مشاهده : 7228 بار]
 11: آرشيو پروژه هاي 8051 
[دفعات مشاهده : 5991 بار]
 12: آرشيو پروژه هاي AVR‌ (ـ‌ 126 پروژه ) 
[دفعات مشاهده : 13698 بار]
 13: آموزش برنامه نويسي و كار با ماژول Sim300CZ با ميكروكنترلر AVR 
[دفعات مشاهده : 9998 بار]
 14: سوالات كنكور كارشناسي ناپيوسته 89 - گروه برق 
[دفعات مشاهده : 7387 بار]
 15: ارتباط میکروهای PIC با کمک پروتکل سریال I2C و نکات تکمیلی ماژول MSSP 
[دفعات مشاهده : 5509 بار]
 16: ساعت تقویم با کمک میکروکنترلر PIC و DS1307 
[دفعات مشاهده : 6083 بار]
 17: تایمرهای چند زمانه ( ساعت مرکزی ) با میکرو PIC 
[دفعات مشاهده : 5528 بار]
 18: ساعت تقویم شمسی مجهز به آلارم روزانه و هفتگی 
[دفعات مشاهده : 6480 بار]
 19: صفحه کلید وقفه ای با میکروکنترلر PIC 
[دفعات مشاهده : 5198 بار]
 20: کرنومتر دیجیتال با میکروکنترلر PIC با قابلیت ثبت 3 زمان 
[دفعات مشاهده : 5327 بار]
 21: طراحی و ساخت مدارات انتقال دیتا به وسیله ماژول های HMTR + پروژه چت متنی بیسیم 
[دفعات مشاهده : 8141 بار]
 22: سنسورهای حرارت 
[دفعات مشاهده : 7466 بار]
 23: کنترل وسایل برقی از طریق خط تلفن با میکروکنترلر PIC 
[دفعات مشاهده : 7506 بار]
 24: ارتباط سریال UART بین دو میکروکنترلر PIC 
[دفعات مشاهده : 5784 بار]
 25: گزارش کار آموزی : ماشین های ابزار کنترل عددی CNC 
[دفعات مشاهده : 6090 بار]
 26: کنترل وسایل به کمک ماژول HM-TR و میکرو AVR 
[دفعات مشاهده : 8544 بار]
 27: طراحی و ساخت کنترل از راه دور 1 کانال با کمک ماژول های ASK و آی سی های سری PT 
[دفعات مشاهده : 7084 بار]
 28: مجموعه رفرنس های آموزشی میکروکنترلرهای سری dsPIC 
[دفعات مشاهده : 6537 بار]
 29: مجموعه پروژه های میکروکنترلر AVR با کامپایلر بسکام 
[دفعات مشاهده : 11666 بار]
 30: طراحی و ساخت مدارات انتقال دیتا به وسیله ماژول های HM-T و HM-R با میکرو AVR 
[دفعات مشاهده : 9552 بار]


آخرين مطالب ارسال شده
· روش طراحي و تحليل مدارهاي الكترونيك[ 1 نظر شما چيه؟ - 38932 مشاهده ]
· اصول تلويزيون رنگي[ 0 نظر شما چيه؟ - 17643 مشاهده ]
· نرم افزار DigSilent[ 2 نظر شما چيه؟ - 21022 مشاهده ]
· AVR Tech Lib 2011[ 1 نظر شما چيه؟ - 24533 مشاهده ]
· مجموعه كنفرانس هاي سالينه ميكروچيپ / سال 2009 /[ 2 نظر شما چيه؟ - 22255 مشاهده ]
· آموزش كار با ماژول SIM300CZ با ميكرو AVR[ 4 نظر شما چيه؟ - 24615 مشاهده ]
· مجموعه فيلم هاي آموزشي نرم افزار Altium Designer[ 0 نظر شما چيه؟ - 38216 مشاهده ]
·  سوالات كنكور كارشناسي ناپيوسته 89 - گروه برق[ 0 نظر شما چيه؟ - 19499 مشاهده ]
· لينك دانلود مجله October 2010 / SERVO[ 0 نظر شما چيه؟ - 16723 مشاهده ]
· Catalog CA 01 (10/2009) / International version[ 0 نظر شما چيه؟ - 20771 مشاهده ]

[ موارد بیشتر در بخش اخبار و تازه ها ]


زبان
انتخاب زبان نمایش :



مطالب جديد
· 1: IEEE Std 535™-2006 (Revision of IEEE Std 535-1986
· 2: Life of LED-Based White Light Sources
· 3: بررسی مولفه های بار خانگی در استان مازندران
· 4: بکارگیری اتوماتاهای یادگیر در خنثی کردن حمله ارسال انتخابی در شبکه های حسگر بی سیم
· 5: مجله March 2008 ، ELEKTOR
· 6: Fuzzy Logic in Control Systems:Fuzzy Logic Controller-Part I
· 7: Control Solutions for Vehicles with Continuously Variable Transmission
· 8: جبران دو مرحله ای آفست فرکانس در سیگنا لهای MPSK
· 9: Wireless Malware Propagation
· 10: بررسي منحني شدت دامنه رفلكس Hو موج Mh قبل و بعد از تحريك الكتريكي سطحي ستون فقرات كمري
· 11: پياده سازي روش عمومي جديد برنامه نويسي فارسي در گوشي هاي نسل سوم
· 12: مدار منطقی (فصل چهارم مدارهای ترکیبی و طراحی مدارهای ترکیبی)
· 13: Pad Deflection-Based Model of Chemical–Mechanical Polishing for Use in CAD IC Layout
· 14: Miniature Microstrip Bandpass Filter Using Resonator-Embedded Dual-Mode Resonator Based on Source-Lo
· 15: A Robust Layered Control Syste For A Mobile Robot
· 16: an economical class of digital filters for decimation and interpolation
· 17: تعیین ظرفیت نصب بهینه نیروگاههای آبی متوسط با استفاده از ترازیابی شاخص های فنی، مالی
· 18: Understanding and Applying the LT1005 Multifunction Regulator
· 19: مدلسازي فازي سلول عقده اي آشكارساز جهتي شبكيه چشم انسان
· 20: طراحی و تکامل مدار کنترل اینورتر سیستم فتو ولتاییک متصل به شبکه به قدرت 5 کیلووات

[ آخرين مقالات ]


ارسال مقاله به سايت

 



...::: Ir-Micro.Com :::... :: View topic - برنامه ماشن حساب و مسائل مربوط (يك سوال Avr اي)


برنامه ماشن حساب و مسائل مربوط (يك سوال Avr اي)
Goto page 1, 2  Next
 
Post new topic   Reply to topic    ...::: Ir-Micro.Com :::... Forum Index -> برنامه نویسی و مباحث مربوط به AVR Printable Version
View previous topic :: View next topic  
Author Message
hosseinrf
کاربر تازه وارد
کاربر تازه وارد

Joined: Feb 28, 2008
Posts: 27





1126.34 امتیاز

Items

Status: Offline

PostPosted: سه شنبه، 21 اسفند ماه ، 1386 21:24:12 Reply with quote Scroll Down to Next postGo to last Post of Page

سلام به همه

من يك برنامه با بيس كام نوستم كه با فشردن كليد رمز را بگيرد و در صورت صحت رمز درب را باز كمد (فقل الكترونيكي)
حال
مي خوام بدونم هر كليدي كه از keypadفشرده ميشه همان مقدارهمان كليد ، به ميكرو ارسال ميشه ؟
بايد چكار كنم كه كليدي رو كه فشردم ، عددش روي lcd نمايش داده بشه ؟

Back to top
View user's profile Send private message
aheidarnejad
کاربر تازه وارد
کاربر تازه وارد

Joined: May 11, 2007
Posts: 15





513.72 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 22 اسفند ماه ، 1386 06:44:29 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

دوست عزيز براي نمايش كاراكتر روي lcd بايد كد اسكي رو به lcd بدي . كد اسكي 0 تا 9 به ترتيب از 30 تا 39 هگز هست
Back to top
View user's profile Send private message
hosseinrf
کاربر تازه وارد
کاربر تازه وارد

Joined: Feb 28, 2008
Posts: 27





1126.34 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 22 اسفند ماه ، 1386 17:27:10 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

من منظورم اينه كه عددي كه از دستور () getkbd گرفته ميشه رو بايد به lcd بديم ؟
Back to top
View user's profile Send private message
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: پنجشنبه، 23 اسفند ماه ، 1386 02:14:56 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام
هر عدد نشانگر عددي كه روي آن نوشته شده نيست
S = Getkbd()
Select Case S
Case 0
Cls
Locate 1 , 1
Lcd "you press 1"

Waitms 200

Case 1
Cls
Locate 1 , 1
Lcd "you press 2"


Waitms 200

Case 2
Cls
Locate 1 , 1
Lcd "you press 3"


Waitms 200

Case 3
Cls
Locate 1 , 1
Lcd "you press F1"

Waitms 200

Case 4
Cls
Locate 1 , 1
Lcd "you press 4"


Waitms 200

Case 5
Cls
Locate 1 , 1
Lcd "you press 5"


Waitms 200

Case 6
Cls
Home
Lcd "you press 6"


Waitms 200
.

..
...
.....
....
.....

.....

Case 15
Cls
Home
Lcd "you press ENTER"

Waitms 200


End Select

Back to top
View user's profile Send private message
hosseinrf
کاربر تازه وارد
کاربر تازه وارد

Joined: Feb 28, 2008
Posts: 27





1126.34 امتیاز

Items

Status: Offline

PostPosted: جمعه، 24 اسفند ماه ، 1386 14:48:17 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

مهدي جان خيلي ممنون

پيشنهادت خيلي بهم كمك كرد

Back to top
View user's profile Send private message
hosseinrf
کاربر تازه وارد
کاربر تازه وارد

Joined: Feb 28, 2008
Posts: 27





1126.34 امتیاز

Items

Status: Offline

PostPosted: جمعه، 24 اسفند ماه ، 1386 14:51:08 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

mehdi wrote:
سلام
هر عدد نشانگر عددي كه روي آن نوشته شده نيست
S = Getkbd()
Select Case S
Case 0
Cls
Locate 1 , 1
Lcd "you press 1"

Waitms 200

Case 1
Cls
Locate 1 , 1
Lcd "you press 2"


Waitms 200

Case 2
Cls
Locate 1 , 1
Lcd "you press 3"


Waitms 200

Case 3
Cls
Locate 1 , 1
Lcd "you press F1"

Waitms 200

Case 4
Cls
Locate 1 , 1
Lcd "you press 4"


Waitms 200

Case 5
Cls
Locate 1 , 1
Lcd "you press 5"


Waitms 200

Case 6
Cls
Home
Lcd "you press 6"


Waitms 200
.

..
...
.....
....
.....

.....

Case 15
Cls
Home
Lcd "you press ENTER"

Waitms 200


End Select



راستي مهدي جان از جدول lookup هم ميتونم براي اين كار استفاده كنم (بجاي select case) ؟

Back to top
View user's profile Send private message
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: شنبه، 25 اسفند ماه ، 1386 01:05:31 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام

من با دستورlookup تا حالا اين كار رو نكردم

تا اونجايي كه من مي دونم با دستور مذكور مي تونيم يك داده رو از يك جدول بخونيم

حالا اگر هم جدول تشكيل بديم فكر نمي كنم خطوط برنامه كمتر بشه

اگه مقدور باشه اين كار رو انجام بدين ونتيجه را اعلام كنيد

با تشكر

Back to top
View user's profile Send private message
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: دوشنبه، 27 اسفند ماه ، 1386 01:59:55 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام دوستان
من مي خوام برنامه يك ماشين حساب را بنويسم كه فقط
4 عمل اصلي را انجام ميده
مشكل اصلي سر اينكه نمي دونم چطور بايد چند عدد را پشت سر هم بگيرم
و ارزش هر عدد هم حفظ بشه (منظورم دهگان صدگان و ...است)

Back to top
View user's profile Send private message
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: دوشنبه، 27 اسفند ماه ، 1386 23:30:08 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام به دوستان
من يه برنامه ي كامل ماشين حساب نوشتم واسه ي يكي از دوستان سايت كه متاسفانه خونه ي يكي از اراذل جا گذاشتم اما فرصت كردم حتما مي ذارم توي سايت .

يا علي

Back to top
View user's profile Send private message Send e-mail Visit poster's website
persianpdf
عضو افتخاری
عضو افتخاری

Joined: Nov 29, 2007
Posts: 45





2050.58 امتیاز

Items

Status: Offline

PostPosted: دوشنبه، 27 اسفند ماه ، 1386 23:55:59 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

mehdi wrote:
سلام دوستان
من مي خوام برنامه يك ماشين حساب را بنويسم كه فقط
4 عمل اصلي را انجام ميده
مشكل اصلي سر اينكه نمي دونم چطور بايد چند عدد را پشت سر هم بگيرم
و ارزش هر عدد هم حفظ بشه (منظورم دهگان صدگان و ...است)


با سلام
فرض کنید کد ارقام 0 تا 9 که توسط دستور getkbd برگردانده می شود معادل 0 تا 9 باشد
حال دو متغیر a, b را در نظر بگیرید
متغیر a را در ابتدا صفر می کنیم و سپس هر بار عددی وارد می شود این عدد باید با a*10 جمع شده تا عدد جدید حاصل شود
مثلا شما در وارد کردن عدد 465 ابتدا 4 را وارد میکنید
در لحظه اول a=0 می باشد با وارد کردن 4 داریم
a=0*10+4=4
با وارد کردن رقم 6 داریم
a=4*10+6=46
و بالاخره با وارد کردن عدد 5 داریم
a=46*10+5=465
حال ممکن است کاربر به جای رقم کلید دیگری مانند یکی از چهار عمل اصلی را وارد کند لذا در این صورت باید a را در متغیر b بریزیم و سپس a را برای
گرفتن عدد بعدی صفر کنیم
در زیر یک شبه کد از bascom برای نمونه آورده شده است.

Code:

ِDo
k=getkbd();
if k<16 then
            'Arghame 0 ta 9 => Farz Konid Arghame 0 ta 9 keypayd code 0 ta 9 darand
   if k<=10 then 
      a=a*10
      a=a+k
   else
      b=a;
      a=0
   end if
end if
loop


موفق باشید
اتابکی

Back to top
View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: سه شنبه، 28 اسفند ماه ، 1386 01:49:48 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام دوستان

جناب آقاي اتابكي ممنون از كمكتون اميدوارم بتونم جبران كنم

آقا صالح از عنايتي هم كه شما داشتيد ممنونم اگر مقدور بود برنامه را روي سايت قرار بديد


بازم ممنون aa)

Back to top
View user's profile Send private message
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 29 اسفند ماه ، 1386 01:05:46 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام دوستان
ممنون از كمكتون
من يك برنامه نوشتم كه عمل جمع را انجام بده ولي انجام نمي ده
من برنامه را گذاشتم اگه ميشه كمك كنيد
تو اين برنامه قرار با زدن كليد 12 عمل جمع انجام بشه
با زدن كليد 14 نتيجه نمايش داده بشه


Dim Keypad As Byte
Dim A(2) As Word
Deflcdchar 0 , 32 , 4 , 4 , 4 , 31 , 4 , 4 , 4 ' replace ? with number (0-7)
A(1) = 0
A(2) = 0
Dim Sum As Long


Main:

Do


Keypad = Getkbd()
Keypad = Lookup(keypad , Key)

If Keypad < 10 Then
A(1) = A(1) * 10
A(1) = Keypad + A(1)
Cls : Home : Lcd A(1)
Waitms 100
Goto Main
End If

If Keypad = 11 Then Return

If Keypad = 12 Then
Locate 2 , 4 : Lcd Chr(0)
Waitms 100
A(2) = A(1)
A(1) = 0
Gosub Main
Sum = A(1) + A(2)
Cls : Home : Lcd "SUM is " ; Sum
Waitms 200
End If


Loop

Key:
Data 1 , 2 , 3 , 12 , 4 , 5 , 6 , 13 , 7 , 8 , 9 , 14 , 10 , 0 , 11 , 15



Last edited by mehdi on چهارشنبه، 29 اسفند ماه ، 1386 01:10:24; edited 1 time in total
Back to top
View user's profile Send private message
Arash_em
مدیر سایت - Site Admin
مدیر سایت - Site Admin

Joined: Mar 12, 2006
Posts: 2230




Location: ايران
282074.08 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 29 اسفند ماه ، 1386 01:06:07 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

persianpdf wrote:
mehdi wrote:
سلام دوستان
من مي خوام برنامه يك ماشين حساب را بنويسم كه فقط
4 عمل اصلي را انجام ميده
مشكل اصلي سر اينكه نمي دونم چطور بايد چند عدد را پشت سر هم بگيرم
و ارزش هر عدد هم حفظ بشه (منظورم دهگان صدگان و ...است)


با سلام
فرض کنید کد ارقام 0 تا 9 که توسط دستور getkbd برگردانده می شود معادل 0 تا 9 باشد
حال دو متغیر a, b را در نظر بگیرید
متغیر a را در ابتدا صفر می کنیم و سپس هر بار عددی وارد می شود این عدد باید با a*10 جمع شده تا عدد جدید حاصل شود
مثلا شما در وارد کردن عدد 465 ابتدا 4 را وارد میکنید
در لحظه اول a=0 می باشد با وارد کردن 4 داریم
a=0*10+4=4
با وارد کردن رقم 6 داریم
a=4*10+6=46
و بالاخره با وارد کردن عدد 5 داریم
a=46*10+5=465
حال ممکن است کاربر به جای رقم کلید دیگری مانند یکی از چهار عمل اصلی را وارد کند لذا در این صورت باید a را در متغیر b بریزیم و سپس a را برای
گرفتن عدد بعدی صفر کنیم
در زیر یک شبه کد از bascom برای نمونه آورده شده است.

Code:

ِDo
k=getkbd();
if k<16 then
            'Arghame 0 ta 9 => Farz Konid Arghame 0 ta 9 keypayd code 0 ta 9 darand
   if k<=10 then 
      a=a*10
      a=a+k
   else
      b=a;
      a=0
   end if
end if
loop


موفق باشید
اتابکی


سلام بر جناب اتابكي عزيز...
انشاالا حال شما بزرگوار خوب باشد...
استاد اتابكي عزيز تمام نكات را فرمودند...
استاد در نبود من محبت مي كردن و به سايت ما هم سر مي زدند... aa)

موفق و پيروز باشيد.
با تقديم و احترام- آرش.


__________________
زهر است عطاي خلق هر چند كه دوا باشد*

حاجت ز كه مي خواهي جايي كه خدا باشد *
Back to top
View user's profile Send private message Send e-mail Visit poster's website
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 29 اسفند ماه ، 1386 01:15:50 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام دوستان
ممنون از كمكتون
من يك برنامه نوشتم كه عمل جمع را انجام بده ولي انجام نمي ده
من برنامه را گذاشتم اگه ميشه كمك كنيد
تو اين برنامه قرار با زدن كليد 12 عمل جمع انجام بشه
با زدن كليد 11 نتيجه نمايش داده بشه


Dim Keypad As Byte
Dim A(2) As Word
Deflcdchar 0 , 32 , 4 , 4 , 4 , 31 , 4 , 4 , 4 ' replace ? with number (0-7)
A(1) = 0
A(2) = 0
Dim Sum As Long


Main:

Do


Keypad = Getkbd()
Keypad = Lookup(keypad , Key)

If Keypad < 10 Then
A(1) = A(1) * 10
A(1) = Keypad + A(1)
Cls : Home : Lcd A(1)
Waitms 100
Goto Main
End If

If Keypad = 11 Then Return

If Keypad = 12 Then
Locate 2 , 4 : Lcd Chr(0)
Waitms 100
A(2) = A(1)
A(1) = 0
Gosub Main
Sum = A(1) + A(2)
Cls : Home : Lcd "SUM is " ; Sum
Waitms 200
End If


Loop

Key:
Data 1 , 2 , 3 , 12 , 4 , 5 , 6 , 13 , 7 , 8 , 9 , 14 , 10 , 0 , 11 , 15

Back to top
View user's profile Send private message
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 29 اسفند ماه ، 1386 02:40:00 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

saleh_chz wrote:
سلام به دوستان
من يه برنامه ي كامل ماشين حساب نوشتم واسه ي يكي از دوستان سايت كه متاسفانه خونه ي يكي از اراذل جا گذاشتم اما فرصت كردم حتما مي ذارم توي سايت .

يا علي

سلام صالح جان اگه مقدور ايراد هاي برنامه من رو بگير و برنامه خودت رو هم رو سايت بزار

Back to top
View user's profile Send private message
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 29 اسفند ماه ، 1386 21:32:44 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام
مهدي جان من ضمن اينكه در محضر جنابان اتابكي و آرش خان ( و ... ) كوچيكتر از اونم كه ايراد بگيرم ؛ به بيسيك وارد نيستم .
و الان هم dc ميشم تا به رفيقم بزنگم ببينم برگه هامو كجا گذاشته .
متاسفانه من يه ساعت پيش از خونه ي اونا اومدم و كلا فراموش كردم ... Embarassed
اندكي بصبريد تا ...

Back to top
View user's profile Send private message Send e-mail Visit poster's website
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 29 اسفند ماه ، 1386 23:15:51 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

زووووووووووو ! زوووووووووو!
ای خدااااااااااااااااااااااااااااااااا دلگیرم ازت !!!!
من برناممو گم کردم . زووووووووووووو ! crybaby

از همه دوستان عذر خواهی می کنم . Embarassed

ولی به جستجویم ادامه خواهم داد .
خانم پارسا شما برنامو رو دارید دیگه انشالله ؟

Back to top
View user's profile Send private message Send e-mail Visit poster's website
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 29 اسفند ماه ، 1386 23:42:52 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

خوب درسته كه برنامه مفقود شده اما :
برنامه با فرمايش جناب اتابكي يه تفاوتي داشت اونم اين بود كه اول رقم هاي عدد رو مي گرفت و پس از نمايش ( كه اون هم به صورت شيفت به چپ بود ) مقدار رو محاسبه مي كرد .
دو تا آرايه ي 8 عضوي داشت كه هر كدوم واسه ي يه عدد بود و يه متغيير عملكرد انتخوابي رو واسه ي برنامه ي مين مشخص مي كرد و يه متغيير سويچ هم كه بواسطه ي دكمه ي مساوي تغيير مي كرد اجازه ي محاسبه ب نهايي رو مي داد .
نكته اي كه مهم است اينه كه :
براي عمليات ضرب بايست در نظر داشت كه تعداد ارقام جواب برابر است با مجموع ارقام دو عدد ضريب و مضرب
كه برنامه براي عدد پذيري بواسطه ي يه متغيير محدوديت داشت .
به طوري كه هر رقم از هر دو عدد كه دريافت مي شد متغيير يه واحد اضافه مي شد و اگه به 9 مي رسيد ديگه عددي دريافت نمي شد . چون قرار بود جواب 8 رقمي باشد .
در اين صورت مثلا اگه عدد اول 5 رقمي بود و عمليات ضرب انتخاب مي شد براي عدد دوم برنامه تنها 3 رقم مي گرفت و براي رقم هاي بعدي هيچ عملكردي انجام نمي داد . ( كه مي تونيد با يه پيغام اين مورد رو به عنوان يه خطا گزارش كنيد )
براي عمليات جمع حداكثر يه رقم به حاصل اضافه مي شه يعني اگه عدد اول 5 رقمي باشه ( 99999 ) و عدد دوم هم 5رقمي باشه ( 99999 ) حاصل حداكثر 6 رقمي خواهد بود . اينو هم مد نظر داشته باشيد .
نكته :
بعد از اتمام تساوي آرايه ي دوم رو پاك كنيد ( با يه حلقه ي for ) .
نكته :
بعد از دريافت دكمه ي عملياتي ( + * - / ) مقدار آرايه ي اول رو توي آرايه ي دوم بريزيد و آرايه ي اول رو صفر كنيد .
يعني هميشه اعداد دريافتي توي آرايه ي اول ( انباره ) ريخته مي شه .
بعد از دريافت دكمه ي محاسباتي ( = ) مقدار آرايه ها رو با استفاده از فرمولي كه جناب اتابكي فرمودند به اعداد واقعي تبديل و توي دو متغيير 32 بيتي بريزيد و سپس محاسبه كنيد ( تابع comput ).
بخش نمايش عمليات كه خيلي سادست انتهاي برنامه ي مين نوشته مي شه و كاري كه مي كنه اينه كه بدون اينكه كاري به الباقي خطوط برنامه داشته باشه هميشه مقدار آرايه ي اول رو محاسبه مي كنه ( تابع comput ) و نمايش مي ده .

خوب نمي دونم تونستم خوب به خاطر بيارم يا نه . اين هم بدي هاي كار با قلم كاغذ .

اگه خطايي توي توضيحات بود بفرماييد .
جسارت بنده رو ببخشيد .
پلي تبريكات نوروزانول

Back to top
View user's profile Send private message Send e-mail Visit poster's website
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: پنجشنبه، 1 فروردين ماه ، 1387 01:29:56 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام بسيار متشكرم

سال نو زرا هم تبريك مي گم

انشا.. سال خوبي داشته باشيد

آقا صالح اميدوارم سال آينده در اولين مراجعه به سايت برنامه رو رو سايت قرار بدين


بازم ممنون

Back to top
View user's profile Send private message
mehdi
کاربر تازه وارد
کاربر تازه وارد

Joined: Jul 26, 2006
Posts: 27





1104.16 امتیاز

Items

Status: Offline

PostPosted: سه شنبه، 6 فروردين ماه ، 1387 03:27:20 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام ممنون از توجهي كه به اين پست داشتيد

فقط يك سوال ديگه داشتم و آن اينكه چطور ميتونيم عدد اعشاري از كي پد در يافت كنيم

يعني فرض مي كنيم يك كليد تعريف كرديم كه زماني كه آن زده شد اعداد دريافتي

ضمن حفظ ارزش خود ( دهم صدم ...) به صورت اعشاري ظاهر شوند

با تشكر

Back to top
View user's profile Send private message
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: سه شنبه، 6 فروردين ماه ، 1387 23:48:57 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام
مهدي جان من دارم برنامه ي ماشين حساب رو مي نويسم واست . هنوز تكميل نشده .
اون برنامه اي رو كه روي كاغذ نوشتم رو هم پيدا نكردم .
اگه همين ناقصش به درد مي خوره بگين تا بذارم .
به هر حال مطمئنا حاضر شد روي سايته .
البته من برنامه ام براي نمايش روي سون سگمنته . يعني من اينطوري راحت ترم تا lcd

واسه ي اعشار هم دقيقا مثل فرمايش استاد اتابكي عمل كنين با اين تفاوت كه شما توي ضربتون بايد از ارزش هاي 10/1 و 100/1 و ... استفاده كنين . البته برنامه بايد تشخيص بده كه زماني كه دكمه ي مميز فشرده شد از اين ارزش ها استفاده كنه .
و نكته ي بعدي اينه كه متغييري كه واسه ي ذخيره ي عدد استفاده ميشه بايست مميز شناور باشه و يا چون شايد نمايش مميز شناور يوخده مشكل باشه بايد از يه نوع كه خودتون درستش مي كنين استفاده كنين .

كسي هست كه بتونه الگوريتمي بده كه بشه عدد مميز شناور رو به صورت قابل نمايش روي lcd نشون داد ؟

ممنون

Back to top
View user's profile Send private message Send e-mail Visit poster's website
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 7 فروردين ماه ، 1387 12:45:31 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام
اين هم برنامه ي ماشين حساب خدمت آقا مهدي گل و دوستان گلاب :

البته ايراد حتما داره كه دوستان ضمن اينكه عذر منو به خاطر هول هولكي بودنش مي بخشند رفع ايراد هم بفرمايند .
ضمنا من توي اين برنامه از 8 عدد سون سگمنت استفاده كردم ( واسم كار با lcd سخته ! Embarassed ) كه با شيوه ي رفرش (refresh) خط مشترك سون سگمنت ها توسط وقفه ي تايمر كار مي كنه .
لازم به ذكر است كه اين برنامه از مميز پشتيباني نميكنه و قاعدتا در تقسيم كوچكتر از واحد نمايش داده نمي شه .

Code:

[align=left]
/*
<< in the name of god >>
copyright


programer : saleh_zarrin
*/

#include <mega32.h> //or other micros
#include <math.h>

/*
for key pad :
key number -> means
0 -> 0
1 -> 1
2 -> 2
.
.
.
9 -> 9
10 -> +   ( inc )
11 -> -   ( dec )
12 -> *   ( mul )
13 -> /   ( div )
14 -> =   ( eql )
15 -> c   ( clean )
*/
#define inc 10
#define dec 11
#define mul 12
#define div 13
#define eql 14
#define clean 15

unsigned char key = 15 ; // defult is clean
unsigned char func = 0 ;
unsigned char number = 0;
unsigned char a_digits = 0 , b_digits = 0 ;
unsigned long int a_1 = 0 , b_1 = 0 , x_1 = 0 , mod = 0;
unsigned char a[8] = { 0,0,0,0,0,0,0,0 };
unsigned char b[8] = { 0,0,0,0,0,0,0,0 };
unsigned char x[8] = { 0,0,0,0,0,0,0,0 };

flash unsigned char lcd_x[10]={0x40,0x76,0x21,0x24,
0x16,0x0c,0x08,0x66,0x00,0x04};

//********************************************************
struct maching {       // struct of data that send to 7segment.
  unsigned char g :1;    //    bit0
  unsigned char f :1;    //    bit1
  unsigned char e :1;    //    bit2
  unsigned char d :1;    //    bit3
  unsigned char c :1;    //    bit4
  unsigned char b :1;    //    bit5
  unsigned char a :1;    //    bit6
  unsigned char h :1;    // none    bit7
}ss1,ss2; // define variables of "maching" struct.

unsigned char *pointer1,*pointer2;
unsigned char lcd[8]={0,0,0,0,0,0,0,0};

interrupt [TIM0_OVF] void timer0_ovf_isr(void){
   TCNT0=0x82; // int at 1 ms
   unsigned char q=0;
   unsigned char scan=1;
   for (q=0 ; q<8 ; q++){
      *pointer1=lcd[q]; //              pa2
      PORTA.0=ss1.a;   //               --
      PORTA.1=ss1.b;   //        pa1  |    |  pa3
      PORTA.2=ss1.c;   //               -- <--------- pa0
      PORTA.3=ss1.d;   //        pa4  |    |  pa5
      PORTA.4=ss1.e;   //               --
      PORTC.5=ss1.f;   //              pa6
      PORTC.6=ss1.g;   //
      
      *pointer2=scan; // send refresh code to common
      PORTB.0=ss1.a;   // 1st seven segment
      PORTB.1=ss1.b;
      PORTB.2=ss1.c;
      PORTB.3=ss1.d;
      PORTB.4=ss1.e;
      PORTB.5=ss1.f;
      PORTB.6=ss1.g;
      PORTB.7=ss1.h; // last seven segment
      
      scan << 1;   // change refresh code
   }
}

void show(unsigned char c){
   unsigned char p=0;
   #asm("cli")   
   if (c = 0){
      for (p=0 ; p<8 ; p++){
         lcd[p]=a[p];
      }
   }else if (c = 1){
      for (p=0 ; p<8 ; p++){
         lcd[p]=b[p];
      }
   }else{
      for (p=0 ; p<8 ; p++){
         lcd[p]=x[p];
      }
   }
   #asm("sei")
}

// clear wanted array (1)
void clear (unsigned char c ){ // for minimum flash
   unsigned char k=0;
   for (k=0 ; k<8 ; k++){
      if ( c = 0 ){ // for clear a[]
         a[k]=0;
      }else if ( c = 1 ){ // for clear b[]
         b[k]=0;
      }else{ // for clear x[]
         x[k]=0;
      }
   }
}
// clear wanted array (2)
void clear (unsigned char c ){ // for maximum speed
   unsigned char k=0;
   if ( c = 0 ){ // for clear a[]
      for (k=0 ; k<8 ; k++){
         a[k]=0;
      }
   }else if ( c = 1 ){ // for clear b[]
      for (k=0 ; k<8 ; k++){
         b[k]=0;
      }
   }else{
      for (k=0 ; k<8 ; k++){
         x[k]=0;
      }
   }
}
// comput wanted array (1)
void comput (unsigned char c ){ // for minimum flash
   unsigned long int tens=1;
   unsigned char i=0;
   for (i=0 ; i<(a_digits+1) ; i++ ) {
      if ( c = 0 ){ // for comput a[]
         a_1 = a_1+(a[i]*tens);
      }else{ // for compute b[]
         b_1 = b_1+(b[i]*tens);
      }
   tens=tens*10; // 1,10,100,1000,...
   }
}
// comput wanted array (2)
void comput (unsigned char c ){ // for maximum speed
   unsigned long int tens=1;
   unsigned char i=0;
   if ( c = 0 ){ // for comput a[]
      for (i=0 ; i<(a_digits+1) ; i++ ) {
         a_1 = a_1+(a[i]*tens);
         tens=tens*10; // 1,10,100,1000,...
      }
   }else{ // for compute b[]
      for (i=0 ; i<(a_digits+1) ; i++ ) {
         b_1 = b_1+(b[i]*tens);
         tens=tens*10; // 1,10,100,1000,...
      }
   }
}
void decomput (void){
   char n = 0 ;
   for (n=0 ; n<8; n++){
      mod = x_1 / 10;
      x[n] = (x_1 - (mod*10));
      x_1 = mod;
   }
}

main(){
   // Timer/Counter 0 initialization
   // Clock source: System Clock
   // Clock value: 125.000 kHz
   // Mode: Normal top=FFh
   // OC0 output: Disconnected
   ASSR=0x00;
   TCCR0=0x05;
   TCNT0=0x82;
   OCR0=0x00;
   
   pointer1=&ss1;    //pointer1 = address of "ss1" that defined from struct.
   pointer2=&ss2;   //pointer2 = address of "ss2" that defined from struct.
   
   char m=0;
   while (1) {
      key = getkpd(); // wait for press a key
      if ( key = clean ){ // clean key pressed
         clear(0); // clear a[]
         clear(1); // clear b[]
         clear(2); // clear x[]
         x=0;
         a_1=0;
         b_1=0;
         a_digits=0;
         b_digits = 0 ;
         func = 0 ;
         number = 0;
         show();
      }else if ( key < eql && key > 9 ){ // function keys pressed
         if (func=0){
            if (number=0){
               number=1;
               func = key ;
            }
         }
      }else if ( key = eql ){ // eql key pressed
         comput(a);
         comput(b);
         if (func = inc){
            x_1 = a_1 + b_1 ;
         }else if (func = dec ){
            x_1 = a_1 - b_1 ;
         }else if (func = mul){
            x_1 = a_1 * b_1 ;
         }else if (func = div){
            x_1 = a_1 / b_1 ;
         }
         decomput();
         show(2);
         func = 0;
         namber = 0;
         clear(0);
         clear(1);
         a_1=0;
         b_1=0;
         a_digits=0;
         b_digits = 0 ;
      }else{ // number keys (0,1,2,...,9) pressed
         if (namber=0){   // give 1st number (a)
            if ( digit_a < 8 ){
               for (m=digit_a ; m>=0 ; m--){
                  a[(m + 1)] = a[m]; // shift digits to left
               }
               a[0]=key;
               digit_a ++;
               show(0);
            }
         }else{ // give 2st number
            if ( fanc=mul ){ // give b for mul function
               if ( (digit_a + digit_b)<8 ){
                  for (m=digit_b ; m>=0 ; m--){
                     b[(m + 1)] = b[m]; // shift digits to left
                  }
                  b[0]=key;
                  digit_b ++;
                  show(1);
               }
            }else{ // give b for other function
               if ( digit_b <8 ){
                  for (m=digit_b ; m>=0 ; m--){
                     b[(m + 1)] = b[m]; // shift digits to left
                  }
                  b[0]=key;
                  digit_b ++;
                  show(1);
               }
            }
         }
      }
   };
}[/align]


ضما تابع مربوط به دريافت از كي پد رو هم ننوشتم كه فكر نمي كنم خيلي سخت باشه نوشتنش واستون .
باز هم ببخشيد كه ايراد زياد داره . Embarassed

ممنونات ازت (azot = نيتروژن )

Back to top
View user's profile Send private message Send e-mail Visit poster's website
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 7 فروردين ماه ، 1387 12:53:48 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

اي بابا من چقدر هواس پرت شدم !

توابع clear و comput در دو ورژن نوشته شده كه يكي واسه ي سرعت اجراست و ديگري واسه ي كاهش حجم برنامه است و شما خودتون يكي رو كه انتخواب كردين اون يكي ديگه رو از برنامه حذف كنين .

بي تعارفات تنگستن

Back to top
View user's profile Send private message Send e-mail Visit poster's website
saleh_chz
مدیر انجمن
مدیر انجمن

Joined: Jan 10, 2008
Posts: 2582




Location: مشهد
3049681.20 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 7 فروردين ماه ، 1387 18:20:28 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

سلام
اساتيد آرش جان ؛ حامد عزيز و رسول خان اگه مي شه اسن اين تاپيك رو يه تغييري بفرمايين تا بچه ها راحت تر چيزي رو كه مي خوان پيدا كنن .
ببخشيد جسارت بنده رو .
مرسيانيد هيدروژن

Back to top
View user's profile Send private message Send e-mail Visit poster's website
Arash_em
مدیر سایت - Site Admin
مدیر سایت - Site Admin

Joined: Mar 12, 2006
Posts: 2230




Location: ايران
282074.08 امتیاز

Items

Status: Offline

PostPosted: چهارشنبه، 7 فروردين ماه ، 1387 20:03:21 Reply with quote Go to Top of PageScroll Up to Previous postScroll Down to Next postGo to last Post of Page

saleh_chz wrote:
سلام
اساتيد آرش جان ؛ حامد عزيز و رسول خان اگه مي شه اسن اين تاپيك رو يه تغييري بفرمايين تا بچه ها راحت تر چيزي رو كه مي خوان پيدا كنن .
ببخشيد جسارت بنده رو .
مرسيانيد هيدروژن


سلام.
صالح جان بر حسب دستور اسم تاپيك را تغيير دادم...
ببين خوبه؟
موفق و پيروز باشيد.


__________________
زهر است عطاي خلق هر چند كه دوا باشد*

حاجت ز كه مي خواهي جايي كه خدا باشد *
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    ...::: Ir-Micro.Com :::... Forum Index -> برنامه نویسی و مباحث مربوط به AVR All times are GMT + 3.5 Hours
Goto page 1, 2  Next
Page 1 of 2
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum

 
 Jump to:   

Related topics
 Topics   Replies   Author   Views   Last Post 
No new posts lcd help 9 melectronics 14074 يكشنبه، 23 فروردين ماه ، 1388 07:56:43
1nafar View latest post
No new posts تبدیل lcd موازی به سریال با 180 تومان 13 123456za 18526 چهارشنبه، 6 آذر ماه ، 1387 17:52:00
ahmadk View latest post
No new posts Thermometer (2x16 lcd)1 دماسنج با 8051 و 2*16 lcd 1 honeyl 11625 سه شنبه، 4 تير ماه ، 1387 01:37:40
bleedingme View latest post
No new posts راه اندازی lcd به صورت 4 بیت 4 ahmad2000 11948 چهارشنبه، 28 فروردين ماه ، 1387 23:18:01
Hamed View latest post
No new posts فرکانس متر با LCD و AT89C2051 0 Hamed 13420 جمعه، 24 فروردين ماه ، 1386 10:03:10
Hamed View latest post
 


Powered by phpBB © 2001, 2008 phpBB Group

Ported to Platinum 7.6.b.4 V2 by sadeghkhafan

فروشگاه تخصصی برق و الکترونیک ایران میکرو
www.iran-micro.com
PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL.
Powered by Platinum 7.6.b.4 v2
Powered by Platinum 7.6.b.4 v2 Persian

مدت زمان ایجاد صفحه : 0.29 ثانیه