找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4094|回復: 3
收起左側

單片機+LCD12864紅外波形顯示程序與原理圖

  [復制鏈接]
ID:952486 發(fā)表于 2021-7-13 14:53 | 顯示全部樓層 |閱讀模式
制作出來的實物圖如下:
PIC100623234819.jpg PIC100623234510_副本.jpg 流程圖.jpg PIC100623234510_副本.jpg

電路原理圖如下:
51hei.png

單片機源程序如下:
uchar IRcode[6];                        //48位的鍵代碼
uchar Total;                            //接收到的計數(shù)
#define IRMAX 108
uint  xdata IRcodeTime[IRMAX];         
uchar xdata IRgraph[16];
uchar xdata IRgrapl[16];  
uint  xdata DispTime[2];                     
uchar ST;                              
sbit  IRsignal=P3^2;


//采用定時中斷計時。當外部中斷電平由高變低時中斷響應,讀取定時器的時間值并保存,//然后等待外部中斷電平變高,再讀取定時器的值并保存。如此循環(huán)。直到定時器溢出3次
//后(>180ms)則本次接收結束。通過設定的參數(shù),對本次接收到的時間進行分析解碼。

void IR_ISR(void) interrupt 0 using 1
{               
   TR0=0;
   if(Total<IRMAX)                     //取低電平時間
   IRcodeTime[Total++]= TH0*256+TL0;
   TH0 = 0;
   TL0 = 0;
   TR0=1;
   while(!IRsignal);                   //等待電平變高                    
   TR0=0;
   if(Total<IRMAX)                     //取高電平時間
   IRcodeTime[Total++]= TH0*256+TL0;
   TH0 = 0;
   TL0 = 0;
   TR0=1;
        TR2=0;
}

void Timer0_ISR() interrupt 1 using 3  
{
   if(++ST>3)  //延時大于180ms接收停止結束
   {
      TR0=0;
      TH0=0x00;
      TL0=0x00;
                TR2=1;
   }
}




//IRgraph IRgraplg兩數(shù)組的一位對應一個像素點,高電平為顯示,低電平不顯示
void Time_Graph(void)  //時間換波圖形
{
uchar i,j,or;
uint mult;   
  if(Grp.Mult)         //Grp.Mult 為顯示比例
        mult=Grp.Mult * 50;
  else
        mult=10;
  for(i=Grp.Max;i<IRMAX;i++)
  {
       IRcodeTime[ i]=0;
  }
  if(Grp.Wab>(Grp.Max>>1))
                  Grp.Wab=0;
  or=Grp.Wab * 2 + 1;
  for(i = 0; i < 16; i++)  
  {
     IRgraph[ i]=0x00;
          IRgrapl[ i]=0x00;
  }
  DispTime[0]=IRcodeTime[or];    //本次顯示波形的起始時間
  DispTime[1]=IRcodeTime[or+1];
  for(i = 0;i < 128;)
  {
        if(Grp.Max > or)
                         j = IRcodeTime[or++] / mult;         
        else
             break;
                if(j<2)j = 2;
                while(j-- && i<128)
                {
                    IRgraph[i / 8] |= 0x80 >> (i % 8);
                      i++;
                }
                if(i < 128)
                    IRgraph[i / 8] |= 0x80 >> (i % 8);
                if(Grp.Max>or)
                         j = IRcodeTime[or++]  / mult;
        else
             break;         
                if(j<2)j = 2;
                while(j-- && i<128)
                {
                    IRgrapl[i / 8] |= 0x80 >> (i % 8);
                      i++;
                }
                 if(i < 128)
               IRgrapl[i / 8] |= 0x80 >> (i % 8);  
  }
  IRgrapl[0] |= 0x80;
  for(i=127;i>0;i--)        //沒顯示的部分全顯示低
  {
    if(!(IRgraph[i / 8] & (0x80 >> (i % 8))))
              IRgrapl[i / 8] |= 0x80 >> (i % 8);
         else
         {
              if(i!=127)IRgrapl[i / 8] |= 0x80 >> (i % 8);
                        break;
         }
  }
}

全部資料51hei下載地址:
源程序.rar (98.76 KB, 下載次數(shù): 87)
原理圖.7z (39.21 KB, 下載次數(shù): 58)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:635039 發(fā)表于 2021-9-10 11:26 | 顯示全部樓層
請問一下12864用的是ST7920嗎,為什么我把程序寫進出沒有顯示
回復

使用道具 舉報

ID:796012 發(fā)表于 2023-3-5 15:02 | 顯示全部樓層
winsin 發(fā)表于 2021-9-10 11:26
請問一下12864用的是ST7920嗎,為什么我把程序寫進出沒有顯示

有10個警告不知道是什么
回復

使用道具 舉報

ID:1065325 發(fā)表于 2023-3-5 22:01 | 顯示全部樓層
這個是用ad畫的嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表