ايران ويج

نسخه‌ی کامل: کمک در مورد hmt و hmr
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
سلام این برنامه فرستنده هست:
کد:
$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600
Config Portb.0 = Input
Config Porta = Input
Portb.0 = 1
Dim B As Byte , S As String * 3 , A As String * 1 , Ro As String * 4
Dim D As Byte
Cls
Do
Debounce Pinb.0 , 0 , Ersal
Loop
Ersal:
B = Pina
A = "h"
S = Str(b)
Ro = A + S
For D = 1 To 8
Print Ro ; Chr(13);
Waitms 10
Next D
Return
End

گیرنده:
$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600
Config Porta = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , _
Db7 = Porta.5 , Rs = Porta.0 , E = Porta.1
Dim B As Byte , S As String * 3 , A As String * 1 , Ro As String * 4
Cls
Locate 1 , 5
Lcd "welcom"
Wait 2
Cls
Do
Input Ro
A = Left(ro , 1)
If A = "h" Then
S = Mid(ro , 2 , 2)
B = Val(s)
Locate 1 , 1
Lcd B
Wait 3
Cls
End If
Loop
End

وقتی در فرستنده کلید رو می زنم به زیر برنامه ارسال می رود و پورت a رو میخونه و میفرسته. ولی وقتی مثلا عدد 3 رو میفرستم در گیرنده عدد 67 رو نشون میده و بعضی وقت ها درست نشون میده. یه بار عدد ارسالی رو درست نشون میده و بعضی وقت ها نه. به نظرتون مشکل کجاست؟ آیا باید برنامه رو درست کنم یا مشکل سخت افزاره؟ من پایه های پورت a روpull down کردم.
ممنون میشم کمکم کنید
نقل قول: B = Pina
با این دستور کل وضعیت port A را می خوانید؟
------------------------------
به جای pina یه مقدار ثابت (مثلا 123 قرار بدید : b=123) بعد برنامه رو توسط شبیه ساز bascom، اجرا کنید تا جایی که مقدار به RO اختصاص داده میشه. مقدار RO رو کنترل کنید.
-------------------
نقل قول: Mid(ro , 2 , 2)
چرا طول رو 2 گذاشتید؟

موفق باشید.
(۱۴-خرداد-۱۳۹۰, ۲۲:۵۷:۴۶)salehjg نوشته است: [ -> ]
نقل قول: B = Pina
با این دستور کل وضعیت port A را می خوانید؟
------------------------------
به جای pina یه مقدار ثابت (مثلا 123 قرار بدید : b=123) بعد برنامه رو توسط شبیه ساز bascom، اجرا کنید تا جایی که مقدار به RO اختصاص داده میشه. مقدار RO رو کنترل کنید.
-------------------
نقل قول: Mid(ro , 2 , 2)
چرا طول رو 2 گذاشتید؟

موفق باشید.
چه جوری RO رو کنترل کنم؟
چون میخوام تا عدد 99 بیشتر نفرستم.
باید جای طول چه عددی بزارم؟؟
ممنون

منظورم متغیر ro در برنامه ی فرستنده است نه گیرنده.
در منوی program ، گزینه ی simulate رو بزنید.
--------------------
اگه همه چیز درست بود tx فرستده رو با یه سیم مستفیم به RX گیرنده وصل کنید. فقط یادتون باشه gnd دو تا مدار رو بهم متصل کرده باشید.
ببینید چجوریاست!

در مورد طول:
الان متوجه شدم برنامه میخواد چیکار کنه.طولی که شما نوشتین درسته.
اومدم tx فرستنده رو به rx گیرنده وصل کردم. مثلا عدد11 (3) رو میفرستم در گیرنده عدد 67 رو نشون میده و وقتی lcd گیرنده اطلاعات رو پاک کرد و دوباره همون عدد رو میفرستم عدد 11 رو نشون میده و وقتی دوباره میفرستم عدد 3 رو نشون میده.
به نظرتون مشکل کجاست؟
آیا باید برنامه رو تغییر بدم یا مشکل سخت افزار هست؟/
ممنون میشم
این شماتیک برنامه:
http://www.4shared.com/file/H9BMcuv3/ersal.html
من تا حالا هرجا ماژول HMT &HMR شماتیکشو تو تاپیک ها دیدم واسط MAX232 استفاده نکردن در صورتی که این ماژول خروجیش فقط RS232 یعنی مثل HMTR نیست که هم TTL داشته باشه هم RS232 خیلی عجیبه که بعضیا می گن ما جواب گرفتیم اوونم بدون 232 MAX !!!!!!
به هر حال این برنامه یه عدد و از اینور میفرسته اوونور در قسمت گیرنده رو LCD و پورت نمایش میده می تونی خودت گسترشش بدی
HMR خیلی زود تر از ماژول HMTR به استند بای میره و به صورت اتومات با دریافت اطلاعات از این حالت بیرون میاد که این وسط امکان داره یه سری اطلاعات از بین بره برای این کار بهتر اطلاعات تو یه حلقه قرار بگیرن و 10 15 بار ارسال بشه
در کل به نظرم یه تفاوت های جزیی بین HMR &HMT و HMTR هست که رعایت نشه جواب نمی گیری
باود ریت نرمال هم 4800 پیشنهاد شده اما با 9600 هم بخوبی کار می کنه
یه نکته دیگه هم یادم اوومد اینو علی تاج می گفت
موقع کار با این ماژول برای بار اول رشته به صورت کامل و دقیق ارسال میشه اما از دفعه دوم به بعد یک کاراکتر به اول رشته اضافه میشه که یه چیز تو مایه های نویز سیستمه !!!!! هنوزم دلیلشو نفهیمدم
فرستنده!!

کد:
[align=left]
$regfile = "m16def.dat" : $crystal = 11059200
$baud = 4800
Config Portb = Input
Dim A As Byte , B As Byte
Do

     Debounce Pinb.0 , 0 , Afzayesh , Sub
     Debounce Pinb.1 , 0 , Kahesh , Sub

     Loop

Afzayesh:
Incr A
Gosub Send
Return


Kahesh:
Decr A
Gosub Send
Return

Send:
For B = 1 To 15
If A < 10 Then Print "mnt" ; "00" ; A
If A > 9 And A < 100 Then Print "mnt" ; "0" ; A
If A > 99 Then Print "mnt" ; A
Next
Return[/align]

گیرنده

کریستال هم فراموش نکنید که بسیار مفید است.
کد:
$regfile = "m16def.dat" : $crystal = 11059200
$baud = 4800
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db7 = Portc.2 , Db6 = Portc.3 , Db5 = Portc.4 , Db4 = Portc.5
Cursor Off
Config Portb = Output
Config Porta.0 = Input
Dim S As String * 20 , Ss As String * 20 , B As Byte
Dim P As Byte , X As Byte


Do
   Input S

   B = Len(s) : Ss = Left(s , 3)

   If Ss = "mnt" And B = 6 Then :
     Ss = Mid(s , 4 , 3)
     P = Val(ss)
     Locate 1 , 1 : Lcd Ss ; "        "

     End If


   S = Mid(s , 2 , 20)
   B = Len(s) : Ss = Left(s , 3)

   If Ss = "mnt" And B = 6 Then :
      Ss = Mid(s , 4 , 3)
      P = Val(ss)
      Locate 1 , 1 : Lcd Ss ; "        "

      End If



    Portb = P

Loop

100٪ تست شده !!! تضمینی
سلام دوست من ببخشید اینقدر سوال می کنم.
من وقتی عدد 1 رو میفرستم عدد 65 روی lcd نشون میده و وقتی در گیرنده lcd پاک شد و دوباره میفرستم عدد 1 نشون داده میشه.وقتی عدد 2 رو میفرستم عدد66 رو نشون میده و همین طور به ترتیب وقتی عدد 7 رو میفرستم عدد 71 رو رویlcd نشون میده.
به نظرتون باید چه تغییری در برنامم بدم؟؟
ممنون میشم
(۲۵-اردیبهشت-۱۳۹۰, ۱۲:۴۴:۲۴)ha_60 نوشته است: [ -> ]ببین اینا نمی تونن سیگنال DC رو ارسال کنن یعنی اگه صفر خالی بفرستی ارسال نمی کنن
حداقل یه فرکانس نیاز داره
مثلا اگه شما تو اولین بایت صفر بفرستی چون شبیه سیگنال DC درست کار نمی کنه
برای همی می یان مثلا 55 می فرستن این یکی در میون صفر و یک باعث می شه اون حداقل فرکانس رو ایجاد کنه
حالا بعد اگه یکی ۲ تا صفر هم بفرستی مشکلی نیست ولی بازم اگه چندتا صفر پشت یر هم بفرستی خطا ایجاد می کنه

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

مهندس این ماژول با مد fsk کار میکنه فک میکنم ،که مشکلی برای فرستادن 00000000 نداره.
سلام من هم یک مدر دارم توپروتوس کار میکنه اما در عمل نه ( با سیم وصل کردم) لطفا کمک کنید
سلام
از کریستال خارجی استفاده میکنید ؟
منفی های دوتا مدارو یکی کردید؟
صفحه‌ها: 1 2 3