سلام به همه گی.آقا تو رو خدا کمک کنید کارم بد جوری گیره.من یک مدار فاصله یاب آلتراسونیک با میکرو 8051 میخوام.خیلی دنبالش گشتم ولی همه اش مدارات با pic هست.به خدا ممنون میشم اگه کسی کمک کنه :sad:
اطلاعیه
Collapse
No announcement yet.
فاصله یاب آلتراسونیک با 8051
Collapse
X
-
پاسخ : فاصله یاب آلتراسونیک با 8051
سلام دوست عزیز .
اگه یکم با دقت بیشتر جستجو کنی حتما یه چیزای بدست میاری .
بهر حال به لینکهای زیر یه سر بزن شاید بدردت بخوره.
http://www.eca.ir/forum2/index.php/topic,5414.msg20333.html#msg20333
http://www.hobby-elec.org/e_menu.htm
موفق باشی.خبرآمد خبری در راه است
سرخوش آن دل که از آن گاه است
دیدگاه
-
پاسخ : فاصله یاب آلتراسونیک با 8051
مرسی ولی برای کد نویسی من ی مشکلی دارم. وقتی که فرکانس 40 کیلو هرتز را فعال میکنیم و فرستنده را روشن میکنیم باید تایمر را راه بیاندازیم و وقتی که سیگنال را در یافت میکنیم باید تایمر را خاموش کنیم و بعد زمان را بدست آورده و مراحل بعدی.ولی من مشکلم اینجاست که مگر برای راه اندازی تایمر نباید به آن مقدار داد؟ پس چه جوری میتونم وقتی تایمر را خاموش میکنیم زمان اندازه گیری شده را بدست اورد. یکی از دوستان تو همین فروم لینک گذاشته بود برا8051 ولی مثل که پاک شده اگه کسی داره لطف کنه پلود کنه.مرسی
دیدگاه
-
پاسخ : فاصله یاب آلتراسونیک با 8051
سلام دوست عزیز
من برنامه رو زیر قرار میدم که با 8051 به زبان اسمبلی نوشته شده .
دوست عزیز دقت کن اگه به تایمر ها درست نگاه انداخته باشی میدونی که
یک نوع تایمر خود بار کننده (reload timer ) داریم که یکبار مقدار دهی میکنیم و
پشت سر هم شروع به شمارش می کنه . من شاید اون جوری که کار میکنم
نتونم توضیح بدم ولی سعی مو کردم تو برنامه توضیح بدم .
من این برنامه رو با توضیحاتش که جلوش مینویسم گذاشتم زیر یه نگاه بندازی حله .
org 30h
mov tmod,#02h ;select the timer
mov th0,#-58
mov r1,#00h
mov a,#00h
clr c
mov p1,a ;show 0 in port 1
mov p3,r1 ;show 0 in port 3
loop:jb p2.0,loop ;active LOW ,send the signal
setb tr0 ;start reload timer
wait:jnb tfo,wait ;is the timer full , 58us
clr tf0 ;clear tf0 for next reloading
add a,#1 ;add register a with 1
da a
jc port ;if a has a carry , jump to port label
jb p2.1,wait ;if there is a bit in p2.1 jump to wait label
mov p1,a ;send a register to port 1 for show on segment
sjmp $ ;its a symbol ,whit this command program jump to this line like a loop
port:inc r1 ;add a 1 unit to r1
mov p3,r1 ;show r1 to port 3
mov a,#00h ;reset lsb
clr c ;clear carry
jmp wait
end
همون تور که میبینی من از تایمر 2 استفاده کردم که یک ریلود تایمئ هستش .راستی منطق من اکتیو LOW بود .
در ضمن اون $ sjmp یعنی اینکه مدار به همون خط پرش کنه یا بهتره بگم تو یه لوپ قفل میشه . این مدار دو کلید داره که با زدن کلید موج فرستاده میشه و شمارش شروع میشه و به محض رسیدن سیگنال زمان متوقف میشه و............... ولی برای اینکه میکرو دوباره شمارش کنه یک کلید ریست نیز باید برای مدار قرار داده بشه چون برنامه بعد از نشون دادن مسافت تو یه لوپ گیر میکنه . خودم این شکلی خواستم بشه .
من از فرشتنده با nand استفاده کردم از 555 هم میشه به خوبی استفاده کرد .
امیدوارم مفید بوده باشه
دیدگاه
-
پاسخ : فاصله یاب آلتراسونیک با 8051
مرسی دوست عزیز.من قصد دارم که فرکانس 40 کیلو را با 8051 درست کنم فکر کنم باید با وقفه ها درست کنم. من خودم برنامه شو نوشتم ببینید کجای کار اشکال داره که درست اجرا نمیشه.البته مراحل پردازش روی عدد بدست آمده مانده.
ORG 0H
MOV P0,#0FFH
MOV P1,#0
LJMP MAIN
M: MOV TMOD,#12H
MOV TL0,#-12
MOV TH0,#-12
E: SETB TR0
H: JNB TF0,H
CLR TR0
CLR TF0
CPL P2.0
SJMP M
ORG 0013H
MOV TL1,#0
MOV TH1,#0
SETB TR1
HERE: JB P0.0,HERE
CLR TR1
MOV A,TL1
MOV B,TH1
MOV P1,A
SJMP M
ORG 30H
MAIN: MOV IE,#10000100B
SJMP M
END
دیدگاه
دیدگاه