⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcm-gdram.c

📁 无线解码,用12864显示解码结果,00表示0,11表示1,01表示悬空
💻 C
字号:
 /* 3.解码原理
    编码器PT2262发送的编码信号是由:地址码、数据码、同步码组成的一个完整码字,最多可以有
		12位(A0-A11)三态地址端引脚(悬空、高电平、低电平),任意组合可提供531441个地址码。
		将编码器PT2262的A8位拉高,D3拉高,D0拉高,D1拉低,其余悬空。截取一段接收信号输出波形
		如图3所示,PT2262每发射一次,至少发送4组相同编码字码。每组字码间隔(低电平)约14ms。
    将其截获波形每组字码放大,如图4所示,一组字码有12位A/D码,每个A/D位是由2个脉冲表示:
		2个窄脉冲则表示"0";2个宽脉冲表示"1";1个窄脉冲和一个宽脉冲表示"F",即地址码"悬空";
		除此之外,每组字码之间还有一个同步码隔开,所以每组字码共计有25个宽度不同的脉冲。
		窄脉冲宽为200us;宽脉冲宽为1200us;两个窄脉冲之间宽1200us;两个宽脉冲间宽200us;
		宽窄脉冲间宽为200us;在4组字码中,每组的字码间隔为4000us。因此,采用单片机软件解码时,
		只要判断出起始码,并且识别起后面的字码脉冲宽度即可。 
 4.抗干扰措施
    常用抗干扰措施,是在硬件电路中采用电源滤波、电源稳压、数字地与模拟地隔离。在设计中,
		除采用上述方法外,还根据干扰信号与有效信号波形特征异同点,采用软件识别干扰信号和有效信号,
		从而实现"抗干扰"目的。
    当遥控器不发射时,由于空气中各杂波干扰,接收模块的信号输出端仍然会有干扰信号,截获波形如图5所示。
    观察其特征,低电平最长为3000us,最短数十微秒;高电平最长500us,最短数微秒。与发射时接收到的规则
	  波形(即非有效信号)相比较,低电平为1400us的信号,是有效信号,而不是干扰信号。并将A0-A3 
		4个地址焊接到高电平上作为发射编码信号的帧前码,可解决误码率和干扰问题。 
 5.软件解码
    步骤1:单片机循环记录接收模块信号电平脉冲的长度,高低电平都记录。
    步骤2:从记录高低电平组成的波形中,找出连续8个1200?s时长的脉冲信号为特征波形段,即帧前码。
		 (A0-A3 4个地址焊接到高电平上作为发射编码信号的帧前码)
    步骤3:确认帧前码之间是否存在一个时长为14000us的低电平,如果有(则说明不是干扰码),
		将解码并储存结果,然后根据指令码执行相应控制功能。如没有,则放弃记录的数据,重复步骤1,
		直到满足条件为止。 */

#include<STC2052.h>
#include"LCM12864.h"


unsigned int k,i=0,j;
sbit DIN = P3^2;		//无线信号接收端
sbit LED = P3^7;    //驱动LED
//unsigned char tab_dotH[8]={0x80,0x40,0x20,0x10,0x00,0x00,0x00,0x00};
//unsigned char tab_dotL[8]={0x00,0x00,0x00,0x00,0x08,0x04,0x02,0x01};
bit UpDw=1; // 1:Up; 0:Down
void LedFlash()
{
	LED = 0; Delay(50);
	LED = 1; Delay(50);
}
void DrawSize()
{
	Draw0(8,25,1);
	Draw2(8,17,1);
	Draw4(8,9,1);
	Draw6(8,1,1);
	Draw8(0,25,1);
	Draw10(0,17,1);
	Draw12(0,9,1);
	Draw14(0,1,1);
}
//------------------------------------------------------------------------------
main()
{  
	Clear_Gdram();
	Draw_Half_Rectangle();
	DrawSize();
	i=8; j=30; UpDw=1;
	while(1)
  { 
		if(i==8)
		{
			Gdram_Write_Word(i,j,0xff,0xff);
			UpDw = 1; i=i+1; 
		}
		Gdram_Write_Word(i,j,0x80,0x00);
//		for(k=0;k<8;k++) Gdram_Write_Word(i,j,tab_dotH[k],tab_dotL[k]);
		if(UpDw){ j=j-1;}else{ j=j+1;}
		if((j==0)&&(UpDw))
		{
			if(i>=8){  Gdram_Write_Word(i,j,0x80,0x00); i=i-8; j=31;}
			else { Gdram_Write_Word(i,j,0xff,0xff); UpDw= 0;i=i+1;}
			if(i==8)
			{
				for(k=1;k<32;k++) Gdram_Write_Word(7,k,0x80,0x01); 
				for(k=0;k<31;k++) Gdram_Write_Word(15,k,0x80,0x01); 
				i=17;
			}
		}
		if((j==31)&&(!UpDw))
		{
			if(i<8){ Gdram_Write_Word(i,j,0x80,0x00); i=i+8; j= 0;}
			else { j=30;Gdram_Write_Word(i,j,0xff,0xff);  UpDw= 1; i=i+1; }
		}
		if(i>16)
		{
  		Delay(5000);
			Clear_Gdram();
			Draw_Half_Rectangle();
			DrawSize();
			i=8; j=30; UpDw=1;
		}
		LedFlash();                               
	}
}
//------------------------------------------------------------------------------

/*
//------------------------------------------------------------------------------
main()
{  
	Clear_Gdram();
	Draw_Half_Rectangle();
	DrawSize();
	i=8; j=30; UpDw=1;
	while(1)
  { 
		if(i==8)
		{
			Gdram_Write_Word(i,j,0xff,0xff);
			UpDw = 1; i=i+1; 
		}
		Gdram_Write_Word(i,j,0x80,0x00);
//		for(k=0;k<8;k++) Gdram_Write_Word(i,j,tab_dotH[k],tab_dotL[k]);
		if(UpDw){ j=j-1;}else{ j=j+1;}
		if((j==0)&&(UpDw))
		{
			if(i>=8){  Gdram_Write_Word(i,j,0x80,0x00); i=i-8; j=31;}
			else { Gdram_Write_Word(i,j,0xff,0xff); UpDw= 0;i=i+1;}
			if(i==8)
			{
				for(k=1;k<32;k++) Gdram_Write_Word(7,k,0x80,0x01); 
				for(k=0;k<31;k++) Gdram_Write_Word(15,k,0x80,0x01); 
				i=17;
			}
		}
		if((j==31)&&(!UpDw))
		{
			if(i<8){ Gdram_Write_Word(i,j,0x80,0x00); i=i+8; j= 0;}
			else { j=30;Gdram_Write_Word(i,j,0xff,0xff);  UpDw= 1; i=i+1; }
		}
		if(i>16)
		{
  		Delay(5000);
			Clear_Gdram();
			Draw_Half_Rectangle();
			DrawSize();
			i=8; j=30; UpDw=1;
		}
		LedFlash();                               
	}
}
//------------------------------------------------------------------------------
main()
{  
	Clear_Gdram();
	Draw_Half_Rectangle();
	DrawSize();
	i=0; j=31; UpDw=1;
	while(1)
  { 
		if(i==0)
		{
			Gdram_Write_Word(i,j,0xff,0xff);
			i=i+1; UpDw = 1;
		}
		Gdram_Write_Word(i,j,0x80,0x00);
//		for(k=0;k<8;k++) Gdram_Write_Word(i,j,tab_dotH[k],tab_dotL[k]);
		if(UpDw){ j=j-1;}else{ j=j+1;}
		if(j==0)
		{
			Gdram_Write_Word(i,j,0xff,0xff);
			i=i+1; UpDw = 0;
			if(i==8){for(k=1;k<31;k++) Gdram_Write_Word(7,k,0x80,0x01);} 
		}
		if(j==31)
		{
			Gdram_Write_Word(i,j,0xff,0xff);
			i=i+1; UpDw = 1;
		}
		if(i>8)
		{
  		Delay(5000);
			Clear_Gdram();
			Draw_Half_Rectangle();
			DrawSize();
			i=0; j=31; UpDw=1;
		}
		LedFlash();                               
	}
}

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -