Red de conocimiento informático - Computadora portátil - El microcontrolador c51 controla el programa 12864 (lenguaje c), que muestra algunas palabras o algunas imágenes simples. ¡Gracias de antemano!

El microcontrolador c51 controla el programa 12864 (lenguaje c), que muestra algunas palabras o algunas imágenes simples. ¡Gracias de antemano!

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit CS=P2^5; //señal de selección de chip

sbit SID=P2^6; //señal de datos

sbit SCLK=P2^7;

sbit RST=P2^2; //Señal de reinicio

sbit CH = P2^4; //Señal de selección en paralelo y en serie

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

* Nombre: retraso()

* Función: retraso, el tiempo de retraso es 100us * t.

* Entrada: t

* Salida: Ninguna

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

retraso nulo(unsigned int t)

{

unsigned int i,j;

for(i=0 ; i

for(j=0; j<10; j++);

}

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

* Nombre: sendbyte()

* Función: Enviar datos según el protocolo de comunicación serie del LCD

* Entrada: zdata

* Salida: Ninguna

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

void sendbyte(unsigned char zdata)

{

unsigned int i;

for(i=0; i<8; i++)

{

if((zdata << i) & 0x80)

{

SID = 1;

}

más

{

SID = 0;

}

SCLK = 0;

SCLK = 1;

}

}

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

* Nombre: write_com()

* Función: Escribir comando de puerto serie

* Entrada: cmdcode

* Salida : Ninguno

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

void write_com(código cmd de caracteres sin firmar)

{

CS = 1;

sendbyte(0xf8);

sendbyte(cmdcode & amp; 0xf0);

sendbyte ((cmdcode << 4) & 0xf0);

retraso(2);

}

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

* Nombre: write_data()

* Función: Escribir comando en serie

* Entrada: cmdcode

* Salida: Ninguna

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

void write_data(dispd char sin firmar

ata)

{

CS = 1;

sendbyte(0xfa);

sendbyte(Dispdata & 0xf0);

sendbyte((Dispdata << 4) & 0xf0);

retraso(2);

}

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

* Nombre: lcdinit()

* Función: Función de inicialización

* Entrada: cmdcode

* Salida: Ninguna

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

void lcdinit( )

{

RST = 0;

retraso(100);

RST = 1;

retraso( 20000);

write_com(0x30);

retraso(50);

write_com(0x0c);

retraso( 50) ;

}

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

* Nombre: hzkdis ()

* Función: Mostrar cadena

* Entrada: *s

* Salida: Ninguna

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

void hzkdis(código de caracteres sin firmar *s)

{

mientras (*s & gt; 0)

{

write_data(*s);

s++;

retraso(50);

}

}

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

* Nombre: Prueba()

* Función: Mostrar subfunción

* Entrada: Ninguna

* Salida: Ninguna

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

prueba nula()

{

write_com(0x03);

retraso(50);

write_com(0x81);

hzkdis(" HOT-51");

write_com(0x91);

hzkdis("Placa de desarrollo del microcontrolador");

write_com(0x89);

hzkdis(" ") ;

write_com(0x98);

hzkdis(" Dongliu Electronics ");

>}

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

* Nombre: Principal()

* Función: Función principal

* Entrada: Ninguna

* Salida: Ninguna

* Entrada de parámetros: Ninguna

* Salida de parámetros: Ninguno Ninguno

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

void Main()

{

CH = 0;

retraso(1);

lcdinit();

retraso(10) ;

while(1)

{

Prueba();

retraso(5000);

}

}