PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 05-09-2009, 03:33 AM   #1
0509592
Đệ tử 3 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 58
:
Cách Sử Dụng Hàm ITOA()

chào các bác!
em có chút thắc mắc! mong các bác xem xét jum`!
em lập trình trên PIC24fj128ga010 bằng CCS, sử dụng hàm itoa() để chuyển đổi số sang ký tự!
nhưng không hiểu tại sao lại không sử dụng được!
sau khi chuyển đổi, em hiện thị lên LCD thi thấy toàn ký tự lạ!
mong các bác giúp đỡ!
thanks!
Code:
//pic 24fj128ga010
#include "D:\viec lam\GPS\Chuong_trinh\04_09_2009\lai.h"
#include <lcd_8bit.c>
#include <stdlib.h>


void main()
{
      int a=12;
      char x[2];
      
      lcd_init();
      
      itoa(a,10,x);
      delay_ms(500);
      lcd_putcmd(0x83);
      lcd_putchar(x[0]);
      lcd_putchar(x[1]);

}
0509592 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-09-2009, 11:18 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Hàm itoa() chuyển đổi số nguyên thành chuỗi ký tự ASCII biểu diễn số nguyên đó. Một số module LCD ký tự có thể dùng các bảng mã khác với ASCII, bạn nên kiểm tra lại điều này.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 05:37 PM   #3
zeroxx
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 2
:
vấn đề của bạn trên là sử dùng sai cấu trức hàm itoa
char * itoa ( int value, char * str, int base );
có 1 điều mình cần hỏi về hàm này là mình có gủi dữ liệu từ PIC 16f887 lên máy tính bằng cổng COM viết bằn Hitech.
Nếu dùng hàm printf ("%i",xung); thì gửi được // xung kiểu int
Nếu dùng : itoa(xung,str_xung,2); // str kiểu char str[16];
puts(str);
thì chương trình gần như k chạy nổi.
không lẽ hàm itoa cần khả năng tính toán lớn nằm ngoài khả năng của pic 16f887
zeroxx vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 06:32 PM   #4
danghien719
Đệ tử 3 túi
 
danghien719's Avatar
 
Tham gia ngày: Jan 2010
Bài gửi: 52
:
itoa() thuộc thư viện stdlib.h

char * itoa ( int value, char * str, int base );

cách sử dụng nó :
/* itoa example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,2);
printf ("binary: %s\n",buffer);
return 0;
}

Output:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
danghien719 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 06:38 PM   #5
danghien719
Đệ tử 3 túi
 
danghien719's Avatar
 
Tham gia ngày: Jan 2010
Bài gửi: 52
:
Talking

Trích:
Nguyên văn bởi zeroxx View Post
Nếu dùng : itoa(xung,str_xung,2); // str kiểu char str[16];
puts(str);
thì chương trình gần như k chạy nổi.
không lẽ hàm itoa cần khả năng tính toán lớn nằm ngoài khả năng của pic 16f887
mình nghĩ cái này thì bạn gặp lỗi rồi.
bạn tiến hành chuyển int (tức là xung) sang nhị phân (string) với int16 mà chuyển qua nhị phân tức là có 16 số (0 hoặc 1) từ 0 đến 15 chiếm mất 16 ô nhớ
Giả sử như chiếm 16 ô nhớ cộng với kí tự NULL ở cuối chuổi nữa thì str[16] đâu có đủ.
ít nhất cũng phải str[17]. thôi thì cứ khai báo cho nó lớn lên 1 chút
thân .
danghien719 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 07:29 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam