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.
#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--) p>
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)
{ p>
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> }
}