نشانگرهای کاراکتر درایور تراشه 7. توضیحات اضافی در مورد کنترل های افکت

ویژگی های متمایز کننده:

  • رابط سریال سازگار با سرعت بالا 26 مگاهرتز SPI/QSPI/MICROWIRE™
  • ولتاژ تغذیه از 2.7 ولت تا 5.5 ولت
  • مدیریت شاخص را ارائه می دهد:
    حداکثر 16 رقم علامت (7 بخش)
    حداکثر 8 رقم علامت (14 بخش)
    تا 128 LED مجزا
    ترکیبی از انواع نشانگر
  • کنترل LED های کاتدی معمولی تک رنگ و دو رنگ را فراهم می کند
  • فونت ASCII داخلی 104 کاراکتری برای نمایشگرهای 14 و 16 قسمتی و فونت هگز برای نمایشگرهای 7 قسمتی
  • کنترل خودکار سوسو زدن برای هر بخش
  • حالت خاموش با صرفه جویی در انرژی، مصرف جریان 10 µA (نوع)
  • کنترل سطح نور دیجیتال 16 مرحله ای
  • پاک کردن نشانگر در حالت روشن
  • درایورهای بخش برای محدود کردن EMI دارای محدودیت نرخ حرکت هستند
  • پنج پورت ورودی همه منظورهمی توان آن را به گونه ای پیکربندی کرد که تا 32 کلید را با فشار دادن همزمان کلیدهای n رای گیری و حذف کند.
  • خروجی وقفه IRQ در حالت debounce کلید اسکن
  • بسته های SSOP 36 پین و DIP 40 پین
  • نسخه استاندارد با محدوده دمای کارکرد خودرو

زمینه های استفاده:

  • ستاپ باکس تلویزیون، رسیور
  • ابزارهای اندازه گیری دیجیتال
  • لوازم خانگی
  • برنامه های کاربردی خودرو
  • نشانگرهای گرافیکی دیجیتال
  • تجهیزات صوتی/تصویری

نمودار عملکردی:

مدار سوئیچینگ معمولی:

ترتیب پین:

شرح:

MAX6954 یک درایور نشانگر فشرده است که تطبیق ریزپردازنده را با انواع نشانگرهای LED 7/14 و 16 با استفاده از 4 سیم فراهم می کند. سریال SPIرابط سازگار با ™ یا QSPI™. رابط سریال را می توان در چندین آی سی آبشاری کرد. MAX6954 قادر است نشانگرهای رانندگی شامل: حداکثر 16 رقم (7 بخش) را نشان دهد. تا 8 رقم علامت (14 بخش)؛ تا 128 ال ای دی مجزا، در ولتاژ تغذیه پایین که از 2.7 ولت شروع می شود. درایور دارای پنج کانال گسترش دهنده ورودی/خروجی (یا درگاه های ورودی/خروجی عمومی) است که برخی یا همه آنها را می توان برای نظرسنجی و بازگردانی پیکربندی کرد. صفحه کلید ماتریسی، حداکثر از 32 کلید تشکیل شده است.

در آی سی تعبیه شده است: 104 کاراکتر کامل، فونت ASCII 14 و 16، فونت هگزا دسیمال برای نشانگرهای 7 سگمنت، مدارهای اسکن چندگانه، درایورهای کاتد و آند و رم استاتیک که وضعیت هر بیت را ذخیره می کند. حداکثر جریان قطعه برای همه ارقام نشانگر با استفاده از یک مقاومت خارجی تنظیم می شود. شدت درخشش تخلیه ها را می توان به طور مستقل برای هر یک از تخلیه ها با استفاده از سیستم کنترل روشنایی دیجیتال 16 مرحله ای داخلی تنظیم کرد. MAX6954 دارای یک حالت کاهش مصرف انرژی، یک رجیستر حد اسکن است که به کاربر اجازه می دهد صفحه نمایش را از 1 تا 16 رقم علامت تنظیم کند، یک سیستم کنترل سوسو زدن قطعه (در صورت لزوم، همگام سازی شده برای عملکرد چند درایور)، و یک حالت تست که تمام LED ها را مجبور می کند روشن شوند. بخش ها را در موقعیت روشن قرار می دهد. درایورهای بخش LED دارای یک محدود کننده سرعت حرکت برای محدود کردن EMI هستند.

اوفف ... بالاخره به آهن لحیم کاری رسید! حالا بیایید یک کار جالب انجام دهیم.

قبلاً با جمع‌آوری «الف» می‌گفتیم، حالا باید «ب» بگوییم و یک دستگاه خروجی بسازیم، کاری که امروز انجام خواهیم داد. به عنوان دستگاه "B" یک نشانگر 7 قسمتی خواهیم داشت. اما نه فقط یک نشانگر، بلکه یک خط کامل از نشانگرهای هفت بخش، با طول نامحدود و با یک سری افکت های نمایشی! جالب هست؟ خب پس بیایید شروع کنیم!

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

اغلب، وقتی صحبت از نشانگرهای هفت بخش می شود، به طور ضمنی گفته می شود که آنها در یک مدار نشانگر پویا قرار می گیرند، در حالی که تنها یک کاراکتر به نوبه خود روشن می شود و در فرکانس بالای 50 هرتز، این توهم ایجاد می شود که همه کاراکترها روشن هستند. همزمان. این طرح آنقدر رایج است که نشانگرهای 3-4 رقمی فقط برای نشان دادن پویا خروجی دارند. این روش گنجاندن، البته، مزایای خود را دارد، اما چه زمانی ما داریم صحبت می کنیمدر مورد تعداد ارقام بیش از چهار است (و حتی بیشتر از آن اگر معلوم نباشد اصلاً چند رقم خواهد بود) - مشکلات با این نشانه بسیار پویا شروع می شود - روشنایی درخشش کاهش می یابد ، سوسو زدن قابل توجه می شود. بدیهی است که برای خطی از شاخص های هفت بخش با طول نامحدود، این روش گنجاندن مطلقاً مناسب نیست. چگونه در چنین حالتی باشیم؟ بیایید غیر استاندارد عمل کنیم - شاخص های خود را برای درخشش ایستا (ثابت) روشن می کنیم. برای امکان پذیر ساختن چنین ارتباطی، به نشانگرهای هفت بخش تک رقمی نیاز داریم - به عنوان مثال، در اینجا:

علاوه بر این، برای روشن کردن بخش های مورد نظر نشانگر، به یک درایور LED نیاز داریم. برای اینکه هزینه خط خود را افزایش ندهیم (تراشه راننده بسیار گران است) از شیفت رجیسترهای ارزان و رایج استفاده می کنیم. 74HC164. این کمی روشنایی درخشش را بدتر می کند، اما هزینه کل دستگاه را به میزان قابل توجهی کاهش می دهد. ما از یک میکروکنترلر برای کنترل خط استفاده خواهیم کرد. ATtiny13- شما بیشتر نیاز ندارید رجیسترهای شیفت فقط با دو خط کنترل می شوند ( داده ها, ساعت) و به صورت متوالی روشن می شوند، به این معنی که برای طرح کنترل رجیستر تفاوتی وجود ندارد، تعداد آنها در خط سه یا صد و بیست و سه وجود دارد. این بدان معنی است که ما می توانیم خط کش خود را بدون بعدی کنیم، یعنی می توانید هر زمان که خواستید نشانگرهای اضافی را به خط کش متصل کنید یا موارد غیر ضروری را حذف کنید. نمودار دستگاه به شکل زیر است:

همانطور که از نمودار مشخص است، نشانگرهای هفت سگمنت با رجیستر 74HC164 بر روی بردهای جداگانه با کانکتور در دو طرف نصب شده اند تا چندین نشانگر در یک خط جمع شوند. برد کنترل (درایور خط) در ATtiny13 همه نشانگرها را بدون در نظر گرفتن تعداد آنها کنترل می کند. علاوه بر این، سیستم عامل توانایی ترکیب نشانگرها با یک آند مشترک و یک کاتد مشترک را در خط فراهم می کند. کاراکترها از راست به چپ نمایش داده می شوند. این گزینه نمایش برای مواردی مناسب است که مشخص نیست چند شاخص در خط گنجانده شده است - آخرین کاراکترهای وارد شده همیشه در اولین نشانگرها هستند. علاوه بر سیگنال داده ( داده ها) و سیگنال ساعت داده ( ساعت، راننده سیگنال را تولید می کند /OE” (Output Enable) به منظور جلوگیری از سوسو زدن بخش ها هنگام جابجایی کاراکترها در کیس. در زمان جابجایی داده ها در رجیستر، راننده /OE را روی خط قرار می دهد سطح بالا، طرح کنترل نشانگر برای این سطح سیگنال باید خروجی داده به نشانگر را ممنوع کند. در این طراحی مدار، به دلیل عدم وجود پین در رجیسترهای شیفت 74HC164 که خروجی ها را به حالت مقاومت بالا سوئیچ می کند، از این سیگنال استفاده نمی شود، اما می توانید از این سیگنال برای خاموش کردن خروجی مشترک نشانگر (از طریق یک ترانزیستور) یا از ریزمدار دیگری که دارای ورودی مربوطه است استفاده کنید.

الگوریتم عملکرد دستگاه
مدتهاست به این فکر می کنم که چگونه کنترل خط کش را برای میکروکنترلر پروژه شما ساده و سنگین نکنم. هدف اصلی، که من دنبال کردم، تا حد امکان عملکردهای کنترلی را به راننده خط منتقل کنید، اما در عین حال امکان کنترل انعطاف پذیر از پروژه خود را از دست ندهید. در نتیجه الگوریتم زیر ایجاد شد:

درایور خط کش با پروژه شما تعامل دارد UART(سرعت 9600 , 8 بیت داده، 1 بیت توقف، بیت برابری خیر). درایور هم برای دریافت و هم برای ارسال کار می کند (اگرچه مورد دوم چندان مهم نیست و می تواند باشد این فرصتاستفاده نکنید، در نتیجه کنترل راننده را فقط به یک خط کاهش می دهد).
اعداد، حروف لاتین، کاراکترهای کنترلی را می توان به راننده منتقل کرد. انتقال با کد ASCII انجام می شود (به عنوان مثال: اعداد - "123"، حروف - "Abc"، کاراکترهای کنترل - ">"). شخصیت های دیگر نادیده گرفته می شوند.

راننده، از طریق UART، کاراکترها را برای پایان افکت ها ارسال می کند. فقط دو نفر از آنها وجود دارد - V"و" D". این برای اینکه بدانید چه زمانی افکت به پایان رسید ضروری است و می توانید دستور افکت بعدی را برای تشکیل افکت های مرکب پیچیده ارسال کنید.

اعداد و حروف الفبای لاتین ارسال شده برای نمایش در بافر نوشته می شوند (اندازه بافر می تواند 16، 32، 64 کاراکتر باشد و با توجه به نیاز پروژه انتخاب می شود). سرریز بافر وجود ندارد، چرخه ای است (نویسه های جدید روی قدیمی ترین کاراکترها نوشته می شوند). کاراکترهای کنترل در بافر نوشته نمی شوند - آنها بلافاصله پس از دریافت از طریق UART توابع خود را فعال می کنند (به عنوان مثال: هنگام ارسال رشته های "abcd>" و "ab>cd"، نتیجه یکسان خواهد بود). نمادها از بافر به خط نشانگرها می رسند و نحوه نمایش آنها به افکت های فعال شده بستگی دارد. این گزینه کمترین مصرف منابع را برای کنترلر پروژه شما دارد، زیرا رشته کاراکتری وارد شده به بافر با افکت های مختلف تنها با استفاده از منابع درایور نمایش داده می شود.

به طور پیش فرض، درایور نمادهای دریافتی را بدون هیچ افکتی روی خط کش نمایش می دهد. اگر اعداد یا حروف لاتین از طریق UART منتقل شوند (مثلاً "1"، "4"، "A"، "S" "d" ...)، بلافاصله از راست به چپ روی خط کش نمایش داده می شوند، و کاراکتر بعدی شخصیت قبلی را به چپ منتقل می کند.
در زیر توضیحاتی در مورد تمام کاراکترهایی که می توان برای راننده ارسال کرد آورده شده است.


کاراکترهای نمایش داده شده
راننده می تواند اعداد و حروف الفبای لاتین را نمایش دهد (حروف بزرگ و کوچک یکسان نشان داده می شوند) و همچنین یک فاصله و یک نقطه اعشار.


شخصیت ها را کنترل کنید
برای انتخاب حالت عملکرد خط کش یا فعال کردن جلوه های ویژه، کاراکترهای ویژه باید از طریق UART منتقل شوند. همانطور که قبلا نوشتم، کاراکترهای کنترل بلافاصله پس از دریافت از طریق UART شروع به کار می کنند و وارد بافر نمی شوند. بر این اساس، می توان آنها را مستقیماً در خط پیام ارسال کرد.
مثال: "_Abc>"، که در آن "Abc" پیام نمایش داده شده و "_" و ">" کاراکترهای کنترل هستند.


در اینجا لیستی از نمادها وجود دارد که نحوه عملکرد نشانگرها را کنترل می کنند:

")" - اجازه نمایش خودکار بافر(به طور پیش فرض فعال است).
هنگامی که به روز رسانی خودکار فعال است، بافر، با یک دوره معین، دوباره بر روی خط کش ترسیم می شود. هر کاراکتر دریافت شده از طریق UART و نوشته شده در بافر بلافاصله بر روی خط کش نمایش داده می شود.

"(" - ممنوعیت نمایش خودکار بافر.
تمام کاراکترهای دریافت شده از طریق UART همچنان در بافر راننده نوشته می شوند، اما هیچ تغییری در خط رخ نمی دهد ("آخرین پیام روشن است"). ممنوع کردن به روز رسانی خودکاراگر لازم است کل خط را یکجا نمایش دهید و نه نویسه به کاراکتر، یا برای اینکه پیام بعدی را بدون تغییر پیام قبلی آماده کنید، ممکن است به خط کش نیاز باشد.
مثال: رشته "(2314" منتقل شده از طریق UART به هیچ وجه روی خط کش نمایش داده نمی شود، اما در بافر نوشته می شود. اگر نمایش خودکار را بیشتر روشن کنید - ")"، سپس روی خط کش ما را مشاهده خواهیم کرد. کلمه 2314. برای نمایش کل خط پیام، و نه به دلیل انتقال کاراکترها از طریق UART، باید ترکیب زیر "(2314)" را ارسال کنید. اگر کاراکترهای 2، 3، 1، 4 فوراً از طریق UART ارسال نشوند، اما در مدت زمان معینی این امر صادق است.

"!" - خروجی اجباری بافر به خط.
برای نمایش بافر روی خط کش یک بار، زمانی که به روز رسانی خودکار غیرفعال است، لازم است.
مثال: غیرفعال کردن نمایش خودکار "("، کاراکترهای ارسال شده "2314"، نمایش اجباری آنها "!".

"_" (زیر خط) - پاکسازی بافر.
با دریافت این کاراکتر، بافر فوراً فلاش می شود. اگر نمایش خودکار بافر غیرفعال باشد، هیچ تغییری در خط کش ایجاد نمی شود، زیرا فقط بافر پاک می شود. برای پاک کردن خط کش، در این مورد، باید نمایش خودکار بافر را شروع کنید یا نماد خروجی بافر اجباری «!» را ارسال کنید.

”[“ - حالت وارونگی کاراکتر را فعال کنید.
در حالت معکوس، کاراکترهای نمایش داده شده در خط معکوس می شوند (بیت به بیت). اگر توانستید نشانگرها را با یک آند مشترک و یک کاتد مشترک در یک خط ترکیب کنید، این حالت مورد نیاز است. هنگامی که یک سیگنال معکوس به نشانگر اتصال مخالف اعمال می شود، دومی نماد را به درستی نمایش می دهد. حتی اگر کل خط نشانگرها در ابتدای جلسه با سیستم عامل مطابقت نداشته باشد، کافی است نماد "[" را ارسال کنید و سپس همه چیز به درستی کار خواهد کرد.

"]" - حالت وارونگی کاراکتر را غیرفعال کنید (به طور پیش فرض فعال است).
مثال: اگر سیستم عامل برای نشانگرهایی با آند مشترک است و نشانگرها به این صورت روشن می شوند: OA-OK-OA. رشته "35" را رد می کنیم و روی خط کش عدد 345 می گیریم. اگر آن را به این صورت رد کنیم - "345"، سپس "3-dash-what-5" می گیریم.

"*" - شخصیت به شخصیت "ناپدید شدن" محتویات حاکم.
نمادهای روی خط کش به طور متوالی بخش های خود را خاموش می کنند تا زمانی که به طور کامل "ناپدید شوند" (محتوای بافر دست نخورده باقی می ماند). در پایان افکت، نماد « D

"^" - شخصیت به شخصیت "تجلی" محتویات حاکم.
نمادهای روی خط‌کش به‌طور متوالی بخش‌های خود را تا زمانی که کاملاً «مظهر» شوند روشن می‌کنند (محتوای بافر دست نخورده باقی می‌ماند). در پایان افکت، نماد « D” نقشه برداری خودکار بافر فعال است.

برای تکمیل افکت، خط نشانگرها باید خالی باشد، نمایش خودکار بافر ممنوع است، و بافر باید حاوی یک کلمه توسعه یافته باشد (این را می توان با خط زیر ")_! کلمه توسعه یافته" انجام داد). این اثر پس از ناپدید شدن کلمه قبلی توسط "*" خوب است.


بسته کاراکترهای کنترلی برای پیمایش افقی (خط خزنده).
بسته به شما اجازه می دهد تا یک خط در حال اجرا را از محتویات بافر سازماندهی کنید. تنها کاری که باید انجام دهید این است که رشته را در بافر قرار دهید و جهت حرکت را با کاراکتر کنترل تنظیم کنید، درایور بقیه کارها را انجام خواهد داد.

">" - پیمایش خودکار محتویات خط کش به سمت راست(تیک تیک).

“<“ – Автоматический скроллинг содержимого линейки влево (تیک تیک).
محتویات بافر تغییر نمی کند. افکت بی نهایت است (حرکت دایره ای)، هیچ کاراکتری در UART برگردانده نمی شود. می توانید با علامت "|" متوقف شوید.

"|" - پیمایش را متوقف کنید.
موقعیت نمایشگر به حالت عادی باز می گردد.


بسته ای از کاراکترهای کنترلی برای تغییر عمودی.
این بسته افکت به شما امکان می دهد چندین افکت جالب را سازماندهی کنید، مانند شبیه سازی حرکت از طریق آیتم های منو. نمایش دوره ای برخی از اطلاعات خدمات (به عنوان مثال، زمان، فشار دادن ساعت از پایین و سپس حذف آن در آنجا) و غیره.

"\" - تغییر عمودی - ظاهر کاراکترهای خط کش به بالا(ظاهر بالا - از فضای خالی تا شخصیت های پر). در پایان افکت، نماد « V

"/" - تغییر عمودی - ناپدید شدن کاراکترهای خط کش به بالا(محو شدن - از کاراکترهای پر به فضای خالی). در پایان افکت، نماد « V” و نگاشت خودکار بافر غیرفعال است.

":" - تغییر عمودی - ظاهر نمادهای خط کش به پایین(ظاهر پایین - از فضای خالی تا کاراکترهای پر). در پایان افکت، نماد « V"، نگاشت خودکار بافر فعال است.

";" - تغییر عمودی-ناپدید شدن کاراکترهای خط کش به پایین(محو شدن - از کاراکترهای کامل به فضای خالی). در پایان افکت، نماد « V” و نگاشت خودکار بافر غیرفعال است.

در اینجا نمونه ای از پیاده سازی ناوبری منو با استفاده از افکت های بسته آورده شده است:

و این یک نمونه از یک پیام اطلاعاتی است:


بسته ای از کاراکترهای کنترلی برای تغییر سرعت افکت ها.
نمادهای زیر سرعت عبور افکت ها را تغییر می دهند.

"-" - سرعت عادی فعال می شود.

"+" - افزایش سرعت فعال می شود.

توضیحات اضافی برای مدیریت اثرات.

- همه افکت ها مستقل از یکدیگر کار می کنند. این به این معنی است که می توانید چندین افکت را همزمان اجرا کنید! رشته مانند " _شروع>*؛" بافر را پاک می کند، کلمه "START" را در آن می نویسد، خط پیمایش را به سمت راست شروع می کند، در طول اجرا، بخش به بخش ناپدید می شود و علاوه بر این، پایین می رود. با کمک ترکیب های مختلف می توانید افکت های کاملاً جدیدی دریافت کنید. آزمایش کنید!

- به عنوان مثال هنگام دادن دستورات متقابل<” и “>" - آخرین مورد کار خواهد کرد - ">".

- در حین اجرای جلوه های ویژه، می توانید بافر را با کلمات جدید پر کنید. آنها بلافاصله شروع به مشارکت در اثر خواهند کرد.

- بدیهی است که اگر تعداد نشانگرها از اندازه بافر کمتر باشد، تنها آخرین کاراکترهای وارد شده متناسب با تعداد نشانگرها نمایش داده می شود. در غیر این صورت، اگر بافر کمتر از تعداد اندیکاتورها باشد، بافر روی اندیکاتورها به صورت دوره ای تکرار می شود.


سیستم عامل برای نشانگرهای دارای آند مشترک (OA)
- سیستم عامل برای درایور ATtiny13 برای خط نشانگر 7 قسمتی. بافر - 16 کاراکتر. نشانگرهایی با آند مشترک
- سیستم عامل برای درایور ATtiny13 برای خط نشانگر 7 قسمتی. بافر - 32 کاراکتر. نشانگرهایی با آند مشترک

سفت‌افزار برای نشانگرها با کاتد مشترک (OK)
- سیستم عامل برای درایور ATtiny13 برای خط نشانگر 7 قسمتی. بافر - 16 کاراکتر. نشانگرهای کاتد رایج
- سیستم عامل برای درایور ATtiny13 برای خط نشانگر 7 قسمتی. بافر - 32 کاراکتر. نشانگرهای کاتد رایج

فیوزهای همه فریمورها یکسان است
- Fzy برای سیستم عامل درایور خط

اندازه بافر باید تا حد امکان کوچک انتخاب شود. یک بافر کوچکتر نویز کمتری با بخش های نشانگر در طول جابجایی خط و به روز رسانی ایجاد می کند (این فقط برای مدارهایی اعمال می شود که نشانگر توسط سیگنال /OE خالی نمی شود).

امروز روش دیگری برای ذخیره دسته ای از پایه های میکروکنترلر در مواردی که نیاز به اتصال نشانگرهای LED هفت بخش دارید ارائه می شود. این در مورد استفاده از یک درایور تخصصی خواهد بود MAX7221 است درایورها به شما امکان می دهند نشانگرهای هفت بخش (با یک کاتد مشترک)، خطوط LED را کنترل کنید یا می توانید از آن برای هدایت همزمان 64 LED استفاده کنید. خود درایورها از طریق رابط SPI با حداکثر فرکانس پشتیبانی تا 10 مگاهرتز کنترل می شوند.

پینوت پایه های ریز مدار:

1 - DIN.ورود اطلاعات سریال داده ها در رجیستر شیفت 16 بیتی در لبه افزایشی سیگنال ساعت بارگذاری می شوند.

2،3،5-8،10،11 - DIG0-DIG7.پین های اتصال کاتدهای رایجشاخص ها.

4.9 - GND.پایانه های زمینی

12-بار (CS) در MAX7221، داده ها در ثبت شیفت دریافت تنها زمانی بارگذاری می شوند که سیگنال CS در سطح پایین(یعنی فقط زمانی که تراشه از نظر رابط SPI "انتخاب" شده باشد). آخرین 16 بیت دریافتی نیز ذخیره و پردازش می شوند، این نیز در لبه افزایشی سیگنال CS اتفاق می افتد.

13-CLK.ورودی سیگنال ساعت که داده ها روی آن نوشته شده است.

14-17، 20-23 - SEG A-SEG G، DP.نتیجه گیری برای اتصال بخش های شاخص های هفت بخش.

18 - ISET.یک مقاومت به این خروجی متصل است (پای دوم مقاومت مثبت است) که به شما امکان می دهد حداکثر جریان قطعه را تنظیم کنید و بنابراین روشنایی قطعات را تنظیم کنید. حداقل مقاومت این مقاومت باید 9.53 کیلو اهم باشد که تقریباً معادل جریان قطعه 40 میلی آمپر است.

19 - V+.برق "+" در اینجا وصل می شود.

24 - DOUT.خروجی داده سریال اگر دو یا چند درایور باید به هم متصل شوند، این پایه مورد نیاز است.

اصل کار با تراشه MAX7221

در واقع، MAX7221 (و MAX7219 آنالوگ آن) در اصل شبیه به رجیستر 74HC595 است، با تنها تفاوت این است که 16 بیت داده در تراشه بارگذاری می شود. 8 بیت اول بارگذاری شده برای انتخاب رجیستری که در آن داده ها را بنویسید، مورد نیاز است. 8 بیت بعدی داده هایی هستند که باید در رجیستر نوشته شوند. به عبارت ساده تر، ابتدا به ریز مدار می گوییم که داده ها را کجا بنویسد و سپس داده های لازم را در آدرس انتخاب شده می نویسیم.

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

حالت دوم، به اصطلاحکد BCD B ، که به شما امکان می دهد خروجی اطلاعات را به دلیل رمزگشای کاراکتر داخلی ساده کنید. به هر حال، نمادهای بسیار کمی وجود دارد، فقط 16 - اینها اعداد 0-9، علامت "-"، یک نماد خالی و 4 گاو نر هستند - "E"، "H"، "L"، "P" ( من تعجب می کنم که چه کلمه ای می توانید بسازید؟ :)) . به عنوان مثال، برای خروجی عدد 2 به بیت دوم، باید آدرس بیت دوم (8 بیت) را ارسال کنیم و سپس فقط یک دو (8 بیت دیگر) ارسال کنیم. در مقاله بعدی در مورد این حالت کار صحبت خواهیم کرد، اکنون نمونه ای از نحوه کار با درایور در حالت بدون رمزگشایی را در نظر خواهیم گرفت.

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

ثبت نام نه عملیاتهنگام اتصال چندین درایور به یکدیگر مورد نیاز است. برای اینکه به عنوان مثال به درایور سوم در زنجیره دسترسی داشته باشید بدون اینکه بر عملکرد دو مورد اول تأثیر بگذارد، باید از ثبت نام "No-op" برای دو مورد اول استفاده کنید. از آنجایی که آدرس این رجیستر صفر است، انجام این کار بسیار آسان است: ابتدا در 16 چرخه، داده ها را برای ثبات سوم ارسال می کنیم، سپس خط داده را صفر می کنیم و 2 بار دیگر برای 16 سیکل خاموش می کنیم. در نتیجه، اولین بسته ارسال شده در ثبات سوم بارگذاری می شود و دو بسته بعدی (بارگذاری شده در ثبات اول و دوم) دارای آدرس صفر خواهند بود، یعنی به ثبات "No-op" دسترسی خواهند داشت.

رقم 0-7رجیسترهایی که مسئول کنترل بیت های اندیکاتور هستند. ارقام از چپ به راست شماره گذاری می شوند. این بسیار راحت است، به عنوان مثال، برای تغییر یک رقم در نشانگر ما در آدرس رجیستر مسئول بیت می چرخیم و در نتیجه همه بیت های دیگر را لمس نمی کنیم.

ثبت نام حالت رمزگشاییمسئول حالت های عملکرد درایور است که کمی بالاتر ذکر شد: آنها می توانند حالت رمزگشایی کاراکتر را تنظیم کنندکد BCD B و بدون حالت رمزگشاییبدون رمزگشایی

از طریق ثبت شدت برنامه (!) تنظیم روشنایی درخشش نشانگر انجام می شود. مورد مفید برای موارد مختلف، از امکان صرفه جویی در مصرف انرژی گرفته تا نشان دادن حالت های مختلف عملکرد دستگاه.در مجموع می توان 16 سطح روشنایی را انتخاب کرد.

ثبت محدودیت اسکن تعداد ارقام نشانگر استفاده شده تنظیم شده است. اگر قصد دارید از همه 8، بلکه کمتر استفاده کنید، توصیه می شود موارد استفاده نشده را غیرفعال کنید. این نرخ نوسازی نشانگر و همچنین پیک جریان را در بخش ها تعیین می کند. وقتی همه 8 بیت فعال هستند، نرخ تازه سازی حدود 800 هرتز است. با کاهش تعداد تخلیه ها، فرکانس افزایش می یابد، می توان آن را با فرمول تعیین کرد8*800/N (که در آن N تعداد ارقام است). جریان اوج عبور از بخش ها نیز با خاموش شدن بیت های بلااستفاده افزایش می یابد.

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

مصرف برق در این حالت به 150 میکروآمپر کاهش می یابد.

تست نمایشبرای بررسی نشانگر متصل استفاده می شود، در حالت تست تمام بخش های نشانگر روشن می شوند. حتی اگر راننده در حالت صرفه جویی در انرژی باشد، حالت تست بخش ها را روشن می کند.

پس از روشن شدن، تمام رجیسترهای درایور ریست می شوند، بنابراین اولین کاری که باید انجام دهید این است که پیکربندی کنید. تنظیمات درایور (نوشتن مقادیر مورد نظر در رجیسترهاحالت رمزگشایی، شدت، حد اسکن،تست خاموش شدن و نمایش ) باید هر بار که برق اعمال می شود انجام شود، این مقادیر ذخیره نمی شوند.

کار با درایور در حالت بدون رمزگشایی

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


به عنوان مثال: باید عدد 1 را در اولین رقم نشانگر 8 رقمی نمایش دهیم، ابتدا 8 بیت اول آدرس رجیستر مربوط به رقم اول را ارسال می کنیم (به جدول با نقشه آدرس رجیستر مراجعه کنید). شماره گذاری ارقام نشانگر از چپ به راست می رود (به این ترتیب 0.1.2.3.4.5.6.7.) بنابراین اولین رقم از سمت راست (رقم 7) نشانی خواهد داشت. &h08، این مقدار ارسال می شود. سپس داده هایی را ارسال می کنیم که باید شامل بخش های B و C باشد، طبق جدول مطابقت (به بالا مراجعه کنید)، بیت های D5 و D4 مسئول این بخش ها هستند. بنابراین 8 بیت بعدی که باید ارسال کنیم این خواهد بود: 00110000 ، یا اگر در نماد هگزادسیمال - &h48. به روشی مشابه، می‌توانیم سایر ارقام و بخش‌های نشانگر را کنترل کنیم. هیچ چیز پیچیده ای نیست، درست است؟ ;)

و اکنون یک نمونه کوچک کاری. من فقط یک نشانگر چهار رقمی داشتم که برای نشان دادن امکانات کاملاً مناسب است. مطابق نمودار زیر متصل می شود. سرنخ های استفاده نشده را می توان در هوا معلق نگه داشت. میکروکنترلر Attiny2313 از یک نوسانگر داخلی 8 مگاهرتز کلاک می شود، ولتاژ تغذیه مدار 5 ولت است.

کد آزمایشی در Bascom-AVR

$regfile = "attiny2313.dat"
کریستال دلار = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40

پیکربندی پورت= خروجی

Csنام مستعارپورت 1
Ser_clkنام مستعارپورت 2
Ser_dataنام مستعارپورت 3

کم نور آ مانندکلمه
کم نور دیجیتال (8) مانندبایت ها
کم نور Y مانندبایت ها
کم نور Disp_num مانندبایت ها
کم نور disp_data مانندبایت ها
کم نور Digit_str مانندرشته* 4
کم نور Temp_str مانندرشته* 3
گوساب Max7219_setup

Digit_str= "خوب" "رشته برای نمایش
گوساب آماده کردن زیربرنامه آماده سازی و ارسال داده ها را فراخوانی کنید

صبر کن 3

انجام دادن "در حلقه اصلی، ما به سادگی عددی را به دست می آوریم که 1 افزایش می یابد
منتظر می ماند 200
Incr آ "متغیری که مقدار آن روی نشانگر نمایش داده می شود
Digit_str= خ(آ)
Digit_str= قالب(digit_str , "0000" )
گوساب آماده کردن
حلقه

پایان

"آماده سازی داده ها برای انتقال
آماده کردن:
انجام دادن
برای Y=1 به 4
Temp_str= اواسط(digit_str , Y , 1 )
انتخاب کنیدمورد Temp_str
مورد"0" : Temp_str = "126" "&b01111110
مورد"1" : Temp_str = "48" "&b00110000
مورد"2" : Temp_str = "109" "&b01101101
مورد"3" : Temp_str = "121" "&b01111001
مورد"4" : Temp_str = "51" "&b00110011
مورد"5" : Temp_str = "91" "&b01011011
مورد"6" : Temp_str = "95" "&b01011111
مورد"7" : Temp_str = "112" "&b01110000
مورد"8" : Temp_str = "127" "&b01111111
مورد"9" : Temp_str = "123" "&b01111011
مورد"." : Temp_str = "128" "&b10000000
"شما همچنین می توانید شخصیت های مورد نظر را خودتان وارد کنید
مورد"A" : Temp_str = "119" "&b01110111
مورد"C" : Temp_str = "78" "&b01001110
مورد"E" : Temp_str = "79" "&b01001111
مورد"G" : Temp_str = "94" "&b01011110
مورد"o" : Temp_str = "29" "&b00011101
مورد"d" : Temp_str = "61" "&b00111101
مورد" " : Temp_str = "0" "&b00000000
"و غیره...
پایانانتخاب کنید
دیجیتال(y) = وال(temp_str)

Disp_num= Y "مکان (رقمی) آشنا که رقم فعلی را به آن نمایش می دهیم

disp_data= رقم (y) "داده هایی که به بیت انتخاب شده ارسال می کنیم
گوساب Disp_write
بعد Y
حلقه تا زمان Y=5 "وقتی داده ها به هر 4 رقم خروجی شد، به حلقه اصلی برمی گردیم
برگشت

"ارسال داده به max7221
Disp_write:
Ser_data= 0
Ser_clk= 0
Cs= 0
Shiftout Ser_data، Ser_clk، Disp_num، 1 "ارسال شماره دسته
Shiftout Ser_data، Ser_clk، Disp_data، 1 "داده ها را به این بیت ارسال کنید
Cs= 1
برگشت

"راه اندازی و تنظیم رجیسترهای max7221
Max7219_setup:
Disp_num= & H0C: Disp_data = 0 حالت خاموش شدن (0-فعال، 1-غیرفعال)
گوساب Disp_write
Disp_num= & H09: Disp_data = 0 "حالت کنترل مستقیم بخش های نشانگر
گوساب Disp_write
Disp_num= & H0A: Disp_data = 10 "سطح درخشش بخش ها (0-حداقل، 15-حداکثر)
گوساب Disp_write
Disp_num= & H0B: Disp_data = 3 "تعداد بیت های استفاده شده (شمارش از 0)
گوساب Disp_write
Disp_num= & H0F: Disp_data = 0 حالت تست غیرفعال است (0-غیرفعال، 1-فعال)
گوساب Disp_write
Disp_num= & H0C: Disp_data = 1
گوساب Disp_write
برگشت



کد به خوبی کامنت شده است، بنابراین امیدوارم نیازی به توضیح بیشتر نباشد. و در زیر نتیجه است