![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 2 túi
Tham gia ngày: Jan 2010
Bài gửi: 26
: |
![]() Nhờ các bác giúp e với!
Em viết chương trình quét phím hex hiển thị LCD, nhưng hiển thị bị lỗi, nhờ anh chỉnh sửa dùm em! Cám ơn các bác nhiều! Trong file em gửi có file thư viện LCD 8 bit kết nối portD, phim hex kết nối portB và có dùng ngắt portb, nếu sai gì nhờ anh chỉnh lại dùm em! Trong file có sẳn file mạch mô phỏng protues lun để hiển thị!
__________________
Càng học càng thấy ngu ra.(~.~)............... |
![]() |
![]() |
![]() |
#2 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
{ portb=1; portb=2; portb=4; portb=8; hienthi(); } bạn viết thế này thì phím không nhấn nó cũng hiển thị ra lcd.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 2 túi
Tham gia ngày: Jan 2010
Bài gửi: 26
: |
VẬY viết lại SAO?bạn chỉnh lại dùm mình đi!
__________________
Càng học càng thấy ngu ra.(~.~)............... |
![]() |
![]() |
![]() |
#4 |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
code:
Code:
//***************************************************************************** // Author : nhh // Date : 03/04/06 // Hardware: PIC16F877A //***************************************************************************** #include <16F877A.h> #include <defs_16F877A.h> #include <lcd_lib.c> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #use fast_io(b) #use fast_io(d) void hienthi(void); int a,i; const unsigned char dig[]={"0123456789abcdef"}; // ma hoa digital duoi dang mang // Chuong trinh ngat #int_RB void ngat_RB() { if((RBIF)&&(RBIE)) { { if(RB4&&RB0) a=dig[0]; } { if(RB4&&RB1) a=dig[4]; } { if(RB4&&RB2) a=dig[8]; } { if(RB4&&RB3) a=dig[12]; } //....... { if(RB5&&RB0) a=dig[1]; } { if(RB5&&RB1) a=dig[5]; } { if(RB5&&RB2) a=dig[9]; } { if(RB5&&RB3) a=dig[13]; } //........ { if(RB6&&RB0) a=dig[2]; } { if(RB6&&RB1) a=dig[6]; } { if(RB6&&RB2) a=dig[10]; } { if(RB6&&RB3) a=dig[14]; } //........ { if(RB7&&RB0) a=dig[3]; } { if(RB7&&RB1) a=dig[7]; } { if(RB7&&RB2) a=dig[11]; } { if(RB7&&RB3) a=dig[15]; } RBIF=0; //Xoa co ngat RB } hienthi(); while(bit_test(PORTB,4)) { } while(bit_test(PORTB,5)) { } while(bit_test(PORTB,6)) { } while(bit_test(PORTB,7)) { } delay_ms(1);//chong nay phim } // Chuong trinh chinh main() { set_tris_b(0b11110000); set_tris_d(0); set_tris_e(0); enable_interrupts(global); enable_interrupts(int_RB); ext_int_edge(H_to_L); portb=0; portc=0; lcd_init(); lcd_putcmd(0x01); printf(lcd_putchar,"gia tri phim:"); lcd_putcmd(0xc0); while(true) { portb=1; portb=2; portb=4; portb=8; } } void hienthi() { lcd_putcmd(0xc0); printf(lcd_putchar," "); lcd_putcmd(0xc0); lcd_putchar(a);// doc gia tri nut nhan lên man hinh LCD }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
![]() |
![]() |
![]() |
#5 |
Đệ tử 2 túi
Tham gia ngày: Jan 2010
Bài gửi: 26
: |
cảm ơn TDM nha ! có chổ chống nảy phím hơi khó hiểu!
__________________
Càng học càng thấy ngu ra.(~.~)............... |
![]() |
![]() |
![]() |
#6 |
Đệ tử 2 túi
Tham gia ngày: Jan 2010
Bài gửi: 26
: |
void hienthi()
{ lcd_putcmd(0xc0); //xóa printf(lcd_putchar," "); //xóa lcd_putcmd(0xc0); //xóa lcd_putchar(a);// doc gia tri nut nhan lên man hinh LCD } Em vừa xóa thử 3 dòng trong hienthi của tdm, thì LCD hiển thị nút nhấn nhanh hơn, nên ko bit2 3 dòng có tác dụng gì? (biết là có 1 lệnh ép con trỏ về đầu dòng) Em sửa lại code hiển thị để LCD hiển thị 11 số, void hienthi() { lcd_putchar(a);// doc gia tri nut nhan lên man hinh LCD i=i+1; if (i>12) { i=0; lcd_putcmd(0x01); printf(lcd_putchar,"gia tri phim:"); lcd_putcmd(0xc0); } } nhưng ko hiểu sao: 1/ số đầu tiên lại ko hiển thị ngay ô đầu dòng, mà hiển thị ô kế bên (khi nhập lần 2 mới đc đầu dỏng) 2/ phím nhấn có lúc lại hiển thị số double( khi nhấn 1 lần nhưng lại hiển thị liên tục 2 số, thỉnh thoảng bị )
__________________
Càng học càng thấy ngu ra.(~.~)............... |
![]() |
![]() |
![]() |
|
|