ايران ويج

نسخه‌ی کامل: برنامه نویسی بیسکام
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
با عرض سلام خدمت اساتید محترم
من میخوام یک کلید بزارم و با فشردن آن یک خروجی مثبت بشه و بعد از برگشت از یک پایه دیگه وارد بشه و این مدت زمان را اندازه بگیرم برنامه رو بصورت زیر نوشته ام نمیدونم چه اشکالی داره لطفا راهنمایی بفرمایید
سوال دوم این که موقع استفاده از دو ورودی ADC چطوری مشخص کنم آیا درهم تداخل نمیکنند
سوم این که من مخواهم سه تا برنامه با هم اجرا بشن چطوری اینها رو با یکجا بنویسم
برناه
کد:
$regfile = "m8def.dat"
$crystal = 1000000

'LCD
Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.1 , Db6 = Pinc.0 , Db7 = _
Pind.0 , E = Pinc.3 , Rs = Pind.1
Config Lcd = 16 * 2

'Var
Dim S(1) As String * 8
Dim Bet As Integer
Dim Er As Integer
Declare Sub Meter

S(1) = "        "
Config Pind.2 = 1
Config Pind.3 = 0
Cursor Off
Cls

Do
Call Meter
Loop
End

Sub Meter

If Pind.2 = 0 Then Waitms 10
Reset Pind.3
Bet = 0
Incr Bet
If Bet > 32000 Then Bet = 0
Er = Bet / 100
Locate 2 , 10 : Lcd "       "
Locate 2 , 10 : Lcd Er ; "cm"
End Sub
End
سلام
1- من منظور شما رو از کار کرد برنامتون نفهمیدم اگه توضیح بیشتر بدید بهتره ولی برای اندازه گری زمان تایمر می خواید(تنظیم نکرده اید) پیش نهاد می کنم یه نگاهی به اموزش های بسکام بزنید
2- از دو ورودی؟ اگر منظور شما این هست که به دو پایه متصل کرده اید و به صورت جداگانه مقدار انها را می خواهید بدست بیاورید پس از تنطیم adc از این دستور استفاده کنید
getadc(n)
که n=شماره پین مثلا 0
3- هم زمان نمی توانید چند کار راانجام دهید برای این کار نیاز به سیستم عامل بر روی میکرو و مالتی تسکینگ و از این دنگ و فنگ ها است.
با تشکر از استاد بهزادی استاد ممنون از اینکه به سوال بنده جواب دادید
استاد راجع به راهنماییتان متشکر بنده ADC رو مینوشتم ولی چون توی آموزش نبود نمیدونستم چطوری پایه رو مشخص کنم با تشکر
در مورد برنامه بالا: من این برنامه رو قبلا در 89c51 نوشته ام و الان هم کار میکنه چون در 89C51 ADCوجود نداشت تصمیم گرفتم از ATMEGA8 استفاده کنم و الان هم تا شما جواب بدین تلاش کردم و برنامه رو درستش کردم اگه خواستین برنامه رو ارسال میکنم و اگر راه دیگه ای هست استاد راهنمایی میفرمایید عرض کنم که این برنامه متراژ فلزیاب میباشد و تا فلز رو احساس کرد روی صفحه برحسب سانتی متر عمق فلز رو نشون میده
باید عرض کنم که سه تا برنامه که عرض کردم هر سه در مورد فلزیاب میباشد و دو تای دیگه رو از دو پایه ADC استفاده کرده ام و میخواستم هر سه رو یکجا جمع کنم چون بیسیک رو تازه یاد گرفتم دقیقا نمیدانم چکار کنم اگه محبت بفرمایید بعد از اتمام به ایمیل شما بفرستم تا اگه ایرادی داشت راهنمایی بفرمایید با تشکر آیدین
با عرض پورش از اینکه بدجایی درخواستمو ممکنه نوشته باشم
من یه مدار فلز یاب میخوام برای ربات یا برای اینکه بزارم تو سایت همه استفاده کنن اگه مداری دارین که خودتون ازش جواب گرفتین ممنون میشم اگه بزارینش
اکثر فلزیابها آنالوگ هستند و فقط با میکرو یه ال سی دی بهش اضافه میشه اگه مایلی یکیشو میفرستم

[attachment=7495]این یک مدار ساده ولی خوب
با تشکر آیدین
(۰۵-مرداد-۱۳۹۱, ۰۰:۰۸:۱۷)soy1345 نوشته است: [ -> ]با تشکر از استاد بهزادی استاد ممنون از اینکه به سوال بنده جواب دادید
استاد راجع به راهنماییتان متشکر بنده ADC رو مینوشتم ولی چون توی آموزش نبود نمیدونستم چطوری پایه رو مشخص کنم با تشکر
در مورد برنامه بالا: من این برنامه رو قبلا در 89c51 نوشته ام و الان هم کار میکنه چون در 89C51 ADCوجود نداشت تصمیم گرفتم از ATMEGA8 استفاده کنم و الان هم تا شما جواب بدین تلاش کردم و برنامه رو درستش کردم اگه خواستین برنامه رو ارسال میکنم و اگر راه دیگه ای هست استاد راهنمایی میفرمایید عرض کنم که این برنامه متراژ فلزیاب میباشد و تا فلز رو احساس کرد روی صفحه برحسب سانتی متر عمق فلز رو نشون میده
باید عرض کنم که سه تا برنامه که عرض کردم هر سه در مورد فلزیاب میباشد و دو تای دیگه رو از دو پایه ADC استفاده کرده ام و میخواستم هر سه رو یکجا جمع کنم چون بیسیک رو تازه یاد گرفتم دقیقا نمیدانم چکار کنم اگه محبت بفرمایید بعد از اتمام به ایمیل شما بفرستم تا اگه ایرادی داشت راهنمایی بفرمایید با تشکر آیدین
شما اگه مشکلی نداره برنامتو همین جا بزار بالاخره دوستان هستند که مشکلات برنامتون رو براتون توضیح مدن حالا در حد توانشون
(۰۵-مرداد-۱۳۹۱, ۰۱:۱۸:۴۸)soy1345 نوشته است: [ -> ]اکثر فلزیابها آنالوگ هستند و فقط با میکرو یه ال سی دی بهش اضافه میشه اگه مایلی یکیشو میفرستم

این یک مدار ساده ولی خوب
با تشکر آیدین

مدار به همین سادگی؟
چقدر جواب میده؟

درضمن یه توضیح کامل از برنامه تون بزارین شاید من بتونم یه جاخایی رو براتون بنویسم شایدم همشو
استاد ضمن تشکر من برنامه ای رو که قبلا با 89c51 نوشته بودم خواستم با AVR بنویسم اولی که گفتم متراژ دستگاهه دوم میخوام بوسیله ADC ولتاژ باتری رو نشون بده و سوم اینکه باز هم از ADC استفاده کنم و با آمدن صدا بارگرافی بر روی LCD حرکت کنه باید عرض کنم که هر سه رو تک تک میتونم بنویسم ولی وقتی هر سه رو یکجا جمع میکنم در هم تداخل میکنن برای مثال دو تای دومی رو که درست میکنم متراژ دستگاه درست کار نمیکنه و بعضی مواقع گیر میکنه اگه ایمیل بدین براتون برنامه رو میفرستم واقعیت اینه که این شغل منه و نمیخوام اینجا آپلود کنم و اما راجع به مدار بالا خیلی خوب کار میکنه چون جنابعالی فرمودید روبات من هم خواستم کوچیک باشه چون اگه دستگاه برد بالا باشه که نمی تونه با روبات کار کنه چون خود روبات رو هم میزنه
زیر هر پست گزینه ی ایمیل به کاربر و پیام خصوصی وجود دارد
و با کلیک بر روی نام کاربر در پروفایل اطلاعات تماس دیگر از جمله ایمیل قرار دارد!
با تشکر از لطف و توجه شما استادان استاد در زیر برنامه رو میزارم ولی با عرض معذرت می تونم بپرسم بچه کجایین؟
و این هم برنامه:
کد:
                                                                    $regfile = "m8def.dat"
$crystal = 10000000

Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 ' replace ? with number (0-7)'
Deflcdchar 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 2 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 3 , 16 , 16 , 31 , 31 , 31 , 31 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 4 , 1 , 1 , 31 , 31 , 31 , 31 , 1 , 1 ' replace ? with number (0-7)

'LCD
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = _
Pinb.7 , E = Pinb.3 , Rs = Pinb.2
Config Lcd = 16 * 2

'Var
Dim V As Word , Result As Single , Show As String * 4
Dim W As Word , P As Word , V1 As Word , Channel As Byte , I As Byte , Cols As Byte
Dim Ps As String * 3
Dim S(1) As String * 8
Dim A As Word
Dim M As Word
Declare Sub n
'A2D
Config Adc = Single , Prescaler = Auto , Reference = Internal
Enable Adc


S(1) = " "
Config Pind.2 = Input
Config Pind.3 = Output
Config Pind.4 = Input
Config Pind.2 = 1

Cursor Off
Cls

Locate 1 , 4 : Lcd " "
Locate 2 , 2 : Lcd " "
Waitms 700
Cls
Locate 1 , 5 : Lcd " "
Locate 2 , 3 : Lcd " ..."
Waitms 700
Cls

Do
Start Adc
V = Getadc(0)
Stop Adc
Result = V \ 10
If Result <> 0 Then Result = Result + 1
Show = Fusing(result , "#.&")
Locate 1 , 13
Lcd Show ; "V" ; Spc(5)
Waitms 30

Start Adc
W = Getadc(1)
Stop Adc
V1 = W / 20
P = W / 10
Ps = Str(p)

Cols = P / 5

Locate 2 , 1
For I = 1 To Cols
Select Case I
Case 1 : Lcd Chr(3)
Case 4 : Lcd Chr(4)
Case 8 : Lcd Chr(4)
Case 12 : Lcd Chr(4)
Case Else : Lcd Chr(0)
End Select
Next I

Cols = Cols + 1

For I = Cols To 16
Select Case I
Case 1 : Lcd Chr(2)
Case 4 : Lcd Chr(1)
Case 8 : Lcd Chr(1)
Case 12 : Lcd Chr(1)
Case Else : Lcd Chr(32)
End Select
Next I

Waitms 30

If Pind.2 = 0 Then Call n
Loop
End
'************************************************
Sub n
A = 0
Reset Pind.2
Reset Pind.3
Waitms 10
Set Pind.3
Do
Incr A
If A > 75000 Then A = 0
If Pind.4 = 0 Then
Exit Do
End If
Loop
M = A / 10
Locate 1 , 7 : Lcd " "
Locate 1 , 7 : Lcd M ; ""
End Sub
'************************************************
End
اینجوری که من فهمیدم شما میخواین این کار هارو انجام بدین
1-نمایش شارژ باطری بین 0تا 100 درصد
2- نمایش فاصله شی تا دستگاه
3- نمایش فاصله شی تا دستگاه برحسب متر

اگه درسته که بگین براتون همینو بنویسم
صفحه‌ها: 1 2