سلام دوستان
کل اینترنت رو زیر و رو کردم اما نمیدونم چرا اینطوریه
مشکل من ارتباط usart بین دو میکرو هستش وقتی یه رشته به عنوان مثال کلمه kavosh رو میفرستم ، ارتباط بر قرار میشه ، دیتا میره ، اما رو lcd کارکتر های عجیب غریب نشون میده ، چند بار امتحان کردم اما نشد ولی توی پروتوس همه چیز صحیح کار میکنه
اومدم کار رو ساده تر کردم، و با دستور putchar(a) یه ارتباط برقرار کردم ، اما اونور معادل اسکی رو نشون داد
کل مقاله های در مورد usart رو خوندم اما به نتیجه ای نرسیدم
این کد فرستنده:
کل اینترنت رو زیر و رو کردم اما نمیدونم چرا اینطوریه
مشکل من ارتباط usart بین دو میکرو هستش وقتی یه رشته به عنوان مثال کلمه kavosh رو میفرستم ، ارتباط بر قرار میشه ، دیتا میره ، اما رو lcd کارکتر های عجیب غریب نشون میده ، چند بار امتحان کردم اما نشد ولی توی پروتوس همه چیز صحیح کار میکنه
اومدم کار رو ساده تر کردم، و با دستور putchar(a) یه ارتباط برقرار کردم ، اما اونور معادل اسکی رو نشون داد
کل مقاله های در مورد usart رو خوندم اما به نتیجه ای نرسیدم
این کد فرستنده:
کد:
#include <mega16.h> #include <delay.h> #include <stdio.h> #define xtal 8000000 void main(void) { UCSRA=0x00; UCSRB=0x08; // USART Transmitter: On UCSRC=0x86; //8 Data, 1 Stop, No Parity UBRRH=0x00; UBRRL=0x33; // USART Baud rate: 9600 delay_ms(1000); putsf(" Kavosh "); while (1); }
اینم کد گیرنده:
کد:
#include <mega16.h> #include <stdio.h> #include <lcd.h> #define xtal 8000000 #asm .equ __lcd_port=0x1B ;PORTA #endasm char a[10]; void main(void) { UCSRA=0x00; UCSRB=0x10; // USART Receiver: On UCSRC=0x86; //8 Data, 1 Stop, No Parity UBRRH=0x00; UBRRL=0x33; // USART Baud rate: 9600 lcd_init(16); lcd_clear(); lcd_putsf("Waiting..."); gets(a,10); lcd_clear(); lcd_puts(a); while(1); }
سوال دومم هم اینه که اگه بخوام یه عدد اعشاری مثل دمای خونده شده از ds18b20 رو بستم برای میکروی دوم و میکرو روی lcd نشون بده ، کد برنامه نویسیش چطوری میشه؟
دیدگاه