各位大佬,你們好!這是一個無字庫屏,
我用12864顯示中文的函數,改了一個顯示數字的函數,(16*8的點陣)
產生了一個很奇怪的問題,第一個數字可以正常清新顯示,橫向第二個卻無法正常顯示,
或者說單數列能正常顯示,雙數列不能正常顯示
如下圖所示,
用的顯示函數都一樣,單片機主函數如下:
void main()
{
u8 i = 128;
Lcd12864_Init(); //初始化12864屏
Lcd12864_ClearScreen(); //清屏
Lcd12864_Write8ascii(0, 0, 16); //顯示0
Lcd12864_Write8ascii(8, 0, 16); //顯示0,不正常
Lcd12864_Write8ascii(0, 2, 17); //1
Lcd12864_Write8ascii(8, 2, 17); //顯示1,不正常
Lcd12864_Write8ascii(0, 4, 18); //2
Lcd12864_Write8ascii(8, 4, 18); //不正常
Lcd12864_Write8ascii(0, 6, 19); //3
Lcd12864_Write8ascii(8, 6, 19); //不正常
Lcd12864_Write8ascii(16, 0, 20); //4
Lcd12864_Write8ascii(24, 0, 20);
Lcd12864_Write8ascii(16, 2, 21); //5
Lcd12864_Write8ascii(24, 2, 21);
Lcd12864_Write8ascii(16, 4, 22); //6
Lcd12864_Write8ascii(24, 4, 22);
Lcd12864_Write8ascii(16, 6, 23); //7
Lcd12864_Write8ascii(24, 6, 23);
Lcd12864_Write8ascii(32, 0, 24); //8
Lcd12864_Write8ascii(40, 0, 24);
Lcd12864_Write8ascii(32, 4, 25); //9
Lcd12864_Write8ascii(40, 4, 25);
while (1)
{
}
}
顯示函數如下:
void Lcd12864_Write8ascii(u8 x, u8 y, u8 Num)
{
u8 j, x1, x2;
y += 0xB0; //求取Y坐標的值
for( j=0; j<16; j++) //
{
//--設置Y坐標--//
LcdSt7565_WriteCmd(y);
x1 = (x >> 4) & 0x0F; //由于X坐標要兩句命令,分高低4位,所以這里先取出高4位
x2 = x & 0x0F; //去低四位
//--設置X坐標--//
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2); //低4位
if (j == 8) //由于8X16用到兩個Y坐標,當大于等于8時,切換坐標
{
y+=1;
x-=8;
}
LcdSt7565_WriteData(ascii_1608[Num][j]);
x ++;
}
}
請教各位大佬,我這哪里出問題了?
對了排除是屏幕壞的可能性,我用掃屏函數都掃過,每個點都能點亮的。
|