giúp mình với
mình đang muốn hiển thị chuỗi ký tự lên lcd nhưng không được
đây là code của mình
Code:
///////////////////////////////////////////////////////////
//Hien thi ky tu ra man hinh
void lcd_display_char(int1 line, int8 pos, char ch)
{
lcd_write(0x80 + 0x40 * line + pos, WRITE_COMMAND);
lcd_write(ch, WRITE_DATA);
lcd_write(0x0c, WRITE_COMMAND); // Bo nhap nhay?
}
///////////////////////////////////////////////////////////
void lcd_display_str(int1 line, int8 posc, char str[])
{
int8 i,j;
j=strlen(str);
for (i = posc; i < j+posc ; i++)
{
lcd_display_char(line, i, str[i-posc]);
//delay_ms(1);
}
}
mình cũng dùng hàm lcd_display_char() để hiển thị chuỗi số thì hiển thị bình thường
mình không biết có lỗi gì nữa.
đây là hàm hiển thị chuỗi số của mình
///////////////////////////////////////////////////////////
void lcd_display_int16(int1 line, int8 posi, int16 x,int dauphay,int1 dau )
{
int8 i;
char str[5];
char s[6];
itoa(x,10,str);
if(dau==1)
s[0]=minus[0];//xac dinh dau
else
s[0]=pe[3];
// xu ly chuoi so
if((0<=x)&(x<10))
{
for (i = 0; i < 3 ; i++)//hien thi 3 so không dang truoc gia tri
s[i+1]=z[0];
s[4+dauphay]=str[0];//gia tri
}
if((10<=x)&(x<100))
{
for (i = 0; i < 2 ; i++)
s[i+1]=z[0];
s[3]=str[0];
s[4+dauphay]=str[1];
}
if((100<=x)&(x<1000))
{
s[1]=z[0];
s[2]=str[0];
s[3]=str[1];
s[4+dauphay]=str[2];
}
if((1000<=x)&(x<10000))
{
for (i = 0; i < 3 ; i++)
s[i+1]=str[i];
s[4+dauphay]=str[3];
}
if(dauphay==1)
s[4]=phay[0];
for (i = posi; i < posi+5+dauphay ; i++)// hien thi chuoi so
lcd_display_char(line, i, s[i-posi]);
hai hàm nay tương tự nhau
nhưng chỉ có hàm hiển thị số là hiển thị tốt còn hàm hiển thị sâu ký tự thì không hiển thị được.