عيون العرب - ملتقى العالم العربي

العودة   عيون العرب - ملتقى العالم العربي > عيــون الأقسام العلمية > تحميل كتب مجانية, مراجع للتحميل

تحميل كتب مجانية, مراجع للتحميل كتب مجانية, كتب عربية للتحميل, كتب ألكترونية, كتب اجنبية, كتب تعليمية, مراجع عربية,كتب للتحميل, كتب للقراءة.

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #6  
قديم 09-22-2011, 04:37 PM
 
التدريب الخامس : أسس برمجة التحويل من تناظرى إلى رقمى : Analog-to-digital conversion (ADC)
الوصف :
التحويل من تناظرى لرقمى ADC ضرورى لأن الأنظمة التى تضم الميكروكونترولر تتناول القيم الرقمية بينما البيئة المحيطة الحقيقية عبارة عن إشارات تناظرية مثل درجة الحرارة والسرعة والضغط وخرج الميكروفون ...ألخ . كل هذه الإشارات تحتاج للتحويل إلى بيانات رقمية قبل علاجها بالميكروكونترولر .
سوف نتناول طريقة قراءة إشارة تناظرية خارجية باستخدام الميكروكونترولر PIC16F877 وعرض نتيجة (خرج) التحويل (عدد رقمى ) على وحدة عرض LCD . إشارة الدخل التناظرى سوف تكون جهد متغير بين 0V و 5V باستخدام مقاومة متغيرة .
تذكر بعض المعلومات النظرية المطلوبة :






  • يمتلك الميكروكونترولر PIC16F877 ضمن بنائه الداخلى محول من تناظرى لرقمى ADC ذو سعة 10-bit بثمانى قنوات كمداخل .
  • يتم التحكم فى عمل وظيفة موديول التحويل A/D module عن طريق السجلات هى : ADCON1, ADCON0
  • القنوات الثمانية التناظرية متاحة على الأطراف :
RA0, RA1, RA2, RA3, RA5, RE0, RE1, RE2 . ولها أسماء بديلة هى AN0-AN7 .
  • يتم اختيار جهد الدخل المراد تحويله من على الطرف (القناة ) الذى يتصل بوحدة (موديول) التحويل ADC عن طريق الثلاثة خانات (bit3-bit5)CHS0-CHS2 "خانات اختيار القناة" بالسجل ADCON0" سجل التحكم فى المحول AD رقم 0 ) . الوضع الافتراضى لجميع خانات هذا السجل هو أصفار وهذا يعنى أن القناة AN0 فى الوضع الافتراضى تكون متصلة بالمحول (000) ومن ثم يمكن استخدام هذه القناة دون إعدادات جديدة لهذا السجل أى أن ADCON0=0 تعنى توصيل الطرف (القناة) AN0 بموديول ADC كما فى الشكل التالى .





  • يتم التحكم فى اختيار استخدام الأطراف " تناظرى A – جهد مرجع موجب Vref+ – جهد مرجع سالب Vref- – مدخل /مخرج رقمى D " عن طريق الأربع خانات bit0-bit3 من سجل التحكم ADCON1 كما فى الشكل التالى ونلاحظ :
# الوضع الافتراضى لجميع الخانات هو أصفار (الصف الأول) نتيجة لذلك تكون جميع الأطراف الثمانية تناظرية A و يستخدم جهد المرجع الموجب Vref+ = Vdd وجهد المرجع السالب
Vref- = Vss أى 8 تناظرى وصفر جهد مرجع وهو ما يعنيه " C/R=8/0 "
# لاستخدام جميع الأطراف كمداخل / مخارج رقمية نستخدم الصف الذى يحتوى على C/R=0/0.
# استخدام الطرف AN0 فقط كمدخل تناظرى وباقى الأطراف كمداخل / مخارج رقمية نستخدم الصف الذى يحتوى على C/R=1/0 (واحد تناظرى والجهود المرجعية الداخلية Vdd وVss ) قبل الأخير وفيه الخانات الأربعة "1110" أى أن ADCON1 = 0b00001110= 0x0E تعنى اختيار الطرف AN0 فقط كطرف تناظرى وباقى الأطراف كمداخل / مخارج رقمية .





نتيجة التحويل بسعة 10-bit تحفظ فى سجلات نتيجة التحويل ADC وهى : السجل ADRESH "سجل البايت العلوى للنتيجة" والسجل ADRESL "سجل البايت السفلى للنتيجة". كل من هذين السجلين بسعة 8-bit .
الدائرة الكهربية :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #7  
قديم 09-22-2011, 04:42 PM
 
الدائرة الكهربية :
يؤخذ جهد الدخل من المقاومة المتغيرة 5K المتصلة بالجهد +5V وتوصل إلى الطرف RA0/AN0 للميكروكونترولر . يتم اختيار الجهد +5V ( Vref+ = Vdd و Vref- = Vss أى المدى 5 فولت ) لجهد المرجع لموديول المحول A/D .
نتيجة لذلك فأن المحول ADC ذو السعة 10—bit سوف يقوم بتحويل الجهد التناظرى فى المدى بين 0V و 5V إلى عدد رقمى فى المدى بين 0 و 1023 .هذا العدد هو الذى سوف يتم عرضه على وحدة LCD .

البرنامج :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #8  
قديم 09-22-2011, 04:46 PM
 
البرنامج :
يتناول البرنامج تهيئة السجلات ADCON0, ADCON1 . يستخدم الطرف RA0/AN0 كمدخل تناظرى. فى السجل ADCON0 يتم تحديد : CHS0=0 وCHS1=1 و CHS2=1 و CHS3=1أى يتم توصيل القناة AN0 داخليا . جعل الخانة VCFG=0 يؤدى إلى اختيار جهد المصدر +5V كجهد مرجع لموديول المحول A/D .
مع ذلك فإن المترجم MikroC Pro for PIC يتضمن مكتبة تحتوى على الدالة المسماة ADC_Read() والتى (فى الوضع الافتراضى) تستخدم نبضات الساعة RC الداخلية لعمل التحويل ADC .
التعليق على البرنامج :

/*
Analog-to-digital converter
Oscillator @ 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF
*/

1- التعريف بتوصيلات وحدة LCD مع الميكروكونترولر
// LCD module connections
· 6 أطراف
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

· 6 خانات تحكم
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections

2- تعريف (إعلان) الرسائل :
// Define Messages

· الرسالة الأولى على شكل مصفوفة " [] " حروف char" " باسم "message1" تنص على " ADC Value= " يليها الإعلان عن مؤشر "*" لمتغير من نوع الحروف "char" باسم temp" " وإعطاءة قيمة ابتدائية "0000" أى نص مكون من أربع أرقام (مصفوفة صف من أربع عناصر) قيمته الابتدائية هى أصفار .

char message1[] = "ADC Value= ";
char *temp = "0000";

· تعريف (إعلان) عن متغير لحفظ نتيجة التحويل ADC
unsigned int adc_Value;

3- بداية الدالة الرئيسية :

· أولا أعدادات الميكروكونترولر :
void main() {

# تهيئة الطرف RA0/AN0 كمدخل تناظرى وباقى الأطراف كمداخل / مخارج رقمية

ADCON1 = 0b00001110 ; // RA0/AN0 is analog input

# تخصيص موديول المحول داخليا للقناة AN0 .
ADCON0 = 0 ; // Analog channel select @ AN0


# تهيئة جميع أطراف المنفذ PORTB والمنفذ PORTA كمخارج فيما عدا طرف الدخل التناظرى AN0
TRISB = 0b00000000; // PORTB All Outputs
TRISA = 0b00000001; // PORTA All Outputs, Except RA0

· ثانيا إعدادات وحدة LCD :
# التهيئة
Lcd_Init(); // Initialize LCD

# مسح الشاشة
Lcd_Cmd(_LCD_CLEAR); // CLEAR display

# منع ظهور المؤشر
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off


· كتابة الرسالة الأولى(ثابتة) " " ADC Value= بدءا من الصف الأول والعامود الأول

Lcd_Out(1,1,message1); // Write message1 in 1st row

· الدخول إلى حلقة do{….}while(1) الغير منتهية وتبدأ بتنفيذ:
do {

# قراءة المدخل التناظرى من القناة AN0 بالدالة ADC_Read(0) ثم نسخ النتيجة للمتغير adc_value

adc_value = ADC_Read(0);
# قسمة محتويات المتغير adc_value على 1000للحصول على عدد الآلاف الصحيحة وإضافة العدد 48 لتحويله إلى كود أسكى ونسخ النتيجة فى الخانة 0 (خانة الآلاف – العنصر الأول من المصفوفة ) للمتغير temp
temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value
# الحصول على العدد الصحيح للمئات عن طريق : قسمة محتويات المتغير adc_value على 100 ثم إيجاد باقى قسمة النتيجة على 10 وفى النهاية يتم إضافة العدد 48 لتحويل النتيجة إلى كود أسكى ونسخ النتيجة فى الخانة 1 (خانة المئات- العنصر الثانى من المصفوفة) فى المتغير temp
temp[1] = (adc_value/100)%10 + 48;

# كرر للحصول على العدد الصحيح للعشرات ونسخه فى الخانة 2 (العشرات) للمتغير temp
temp[2] = (adc_value/10)%10 + 48;

# كرر للحصول على العدد الصحيح للآحاد ونسخه فى الخانة 3 (الآحاد) للمتغير temp
temp[3] = adc_value%10 + 48;

# ثم كتابة (إرسال) محتويات المتغير temp كنص يبدأ من الصف الأول والعامود الحادى عشر حتى يتم كتابة بعد الرسالة الأولى الثابتة مباشرة .
Lcd_Out(1,11,temp);

# التأخير 2 ثانية للسماح بمشاهدة وقراءة المعروض على الشاشة
Delay_ms(2000);

# تكرار الخطوات السابقة لتحديث قيمة الدخل التناظرى ومن ثم المعروض على الشاشة .
} while(1);
}
كود HTML:
/* PIC16F877  Analog-to-digital converter Oscillator @ 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF */ // LCD module connections sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; // End LCD module connections // Define Messages char message1[] = "ADC Value= "; char *temp = "0000"; unsigned int adc_Value; void main() {  ADCON0 = 0b00000000; // Analog channel select @ AN0 = DEFAULT ADCON1 = 0b00001110 ; // RA0/AN0 is analog input  TRISB = 0b00000000; // PORTB All Outputs  TRISA = 0b00000001; // PORTA All Outputs, Except RA0   Lcd_Init();                      // Initialize LCD  Lcd_Cmd(_LCD_CLEAR);             // CLEAR display  Lcd_Cmd(_LCD_CURSOR_OFF);        // Cursor off  Lcd_Out(1,1,message1);           // Write message1 in 1st row  do {   adc_value = ADC_Read(0);   temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value   temp[1] = (adc_value/100)%10 + 48;   temp[2] = (adc_value/10)%10 + 48;   temp[3] = adc_value%10 + 48;   Lcd_Out(1,11,temp);   Delay_ms(2000);  } while(1); }

__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #9  
قديم 09-22-2011, 04:51 PM
 
النتائج :









__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #10  
قديم 09-22-2011, 04:52 PM
 
الملفات الكاملة على الرابط


http://www.4shared.com/file/C97unxZQ/EX5-ADC-LCD1.html
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
دورات تدريبية في فن التفاوض الفعال و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتارية معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 12-04-2010 10:38 AM
دورات تدريبية فيالذكاء الفطري وتطبيقاتة و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:19 PM
دورات تدريبية في الشراء الالكتروني و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:15 PM
دورات تدريبية في القيادة الادارية الشاملة تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:12 PM


الساعة الآن 02:18 PM.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Content Relevant URLs by vBSEO
شات الشلة
Powered by: vBulletin Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
جميع الحقوق محفوظة لعيون العرب
2003 - 2011