این برنامه ای که شما گذاشتین همون شبیه برنامه منه
من نوشته بودم که کلیدی که به portd.1وصله اگر صفر شد portd.0رو یک کنه بعد از 100میلی ثانیه portd.0رو صفر کنه این نمی شه دوست من برنامه مشکلی نداره
این برنامه ای که شما گذاشتین همون شبیه برنامه منه
من نوشته بودم که کلیدی که به portd.1وصله اگر صفر شد portd.0رو یک کنه بعد از 100میلی ثانیه portd.0رو صفر کنه این نمی شه دوست من برنامه مشکلی نداره
جالبه شما دقت نمی کنید ، مقدار دهی به رجیستر ها از قیبل ddrx باید قبل از حلقه بی نهایت صورت بگیره
برنامه را تست کن
[CODE#include <mega8.h>
#include <delay.h>
void main ()
{
DDRD.0=1;
DDRD.1=0;
PORTD.1=1;
while (1){
if(PIND.1==0) {
PORTD.0=1;
delay_ms(100);
PORTD.0=0; }
else
PORTD.0=0;
}
}][/CODE]
ممنون دوست عزیز
فقط یه اشکال دیگه بعد از delay_ms(100)رو نمی خونه همون که PORTD.0=0رو نمی کنه!!!چرا؟؟
حالتهایی که پیش میاد این هست شما دستتو روی کلید میگذاری 100 میلی ثانیه روشنه بعد چند کلاک میکرو خاموش میشه (در حد میکروثانیه که چشم نمی بینه ) باز روشن
پس در کل همیشه روشن میبینید
شما برای این کار میتونید یه delay دیگه بعد از portd.0 =0بگذارید .
ویرایش توسط Ma3ood : 08-02-2014 در ساعت 14:12
واقعا تشکر می کنم از کمکتون حل شد
علت اینکه سوال های من ابتدایی اینکه من تازه یک هفتست که میکرورو شروع کردم کار کنم شرمنده اگه خستتون کردم
موفق باشید ، ابتدا از مثالهای خود کتاب و جزوه شروع کنید و به مرور تغییرات خودتون را اعمال کنید .
سلام
می شه توضیح بدین که( lcd_putchar(charcچطوری کار می کنه ؟؟؟
کسی نمی خواد توضیح بده؟؟؟؟
این دستور کاراکتر charc رو به lcd ارسال میکنه .
منابع زیادی در اینترنت برای زبان c و کامپایلر کدویژن وجود داره که شما میتونید از اونا برای ریسدن سریع تر به پاسخ استفاده کنید .
https://www.google.com/search?q=%D8%...B1+lcd_putchar
ممنون
یعنی چی فقط کاراکتر cرو به lcdارسال می کنه می شه یه برنامه کوچولو با این دستور بنویسین؟؟
با سلامکد:#include <mega8.h> #include <delay.h> #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> void main() { lcd_init(16); lcd_clear(); lcd_puts("m.tahere " ); }
من اگه بخوام این نوشته من حروفش با تاخیر بیاد چی کار باید بکنم الان؟؟
یعنی اول mبعد از یه مدتی نقطه و به همین ترتیب تا اخر
شما باید یه آرایه از کارکترها رو تعیین کنید.بعد بذاریدش داخل یک حلقه for و یک delay بدین تا براتون چاپش کنه.مثلا":
کد:#include <avr/io.h> #include "lcd.h" #define F_CPU 1000000UL #include <util/delay.h> int main(void) { lcd_init(LCD_DISP_ON); lcd_clrscr(); char a[8]={'m','.','t','a','h','e','r','e'}; for(int i=0;i<8;i++){ lcd_gotoxy(i,0); lcd_putc(a[i]); _delay_ms(1000); } }
باسلام
یه اشکال کوچولو می شه قسمت forرو تحلیل کنید ؟؟
مگه lcd_putcharفقط یه کاراکتر نشون نمی داد؟؟
]همون کدی که اقای ERSA قرار دادن کاری که شما میخواین رو انجام. میده.
تو این حلقه ابتدا باید رشته شما حرف به حرف در یه آرایه ذخیره بشه بعد شما میاین یه حلقه مینویسین که 0-7 رو میشماره و هر بار خونه I ام آرایه رو تو ستونi ام نشون میده به بعد هم یه تاخیر ایجاد میکنه. به همین راحتی.
موفق باشید.
این برنامه چشه کهتا tabasoomtzرو خوب می نویسه بعد که می خوام از اخر کلمه به کامه پاک بشه اون کلمرو پاک می کنه اما tarah:اصلا پاک نمی کنه؟؟؟کد:void main() { int i; char b[7]={'t','a','r','a','h',':'}; char a[11]={'t','a','b','a','s','o','o','m','t','z'}; lcd_init(16); lcd_clear(); while(1){ for (i=0;i<7;i++){ lcd_gotoxy(i,0); lcd_putchar(b[i]); delay_ms(100);} for(i=0;i<11;i++){ lcd_gotoxy(i,1); lcd_putchar(a[i]); delay_ms(100); } for (i=0;i<=11;i++){ lcd_gotoxy(11-i,1); lcd_putchar(' '); delay_ms(100); } for(i=0;i<7;i++);{ lcd_gotoxy(7-i,0); lcd_putchar(' '); delay_ms(100); } } }
سلام
دوستان می شه بگین مشکل این برنامه کجاشه که m.tahereرو در اخر پاک می کنه اماtarahرو پاک نمی کنه؟؟؟ تورو خدا بگین
کد:void main() { int i; char b[7]={'t','a','r','a','h',':'}; char a[11]={'m','.','t','a','h','e','r',',e'}; lcd_init(16); lcd_clear(); for (i=0;i<7;i++){ lcd_gotoxy(i,0); lcd_putchar(b[i]); delay_ms(100);} for(i=0;i<11;i++){ lcd_gotoxy(i,1); lcd_putchar(a[i]); delay_ms(100); } for(i=0;i<=11;i++){ lcd_gotoxy(11-i,1); lcd_putchar(' '); delay_ms(100);} for(i=0;i<=7;i++);{ lcd_gotoxy(7-i,0); lcd_putchar(' '); delay_ms(100); }
کسی جوابی نداره؟؟
دوست عزیز شما for اخری رو که برای پاک کردن طراح گذاشتین رو بستین. نباید بعدش سمیکالن بزارین.
موفق باشید