قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

العفاف
:: مهندس ::
تاريخ التسجيل: May 2012
المشاركات: 11
نشاط [ العفاف ]
قوة السمعة:0
قديم 16-06-2014, 04:28 PM المشاركة 1   
ha ارجوا المساعدة في الكود Twitter FaceBook Google+



السلام عليكم

ارجوا منكم المساعدة في تصحيح الكود حيث لدي pic 18f4520 موصل مع حساس لدرجة الحرارة عن طريق pin A0 كما ان الميكروكنترولر موصل مع mmc وقمت باستخدام برتوكول SPI بين الميكروكنترولر و mmc

الدائرة عبارة عن جهاز يقيس درجة الحرارة ومن ثم يقوم بحفظها في sd card ويعرضها على LCD

كود:
  // DAC module connections
sbit Mmc_Chip_Select at RC2_bit;
sbit SoftSpi_CLK at RC3_bit;
sbit SoftSpi_SDI at RC4_bit;
sbit SoftSpi_SDO at RC5_bit;

sbit Mmc_Chip_Select_Direction at TRISC2_bit;
sbit SoftSpi_CLK_Direction at TRISC3_bit;
sbit SoftSpi_SDI_Direction at TRISC4_bit;
sbit SoftSpi_SDO_Direction at TRISC5_bit;
// End DAC module connections

// lcd module connections
sbit LCD_EN  at RA5_bit;
sbit LCD_RS at RB3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6  at RD6_bit;
sbit LCD_D7  at RD7_bit;
sbit LCD_EN_Direction  at TRISA5_bit;
sbit LCD_RS_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction  at TRISD6_bit;
sbit LCD_D7_Direction  at TRISD7_bit;
//Temperature Variables:
char temp[6];
unsigned long adc_value, tempC;
unsigned int value;

     unsigned char filename[] = "Temp.TXT";
unsigned char error;

void _init()
{
     ADCON0=0b00000011;
      ADCON2 = 0b10111110;

  ADCON1.f4 = 1;
  //A/D Port Configuration Control bits
  ADCON1.f3 = 1; ADCON1.f2 = 1; ADCON1.f1 = 1;  ADCON1.f0 = 1;
   TRISA.f0=0;
     trisa.f4=1;
  // Initialize LCD:
    lcd_Init();
   Lcd_Cmd(_Lcd_CLEAR);       // Clear display
  Lcd_Cmd(_Lcd_CURSOR_OFF);  // Turn cursor off
 Mmc_Chip_Select_Direction = 0;             // Set CS# pin as Output
  Soft_SPI_Init();                       // Initialize Soft_SPI

}


//gets temperature
void get_temp()
{
  adc_value = ADC_Read(0);
  adc_value = adc_value*244;
  tempC = adc_value/10;
  temp[0] = (tempC/10000)  + 48;
  if(temp[0]== '0'){temp[0]=' ';}
  temp[1] = (tempC/1000) % 10 + 48;
  temp[2] = (tempC/100) % 10 + 48;
  temp[3] = '.';
  temp[4] = (tempC/10) % 10 + 48;
  temp[5] = (tempC%10) + 48;
  temp[6] =  'C';
  temp[7] =  '\0';
  Lcd_OUT(1,3 ,temp);
}


void main()
{   _init();

 SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
 Delay_us(10);

 error = MMC_Init();
 while(error == 1)
 {
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Out(1,1," CARD NOT FOUND");
  error = MMC_Init();
 }

 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Out(2,1,"CARD INITIALIZED");
 Delay_ms(100);

 MMC_Fat_Init();
 SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);

 Mmc_Fat_Assign(&filename,0xA0);


   for(;;)
      {

         get_temp();
         SPI1_Init();
         Soft_SPI_Write(temp);
         Mmc_Fat_Append();
         Mmc_Fat_Write(temp,15);
         delay_ms(500);

    }

}

عند تشغبل الكود فالبروتيس لا يظهر شي lcd كما انه لا يتم حفظ اي درجات حرارة فالميموري

ارجوا منكم المساعدة لان هذا الجهاز هو مشروع تخرجي فالجامعة

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 17-06-2014, 02:32 AM المشاركة 2   
افتراضي


السلام عليكم

ارجوا منكم المساعدة في تصحيح الكود حيث لدي pic 18f4520 موصل مع حساس لدرجة الحرارة عن طريق pin A0 كما ان الميكروكنترولر موصل مع mmc وقمت باستخدام برتوكول SPI بين الميكروكنترولر و mmc

الدائرة عبارة عن جهاز يقيس درجة الحرارة ومن ثم يقوم بحفظها في sd card ويعرضها على LCD

كود:
  // DAC module connections
sbit Mmc_Chip_Select at RC2_bit;
sbit SoftSpi_CLK at RC3_bit;
sbit SoftSpi_SDI at RC4_bit;
sbit SoftSpi_SDO at RC5_bit;

sbit Mmc_Chip_Select_Direction at TRISC2_bit;
sbit SoftSpi_CLK_Direction at TRISC3_bit;
sbit SoftSpi_SDI_Direction at TRISC4_bit;
sbit SoftSpi_SDO_Direction at TRISC5_bit;
// End DAC module connections

// lcd module connections
sbit LCD_EN  at RA5_bit;
sbit LCD_RS at RB3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6  at RD6_bit;
sbit LCD_D7  at RD7_bit;
sbit LCD_EN_Direction  at TRISA5_bit;
sbit LCD_RS_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction  at TRISD6_bit;
sbit LCD_D7_Direction  at TRISD7_bit;
//Temperature Variables:
char temp[6];
unsigned long adc_value, tempC;
unsigned int value;

     unsigned char filename[] = "Temp.TXT";
unsigned char error;

void _init()
{
     ADCON0=0b00000011;
      ADCON2 = 0b10111110;

  ADCON1.f4 = 1;
  //A/D Port Configuration Control bits
  ADCON1.f3 = 1; ADCON1.f2 = 1; ADCON1.f1 = 1;  ADCON1.f0 = 1;
   TRISA.f0=0;
     trisa.f4=1;
  // Initialize LCD:
    lcd_Init();
   Lcd_Cmd(_Lcd_CLEAR);       // Clear display
  Lcd_Cmd(_Lcd_CURSOR_OFF);  // Turn cursor off
 Mmc_Chip_Select_Direction = 0;             // Set CS# pin as Output
  Soft_SPI_Init();                       // Initialize Soft_SPI

}


//gets temperature
void get_temp()
{
  adc_value = ADC_Read(0);
  adc_value = adc_value*244;
  tempC = adc_value/10;
  temp[0] = (tempC/10000)  + 48;
  if(temp[0]== '0'){temp[0]=' ';}
  temp[1] = (tempC/1000) % 10 + 48;
  temp[2] = (tempC/100) % 10 + 48;
  temp[3] = '.';
  temp[4] = (tempC/10) % 10 + 48;
  temp[5] = (tempC%10) + 48;
  temp[6] =  'C';
  temp[7] =  '\0';
  Lcd_OUT(1,3 ,temp);
}


void main()
{   _init();

 SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
 Delay_us(10);

 error = MMC_Init();
 while(error == 1)
 {
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Out(1,1," CARD NOT FOUND");
  error = MMC_Init();
 }

 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Out(2,1,"CARD INITIALIZED");
 Delay_ms(100);

 MMC_Fat_Init();
 SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);

 Mmc_Fat_Assign(&filename,0xA0);


   for(;;)
      {

         get_temp();
         SPI1_Init();
         Soft_SPI_Write(temp);
         Mmc_Fat_Append();
         Mmc_Fat_Write(temp,15);
         delay_ms(500);

    }

}

عند تشغبل الكود فالبروتيس لا يظهر شي lcd كما انه لا يتم حفظ اي درجات حرارة فالميموري

ارجوا منكم المساعدة لان هذا الجهاز هو مشروع تخرجي فالجامعة
السلام عليكم
أخي كريم أرفق لنا ملفات مشروع لنساعدك بشكل أفضل
(( ملف بروتيس + ملفات البرمجه))

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 07:17 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025