 |
:: عضو ذهبي ::
تاريخ التسجيل: 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 كما انه لا يتم حفظ اي درجات حرارة فالميموري
ارجوا منكم المساعدة لان هذا الجهاز هو مشروع تخرجي فالجامعة
|
السلام عليكم
أخي كريم أرفق لنا ملفات مشروع لنساعدك بشكل أفضل
(( ملف بروتيس + ملفات البرمجه))
|