sinaset, ,
, عزیز ممنونم
سون سگمنت:سون سگمنت ها یا 7-segment نوعی نمایشگر برای اعداد هست که در انواع مختلف در بازار پیدا میشه.تکی . دوتایی . وجه تسمیه این نامگذاری اینه که این نمایشگر برای نمایش اعداد از 7 عدد LED استفاده میکنه به علاوه یک LED به عنوان ممیز یا Dot point در مدل های متداول موجود در بازار.
[External Link Removed for Guests]این قطعه در دو نوع عمده کاتد مشترک و آند مشترک پیدا میشه که نوع
کاتد مشترک مورد نظر ماست.
[External Link Removed for Guests]در تصویر بالا pinout یا اطلاعات پایه های این قطعه رو مشاهده میکنید.
LED ها از a تا g نامگذاری شده و پایه هار مربوط به اون هم مشخص شده.
برای نمایش یک کاراکتر خاص "اصولا اعداد و هگزا عدد "عدد در مبنای 16" باید تعدادی از این LED ها رو همزمان روشن کنیم. مثلا
[External Link Removed for Guests] [External Link Removed for Guests]این کار رو به راحتی میشه در میکرو کنترلر انجام داد منتها اول مراحلی داره.
میشه پایه های روشن رو به دو صورت دو دویی یا در مبنای دو "مانند قبل" یا در مبنای 16 به میکرو کنترلر بفهمونیم.
به چه صورت؟
ابتدا پایه های سون سگمنت رو به ترتیب a b c d به پایه های مثلا پورت A متصل میکنیم.
پایه a سون سگمنت به PA0 یا اولین پایه پورت A
پایه b سون سگمنت به PA1
و الی اخر تا پایه g به PA6 و دو پایه کاتد داریم. اتصال یک عدد از اون به زمین مدار کافیه و پایه dot point یا همون ممیز هم استفاده نمیشه
در بخش زیر برای نمونه نشون دادیم که برای نمایش دو عدد صفر و یک کدام پایه ها باید یک بشن
Please Login or Register to see this codeتبدیلات مبنا ها رو به راحتی در ماشین حساب مهندسی یا کامیپوتر میتونید انجام بدید.
حالا ما باید اول این پایه ها و مبنا ها رو مشخص کنیم و بعد اون رو در EEPROM میکرو فلش بزنیم .
میتونیم این کار رو هم نکنیم و در طول برنامه این مقادیر رو استفاده کنیم.
ولی در قطعه برنامه زیر میبینید که این کار با معرفی پایه ها به حافظه EEPROM چقدر راحت میشه.
همچنین این کار بهانه ای هست که با این حافظه بیشتر آشنا بشیم.
پایه های روشن در مبنای 16 برای نمایش هگزا عدد به این صورته
Please Login or Register to see this codeبرای اینکه کامپایلر بفهمه که داریم اعداد رو در مبنای شانزده HEX معرفی میکنیم باید کاراکتر صفر ایکس رو اول اون بیاریم. برای مثال
to show "1" use 0x06
to show "8" use 0x7F
معرفی کد به حافظه میکرو:حالا برای معرفی متغیر به حافظه EEPROM هم از دستور flash در کدویژن استفاده میکنم.
flash char digits[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71
ما در این قطعه کد "16" کاراکتر رو به حافظه EEPROM معرفی کردیم. با قطع شدن جریان برق میکرو این کد های معرفی شده در حافظه پایدار میمونه .مثل حافظه فلش که برنامه رو داخلش فلش کردیم.
حالا برای فراخوانی هرکدام کافیه به روش زیر عمل کنیم.
برای مثال با دستور
Please Login or Register to see this code
اعداد صفر و یک روی سون سگمنت به نمایش در میاد.
حالا برای راحتی کار از روشی که , عزیز گفتند استفاده میکنیم. به قطعه کد زیر توجه کنید:
Please Login or Register to see this code
در قطعه کد بالا مانند کاری که , در قطعه کدشون انجام دادند به جای اینکه هر بار یک ثابت رو برای پورت تعیین کنیم یک متغیر تعیین کردیم و
مقدار اون متغیر رو تغییر دادیم.
قطعه کد بالا برابر با کد زیر هست:
Please Login or Register to see this code
تعداد خطوط این برنامه به این روش چهار برابر اینی هست که الان بالا نوشتم. پس میبینید که معرفی کردن کاراکتر به حافظه EEPROM خیلی راحته و برنامه نویسی رو راحت میکنه
[/I]
نکته:میشه پایه ها رو به ترتیب 1 2 3 ... یا هر ترتیب دیگه هم به میکرو کنترلر متصل کرد. در این صورت کد های مورد نیاز برای فلش در EEPROM متفاوت از اینی هست که اینجاست.
انشاالله در پروژه بعدی یکی از دو مورد زیر رو پی میگیریم:
استپ موتور
دماستج با حسگر lm35 و نمایش دما روی LCD 2*16