Giup đỡ LCD không hiển thị

vuxuan

Trứng gà
Mình có Board lập trình easyPIC mua ở thiên minh, mình đã lập trình hiển thị LCD theo tut LCD trên diễn đàn, nhưng chạy được mô phỏng thì vẫn chạy bình thường , phần cứng của Board
4 chân xuất dữ liệu: RB0 - RB3
chân RS của LCD nối với chân RB4
chân E của LCD nối với chân RB5
chân R/W của LCD nối với mass
mình đã vào file LCD.h sữa lại các chân cho đúng với phần cứng nhưng nó vẫn không hiện được, rất mong được sự giúp đỡ của mọi người!
 

2death

Cố Vấn CLB
Staff member
Mình có Board lập trình easyPIC mua ở thiên minh, mình đã lập trình hiển thị LCD theo tut LCD trên diễn đàn, nhưng chạy được mô phỏng thì vẫn chạy bình thường , phần cứng của Board
4 chân xuất dữ liệu: RB0 - RB3
chân RS của LCD nối với chân RB4
chân E của LCD nối với chân RB5
chân R/W của LCD nối với mass
mình đã vào file LCD.h sữa lại các chân cho đúng với phần cứng nhưng nó vẫn không hiện được, rất mong được sự giúp đỡ của mọi người!
Bạn post code phần lcd.h và file main.c phần có sử dụng LCD cho mọi người xem.

P/S: Trên board EasyPIC đó có biến trở nào cho LCD ko? Nếu có hãy thử vặn biến trở đó xem có hiển thị chữ ko nhé.
 

light

Thành Viên PIF
Còn nếu không nữa chak là do code của bạn có vấn đề rùi, lúc load file hex chương trình nap có báo có báo load thành công không, cái nền màu xanh ak nha, mau vàng là toi đó
 

vuxuan

Trứng gà
Bạn post code phần lcd.h và file main.c phần có sử dụng LCD cho mọi người xem.

P/S: Trên board EasyPIC đó có biến trở nào cho LCD ko? Nếu có hãy thử vặn biến trở đó xem có hiển thị chữ ko nhé.
Đây là code LCD.h và Main.c nhờ mọi người xem giúp, nhưng dùng Mikro C lập trình thì vẫn hiển thị bình thường chỉ không hiện thị khi lập trình bang Hi-tech thôi !
http://www.mediafire.com/?hpj5nvd4c70xpv7
 

light

Thành Viên PIF
bạn xài hitech c bao nhiêu vậy, 9.8 trở lên thì phải xài mấy lệnh config là

__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word
__CONFIG(BOR4V_BOR21V); //2st config. Word
 

vuxuan

Trứng gà
Mình cũng đã thử đoạn Config trên nhưng vẫn không được k biết bị lỗi gì nữa, mình dùng Hi-tech C 9.83 !
 

vuxuan

Trứng gà
Mình đã thử dùng Pic 887 và 877A vẫn không được, con Pic của mình vẫn bình thường , mình dùng Mikro C lập trình vẫn hiển thị được bình thường !
 

40903219

Trứng gà
e đang làm led cube.để gánh dòng 1 lớp e sử dụng con BJT 2N3904 nhưng khi quét lớp led sáng rất yếu...vậy e chuyển qua sử dụng con KSC2383 có thể cải thiện được không???. tra lời gắp giúp e nhá. thứ 7 này báo cáo rồi ;))
e cảm ơn trước ^^
 

Huy_Nguyen

Cố Vấn CLB
2N3904 có dòng Ic max là 200 mA
C2383 có dòng Ic max là 1A
Anh không rõ là 1 lớp cube của em gồm bao nhiêu led, và không biết phân phối thời gian sáng, tắt thế nào để có thể có giải pháp chính xác.
Trong vòng 10 led trở lại, a nghĩ là 2n3904 vẫn đáp ứng tốt, còn nhiều hơn thì nên thay bằng C2383
Em có thể kiểm tra bằng cách cho tất cả led sáng cùng 1 lúc, không quét, xem độ sáng và đo Vce trên bjt. Nếu Vce cỡ 2v trở xuống thì bjt đã bảo hòa --> muốn sáng hơn phải thay bjt lớn hơn. Còn nếu chưa thì thay bjt lớn hơn.
Về sử dụng, nếu điện áp kích vào cực B của bjt là 5V thì Rb cỡ 4,7K là vừa.
Một vài điều chia sẻ, có gì em cứ liên hệ lại forum
thân
Huy
 

40903219

Trứng gà
cube 6x6x6. nên BJT phải gánh 36 led. em đang sử dụng 2N3904 khi chỉ xuất nhập bình thường thì đèn sáng ở định. nhưng khi quét (delay 0.5ms ) thì sáng yếu. và anh cho em hỏi thêm xíu về giải thuật
+ e use 74HC595 (data serial -> parallel) để mở rộng port nên khi nhập data thì phải nhập theo từng gói dữ liệu ( a[]={0xff,0xfa.....} = 36 bit ) đã định sẵn trong mãng. nếu làm như vậy thì giải thuật rất dài vì viết theo cách thủ công. :((
Code:
void clk()
{
	sclk=0;sclk=1;//tao xung len cho sclk
	rclk=0;rclk=1;//tao xung len cho rclk
}

void xuat(int b[])	//tao ham xuat gia tri tung bit cho 74hc595 voi bien vao la mang 5
{
	oe=1;
	for(int j=4;j>=0;j--)
	{
		for(int i=0;i<8;i++)
		{
			int m=1<<i;
			int n=m&b[j];
			if(n==0)
				din=1;
			else
				din=0;
			clk();
		}
	}
	oe=0;
}
void main(void)
{
	cube_init();
	int a[]={0xff,0xff,0xff,0xff,0xff};
while(1)  							// up-down
	{
		for(int i=0;i<=5;i++)
		{
			PORTC=0x00;
			xuat(a);
			PORTC^=(1<<i);
			__delay_ms(30);
		}
		__delay_ms(100);
`		for(int i=5;i>=0;i--)
		{
			PORTC=0x00;
			xuat(a);
			PORTC^=(1<<i);
			__delay_ms(30);
		}
		__delay_ms(100);
	}
}
theo bên trên nếu e viết nhiều hiệu ứng thì code rất dài.. e viết từng hiệu ứng và nối thành 1 hiệu ứng liên tuc nhưng biên dịch k được vì code dài :((
+ cho e thêm một số ý tưởng về giải thuật nhá :). và cách quét led nhưng thế nào là tối ưu nhất
e cảm ơn nhiều ^^
 
Top