PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : mplab c18 یا xc8 مسئله این است!!!



ali_invention
21-01-2013, 15:43
سلام
سلام
ميخوام با استفاده از ميکرو کنترلر pic18f452 يک عدد lcd 2*16 رو در فرکانس کاري 4MHz راه اندازي کنم. کد زير رو نوشتم. ولي متاسفانه کار نميکنه! در حالت 4 بتيي و روي پورت b راه اندازي کردم . وقتي دستورات lcd رو حذف ميکنم led روشن ميشه اما وقتي هست نه lcd چيزي نشون ميده و نه led روشن ميشه. ممنون ميشم سريع راهنمايي کنيد. کارم فوريه. ممنون.
یه سوال دیگه، آیا در حال حاضر مهاجرت به XC8 کار عاقلانه ای است یا خیر؟

#include <xc.h>
#include <delays.h>
#include "xlcd/xlcd.h"

#define _XTAL_FREQ 4000000

#pragma config OSC=HS
#pragma config OSCS=OFF
#pragma config BOR=OFF
#pragma config PWRT=OFF
#pragma config WDT=OFF

void DelayFor18TCY(void)
{
_delay(18);
}

void DelayPORXLCD()
{
_delay(5000);
_delay(5000);
_delay(5000);
}

void DelayXLCD()
{
_delay(5000);
}

int main()
{
OpenXLCD(FOUR_BIT & LINES_5X7);
while( BusyXLCD() );
putrsXLCD("Hello!");
while( BusyXLCD() );
_delay(5000);
while(1)
{

TRISDbits.RD0=0;
PORTDbits.RD0=1;
__delay_ms(50);
__delay_ms(50);
__delay_ms(50);
PORTDbits.RD0=0;
__delay_ms(50);
__delay_ms(50);
__delay_ms(50);
}

}

amin1139
21-01-2013, 21:32
دوست عزیز پورت w/R ال سی دی را حتما به میکرو وصل کن درست میشه

ali_invention
21-01-2013, 21:52
دوست عزیز پورت w/R ال سی دی را حتما به میکرو وصل کن درست میشه
ممنون از توجهتون پورت R\w به میکرو وصله.

amin1139
22-01-2013, 00:02
پس ال سی دیت خراب هست یا اشتباه وصل کردین پایه هاشو مدارتو بزار تو پروتئوس چکش کن اگه کار نکرد عکسشو بزار تا بهت بگم چیکار کنی
دوستار شما
امین

amin1139
22-01-2013, 00:03
پس ال سی دیت خراب هست یا پایه هاشو اشتباه وصل کردین. مدارتو بزار تو پروتئوس چکش کن اگه کار نکرد عکسشو بزار تا بهت بگم چیکار کنی
دوستار شما
امین

amin1139
22-01-2013, 00:05
راستی با چه کامپایلری نوشتی؟

ali_invention
22-01-2013, 00:19
پس ال سی دیت خراب هست یا پایه هاشو اشتباه وصل کردین. مدارتو بزار تو پروتئوس چکش کن اگه کار نکرد عکسشو بزار تا بهت بگم چیکار کنی
دوستار شما
امین
دوست عزیزم من تو پروتئوس دارم شبیه سازی رو انجام میدم. هنوز مدار رو با سخت افزار نبستم. هم با c18 هم با xc8 کامپایل کردم با هیچکدوم جواب نداد.
با احترام
You can see links before reply

Edison
22-01-2013, 00:49
دوست عزیزم من تو پروتئوس دارم شبیه سازی رو انجام میدم. هنوز مدار رو با سخت افزار نبستم. هم با c18 هم با xc8 کامپایل کردم با هیچکدوم جواب نداد.
با احترام
You can see links before reply

درود بر شما
دوست عزیز ال سی دی های کاراکتری ، وقتی در مد ۴ بیتی ازشون استفاده میکنید ، توسط نیبل بالایی خط دیتا ، اطلاعات رو دریافت میکنند ، خطوط دیتا رو به پایه ی دی ۴ تا دی ۷ وصل کنید

ali_invention
22-01-2013, 01:05
درود بر شما
دوست عزیز ال سی دی های کاراکتری ، وقتی در مد ۴ بیتی ازشون استفاده میکنید ، توسط نیبل بالایی خط دیتا ، اطلاعات رو دریافت میکنند ، خطوط دیتا رو به پایه ی دی ۴ تا دی ۷ وصل کنید

والا اینجا دکمه یک ملیون بار تشکر وجود نداره وگرنه براتون استفاده میکردم. خیلی ممنون الان ال سی دی دیتا میگیره ولی از کلمه Hello فقط چرا H رو نشون میده!؟

amin1139
22-01-2013, 13:37
سلام ظاهرا دوستان مشکلو حل کردن ببخشید که من دیر کردم
برای hello یک بار پنج تا دستور بنویس و هر بار یکی از حرفاشو نمایش بده .
کامپایلر برای نوشتن hello پس از ارسال هر دستور متاسفانه چک نمیکنه که ال سی دی حاضر برای ارسال هست یا نه شما باید حرف به حرف بفرستی و هر بار با while چک کنی که ال سی دی حاضر شده یا نه


while( BusyXLCD() );
putrsXLCD("H");
while( BusyXLCD() );
putrsXLCD("e");
while( BusyXLCD() );
putrsXLCD("l");
while( BusyXLCD() );
putrsXLCD("l");
while( BusyXLCD() );
putrsXLCD("o");

amin1139
22-01-2013, 13:41
مثلا:



while( BusyXLCD() );
putrsXLCD("H");
while( BusyXLCD() );
putrsXLCD("e");
while( BusyXLCD() );
putrsXLCD("l");
while( BusyXLCD() );
putrsXLCD("l");
while( BusyXLCD() );
putrsXLCD("o");
)

amin1139
22-01-2013, 13:42
while( BusyXLCD() );
putrsXLCD("H");
while( BusyXLCD() );
putrsXLCD("e");
while( BusyXLCD() );
putrsXLCD("l");
while( BusyXLCD() );
putrsXLCD("l");
while( BusyXLCD() );
putrsXLCD("o");

saber1010
25-02-2013, 18:13
ببخشید فکر می کنم adcon1=7کنید درست می شه نیازی به دستورات بالا نیست

g


#include <p18f4550.h>

#include <xlcd.h>

#include <delays.h>

#include <usart.h>

#include <stdio.h>

#include <stdlib.h>

#define delay_ms(x) Delay10KTCYx(x)

void DelayFor18TCY( void )

{

Nop();

Nop();

Nop();

Nop();

Nop();

Nop();

Nop();

Nop();

Nop();

Nop();

Nop();

Nop();

}

void DelayPORXLCD (void)

{

Delay1KTCYx(60); // Delay of 15ms

// Cycles = (TimeDelay * Fosc) / 4

// Cycles = (15ms * 16MHz) / 4

// Cycles = 60,000

return;

}

void DelayXLCD (void)

{

Delay1KTCYx(20); // Delay of 5ms

// Cycles = (TimeDelay * Fosc) / 4

// Cycles = (5ms * 16MHz) / 4

// Cycles = 20,000

return;

}

void main( void )

{

unsigned int i=500;

char str[5];

ADCON1=7;

OpenXLCD( FOUR_BIT & LINES_5X7 );

while (1){

WriteCmdXLCD(1 );

putrsXLCD("hello");

delay_ms(10);

}

}