پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)
سلام
من برنامه شما را تست کردم (توی پروتئوس) ، مشکلی نداشت.
من فقط یک کمی تغییرات توی کد دادم (خیلی جزئی)
این کد کامپایل شده با کدویژن نسخه 2.05.3 است (میتونی از سایت تکنو الکترو دانلود کنید)
شما تاخیری که بین نمایش ها داده بودید 50 میلی ثانیه بود
مشکل مربوط به همونه :agree:
http://www.uplooder.net/cgi-bin/dl.c...9439a563e58fd7
موفق باشید
سلام
من برنامه شما را تست کردم (توی پروتئوس) ، مشکلی نداشت.
من فقط یک کمی تغییرات توی کد دادم (خیلی جزئی)
این کد کامپایل شده با کدویژن نسخه 2.05.3 است (میتونی از سایت تکنو الکترو دانلود کنید)
کد:
#include <mega8.h>
#include <delay.h>
#include <1wire.h>
#include <ds18b20.h>
#include <i2c.h>
#include <ds1307.h>
#define DATA PORTD
#define LE PORTC
unsigned char hour,minute,second;
unsigned int j,temp;
const unsigned char adad[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F,0x63,0x39};
unsigned char data[4];
void main(void)
{
DDRC = 0b00001111;
DDRD = 0b01111111;
i2c_init();
rtc_init(0,0,0);
w1_init();
while(1)
{
//Show Time ----------------------------------------------------------------------------
rtc_get_time(&hour,&minute,&second);
data[0]=adad[hour/10];
data[1]=adad[hour%10];
data[2]=adad[minute/10];
data[3]=adad[minute%10];
for(j=0;j<4;j++)
{
LE = 0x00;
DATA = data[j];
LE = 0x01 << j;
delay_us(100);
LE = 0x00;
}
delay_ms(1000);
// Show Temp ---------------------------------------------------------------------------
temp = ds18b20_temperature(0);
data[0]=adad[temp/10];
data[1]=adad[temp%10];
data[2]=adad[10];
data[3]=adad[11];
for(j=0;j<4;j++)
{
LE = 0x00;
DATA = data[j];
LE = 0x01 <<j;
delay_us(100);
LE = 0x00;
}
delay_ms(1000);
}
}
مشکل مربوط به همونه :agree:http://www.uplooder.net/cgi-bin/dl.c...9439a563e58fd7
موفق باشید
















دیدگاه