دانلود پروژه میکروکنترلر

Word 186 KB 6079 31
مشخص نشده مشخص نشده الکترونیک - برق - مخابرات
قیمت قدیم:۲۴,۰۰۰ تومان
قیمت: ۱۹,۸۰۰ تومان
دانلود فایل
  • بخشی از محتوا
  • وضعیت فهرست و منابع
  • چکیده : سخت افزار این پروژه به طور کلی از یک میکروکنترلر Atmega16 از شرکت ATMEL و یک LCD 4*20 جهت نمایش عملکرد و 4 رله در خروجی و چند قطعه دیگر جهت کارهای جانبی و تنظیمات سخت افزاری تشکیل شده است .

    این پروژه جهت کنترل 4 موتور مجزا با تنظیمات مجزا می باشد که توسط برنامۀ Bascom و به زبان Basic طراحی شده است .

    جهت شناسایی این که کدام موتور باید روشن شود به صورت مقایسه ای برنامۀ ساعت نوشته شده است که هر لحظه تنظیمات 4 موتور با ساعت چک می شود و هر کدام که با ساعت Set شود بدین ترتیب است که اگر ثانیه با ثانیه ساعت برابر شد برنامه به قسمت دقیقه می رود و اگر دقیقه برابر شد به قسمت ساعت رفته و آن را نیز مانند بقیه چک میکند و در صورت برابر شدن هر کدام آن موتور را روشن و یا خاموش می کند .

    نام این پروژه HMI است که مخفف سه کلمۀ Human Machine Interface به معنی ماشین واسط انسانی است .

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

    میکروکنترلرها انواع مختلف و با زبان های برنامه نویسی مختلف از جمله Basic و C و...

    می باشند که هر یک مزیتها و معایبی را دارند .

    در این پروژه که جهت کنترل زمان روشن و خاموش شدن 4 موتور در خروجی یا به طور کلی 4 خروجی از میکروکنترلر AVR از نوع ATmega16 شرکت ATmel و توسط زبان Basic و در محیط Bascom طراحی شده است .

    مختصری راجع به AVR زبانهای سطح بالا یا همان (HIGH LEVEL LANGUAGES) HLL به سرعت در حال تبدیل شدن به زبان برنامه نویسی استاندارد برای میکرو کنترلرها (MCU) حتی برای میکروهای 8 بیتی کوچک هستند .

    زبان برنامه نویسی BASIC و C بیشترین استفاده را در برنامه نویسی میکروها دارند ولی در اکثر کاربردها کدهای بیشتری را نسبت به زبان برنامه نویسی اسمبلی تولید می کنند .

    ATMEL ایجاد تحولی در معماری ، جهت کاهش کد به مقدار مینیمم را درک کرد که نتیجه این تحول میکرو کنترلرهای AVR هستند که علاوه بر کاهش و بهینه سازی مقدار کدها به طور واقع عملیات را تنها در یک کلاک سیکل توسط معماری ( REDUCED RISC INSTRUCTION SET COMPUTER) انجام می دهند و از 32 ریجیستر همه منظوره (ACCUMULATORS) استفاده می کنند که باعث شده 4 تا 12 بار سریعتر از میکروهای موزد استفاده کنونی باشند .

    تکنولوژی حافظه کم مصرف غیر فرّار شرکت ATMEL برای برنامه ریزی AVR ها مورد استفاده قرار گرفته است در نتیجه حافظه های FLASH و EEPROM در داخل مدار قابل برنامه ریزی (ISP) هستند .

    میکروکنترلرهای اولیه AVR دارای 1 ، 2 ، 8 کییوبایت حافظه FLASH و به صورت کلمات 16 بیتی سازماندهی شده بودند .

    AVR ها به عنوان میکروهای RISC با دستورات فراوان طراحی شده اند که باعث میشود حجم کد تولید شده کم و سرعت بالاتری به دست آید .

    عملیات تک سیکل : با انجام تک سیکل دستورات ، کلاک اسیلاتور با کلاک داخلط سیستم یکی می شود .

    هیچ تقسیم کننده ای در داخل AVR قرار ندارد که ایجاد اختلاف فاز کلاک کند .

    اکثر میکروها کلاک اسیلاتور به سیستم را با نسبت 1:4 یا 1:12 تقسیم می کنند که خود باعث کاهش سرعت می شود .

    بنابراین AVR ها 4 تا 12 بار سریعتر و مصرف آنها نیز 4-12 بار نسبت به میکروکنترلرهای مصرفی کنونی کمتر است زیرا در تکنولژی CMOS استفاده شده در میکروهای AVR ، مصرف توان سطح منطقی متناسب با فرکانس است .

    نمودار زیر افزایش (MILLION INSSTRUCTION PER SECONDS) MIPS را به علت انجام عملیات تک سیکل AVR (نسبت 1:1 ) در مقایسه با نسبتهای 1:4 و 1:12 دی دیگر میکروها را نشان می دهد .

    نمودار مقایسه افزایش MIPS/POWER Consumption در AVR با دیگر میکرو کنترلرها .

    طراحی برای زبان های BASIC و C زبان های BASIC و C بیشترین استفاده را در دنیای امروز بعنوان زبان های HLL دارند.

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

    هدف ATMEL طراحی معماری بود که هم برای زبان اسمبلی و هم زبان های HLL مفید باشد .

    به طور مثال در زبانهای C و BASIC می توان یک متغییر محلی به جای متغییر سراسری در داخل زیربرنامه تعریف کرد ، در این صورت فقط در زمان اجرا زیر برنامه مکانی از حافظه RAM برای متغییر اشغال می شود در صورتی که اگر متغییری به عنوان سراسری تعریف گردد در تمام وقت مکانی از حافظه FLASH ROM را اشغال کرده است .

    برای دسترسی سریعتر به متغییرهای محلی و کاهش کد ، نیاز به افزایش رجیسترهای همه منظوره است .

    AVR ها دارای 32 رجیستر هستند که مستقیماً به ( UNIT ARITHMETIC) LOGIC ALU) متصل شده اند ، و تنها در یک کلاک سیکل به این واحد دسترسی پیدا می کنند .سه جفت از این رجیسترها می توانند به عنوان رجیسترهای 16 بیتی استفاده شوند .

    کلیات پروژه و نحوه عملکرد : این پروژه جهت زمان بندی مجزای 4 موتور (یا هر خروجی دیگر )استفاده می شود که با تنظیم هر موتور می توان به طور مجزا از آن استفاده کرد و تنظیمات هر موتور با موتورهای دیگر کاملاً مجزا است .

    در این پرژه پس از Initialize شدن و معرفی پرژه به صفحۀ اصلی می رسیم که در قسمت بالای صفحه ، ساعت آن قرار دارد که در هنگام روشن شدن در صورت تنظیم نکردن از ساعت 12:00:00 شروع به شمارش می کند .

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

    در پایین صفحه LCD 4 گزینۀ TAB – UP – MENU – SAVE وجود دارد .

    برای تنظیمات موتور و ساعت توسط گزینۀ TAB به صفحۀ بعد می رویم در صفحۀ بعد دو گزینه با نامهای Mode 1 و Mode 2 داریم که Mode 1 برای تنظیمات ساعت و Mode 2 برای تنظیمات 4 موتور است و در صورتی که سوئیچ زیر هر گزینه را بفشاریم به آن MODE رفته و شروع به تنظیمات می کنیم به شرح زیر : اگر Mode 1 برویم وارد مُد ساعت شده ایم و با کلید TAB روی هر قسمت از ساعت و دقیقه و ثانیه می رویم پس از این کار با گزینه Up شروع به تنظیم هر قسمت می کنیم و با گزینۀ TAB به قسمت بعدی می رویم و در صورتی که بخواهیم تنظیمات ثبت شود توسط گزینۀ Save آن را ثبت می کنیم و توسط گزینۀ Esc به صفحۀ اصلی بر میگردیم .

    حال اگر به MODE 2 برویم وارد مُد تنظیمات 4 موتور رفته ایم و با کلید TAB از 4 موتور یکی را انتخاب کرده و توسط گزینۀ OK وارد تنظیمات آن موتور میشود که شامل دو گزینۀ Start و Time است که گزینۀ Start زمان روشن شدن و گزینۀ Time زمان خاموش شدن را مشخص می کند و برای تنظیمات آن نیز مانند تنظیمات ساعت توسط دو گزینۀ TAB و Up تنظیم می کنیم و توسط گزینۀ Save آن را قبول کرده و تنظیم می کنیم ، سپس توسط گزینۀ Esc از آن صفحه خارج و به صفحۀ قبل بر می گردیم و این عمل برای تنظیم 4 موتور صورت می گیرد .

    در پایان جا دارد این نکته نیز گفته شود که تنظیمات ثبت شده برای هر 4 موتور در EEPROM ثبت می شود و در صورتی که تغذیۀ آن قطع شود و برای بار دوم روشن شود تنها باید ساعت تنظیم شود و تنظیمات موتور دقیقاً مانند قبل عمل خواهند کرد .

    توضیح در مورد سخت افزار میکروکنترلرها AVR این پروژه از نوع Atmega16 انتخاب شده است که دارای فضای حافظۀ بیشتر و EEPROM می باشد .نمایشگر این پروژه از نوع LCD 4*20 با شماره TS-2040-1 می باشد که دیتا شیت آن در فصل پایانی ارائه شده است .

    در قسمت تغذیه از چهار دیود IN4007 استفاده شده و برای صافی آن از خازن 1000Uf و خازن عدسی 100nf استفاده شده است و از یک رکولاتور 7805 برای تثبیت ولتاژ 5 ولت در خروجی قرار گرفته است .

    4 عدد رله نیز برای کنترل ، در خروجی قرار دارند .

    LED و یک مقاومت 470 اُهم برای قسمت نشان دهنده Power قرار دارد .

    برای کنترل و مقداردهی از 4 میکروسوئیچ به همراه 4 مقاومت 10 کیلو اُهم که پزیری را صفر می کند و در عمل به این مقاومتها ، مقاومت های Pall down گویند .

    یک مقاومت برای تنظیم کنتر است ، LCD بین پایۀ 3 و زمین قرار دارد و یک مقاومت هم برای محدود کردن جریان سوئیچ رله ها است .

    خصوصیات ATmega16 , ATmega16 L از معماری AVR RISC استفاده می کند .

    کارایی بالا و توان مصرفی کم .

    دارای 131 دستورالعمل با کارایی بالا که اکثراً تنها در یک کلاک سیکل اجرا میشوند .

    32*8 رجیستر کاربردی .

    سرعتی تا 16 MIPS در فرکانس 16 MHZ حافظه ، برنامه و دادۀ غیر فرّار 16K بایت حافظه FLASH داخلی قابل برنامه ریزی 16K بایت حافظه FLASH داخلی قابل برنامه ریزی پایداری حافظه FLASH : قابلیت 10.000 بار نوشتن و پاک کردن (WRITE , ERASE) 1024 بایت حافظه داخلی SRAM 512 بایت حافظه EEPROM داخلی قابل برنامه ریزی.

    پایداری حافظه EEPROM : قابلیت 100.000 بار نوشتن و پاک کردن (WRITE , ERASE) قفل برنامۀ FLASH و حفاظت دادۀ EEPROM قابلیت ارتباط JTAG (IEEE Std.) برنامه ریزی برنامۀ FLASH ، EEPROM ، FUSE BITS و LOCK BITS از طریق ارتباط JTAG خصوصیات جانبی دو تایمر – کانتر (TIMER / COUNTER) 8 بیتی با PRESCALER مجزا و مُد COMPARE یک تایمر – کانتر (TIMER / COUNTER) 16 بیتی با PRESCALER مجزا و دارای مُدهای COMPARE و CAPTURE 4 کانال PWM 8 کانال مبدل آنالوگ به دیجیتال 10 بیتی 8 کانال SINGLE – ENDED دارای 7 کانال تفاضلی در بسته بندی TQFP دارای دو کانال تفاضلی با کنترل گین 10x , 1x و 200x یک مقایسه کننده آنالوگ داخلی .

    WATCHDOG قابل برنامه ریزی با اسیلاتور داخلی .

    قابلیت ارتباط با پروتکل سریال دوسیمه (TWO – WIRE) قابلیت ارتباط سریال (SERIAL PERIPHERAL INTERFACE) SPI به صورت MASTER یا SLAVE.

    USART سریال قابل برنامه ریزی خصوصیات ویژه میکروکنترلر POWER-ON RESET CIRCUIT و BROWN-OUT قابل برنامه ریزی .

    دارای اسیلاتور RC داخلی کالیبره شده .

    دارای 6 حالت EXTENDED STANDBY , STANDBY , POWER – SAVE , IDLE , POWER-DOWN) SLEEP و (ADC NOISE REDUCTION منابع وقفه (ENTERRUBT) داخلی و خارجی .

    عملکرد کاملاً ثابت .

    توان مصرفی پایین و سرعت بالا توسط تکنولوژی CMOS توان مصرفی در 25°c , 3v , 1mhz برای ATMEGA16L حالت فعال (ACTIVE MODE) 1.1mA در حالت بی کاری (IDLE MODE) 0.35mA در حالت 1uA>:POWER-DOWN ولتاژهای عملیاتی (کاری) 2.7v تا 5.5v برای (Atmega16L) 4.5v تا 5.5v برای (Atmega16) فرکانسهای کاری 0MHZ تا 8MHZ برای (Atmega16L) 0MHZ تا 16MHZ برای (Atmega16) خطوط I/O و انواع بسته بندی 32 خط ورودی / خروجی (I/O) قابل برنامه ریزی .

    40 پایه 44 , PDIP پایه TQFP و 44 پایه MLF ترکیب پایه ها FUSE HIGT BYTE FUSE LOW BYTE فیوز بیت ها با پاک کردن (ERASE) میکرو تأثیری نمی بینند ولی می توانند با برنامه ریزی بیت LB1 قفل شوند .منطق 0 به معنای برنامه ریزی ریزی شدن و 1 به معنی برنامه ریزی نشدن بیت است .

    OCDEN : در صورتی که بیت های قفل برنامه ریزی نشده باشند برنامه ریزی این بیت به همراه بیت قسمتهای از میکرو امکان میدهد که در مودهای SLEEP کار کنند که این خود باعث افزایش مصرف سیستم می گردد .این بیت به صورت پیش فرض برنامه ریزی نشده (1) است .

    JTAGEN : بیتی برای فعالسازی برنامه ریزی میکرو از طریق استاندارد ارتباطی (JTAG) IEEE که در حالت پیش فرض فعال است و میکرو می تواند از این ارتباط برای برنامه ریزی خود استفاده نماید .

    SPIEN : در حالت پیش فرض برنامه ریزی شده و میکرو از طریق سریال SPI برنامه ریزی می شود .

    CKOPT : انتخاب کلاک که به صورت پیش فرض برنامه ریزی نشده است .

    عملکرد این بیت به بیت های CKSEL بستگی دارد که در بخش کلاک سیستم (1) در انتهای همین فصل آمده است .

    EESAVE : در حالت پیش فرض برنامه ریزی نشده و در زمان پاک شدن (ERASE) میکرو حافظه EEPROM پاک می شود ولی در صورتی که برنامه ریزی شود محتویات EEPROM در زمان پاک شدن میکرو محفوظ میماند .

    BOOTSZ0 , BOOTSZ1 : برای انتخاب مقدار حافظه BOOT طبق جدول زیر برنامه ریزی می شوند و در زمان برنامه ریزی شدن فیوز بیت BOOTRST اجرای برنامه از آدرس حافظه BOOT آغاز خواهد شد .

    جدول انتخاب مقدار حافظه BOOT توسط فیوز بیت های BOOTSZ 0,1 BOOTRST : بیتی برای انتخاب بردار ری ست BOOT که در حالت پیش فرض برنامه ریزی نشده و آدرس بردار ری ست $0000 است و در صورت برنامه ریزی آدرس بردار ری ست به آدرسی که فیوز بیت های BOOTSZ0 و BOOTSZ1 مشخص کرده اند تغییر می یابد .

    جدول انتخاب آدرس بردار ریست توسط فیوز بیت BOOTRST BOODLAVEL : زمانی که این بیت برنامه ریزی نشده (پیش فرض ) باشد اگر ولتاژ پایه VCC از 2.7v پایین تر شود ری ست داخلی میکرو فعال شده و سیستم را ری ست می کند .

    زمانی که این بیت برنامه ریزی شده باشد اگر ولتاژ پایه VCC از 4v پایین تر شود ری ست داخلی میکرو فعال شده و میکرو را ری ست می کند BODEN : برای فعال کردن عملکرد مدار BROWN-OUT این بیت بایستی برنامه ریزی شده باشد .

    این بیت به صورت پیش فرض برنامه ریزی نشده است .

    جدول انتخاب سطح ولتاژ برای مدار BROWN-OUT داخلی SUT1, SUT0 : عملکرد این دو بیت برای انتخلب زمان START-UP .

    CKSEL3 … CKSEL0 : عملکرد این بیت ها در انتهای همین فصل کاملاً توضیح داده شده است .

    مقدار پیش فرض INTERNAL RC OSCILLATOR @ 1MHZ است .

    کلاک سیستم توضیع کلاک کلاک سیستم میکرو طبق شکل زیر توضیع شده است .

    کلاکCPU- CLKcpu این کلاک برای انجام عملیات AVR به طور مثال رجیسترها استفاده میشود .توقف و به مکث بردن این کلاک باعث می شود که عملیات و محاسبات AVR انجام نگیرد .

    کلاک CLK I/0 – I/0 این کلاک توسط بسیاری از ماژول های I/0 به طور مثال تایمرها ، کانترها ، SPI و USART استفاده می گردد.

    کلاکFLASH CLKflash- این کلاک عملیات ارتباطی با حافظه FLASH را کنترل می کند .

    کلاک FLASH معمولاً با کلاک CPU فعال می شود .

    کلاک غیر همزمان تایمر –CLK ASY با این کلاک تایمر / کانتر به صورت غیر همزمان توسط کریستال ساعت 32768 HZ کار می کند حتی اکر سیستم در حالت SLEEP باشد .

    کلاک CLK ADC – ADC ADC از یک کلاک جداگانه حساس استفاده می کند که باعث می شود کلاک های CPU و I/0 به حالت ایست (HALT) تا نویز حاصل از مدار دیجیتال داخلی کاهش یافته و در نتیجه عملیات تبدیل با دقت بیشتری انجام یابد .

    منابع کلاک (CLOCK SOURCE) میکرو دارای انواع منابع کلاک اختیاری است که می توان انواع آن را به وسیله بیت های قابل برنامه ریزی (FLASH FUSE BITS)FLASH انتخاب کرد .

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

    نکته هنگامی که CPU از مُد POWER-DOWN یا POWER-SAVE خارج میشود زمانی به نام زمان شروع (START_UP) برای رسیدن کریستال به شرایط پایدار ایجاد و سپس دستورات برنامه اجرا می شود و هنگامی که CPU از ریست شروع به کار میکند، تأخیری اضافه (DELAY) برای رسیدن ولتاژ به سطح پایدار ایجاد شده و سپس اجرای برنامه آغاز می شود .

    برای ایجاد زمانبندی های مذکور از اسیلاتور WATCHDOG استفاده می گردد.

    اسیلاتور کریستالی (EXTERNAL CTYSTAL / CERAMIC SESONATOR) در این حالت کریستال یا نوسانگر سرامیکی (CERAMIC RESONATOR) یا کریستال کوارتز (QUARTZ CRYSTAL) .

    فیوز بیت CKOPT می تواند برای دو حالت مختلف استفاده شود .

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

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

    خازن های C1 و C2 برای کریستال ها و نوسانگرها بایستی یک مقدار باشند و مقادیر آنها بستگی به کریستال ، نوسانگر و نویزهای الکترومغناطیسی محیط دارد .

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

    شکل اتصال کریستال به میکرو در حالت اسیلاتور کریستالی اسیلاتور کریستالی فرکانس پایین ( EXTERNAL_LOW FREQUENCY CRYSTAL ) برای استفاده از کریستال ساعت 32.768KHZ فیوز بیت های CKSEL با 1001 برنامه ریزی می شوند و کریستال طبق شکل صفحه ی قبل به پایه های XTAL1 و XTAL2 متصل می شود .با برنامه ریزی کردن CKOPT می توان خازن های داخلی را فعال نمود و در نتیجه خازن های خارجی را برداشت .

    مقدار نامی خازن های داخلی 36PF است .

    اسیلاتور RC خارجی EXTERNAL RC OCSILLATOR) ( فرکانس تقریبی توسط معادله f=1 / (3RC) به دست می آید .

    مقدار خازن بایستی حداقل 22PF باشد .

    با برنامه ریزی کردن فیوز بیت CKOPT کاربر می تواند خازن های داخلی 36PF را بین XTAL1 وGND راه اندازی کند و در نتیجه نیازی به خازن خارجی نیست .

    اسیلاتور RC کالیبره شده داخلی (CALIBRA TED INTERNAL RC SCILLATOR) اسیلاتور RC کالیبره شده ی داخلی ، کلاک های نامی داخلی 1 ، 2 ، 4 و 8MHZ را در ولتاژ 5v و 25 °C تولید می کند .

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

    زمانی که از این مُد استفاده می گردد فیوز بیت CKOPT همیشه بایستی برنامه ریزی شده باشد .

    برای میکرو به صورت پیش فرض این گزینه انتخاب شده است کلاک خارجی (EXTERNAL CLOCK) برای راه اندازی میکرو توسط کلاک خارجی پایه XTAL1 بایستی وصل شود .

    برای کار در ایم مُد بیت های CKSEL با 0000 برنامه ریزی می شوند .

    با برنامه ریزی کردن فیوز بیت CKOPT خازن داخلی 36PF بین پایه های XTAL1 و GND فعال می شود .

    در این مُد باید از تغییرات ناگهانی فرکانس کلاک خارجی برای اطمینان از انجام پایدار و صحیح عملیات میکرو کنترلر (MCU) جلوگیری کرد .

    تغییرات بیشتر از 2% در فرکانس کلاک خارجی ممکن است باعث رفتارهای غیر قابل انتظار میکرو شود .

    زمانی که قصد تغییر فرکانس را دارید بایستی میکرو در حالت RESET نگه داشته شود .

    اسیلاتور تایمر / کانتر برای میکرو کنترلرهایی که دارای پایه TOSC1 و TOSc2 هستند ، کریستال ساعت 32.768KHZ مستقیماً بین دو پایه قرار می گیرد و تایمر / کانتر 0 یا 2 به صورت آسنکرون از این دو پایه کلاک دریافت می کند .

    پیکره بندی و کار با امکانات AVR در BASCOM امکانات تمام میکروهای AVR قبل از استفاده بایستی پیکره بندی (CONFIG) شوند .

    در این فصل به پیکره بندی یا همان راه اندازی امکانات AVR پرداخته ایم .

    در ابتدا هر بخش رجیسترهای وسیله شرح داده شده اند و سپس نحوه پیکره بندی و دستورات مربوط به وسیله کاملاً تشریح شده است و از آنجا که ارائۀ مثال در یادگیری بسیار مفید است در انتها نیز مثالهایی برای درک بیشتر با کاربرد و نحوۀ کار با وسیله آماده است .

    در این بخش سعی شده است که دستورات مربوط به امکانات AVR در کنار پیکره بندی قرار گیرد تا کاربر بتواند با مطالعه بخش مربوط به وسیله دلخواه بتواند به راحتی وسیله را راه اندازی و با آن کار کند .

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

    جهت یک پایه می تواند فرودی یا خروجی باشد .

    Config portx = state Config pinx.y = state Yو X بسته به میکرو می تواند به ترتیب پایه های 0 تا 7 پورت های A,B,C,D,E,F باشند .

    State نیز میتواند یکی از گزینه های زیر باشد : INPUT یا 0 : در این حالت رجیستر جهت داده پایه یا پورت انتخاب شده صفر (0) می شود و پایه یا پورت به عنوانه ورودی استفاده می شود .

    OUTPUT یا 1 : در ایم حالت رجیستر جهت داده پایه یا پرت انتخاب شده یک (1) میشود و پایه یا پرت به عنوان خروجی استفاده می شود .

    زمانی که بخواهید از پورتی بخوانید بایستی از رجیستر PIN پورت مربوطه استفاده کنید و در هنگام نوشتن در پورت بایستی در رجیستر PORT بنویسید .

    مثال : Dim A As Byte , count as Byte ' Configure port D for input mode Config portd = Input A = pind ' Read data on portd A = A and portd ' A = A & PORTD Print A ' Print It Bitwait Pind.

    7 ' reset ' wait until bit is low ' We will use port B for output Config Portb = output ' assign value Portb = 10 ' set port B to 10 Portb = portb and 2 Set portb.

    0 ' set bit 0 of port B to 1 Incr portb Count = 0 Do Incr count Portb = 1 Por A = 1 to 8 Rotate portb , left ' rotate bit left Wait 1 Next Loop until count = 10 END بررسی پورت های میکرو ATMEGA32 در این بخش قصد داریم برای آشنایی بیشتر با عملکرد پورت ها و رجیسترها مربوط به طور نمونه به بررسی پورت های میکرو ATMEGA32 بپردازیم .

    پورت A پورت A یک I/O دو طرفه 8 بیتی است .

    سه آدرس از مکان حافظه I/O اختصاص به PORTA دارد .

    یک آدرس برای رجیستر داده PORTA ، دومی رجیستر جهت داده DDRA و سومین پایه ورودی پورت A ، PINA است .

    آدرس پایه های ورودی پورت A فقط قابل خواندن است در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند .

    تمام پایه های پورت دارای مقاومت Pull-UP مجزا هستند .

    بافر خروجی پورت A میتواند 20mA را Sink کند و در نتیجه LED را مستقیماً راه اندازی می کند .

    هنگامی که پایه های PA0-PA7 با مقاومت های Pull-down خارجی ، خروجی استفاده میشوند ، آنها SOURCE جریان می شوند زمانی که مقاومت های Pull-Up داخلی فعال باشند .

    رجیسترهای پورت A رجیسترهای پورت A عبارتند از : رجیستر داده پورت [PORT A DATA REGISTER] PORTA-A رجیستر جهت داده پورت [PORT A DATA DIRECTION REGISTER] DDRA-A بایت آدرس پایه های ورودی پورت [PORT A INPUT PINS ADDRESS] PINA – A PINA یک رجیستر نیست .

    این آدرس دسترسی به مقدار فیزیکی بر روی هر یک از پایه های پورت A را ممکن می سازد .

    زمانیکه پورت A (PORTA) خوانده می شود ، داده لچ (latch) پورت A خوانده می شود و زمانی که از PINA خوانده می شود مقدار منطقی که بر روی پایه ها موجود است خوانده میشود .

    استفاده از پورت A به عنوان یک I/O عمومی دیجیتال جدول تاثیر تغییرات DDAn بر روی پایه های POTRA تمام 8 پایه موجود زمانیکه به عنوان پایه های I/O دیحیتال استفاده می شوند دارای عملکرد مساوی هستند .

    PAn ، پایۀ I/O عمومی : بیت DDAn در رجیستر DDRA مشخص کننده جهت پایه است .

    اگر DDAn یک باشد ، PAn به عنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر DDAn صفر باشد ، PAn به عنوان یک پایۀ ورودی در نظر گرفته می شود .

    اگر Port An یک باشد هنگامی که پایه به عنوان ورودی تعریف شود ، مقاومت Pull-Up فعال می شود برای خاموش کردن مقامت باید Port An صفر شود یا اینکه پایه به عنوان خروجی تعریف شود .پایه های پورت زمانی که ری ست اتفاق می افتد به حالت Tri-state می روند .

    دیگر کاربردهای پورت A پورت A به عنوان ADCهم استفاده میشود .

    اگر تعدادی از پایه های پورت A خروجی تعریف شوند ، این نکته بسیار مهم است که در زمان نمونه برداری از سیگنال آنالوگ توسط ADC ، سوئیچ نشوند .

    این کار ممکن است عملیات تبدیل ADC را نامعتبر کند.

    پورت B پورت B یک I/O دو طرفه 8 بیتی است .

    سه آدرس از مکان حافظه I/O اختصاص به PORTB دارد .

    یک آدرس برای رجیستر داده PORTB ، دومی رجیستر جهت داده DDRB و سومین پایه ورودی پورت B ، PINB است .

    آدرس پایه های ورودی پورت B فقط قابل خواندن است در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند .

    پایه های پورت دارای مقاومت Pull-Up مجزا هستند .

    بافر خروجی پورت B می تواند 20mA را Sink کند و در نتیجه LED را مستقیماً راه اندازی می کند .

    هنگامی که پایه های PB0-PB7 با مقاومت های Pull-down ، خروجی استفاده میشوند ، آنها SOURCE جریان می شوند زمانی که مقاومت های Pull-Up داخلی فعال باشند .

    رجیسترهای پورت B رجیسترهای پورت B عبارتند از : رجیسرهای داده پورت [PORT B DATA REGISTER] PORTB-B رجیسترهای جهت داده پورت [PORT B DATA DIRECTION REGISTER] DDRB-B بایـــت آدرس پایه های ورودی پورت [PORT B INPUT PINS ADDRESS] PINB-B PINB یک رجیستر نیست .

    این آدرس دسترسی به مقدار فیزیکی بر روی هر یک از پایه های پورت B را ممکن می سازد .

    زمانیکه پورت B (PORTB) خوانده می شود ، داده لچ (latch) پورت B خوانده می شود و زمانی که از PINB خوانده می شود مقدار منطقی که بر روی پایه ها موجود است خوانده میشود .

    استفاده از پورت B به عنوان یک I/O عمومی دیجیتال تمام 8 پایه موجود زمانیکه به عنوان پایه های I/O دیحیتال استفاده می شوند دارای عملکرد مساوی هستند .

    PBn ، پایۀ I/O عمومی : بیت DDBn در رجیستر DDRB مشخص کننده جهت پایه است .

    اگر DDBn یک باشد ، PBn به عنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر DDBn صفر باشد ، PBn به عنوان یک پایۀ ورودی در نظر گرفته می شود .

    اگر Port Bn یک باشد هنگامی که پایه به عنوان ورودی تعریف شود ، مقاومت Pull-Up فعال می شود برای خاموش کردن مقامت باید Port Bn صفر شود یا اینکه پایه به عنوان خروجی تعریف شود .پایه های پورت زمانی که ری ست اتفاق می افتد به حالت Tri- state می روند .

    جدول تاثیر تغییرات DDBn بر روی پایه های POTRB دیگر کاربردهای پورت B PORTB.7_SCK SCK : کلاک خروجی Master و کلاک ورودی Slave برای ارتباط SPI است .

    زمانی که SPI بعنوان Slave شکل دهی می شود این پایه با توجه به تنظیم DDB7 ورودی و در حالت Master خروجی تعریف می شود .

    PORTB.6_MISO MISO : ورودی داده Master و خروجی داده Slave که برای ارتباط SPI استفاده می شود .

    زمانی که SPI بعنوان Master شکل دهی می شود این پایه با توجه به تنظیمات DDB6 ورودی و در حالت slave بعنوان خروجی استفاده می شود .

    PORTB.6_MOSI MOSI : ورودی داده Slave و خروجی داده Master که برای ارتباط SPI استفاده می شود .

    زمانی که SPI بعنوان Master شکل دهی می شود این پایه با توجه به تنظیمات DDB5 خروجی و در حالت slave بعنوان ورودی استفاده می شود .

    PORTB.4_SS SS : زمانی که ISP به عنوان Slave شکل دهی شود PB.4 با توجه به DDB4 ورودی تعریف می شود و در Slave با Low شدن این پایه SPI فعال میشود این پایه در Master می تواند خروجی یا ورودی تعریف شود .

    PORTB.3_OC0 , AIN1 AIN1 : ورودی منفی مقایسه کننده آنالوگ است .

    OC0 : دیگر کاربرد این پایه به عنوان خروجی مُد مقایسه ای Timer/Counter0 است .

    پایه PB3 با یک کردن DDD7 می تواند برای خروجی مُد مقایسه ای Timer/Counter0 شکل دهی شود .

    PORTB.2_INT2 , AIN0 AIN0 : ورودی مثبت مقایسه کننده آنالوگ است .

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

    پایه PB2 می تواند به عنوان منبع وقفه خارجی برای میکرو (MCU) استفاده می شود .

    PORTB.1_T1 T1 : ورودی کلاک برای Timer/Counter1 است .

    PORTB.0_XCK , T0 T0 : ورودی کلاک برای Timer/Counter0 است .

    XCK : این پایه نیز می تواند به عنوان کلاک خارجی USART استفاده شود .این پایه فقط زمانی که USART در مُد آسنکرون کار میکند فعال می شود .

    پورت C پورت C یک I/O دو طرفه 8 بیتی است .

    سه آدرس از مکان حافظه I/O اختصاص به PORTC دارد .

    یک آدرس برای رجیستر داده PORTC ، دومی رجیستر جهت داده DDRC و سومین پایه ورودی پورت C ، PINC است .

    آدرس پایه های ورودی پورت C فقط قابل خواندن است در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند .

    بافر خروجی پورت C می تواند 20mA را Sink کند و در نتیجه LED را مستقیماً راه اندازی می کند .

    هنگامی که پایه های PC0-PC7 با مقاومت های Pull-down ، خروجی استفاده میشوند ، آنها SOURCE جریان می شوند زمانی که مقاومت های Pull-Up داخلی فعال باشند .

    رجیسترهای پورت C رجیسترهای پورت C عبارتند از : رجیستر داده پورت [PORT C DATA REGISTER]PORTC-C رجیستر جهت داده پورت [PORT C DATA DIRECTION REGISTER] DDRC-C بایت آدرس پایه های ورودی پورت [PORT C INPUT PINS ADDRESS] PINC-C PINC یک رجیستر نیست .

    این آدرس دسترسی به مقدار فیزیکی بر روی هر یک از پایه های پورت C را ممکن می سازد .

    زمانیکه پورت C (PORC) خوانده می شود ، داده لچ (latch) پورت C خوانده می شود و زمانی که از PINC خوانده می شود مقدار منطقی که بر روی پایه ها موجود است خوانده میشود.

    استفاده از پورت C به عنوان یک I/O عمومی دیجیتال تمام 8 پایه موجود زمانیکه به عنوان پایه های I/O دیحیتال استفاده می شوند دارای عملکرد مساوی هستند .

    PCn ، پایۀ I/O عمومی : بیت DDCn در رجیستر DDRC مشخص کننده جهت پایه است .

    اگر DDCn یک باشد ، PCn به عنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر DDCn صفر باشد ، PCn به عنوان یک پایۀ ورودی در نظر گرفته می شود .

    اگر Port Cn یک باشد هنگامی که پایه به عنوان ورودی تعریف شود ، مقاومت Pull-Up فعال می شود برای خاموش کردن مقامت باید Port Cn صفر شود یا اینکه پایه به عنوان خروجی تعریف شود .پایه های پورت زمانی که ری ست اتفاق می افتد به حالت Tri-state می روند .

  • فهرست:

    ندارد.


    منبع:

    ندارد.
     

فصل 1 - توصیف کامل پروژه ضرورت ها و نیاز ها :  در بسیاری از مدارات دیجیتالی ( میکروکنترلی ) که با برق و باطری کار می کنند با دو مشکل مواجه می باشیم : مشکل اول مربوط به عملکرد است. یعنی عملکرد نمایش LCD با ولتاژ 5 ولت است در حالی که این مدارات در هنگام استفاده از خازن پشتیبان و باطری دارای ولتاژ 6/3 تا 5 ولت هستند. مشکل دوم گرانی باطری و دشوار بودن تعویض آن است . در بعضی از ...

میکروکنترلر چیست: میکروکنترلر رو درواقع می توان یه کامپیوتر کوچولو در قالب یه چیپ برای کنترل وسایل الکترونیکی (در اینجا ربات) تلقی کرد. تفاوت میکروکنترلر با میکروپروسسور در اینه که میکروکنترلر دارای یک CPU ٫مقدار محدودی RAM ٬ ROM ٬ پورت های I/O و تایمر در درون خود می باشد در صورتی که میکروپروسسور فقط یه CPU هست و شما باید RAM, ROM ,... رو به صورت اجزای جانبی به اون متصل کنید ...

در این پروژه سعی بر این است که علاوه بر آشنایی با میکروکنترلر AVRو محیط نرم افزاری (labview) سخت افزار،به گونه ای طراحی شود که با دریافت سیگنال آنالوگ ورودی (صوت) از میکروفن ، از طریق واحدADC میکرو این سیگنال به دیجیتال تبدیل شود و با توجه به برنامه‎ای که در داخل میکرو تعبیه شده است،این اطلاعات به داخل MMC ریخته شده ومیکرو با دریافت فرمان از کامپیوتر به صورت ارتباط سریال دستور ...

آموزش ساخت ربات (میکروکنترلر) میکروکنترلر چیست: میکروکنترلر رو درواقع می توان یه کامپیوتر کوچولو در قالب یه چیپ برای کنترل وسایل الکترونیکی (در اینجا ربات) تلقی کرد. تفاوت میکروکنترلر با میکروپروسسور در اینه که میکروکنترلر دارای یک CPU ٫مقدار محدودی RAM ٬ ROM ٬ پورت های I/O و تایمر در درون خود می باشد در صورتی که میکروپروسسور فقط یه CPU هست و شما باید RAM, ROM ,... رو به صورت ...

مشخصات مدار مشخصات این دماسنج کنترلی بصورت زیر است 1- قابلیت اندازه گیری دما تا 100 درجه سانتی گراد 2- قابلیت تنظیم هشدار دهنده ، دمای بیش از حد 3- قابل استفاده در دو حالت winner , summer 4-دارای نمایشگر LCD این مدار شامل یک آی سی از خانواده میکروکنترلر (8051 ) که این آی سی AT89C51 می باشد و با برنامه میکروکنترلر 8051 پروگرم می شود و داری یک مبدل آنالوگ به دیجتال (ADC0804) که ...

مقدمه : میکروکنترلر چیست ؟ میکروکنترلر در واقع یک کامپیوتر تک تراشه ای ارزاتقیمت می­باشد. کامپیوتر تک تراشه ای بدین معنی است که کل سیستم کامپیوتر در داخل تراشه مدارمجتمع جای داده شده است.میکروکنترلری که برروی تراشه سیلیکونی ساخته میشود دارای خصوصیاتی مشابه خصوصیات کامپیوترهای شخصی استاندارد است. نخستین ویژگی میکرولنترلر دارای یک CPU (واحد پردازشگر مرکزی) حافظه RAM3 و حافظه ROM4 ...

حافظه های ATMagUlb, AVR این بخش تفاوت میان حافظه های دو، ATmegulb را توصیف  می کند در ساختار AVR  دو فضای حافظه ای، فضای حافظه ای برنامه تولیست وفضای حافظه ای اولیه وجود دارد در مجموع ATMega16  یکEEPROM برای نگهداری اطلاعات حافظه ای دارد همه فضاهای این حافظه به صورت خطی ومنظم می باشد.   سیستم REprogrammabl  حافظه فلش در برنامه نویسی حافظه ATMega16  ...

مقدمه    فصل یک در موردانواع میکروکنترلر های MEGAAVR است که سعی شده است به طور کلی توضیح داده شود . در فصل دوم شاهد توضیحاتی در مورد عملکرد پروژه ساخت (مدار الکترونیکی ، قطعات تشکیل دهنده ، برنامه مورد استفاده وتوضیحات کامل کننده است . درفصل آخر شاهد مدارات داخلی آی سی های مورد استفاده در این پروژه خواهیم بود . این مدار یک ولوم دیجیتال است که دارای دو خروجی مونو است ...

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

پیشگفتار در اوایل دهه 60 میلادی ایالات متحده در آستانه شکل گیری تکنولوژی نوینی در مهندسی برق بود. ترانزیستور که کمی پس از پایان جنگ جهانی دوم توسط سه دانشمند در آزمایشگاههای کمپانی بل ابداع شده بود، کم کم جایگزین رقیبش لامپ خلا می شد. در سال 1968 رابرت نویس و گوردون مور، دو نفر از پایه گذاران اصلی کمپانی فیرچایلد شرکت جدیدی موسوم به اینتل[1] تاسیس نمو دند. در سال 1969 یک شرکت ...

ثبت سفارش
تعداد
عنوان محصول