|
各位大佬,你們好!這是一個(gè)無(wú)字庫(kù)屏,
我用12864顯示中文的函數(shù),改了一個(gè)顯示數(shù)字的函數(shù),(16*8的點(diǎn)陣)
產(chǎn)生了一個(gè)很奇怪的問(wèn)題,第一個(gè)數(shù)字可以正常清新顯示,橫向第二個(gè)卻無(wú)法正常顯示,
或者說(shuō)單數(shù)列能正常顯示,雙數(shù)列不能正常顯示
如下圖所示,
51hei圖片_20220529211928.png (409.41 KB, 下載次數(shù): 48)
下載附件
2022-5-29 21:21 上傳
用的顯示函數(shù)都一樣,單片機(jī)主函數(shù)如下:
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)
{
}
}
顯示函數(shù)如下:
void Lcd12864_Write8ascii(u8 x, u8 y, u8 Num)
{
u8 j, x1, x2;
y += 0xB0; //求取Y坐標(biāo)的值
for( j=0; j<16; j++) //
{
//--設(shè)置Y坐標(biāo)--//
LcdSt7565_WriteCmd(y);
x1 = (x >> 4) & 0x0F; //由于X坐標(biāo)要兩句命令,分高低4位,所以這里先取出高4位
x2 = x & 0x0F; //去低四位
//--設(shè)置X坐標(biāo)--//
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2); //低4位
if (j == 8) //由于8X16用到兩個(gè)Y坐標(biāo),當(dāng)大于等于8時(shí),切換坐標(biāo)
{
y+=1;
x-=8;
}
LcdSt7565_WriteData(ascii_1608[Num][j]);
x ++;
}
}
請(qǐng)教各位大佬,我這哪里出問(wèn)題了?
對(duì)了排除是屏幕壞的可能性,我用掃屏函數(shù)都掃過(guò),每個(gè)點(diǎn)都能點(diǎn)亮的。
|
|