Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Necesita urgentemente un programa en C basado en el microcontrolador 89C51 8255A para ingresar números usando el teclado matricial y la pantalla en LCD1602!

¡Necesita urgentemente un programa en C basado en el microcontrolador 89C51 8255A para ingresar números usando el teclado matricial y la pantalla en LCD1602!

#include

#include

#define?PA?XBYTE[0xF8FF]

#define?PB?XBYTE [0xF9FF]

#define?PC?XBYTE[0xF9FF]

#define?PC?XBYTE[0xFAFF]

#define?COM?XBYTE[0xFBFF ]

#define?LCD1602_RS_SET( ) PB|=1<<0

#define?LCD1602_RS_RST( ) PB&=~(1<<0)

#define?LCD1602_RW_RST() PB&=~(1<<1)

#define?LCD1602_E_SET() PB|=1<<2

##define?LCD1602_E_SET() PB |=1<<2

#define?LCD1602_E_RST() PB&=~(1<<2)

static?void?Delay_ms(unsigned?char?time)

{

unsigned?char?i;

while(time--)

{

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

}

}

}

static?void?LCD1602_WriteByte(unsigned?char? valor, bit? dataTypedef)

{

if(dataTypedef)

LCD1602_RS_SET();

más

LCD1602_RS_RST();

LCD1602_RW_RST();

LCD1602_RW_RST();

PA?=?valor;

LCD1602_E_SET() ;

Delay_ms(2);

LCD1602_E_RST();

}

estática?LCD1602_Init(void)

{

LCD1602_WriteByte(0x38,0);

Delay_ms(10);

LCD1602_WriteByte(0x01,0);

Delay_ms(10);

LCD1602_WriteByte(0x06,0);

Delay_ms(10);

LCD1602_WriteByte(0x0C,0);

Delay_ms(10);

}

static?void?LCD1602_ ShowString(unsigned?char?address,unsigned?char?*string)

{

LCD1602_WriteByte(dirección,0);

while(*cadena)

{

LCD1602_WriteByte(*st

ring++,1);

}

}

static?unsigned?char?bdata?KeyStatus=0xFF;

sbit?KEY1 ?=?KeyStatus^4;

sbit?KEY2?=?KeyStatus^5;

sbit?KEY3?=?KeyStatus^6;

sbit? KEY4?=?KeyStatus^7;

static?unsigned?char?KeyValue=48;

static?void?KEY_Testing(void)

{

p>

PC?=?0xFE;

KeyStatus?=?PC&0xFF;

if(KeyStatus!=0xFF)

{

if(!

if(!KEY1)KeyValue='7';

if(!KEY2)KeyValue='8';

if (!KEY3)KeyValue='9';

if(!KEY4)KeyValue='/';

}

¿PC? =?0xFD;

KeyStatus?=?PC&0xFF;

if(KeyStatus!=0xFF)

{

if(!KEY1 )KeyValue='4 ';

if(!KEY2) KeyValue='5';

if(!KEY3)KeyValue='6';

if(!KEY4) KeyValue='*';

}

PC?=?0xFB;

KeyStatus?=?PC&0xFF;

if(KeyStatus !=0xFF)

{

if(!KEY1)KeyValue='1';

if(!KEY2)KeyValue=' 2';

if(!KEY3)KeyValue='3';

if(! KEY4)KeyValue='-';

}

PC ?=?0xF7;

KeyStatus?=?PC&0xFF;

if(KeyStatus!=0xFF)

{

if(! KEY1) KeyValue='?' )

if(!KEY2)KeyValue='0';

if(!KEY3)KeyValue='=';

if(!KEY4)KeyValue='+';

}

}

}