PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   lcd với thạch anh (http://www.picvietnam.com/forum/showthread.php?t=31384)

thuynavy 04-12-2012 03:17 PM

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!

hatuan296 05-12-2012 06:35 PM

Bạn có config lại chương trình phần OSC là HS chưa ?

thuynavy 26-12-2012 04:55 PM

Trích:

Nguyên văn bởi hatuan296 (Post 79854)
Bạn có config lại chương trình phần OSC là HS chưa ?

mình làm rồi. Chắc tại con tụ của mình quá. Tụ mình đang dùng là 22p. Nhưng rất hay là lúc đầu nó làm việc không được thì chờ một lát mình nhấn reset thì nó lại hiện được. Thế mới hay.

pstin 26-12-2012 06:00 PM

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.

thuynavy 26-12-2012 09:48 PM

Trích:

Nguyên văn bởi pstin (Post 80270)
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.

Mình không dùng thư viện lcd nên không anh hưởng bởi dòng đó. Chắc là bị nhiễu ở đâu đó thôi. Nhổ ra cắm lại vẫn thế à. Chỉ nhấn reset thôi là được.

hatuan296 26-12-2012 10:52 PM

Trích:

Nguyên văn bởi thuynavy (Post 80263)
mình làm rồi. Chắc tại con tụ của mình quá. Tụ mình đang dùng là 22p. Nhưng rất hay là lúc đầu nó làm việc không được thì chờ một lát mình nhấn reset thì nó lại hiện được. Thế mới hay.

Vấn đề có thể do lỗi của LCD đó bạn , mình từng bị một cái 20X4 , lúc mới bật nguồn thì hiển thị lung tung , nhưng bấm reset thì hiển thị lại bình thường .

thuynavy 27-12-2012 11:30 AM

Trích:

Nguyên văn bởi hatuan296 (Post 80274)
Vấn đề có thể do lỗi của LCD đó bạn , mình từng bị một cái 20X4 , lúc mới bật nguồn thì hiển thị lung tung , nhưng bấm reset thì hiển thị lại bình thường .

Hi.Chắc là vậy cũng nên. LCD của bác tàu mà. Để mình làm lại cái mạch dùng tụ 33 đã rồi kết luận sau.

pstin 27-12-2012 11:45 AM

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.

thuynavy 27-12-2012 12:15 PM

Trích:

Nguyên văn bởi pstin (Post 80281)
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.

Chắc không phải lập trình đâu anh à. Tại nó chỉ hiện sai khi mà dùng thạch anh 8m trở lên thôi. Dùng thạch anh 4M thì lại bình thường. Dùng thạch anh trên 4M thì phải nhấn nút reset nó mới hiện hết cả 2 dòng chứ không nó chỉ hiện có 1 dòng phía trên thôi.

hatuan296 27-12-2012 01:53 PM

Trích:

Nguyên văn bởi thuynavy (Post 80280)
Hi.Chắc là vậy cũng nên. LCD của bác tàu mà. Để mình làm lại cái mạch dùng tụ 33 đã rồi kết luận sau.

Vấn đề không phải do tụ đâu bạn , mạch không có tụ nhưng code và linh kiện ok thì vẫn hoạt động bình thường . Sao bạn không dùng test board tháo lắp cho dễ kiểm tra ?

thuynavy 27-12-2012 03:39 PM

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ử.

thuynavy 12-01-2013 10:52 AM

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