Red de conocimiento informático - Problemas con los teléfonos móviles - controlador de puerto paralelo stm32 12864, ¿podría alguien decirme dónde me equivoqué en mi programa? La compilación pasó, pero no apareció en la pantalla durante dos días enteros.

controlador de puerto paralelo stm32 12864, ¿podría alguien decirme dónde me equivoqué en mi programa? La compilación pasó, pero no apareció en la pantalla durante dos días enteros.

Tengo 51 programas como referencia.

#include "lcd12864.h"

#include "ziku.h"

#include lt;string.hgt;

retraso vacío estático (uint j) // retraso de tiempo

{

uchar i

for(; j!=0; j--)

for(i=0; ilt; 100; i

}

vacío ocupado(vacío)

{

uchar i;

for(i=0; ilt; 50; i )

_nop_()

}

void wdata(uchar wdata)

{

ocupado(); //indicador de ocupado

LCD_RW=0;

LCD_DI= 1;

P0=wdatos;

LCD_EN=0;

LCD_EN=1;

LCD_EN=0;

}

void wcode(uchar wcode)

{

ocupado();

LCD_RW=0;

LCD_DI=0;

P0=wcode;

LCD_EN=0;

LCD_EN=1; 0;

}

void subinit()

{

retraso(10); 0xc0); //Establece la línea inicial de la pantalla de visualización

}

//Establece la posición de visualización

void setxy(uchar x, uchar y)

{

if ((ygt;=0)amp;(ylt;=63))

{<

LCD_CSA= 0;

LCD_CSB=1

}

más //si (ylt;=127)

{

LCD_CSA=1;

LCD_CSB=0

}

código w( 0x40|(y64)); (0xb8| x);

P0=0xff;

}

void wdram(uchar x, uchar y, uchar dd)

{

setxy(x, y);

wdata(dd);

P0=0xff

LCD_CSA=1;

LCD_CSB=1;

}

//Restablecer.

void Lcd_RST(void)

{

//rst=0

LCD_REST=0

retraso(50);

LCD_REST=1;

Lcd_Clear(0, 7, 0, 128);

wcode(0x3f); Mostrar

}

Lcd_Disp_OneNum(x, y, ch[1], disp_mode);

Lcd_Disp_OneNum(x, y 8, ch[0], disp_mode ) );

}

//***************************** ** * ************************

//Mostrar tres dígitos.

void Disp_3num(uchar x ,uchar y , uint num, uchar disp_mode)

{

uchar ch[2];

ch[0]=num/100;

ch[1]=num100;

if(ch[0])

Lcd_Disp_OneNum(x, y, ch[0], disp_mode

);

else

Lcd_Disp_String(x, y, " ", disp_mode

Disp_2num(x, y 8, ch[1], disp_mode); p>}

//*************************************** *** ************

// Muestra cuatro dígitos.

void Disp_4num(uchar x, uchar y, uint num, uchar disp_mode)

{

uchar ch[4],

<; p> tmp=núm/100;

ch[0]=tmp/10;

ch[1]=tmp10;

tmp=núm100; /p>

canal[2]=tmp/10;

canal[3]=tmp10;

Lcd_Disp_OneNum(x, y, canal[0], disp_mode);

Lcd _Disp_OneNum(x, y 8, canal[1], disp_mode

Lcd_Disp_OneNum(x, y 16, canal[2], disp_mode); p> Lcd_Disp_OneNum(x, y 24, ch[3], disp_mode).

}

void Lcd_DispIco2(uchar x, uchar y, uchar *pIco)//mostrar el viejo Ken icono

{

uchar i, j;

for(i=0; ilt; 4; i)

{

for(j=0; jlt; 32; j )

{

wdram(x i, y j, *pIco); ;

}

}

}

//****************** ** ************* ****************************

// Mostrar varios dígitos. Ejecute Disp_modeamp; 0x10==1 mostrará cada bit; de lo contrario, la posición mayor que 0 no se mostrará.

void Disp_NumGB16(uchar x, uchar y, ulong Data, uchar num, uchar disp_mode)

{

uchar idata ch=0, i, tmp;

for(i=0; ilt.num; i )

{

tmp=Datos10

Datos/=10;

if((disp_modeamp;0x10)||tmpgt;0|||Datagt;0||numlt;=2)

Lcd_Disp_OneNum(x, y (num-i- 1 )*8, tmp, disp_mode10);

else

Lcd_Disp_String(x, y (num-i-1)*8, " ", disp_mode10); p> }

}