您当前的位置:五五电子网电子知识单片机-工控设备51单片机lcd12864显示遥控键值读取程序 正文
lcd12864显示遥控键值读取程序

lcd12864显示遥控键值读取程序

点击数:7197 次   录入时间:03-04 11:45:41   整理:http://www.55dianzi.com   51单片机
       i++;
     }
    lcd_pos(1,0);             //设置显示位置为第二行的第1个字符
     i = 0;
    while(dis2[i] != ’\0’)
     {
       lcd_wdat(dis2[i]);      //显示字符
       i++;
     }
      lcd_pos(2,0);             //设置显示位置为第三行的第1个字符
     i = 0;
    while(dis3[i] != ’\0’)
     {
       lcd_wdat(dis3[i]);      //显示字符
       i++;
     }
     lcd_pos(3,0);             //设置显示位置为第四行的第1个字符
     i = 0;
    while(dis4[i] != ’\0’)
     {
       lcd_wdat(dis4[i]);      //显示字符
       i++;
     }
     while(1);
}
/*********************************************************/
/*                                                         */
/* INT0外部中断子程序                                     */
/*                                                       */
/*********************************************************/
void IR_IN() interrupt 0 using 0   
{
  uchar j,k,N=0;
     EX0 = 0;   
     delay0(15);
     if (IRIN==1) 
     { EX0 =1;
       return;
      } 
                         //确认IR信号出现
  while (!IRIN)           //等IR变为高电平,跳过9ms的前导低电平信号。
    {delay0(1);}

 for (j=0;j<4;j++)         //收集四组数据
 { 
  for (k=0;k<8;k++)        //每组数据有8位
  {
    while (IRIN);       //等IR变为低电平,跳过4.5ms的前导高电平信号。
    while (!IRIN);      //等IR变为高电平
    while (IRIN)        //计算IR高电平时长
      {
        delay0(1);
        N++;           
       if (N>=30)
        { EX0=1;
          return;}            //0.14ms计数过长自动离开。
      }                       //高电平计数完毕                
     IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0”
     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //数据最高位补“1”
     N=0;
   }//end for k
 }//end for j
     if (IRCOM[2]!=~IRCOM[3])
   { EX0=1;
     return; }

     IRDIS[0]=IRCOM[2]&0x0F;     //取键码的低四位
     IRDIS[1]=IRCOM[2]>>4;  //取键码的高四位,右移4次,高四位变为低四位
     dataconv();
     lcd_pos(2,5);             
     lcd_wdat(IRDIS[1]);        //第一位数显示 
     lcd_pos(2,6);             
     lcd_wdat(IRDIS[0]);        //第二位数显示

     IRDIS[0]=IRCOM[3]&0x0F;     //取键码的低四位
     IRDIS[1]=IRCOM[3]>>4;  //取键码的高四位,右移4次,高四位变为低四位
     dataconv();
     lcd_pos(3,5);             
     lcd_wdat(IRDIS[1]);        //第一位数显示 
     lcd_pos(3,6);             
     lcd_wdat(IRDIS[0]);        //第二位数显示
     beep();
     EX0 = 1; 
}
/*********************************************************/
/*                                                         */
/* 转换为ASCII码                                         */

上一页  [1] [2] [3] [4]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机

上一篇:数字温度计程序