![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Jul 2009
Bài gửi: 11
: |
Em đang viết 1 chương trình hiển thị số lên lcd, các hàm của lcd lấy của bác linhnc308. Tuy nhiên chỉ hiển thị được từ 0-255. Mong các cao thủ chỉ giáo để em hiển thị được số có 4 chữ số. Chương trình như sau:
Code:
#include <16f877a.h> #include <def_877a.h> #use delay(clock=20000000) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #include <lcd_lib_4bit.c> #define enter RA2 #define up RE0 #define down RE1 void ht(int); void main() { int16 k=0; while(ENTER) { if(!UP) {while(!UP); if(k<3000) k++;else k=0; } if(!DOWN) {while(!DOWN); if(k>0) k--;else k=3000; } lcd_init(); lcd_putchar("k="); lcd_putcmd(0x82); ht(k); } while(!ENTER); } void ht(int a) { int nghin,tram,chuc,dvi; nghin=(int)a/1000; tram=(int)(a%1000)/100; chuc=(int)(a%100)/10; dvi=(int)(a%10); lcd_putchar(nghin+48); lcd_putchar(tram+48); lcd_putchar(chuc+48); lcd_putchar(dvi+48); } thay đổi nội dung bởi: namqn, 05-03-2010 lúc 11:44 AM. Lý do: định dạng code |
![]() |
![]() |
![]() |
#2 |
Trưởng lão PIC bang
|
Bạn dùng CCS C, nên mặc định int sẽ là int8 (số nhị phân chứa trong 8-bit). Do đó, bạn chỉ có thể biểu diễn các giá trị từ 0-255.
Hàm ht() của bạn phải nhận đối số 16-bit (tức là kiểu long hay int16, trong CCS C). 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 |
![]() |
![]() |
![]() |
#3 |
Đệ tử 1 túi
Tham gia ngày: Jul 2009
Bài gửi: 11
: |
Vâng, em cũng đã thử thay đổi kiểu trong hàm ht() nhưng khi dịch ra thì lại báo lỗi. Nguyên nhân có lẽ là do các hàm trong lcd_lib_4bit đều có biến kiểu int. Có cách nào để sửa chương trình để em hiển thị được số có 4 chữ số không ạ? Cảm ơn anh nhìu. ^^
|
![]() |
![]() |
![]() |
#4 | |
Trưởng lão PIC bang
|
Trích:
Code:
void ht(long a) { int nghin,tram,chuc,dvi; nghin=(int)a/1000; tram=(int)(a%1000)/100; chuc=(int)(a%100)/10; dvi=(int)(a%10); lcd_putchar(nghin+48); lcd_putchar(tram+48); lcd_putchar(chuc+48); lcd_putchar(dvi+48); } 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 |
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Oct 2012
Bài gửi: 1
: |
Hien thi 4 chu so!
[QUOTE=namqn;33890]Bạn chỉ sửa thế này thôi thì thế nào (tôi không dùng CCS C, nên bạn sửa như dưới đây và dịch xem kết quả ra sao):
Code:
void ht(long a) { int nghin,tram,chuc,dvi; nghin=(int)a/1000; tram=(int)(a%1000)/100; chuc=(int)(a%100)/10; dvi=(int)(a%10); lcd_putchar(nghin+48); lcd_putchar(tram+48); lcd_putchar(chuc+48); lcd_putchar(dvi+48); } Bây giờ: Mình muốn chuyển chuỗi số trên lcd thành thành số thì làm thế nào! không dùng hàm " atoi" vì thư viện của mình bị lỗi! thanks |
![]() |
![]() |
![]() |
#6 | |
Nhập môn đệ tử
Tham gia ngày: Jan 2016
Nơi Cư Ngụ: ha noi
Bài gửi: 5
: |
Trích:
|
|
![]() |
![]() |
![]() |
|
|