سلام دوستان
کل اینترنت رو زیر و رو کردم اما نمیدونم چرا اینطوریه
مشکل من ارتباط 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 نشون بده ، کد برنامه نویسیش چطوری میشه؟







oo:

;


دیدگاه