• خونه
  • تماس با ما
  • همکاری با ما
  • حمایت مالی
آزادی حجاز
  • News
  • AVR
    • AVR Train
      • آموزش جامع AVR
      • آموزش صحیح و خوانا نوشتن کد
    • تابلو روان
    • موتور
      • موتور DC
      • موتور پله ای
      • سرو موتور
    • سنسور و ماژول
      • RFID
      • التراسونیک
      • شتاب سنج
      • رطوبت سنج
      • دماسنج
      • بلوتوث
      • اتصال AVR به کامپیوتر
      • اتصال رم به AVR
      • فرستنده گیرنده رادیویی
      • ساعت و تاریخ
      • جوی استیک
    • IC
      • IC حافظه
      • ADC
      • DS1307(ساعت)
      • BCD TO 7S
      • شیفت ریجستر
    • LCD
      • LCD گرافیکی
      • LCD کاراکتری
      • LCD رنگی
    • LED – 7S – Dot Matrix
      • LED
      • سون سگمنت(۷S)
      • دات ماتریس
    • ساعت
    • پروگرامر
    • اسیلوسکوپ
    • ولتاژ،جریان،مقاومت،فرکانس،خازن و…
      • ولت متر
      • اهم متر
    • امواج
    • کی پد(KEY PAD)
    • فوتوسل
  • ARM
    • ARM Projects
    • ARM Train
      • AT91
      • STM32
      • LPC1768
      • LPC2368
  • Arduino
    • Arduino Train
    • Arduino Projects
  • Raspberry
  • FPGA
  • PCB
    • آلتیوم
      • آموزش آلتیوم
      • پروژه آلتیوم
  • S.W
    • Codevision
    • Proteus
    • Serial Port
    • Android
    • Labview
  • Analog
  • etc
    • Components
    • Android
    • C/C++/Qt
    • OpenCV
    • QuadCopter
    • PC And Micro
    • Communication Protocols
دلیل پیشرفت سریع آلمان و ژاپن
آموزش الکترونیک ۱ آموزش سینماتیک روبات ها آموزش آردوینو در Proteus
آموزش الکترونیک ۲ آموزش رباتیک و ربات های سری آموزش Proteus - تحلیل مدار
آموزش مبانی الکترونیک آموزش میکروکنترلر STM32F1xx آموزش آردوینو - کنترل با شبکه
برنامه نویسی Raspberry Pi آموزش AVR و Codevision - مقدماتی آموزش برنامه نویسی آردوینو با متلب
کاربرد Raspberry Pi در صنعت آموزش AVR و Codevision - تکمیلی آموزش برنامه نویسی آردوینو - رباتیک
● تبلیغات دیجیتال هوشمند● آموزش های رایگان● استخدام در فرادرس
شما اینجائید:خانه » الکترونیک » ARM » پروژه میکروکنترلر ARM » آموزش پروژه محور آرم lpc1768 مبحث adc

آموزش پروژه محور آرم lpc1768 مبحث adc

ارسال شده توسط:مهدی دمیرچیلو تاریخ ارسال: 2016/12/20 در پروژه میکروکنترلر ARM 9 نظر

به نام خدا : تو این مطلب از سری مطالب پروژه آرم ، میخوام پروژه های adc میکروکنترلر lpc1768 رو قرار بدم، در مطلب دیگری، آموزش lpc1768 مبحث adc ، اومدم رجیستر ها رو توضیح مفصل دادم تا حد امکان و تو این مطلب پروژه ها رو قرار میدم براتون؛ از هر قسمت و هر حالت ممکن سعی کردم یه پروژه بنویسم و براتون قرار بدم. ( توجه، این مطلب در ۱۰ دی ماه ۹۵ بروز رسانی شده، لطفا قبل از خوندن متن، به ته مطلب برید و از قسمت مشخص شده شروع کنید به مطالعه )
آموزش پروژه محور آرم lpc1768 مبحث adc

 

آموزش مفهومی ADC میکروکنترلر LPC1768 : آموزش آرم میکروکنترلر lpc1768 جلسه ۹ adc
 
لیست توابع کتابخانه adc میکروکنترلر lpc1768 : 
تعریف و توضیح این توابع در ادامه مطلب و سر هر پروژه، هر کدوم رو که نیاز داشته باشیم، توضیحش میدم.

1
2
3
4
5
6
7
void init_adc( char Channel, char START, char StartEdge_CAP_MAT, char InterruptChannel );
unsigned long int read_adc_with_polling( char Channel );
unsigned long int read_adc_with_interrupt( char adcChannel );
int read_status_adc_channel( char Channel, char Done_Or_Overrun );
void enable_burst( void );
void disable_burst( void );
void set_start_bits( char Start );

 
فیلم تمام پروژه های زیر ( اگه فیلم پخش نشد، روی لینک زیر کلیک کنید )
تست و راه اندازی ۴ پروژه ADC میکروکنترلر LPC1768

۱) پروژه خواندن adc میکروکنترلر lpc1768 به روش Polling

شماتیک پروژه : 
پروژه خواندن adc میکروکنترلر lpc1768 با Interrupt
کد پروژه : کد نویسی به نظرم باید اینطوری باشه – پروژه رو تابع تابع کنی و در قالب کتابخونه هایی و هم پروژه اصلی یکم خلوت میشه و پیدا کردن مشکلات و راه اندازیش سریع میشه و هم این که در پروژه های دیگه میتونی این کتابخونه ها رو استفاده کنی.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<lpc17xx.h>
#include "serial.h"
#include "adc.h"
int main()
{
initialization( 9600, 0/*autoBaud_Enable*/, 0/*use_AutoBaud_Finish_Interrupt*/, _1Character/*NumberCharRxTrigger*/ );
/*
در این پروژه تبدیل رو متوقف میکنم تا هر موقع خواستم دیتا بخونم
فعالش کنم و دیتا رو بخونم و دوباره غیر فعال کنم؛ تا میکرو الکی
درگیر تبدیل ای دی سی نشه
*/
init_adc( (1<<ADC1)/*Channel*/, _ADC_START_STOP, 0/*StartEdge_CAP_MAT*/, 0/*InterruptChannel*/ );
while(1)
{
printNumberln( read_adc_with_polling(ADC1), 10 );
}
}

 

۲) پروژه خواندن adc میکروکنترلر lpc1768 با Interrupt

شماتیک پروژه : مثل پروژه ۱
کد پروژه : 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<lpc17xx.h>
#include "serial.h"
#include "adc.h"
void ADC_IRQHandler(void) {
if( read_status_adc_channel(ADC1, ADC_DONE) ) // بررسی این که تبدیل کانال۱ کامل شده یا نه
{
printNumberln( read_adc_with_interrupt(ADC1), 10 ); // sizeof(unsigned long int)
}
set_start_bits( _ADC_START_NOW ); // نکته مهم
}
int main()
{
initialization( 9600, 0/*autoBaud_Enable*/, 0/*use_AutoBaud_Finish_Interrupt*/, _1Character/*NumberCharRxTrigger*/ );
/*
در این حالت باید شروع رو بزاریم رو حالت "الان" چون
تو این روش دیگه تابع خوندن دیتا فراخونی نمیشه و از
وقفه استفاده میکنیم و هر موقع تبدیل کامل بشه وقفه رخ
میده، لذا باید در این مواقع، در هنگام پیکربندی ای دی سی
حالت شروع رو بزاریم تو مد "همین الان" تا به مشکلی بر نخوریم
*/
init_adc( (1<<ADC1)/*Channel*/, _ADC_START_NOW, 0/*StartEdge_CAP_MAT*/, (1<<ADC1)/*InterruptChannel*/ );
NVIC_EnableIRQ( ADC_IRQn ); // Enable ADC Interrupt
while(1);
}

 

۳) پروژه رخ دادن تبدیل با وقفه خارجی ۰ و خواندن adc میکروکنترلر lpc1768 با Interrupt

شماتیک پروژه : بازم مثل شماتیک پروژه ۱ هستش فقط یه دکمه به پایه p2.10 که همون پایه وقفه خارجی ۰ یا همن EINT0 هستش وصل میکنیم.
پروژه رخ دادن تبدیل با وقفه خارجی 0 و خواندن adc میکروکنترلر lpc1768 با Interrupt
کد پروژه : 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<lpc17xx.h>
#include "serial.h"
#include "adc.h"
void ADC_IRQHandler(void) {
if( read_status_adc_channel(ADC1, ADC_DONE) )
{
printNumberln( read_adc_with_interrupt(ADC1), 10 ); // sizeof(unsigned long int)
}
}
int main()
{
initialization( 9600, 0/*autoBaud_Enable*/, 0/*use_AutoBaud_Finish_Interrupt*/, _1Character/*NumberCharRxTrigger*/ );
init_adc( (1<<ADC1)/*Channel*/, _ADC_START_ON_EINT0, 0/*StartEdge_CAP_MAT*/, (1<<ADC1)/*InterruptChannel*/ );
NVIC_EnableIRQ( ADC_IRQn ); // Enable ADC Interrupt
LPC_SC->EXTINT       = (1<<0); // Clear Pending interrupts
LPC_PINCON->PINSEL4 |= (1<<20); // Configure P2.10 as EINT0
LPC_SC->EXTMODE      = (1<<0); // Configure EINTx as Edge Triggered
LPC_SC->EXTPOLAR     = (1<<0); // Configure EINTx as Rising Edge
while(1);
}

 

۴) پروژه راه اندازی مد BURST و خواندن adc میکروکنترلر lpc1768 با Interrupt

شماتیک پروژه : مثل پروژه ۱
کد پروژه :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<lpc17xx.h>
#include "serial.h"
#include "adc.h"
unsigned long int NumberConvert = 0;
void ADC_IRQHandler(void) {
if( read_status_adc_channel(ADC1, ADC_DONE) )
{
printNumberln( read_adc_with_interrupt(ADC1), 10 ); // sizeof(unsigned long int)
// متغییر تعداد تبدیل ها رو زیاد کن یه واحد - اگه
// دویست تا شد - مد خودکار رو غیر فعال کن - بعد شمارنده رو ۰ کن
NumberConvert++;
if( NumberConvert == 200 ) {
disable_burst();
NumberConvert = 0;
}
}
}
int main() {
initialization( 9600, 0/*autoBaud_Enable*/, 0/*use_AutoBaud_Finish_Interrupt*/, _1Character/*NumberCharRxTrigger*/ );
init_adc( (1<<ADC1)/*Channel*/, _ADC_START_ON_EINT0, 0/*StartEdge_CAP_MAT*/, (1<<ADC1)/*InterruptChannel*/ );
NVIC_EnableIRQ( ADC_IRQn ); // Enable ADC Interrupt
while(1) {
if( readData() == '1' ) { // Enable BURST - Convert 200 Number And Then Disable BURST
enable_burst();
}
}
}

 

دانلود ۴ پروژه ADC میکروکنترلر LPC1768 این مطلب – سرور ۱

 
توجه مهم : پایه VREF رو به ۳٫۳ ولت وصل کنید – یادم رفت تو شماتیک لحاظ کنم؛ اگه این کارو نکنید پروژه کار نمیکنه.
 
خب الان که میبینم جان داش حس توضیح دادن نیست، لذا این قسمت ماستمالی میشه – الته اینم میشه یه تمرین برا شما که پروژه های بالا رو تجزیه و تحلیل کنید، آموزش آماده، پروژه آماده، فقط یه بررسی کوچیک لازم داره…… بررسی کنید، به مشکل خوردید در خدمتیم.
 
امیدوارم این مطلب براتون مفید بوده باشه و شب یلدا خوبی در کنار خونواده داشته باشید، هزینه این مطلب یه فاتحه برا اموات خودم و خودتون و اصلاح شدن نادانها و نابودی خائنین به اسلام ( که الان هم کم نیستن عده این افراد که در لباس روحانیت دارن به اسلام و کشور خدمت میکنن و حالا چه داخل کشور و چه بیرون ).
خائنین به اسلام
فعلا یا علی
 


 
بروزرسانی در ۱۰ دی ۹۵
کتابخونه بالا رو من به کاملا ویرایش کردم، از تغییر نام ظاهری اسم توابع تا اضافه شدن یه سری توابع جدید، بر طرف کردن مشکلات توابع قبلی، جدا شدن تابع راه اندازی در مد سخت افزار و نرم افزاری، اضافه شدن قابلیت خوندن تا ۸ پایه در مد نرم افزاری یا همون مد معمولی – در زیر فایل کتابخونه و ۸ پروژه تست شده رو براتون قرار میدم؛ لذا دیگه بیخیال خوندن متون بالا بشید و از همین کتابخونه و پروژه های از این نقطه به پایین شروع کنید به مطالعه.

دانلود فایل کتابخونه و پروژه های ADC کتابخونه جدید LPC1768

لیست توابع این کتابخونه به صورت زیر هستش :

1
2
3
4
5
6
7
8
9
void adc_init_normal_mode( unsigned char Channels, unsigned char StartEdge_CAP_MAT, unsigned char InterruptChannels );
void adc_enable_this_channel( unsigned char Channel );
void adc_init_burst_mode( unsigned char Channels, unsigned char InterruptChannel );
void adc_enable_burst(void);
void adc_disable_burst(void);
unsigned long int adc_read_with_polling( unsigned char Channel );
unsigned long int adc_read_with_interrupt( unsigned char Channel );
int adc_read_status_channel( unsigned char Channel, unsigned char Done_Or_Overrun );
void adc_set_start_bits( unsigned char Start );

 
لیست پروژه ها به شرح زیر هستش ( فقط اسمشون رو قرار میدم، برا دیدن کدها، فایل بالا رو دانلود کنید )  :

Read ADC0 PIN IN Burst Mode
Read ADC0 PIN IN Burst Mode With Interrupt
Read All ADC PIN IN Burst Mode

Read ADC0 PIN IN Software Mode
Read ADC0 PIN IN Software Mode With Interrupt
Read All ADC PIN IN Software Mode

Read ADC0 PIN IN Software Mode & Start Convert on EXTI0
Read ADC0 PIN IN Software Mode With Interrupt & Start Convert on EXTI0

گروه پرسش و پاسخ الکترونیکی سروش

درباره مهدی دمیرچیلو

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

مطالب مرتبط

  • » تبدیل میکروکنترلر LPC1768 به کیبورد

  • » تبدیل میکروکنترلر LPC1768 به موس

  • » تبدیل usb به سریال مجازی در میکروکنترلر lpc1768

  • » کتابخانه راه اندازی uart میکروکنترلر lpc1768

  • » پروژه دربازکن با ماژول rdm6300 rfid

  • » پروژه راه اندازی spi میکروکنترلر lpc1768

  • » آموزش پروژه محور lpc1768 مبحث i2c master mode

  • » پروژه ساعت ds3231 با میکروکنترلر آرم lpc1768

  • » آموزش راه اندازی eeprom خارجی با lpc1768

  • » پروژه ساعت ساده قابل تنظیم با ۷segment و lpc1768

9 نظر

  1. حسین عهدی
    2017/02/06 در 18:42

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

    پاسخ
    • مهدی دمرچیلو
      2017/02/06 در 18:44

      چه عجب بعد عمری یکی نظر داد laugh

      پاسخ
    • محمد
      2018/08/30 در 15:53

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

      پاسخ
  2. ارش
    2017/04/19 در 08:34

    سلام توی خط زیرمی دونم که منتظریم ADDR_DONE==1بشه ولی این قسمت کهdataبا unsigned long int اند(and)شده…یعنی چی ؟
    while( (Data & ((unsigned long int)1<<_ADDR_DONE)) == 0 );

    پاسخ
    • مهدی دمرچیلو
      2017/04/19 در 22:20

      سلام
      خواستم بیت _ADDR_DONE ام Data رو بخونم.

      پاسخ
  3. محسن
    2017/05/18 در 11:45

    سلام مهندس من چند مدتی با هدر بردlpc1768 کار میکنم اما وقتی میخوام adc رو راه اندازی کنم ای سی من اعداد متفاوتی نشون میده میخواستم بدونم که ایا این هدر برد پایه ای برای تغذیه جدا گانه avcc دارد اگه دارد اون کدوم پایه است.ممنون اگه لطف کنین روی هدر برد نشون بدین.

    پاسخ
    • مهدی دمرچیلو
      2017/05/20 در 18:43

      سلام
      اول مطلب لینک یه مطلبی رو گزاشتم – اون مطلب آموزش ADC گفتم که یه دو تا پایه هستش که مربوطن به ولتاژ مرجع – مشکل شما اینه.

      پاسخ
      • محسن
        2017/05/23 در 10:05

        بله. نگاه کردم اما اینجور چیزی ندیدم فقط اسم این دوتا پایه روی هدر برد چیه؟

        پاسخ
        • مهدی دمرچیلو
          2017/05/23 در 11:18

          تو مطلب زیر
          http://dmf313.ir/آموزش-آرم-میکروکنترلر-lpc1768-جلسه-۹-adc/
          تو قسمت “توضیح پایه های ADC” نوشتم :

          پایه های VREFP و VREFN : ولتاژ مرجع؛ این دو پایه ولتاژ مرجع برا ADC و DAC فراهم میکنن.
          توجه : اگه از ADC یا DAC استفاده نمیکنید، باید پایه VREFP رو به ولتاژ ۳٫۳ ولت ( پایه VDD) و پایه VREFN رو به پایه VSS وصل کنید.
          پایه های VDDA و VSSA : تغذیه + و – آنالوگ؛ این پایه ها عموما باید ولتاژی برابر V DD و V SS داشته باشن، اما باید ازوله بشن برا به حداقل رسوندن نویز و خطا. ( چطوری ایزوله کنیم؟ برا این کار من دوتا مدار پیدا کردم و اولیش رو یکی از دوستان به من داد – من خودم هنوز تست نکردم )

          پاسخ

یک نظر بدهید

برای صرف‌نظر کردن از پاسخ‌گویی اینجا را کلیک کنید.

آزادی قدس نزدیک است، ان شاء الله

آزادی قدس نزدیک است، ان شاء الله

مطلب ( پروژه ) بعدی …

فعلا دارم رو USB و میکرو LPC کار میکنم، 3 تا موضوع مطرح هستش ( که تو ذهنمه هر3شو برم ) :

1) میکرو در نقش Device ( فعلا محوریت کار من این مورد هستش )
2) میکرو در نقش Host
3) میکرو در نقش OTG

 

و باز 2 تا موضوع مطرح هستش، برا راه اندازی usb دو تا راه داریم ( که تو ذهنمه هر2شو برم ) :

1) استفاده از میکروکنترلر ( فعلا محوریت کار من این مورد هستش که از LPC1768 استفاده میکنم )
2) استفاده از آیسی های مختص اینکار.

 

فعلا کارم با دیتاشیت usb تموم شده، دارم کلاس های usb رو مطالعه میکنم، کلاس cdc رو ماستمالی کردیم و یه پروژه ازش منتشر کردیم، الان رو کلاس HID ریز شدم و دارم مطالعه میکنمش و پروژه ازش میزارم تو سایت.

 

جزئیات داستان رو در لینک زیر میتویند ببینید :

آموزش جامع پروتکول USB

 

===

 

به علت اثطغبال بیش از حد دوستان از موضوع usb؛ فعلا یکم سرگرم طراحی قالب جدید سایت شدم ^_^

نظرات اخیر

  • مهدی دمیرچیلو : سلام مدار 1 : سنسور + میکرو + بلوتوث : این میکرو دیتای سنسور رو میخ ...

  • مهدی دمیرچیلو : سلام - این دو دو میکرو جدا هستند - دلیلی نداره که کد های یکی تو اون ...

  • shiva : سلام، وقتتون بخیر مرسی بابت مطالب خوبتون. من می خوام اطلاعت یه سنسو ...

  • حسین : سلام. من یه میکرو ARM LPC1549 دارم. کدهای LPC15xx که گیر نمیاد. کده ...

  • مهدی دمیرچیلو : سلام - تنها فرقی که تو دیتاشیت ds1307 بین این دو دیدم فقط این بود ک ...

جستجو

bigtheme
  1. پسورد فایل های سایت

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

  2. کانال ما در آپارات


ارائه دادن پروژه های سایت به استاد و یا فروختنشون مورد رضایت ما نیست و خلاف شرع و قانون می باشد / کپی کردن مطالب سایت ممنوعه /
  توسط بیگ تم