![]() |
lcd với thạch anh
Xin chào mọi người. Mình đặng gặp rắc rối với mấy chú thạch anh cần mọi người chỉ giúp. Số là thế này. Lúc đầu mình viết chương trình cho pic hiện thị lcd (trên cả 2 dòng luôn) với thạch anh 4Mhz thì nó chạy tốt. Vì mình muốn tăng tốc cho Pic nên đã đổi thành thạch anh 20Mhz (tụ vẫn để là 22p vì mình thấy trong datasheet vẫn cho phép giá trị này) nhưng khi lắp vào chạy thì nó lại không hiện thị được dòng thứ 2. Hic. Thà rằng nó không hiện gì cả thì mình còn biết lối, đàng này nó vẫn hiện thị dược dòng trên còn dòng dưới thì không. Xin mọi người chỉ giáo!
|
Bạn có config lại chương trình phần OSC là HS chưa ?
|
Trích:
|
Trong file lcd có sử dụng #use delay(clock=4000000)
Bạn thay đổi tần số "chậm hơn" thì thạch anh 16M, 20M cũng không ảnh hưởng đến tốc độ giao tiếp với lcd. Khi mạch cắm với lcd qua bus thì lâu lâu hay bị nhiễu, kiểm tra cắm lại là được. |
Trích:
|
Trích:
|
Trích:
|
Không phải vậy đâu, chẳng qua là do lập trình thôi, khi mà con pic chạy ''chập chờn'' tức là lập trình bị sai!.
Lúc trước cái lcd tui có bị rồi, lấy tay rờ vào chân con pic thì nó mới hiển thị,... Bạn ko tin thì bạn post sơ đồ lên,...bạn nạp file lập trình khác vô là chạy ngon lành. |
Trích:
|
Trích:
|
ah. Cái đó là do mình đang dùng bộ kittest pic nên không tháo được. Hi. Làm mạch thật thì dùng chân rào cắm ic tha hồ thử.
|
Tình hình là không biết do đâu rồi. Mình đã làm mạch thật dùng thạch anh 20M, tụ 33p nhưng nó vẫn không hiện thị hết hai dòng mà phải nhấn nút reset thì nó mới hiện thị hết. hưchức. Gửi đoạn code trên ccsc cho các bác xem giúp nhé.
#include <16F877A.h> #include <def_877a.h> #device *=16 ADC=10 #use delay(clock=20000000) #FUSES HS #USE FAST_IO(D) #USE FAST_IO(b) #USE FAST_IO(c) #bit rs = portb.5 #bit rw = portb.4 #bit en = portb.3 int8 i,j; int16 x,y,f1,f2,df; //-------------------------------------------------------- void lenh_lcd(int8 malenh) { portd=malenh; rs=0; rw=0; en=1; delay_us(5); en=0; delay_ms(3); } //-------------------------------------------------------- void data_lcd(unsigned char dulieu) { portd=dulieu; rs=1; rw=0; en=1; delay_us(5); en=0; delay_ms(3); } //--------------------------------------------------- void main() { set_tris_a(0xff); set_tris_b(0x00); set_tris_d(0); set_tris_c(0xff); df=0; f1=0; f2=0; //-------------------thiet lap adc setup_ADC(ADC_clock_internal); setup_ADC_ports(RA0_RA1_RA3_ANALOG); //------------------- lenh khoi tao lcd lenh_lcd(0x38); lenh_lcd(0x0e); lenh_lcd(0x01); lenh_lcd(0x06); //--------------- lenh hien thi lcd lenh_lcd(0x80); data_lcd("U1:"); lenh_lcd(0x88); data_lcd("U2:"); delay_ms(1); lenh_lcd(0xC0); data_lcd("F1:"); delay_ms(1); lenh_lcd(0xC8); data_lcd("F2:"); delay_ms(1); |
Múi giờ GMT. Hiện tại là 09:17 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam