Code của bạn post lên vẫn chưa hoàn chỉnh, vì hàm read() vẫn còn thiếu.
Bạn không nên gọi hàm read() trong hàm lcd_putstr(). Hàm lcd_putstr() của bạn cần một đối số là một chuỗi ký tự (thực tế chỉ có con trỏ đến chuỗi ký tự được truyền đến cho hàm lcd_putstr()), do đó bạn nên dùng một chuỗi ký tự để chứa các ký tự cần hiển thị lên LCD. Giả sử bạn khai báo một chuỗi ký tự toàn cục (global) đó là
char *buf (tức là đặt khai báo này bên ngoài main() và tất cả các hàm khác), trong hàm read() bạn có thể gọi hàm sprintf() như sau để có được chuỗi ký tự biểu diễn cho giá trị float:
Code:
int a;
float b;
a = ADCBUF0;
b = ((float) a*5)/1024;
sprintf(buf, "%f", b);
Sau khi bạn gọi hàm read(), chuỗi buf sẽ chứa các ký tự biểu diễn cho giá trị float b, sẵn sàng để hiển thị trên LCD bằng hàm lcd_putstr().
Bạn nên đọc tài liệu mà tôi đã đề cập ở post trước đó, vì bạn chưa nắm rõ cú pháp của sprintf().
Thân,