راه اندازی ماژول TM1637 به وسیله میکروکنترلر AVR با کامپایلر بسکام

بنام دانای مطلق

با سلام و عرض خسته نباشید خدمت همه اساتید ، سروران و همراهان عزیز

این اولین پست منه امیدوارم که مفید واقع بشه و خیلی خوشحال میشم که عزیزان با راهنمایی ها ، انتقادات و پیشنهادهاشون بنده رو در این مسیر یاری کنند .

مطلبی که قصد دارم در اینجا شرح بدم همانطور که از عنوانش مشخص هست راه اندازی ماژول سون سگمنت 4 تایی مبتنی بر تراشه TM1637 در بسکام هست . کتابخانه های این ماژول در آردینو موجود هست ولی متاسفانه در بسکام نه . در ادامه با ما باشید تا راه اندازی ماژول TM1637 را یاد بگیرید.

خب اصل مطلب

اگر عزیزان دیتاشیت تراشه TM1637 رو مطالعه کرده باشند متوجه شدند که این تراشه توانایی :

  • اسکن کیپد 8*2
  • اتصال 6 عدد 8segment
  • 8 مد تنظیم شدت درخشندگی
  • رابط سریال دوسیمه ، TWO Wire (که البته I2C کامل نیست)
  • اسیلاتور RC داخلی
  • ولتاژ کاری 3.5 تا 5 ولت
  • و ….

 

 

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

 

نکته اول :

برای شروع ارسال اطلاعات نباید dio و clk در حالت یک منطقی باشند و باید هر دو در حالت 0 منطقی باشند

نکته دوم :

برای شروع ارسال داده ، زمانی که clk  در حالت 1 منطقی است باید dio  از یک منطقی به 0 منطقی تغییر وضعیت دهد .

مطلب پیشنهادی:  راه اندازی GPS ماژول SIM908

نکته سوم :

برای اتمام ارسال اطلاعات ، زمانی که clk  در حالت 1 منطقی است باید dio  از 0 منطقی به یک منطقی تغییر حالت دهد .نکته چهارم :

TM1637  برای اینکه اطلاعات با دقت و کیفیت بهتری تبادل شود در پایان هر بایت یک سیگنال ACK تولید می کند که به این صورت می باشد که در زمانی clk در کلاک 8 ام لبه پایین رونده را تولید می کند dio  را در حالت 0 منطقی نگه میدارد و در پایان کلاک 9 ام رها می کند و به یک منطقی تغییر وضعیت می دهد .

نکته پنجم :

فرکانس ارتباط با تراشه باید کمتر از 250KHz باشد که همه این موارد در شکلی که در خود دیتاشیت آمده به خوبی نمایش داده شده است

نکته ششم :

همانطور که در تصویر زیر مشاهده می کنید برای ارسال اطلاعات به این تراشه دو مد ارسال وجود دارد یکی مد آدرس ثابت که برای ارسال داده به یک آدرس مشخص استفاده میشود و هر بار همراه داده ارسالی باید آدرس رجیستری نمایش هم ارسال شود  و دیگری مد آدرس اتوماتیک که آدرس رجیستری ای که باید نوشتن اطلاعات از آنجا شروع شود را ارسال کرده و در ادامه به ترتیب یکی یکی اطلاعات مربوط به هر کدام از رجیستری های نمایش را ارسال می کنیم هر کدام به فراخور نیاز استفاده می شود . ضمنا همیشه اولیت دستور ، دستور نحوه راه اندازی و آخرین دستور ارسالی به تراشه باید دستور مربوط به کنترل تنظیمات نمایش باشد .

مطلب پیشنهادی:  پروژه تشخیص آلودگی هوا

و اما جداول

جدول شماره 1 :

این جدول مربوط به تنظیمات دستوررات مربوط به داده می باشد .

یادآوری : منظور از command 1  مقادیر همین جدول است .

جدول شماره 2 :

این جدول مربوط به آدرس رجیستری های نمایش می باشد .

جدول 3شماره :

این جدول مربوط به تنظیمات درخشندگی نمایشگر می باشد

یاد آوری 1 : این تراشه سون سگنت آند مشترک را پشتیبانی می کند اما باید کد ارسالی را بر حسب سون سگمنت کاتد مشترک محاسبه نمود . در ادامه جدول رجیستری هر کدام از نمایشگر ها را می بینید

یادآوری 2 = تا زمانی که در رجیستری اطلاعات این تراشه مقداری تغییر نکند نمایشگر مقدار قبلی را نمایش میدهد .

یادآوری 3 : حتما فلوچارت های درون دیتاشیت رو مطالعه کنید .

خب بریم سراغ کدنویسی ها

برای راحتی کار بهتره که هر قسمت رو به شکل یک زیر روال یا تابع در بیاریم که بعدا عزیزان بتونند در پروژه هاشون به راحتی از اون استفاده کنند

من در اینجا فقط برخی از قسمت ها رو توضیح میدم ولی در ادامه سورس برنامه به شکل کامل در اختیار عزیزان قرار می گیرد

عزیزان می دونند که در بسکام تابع باید مقدار برگشتی داشته باشد ولی زیر روال نه پس در اینجا ما فعالیت های مختلف این تراشه رو در برنامه به وسیله زیر روال کنترل و مدیریت می کنیم .

مطلب پیشنهادی:  دانلود دیتاشیت و مثال راه اندازی ماژول +nRF24L01

زیر روال اول  – زیر روال شروع :

sub strt

set clk
set dout
waitus 2
reset dout

end sub

زیر روال دوم   – زیر روال پایان :

 

sub stp

reset clk
reset dout
waitus 2
set clk
waitus 2
set dout

end sub

زیر روال سوم  – زیر روال ACK :

sub ak

reset clk
waitus 2
set clk
waitus 2
if din = 1 then
send address
ak
send num
ak
end if

end sub

 

زیر روال چهارم – زیر روال ارسال :

Sub send

For bt = 0 To 7
Reset Clk
Dout = num.bt
Waitus 2
Set Clk
Waitus 2
Next num_bt

End Sub

خب تا اینجا هر آنچه که لازم بود برای راه اندازی این ماژول مطرح شد . در ادامه چند نمونه سورس اضافه می کنم که امید وارم مفید باشه

در انتها نیز از همه شما عزیزان کمال تشکر رو دارم که حوصله به خرج دادید و بسیار بسیار خوشحال میشم که من رو در این مسیر با انتقادات ، پیشنهادها و راهنمایی هاتون کمک کنید .

با تشکر

اللهم جعل عواقب امورنا خیرا

در پناه حق تعالی

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

سورس دوم نمایش عدد 5678 به روش مد آدرس ثابت

شرمنده از دوستان فراموش کردم دیتاشیت تراشه رو بذارم و الان میذارم
TM1637

مطالبق مرتبط :

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

پروژه های ساعت

دانلود بسکام BASCOM AVR

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

8 دیدگاه

  1. درود بر شما
    بسیار عالی بود.
    مشکلم حل شد .
    ممنون از زحمات شما

  2. محمد حسین رئوف

    سلام
    ممنون عزیز خدا خیرت بده خیلی ب درد خورد

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

    • سجاد قدری

      با عرض سلام و خسته نباشید خدمت همه عزیزان و عرض پوزش بابت غیبت و تاخیرم
      شماره بنده هم 09039487417 هست که واتساپ و تلگرامم هم با همین شماره هست . خوشحال میشم بتونم کمکی کنم.
      ان شاءالله موفق و پیروز باشید

  4. دست شما درد نکنه..خدا خیرت بده ، کارمون راه افتاد ..خیلی عالی توضیح دادی

  5. درود و تشکر از مطلب شما
    امکانش هست فقط تابع ارسال send رو برای Ateml به زبان سی بنویسید؟
    یا یه توضیحی بدید که چطوری یک بایت داده رو فقط روی یک پین از PORTC منتقل میکنیم در حلقه ؟

    ممنون