大佬們麻煩看一下我的程式,LCD顯示八個零,遙控器怎么按都還是八個零
#include<reg52.h>
#define LCDIO P0
#define uchar unsigned char
#define uint unsigned int
sbit IR=P3^2;
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
uchar irtime0,extern0_num,bit_YD,irtime_OK;
uchar data_irtime[33];
uchar data_code[4];
void delay(uint i)
{
while(i--);
}
void LCD1602WriteCOM(unsigned int com)
{
RW=0;
RS=0;
E=0;
LCDIO=com;
delay(30);
E=1;
delay(30);
E=0;
delay(100);//??0.1ms
}
void LCD1602Write_DAT(unsigned int dat)
{
RW=0;
RS=1;
E=0;
LCDIO=dat;
delay(30);
E=1;
delay(30);
E=0;
delay(100);//??0.1ms
}
void LCD1602Init()
{
LCD1602WriteCOM(0x01);
LCD1602WriteCOM(0x06);
LCD1602WriteCOM(0x0c);
LCD1602WriteCOM(0x38);
}
/**************************************************************************************************/
void time0_Init()
{
TMOD=0X02;
TH0=0;
TL0=0;
EA=1;
ET0=1;
TR0=1;
}
void extern0_Init()
{
IT0=1;
EA=1;
EX0=1;
}
void time0() interrupt 0
{
irtime0++;
}
void extern0() interrupt 1
{
extern0_num++;
if(extern0_num==1)
{
irtime0=0;
}
else
{
if(irtime0>32)
{
bit_YD=0;
}
data_irtime[bit_YD]=irtime0;
irtime0=0;
bit_YD++;
if(bit_YD==33)
{
irtime_OK=1;
extern0_num=0;
}
}
}
void irdeal()
{
uchar i=1,value,k,a;
for(a=0;a<4;a++)
{
for(k=0;k<8;k++)
{
value>>=1;
if(data_irtime[i]>6)
{
value=https://bbs.csdn.net/topics/value|0x80;
}
i++;
}
}
data_code[a]=value;
}
void LCD1602Display()
{
uchar i;
LCD1602WriteCOM(0x80+0x40);
for(i=0;i<4;i++)
{
if(data_code[i]/16<10)
{
LCD1602Write_DAT(data_code[i]/16+0x30);
}
else
{
LCD1602Write_DAT(data_code[i]/16+0x37);
}
if(data_code[i]%16<10)
{
LCD1602Write_DAT(data_code[i]%16+0x30);
}
else
{
LCD1602Write_DAT(data_code[i]%16+0x37);
}
}
}
void main()
{
LCD1602Init();
time0_Init();
extern0_Init();
while(1)
{
if(irtime_OK==1)
{
irdeal();
irtime_OK=0;
}
LCD1602Display();
}
}
uj5u.com熱心網友回復:
這程式看得腦殼痛。提供方法:
1.單獨測驗LCD顯示程式(不要一直顯示0,換幾個不同的數字試試),看是否是LCD讀寫驅動和解碼問題;
2.如果LCD驅動沒問題,單獨測驗紅外接收程式,看是否接收成功;(可參考:可以試試加一個指示燈,例如收到紅外鍵值,燈亮0.5S,前提是燈的程式沒問題)
3.如果紅外有問題,先查看硬體問題(遙控器沒電?或者其他硬體問題),再查看解碼程式問題(可以看看成功的例程)
4.如果紅外接收沒問題,可以試試兩個程式聯調,進行程式邏輯驗證。
希望能幫到樓主。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14004.html
標籤:單片機/工控
上一篇:請問stm32 DMA2D能不能用于字符和漢字顯示?
下一篇:FPGA開發中嵌入內核的真正概念
