找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12564|回復(fù): 38
打印 上一主題 下一主題
收起左側(cè)

紅外遙控器解碼程序1602和12864都能顯示

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:66729 發(fā)表于 2014-11-16 18:43 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
  這個紅外遙控器解碼程序原來是用1602顯示的,后來我換成12864也能正常用了,因?yàn)槲覜]有1602。。呵呵。。

紅外解碼1602液晶顯示.rar

28.85 KB, 下載次數(shù): 282, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +10 收起 理由
紅塵有你 + 10 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

來自 2#
ID:66729 發(fā)表于 2015-10-8 18:48 | 只看該作者
大家看一下這個,應(yīng)該是最初沒改動過的源碼

25.紅外解碼1602液晶顯示.rar

24.3 KB, 下載次數(shù): 45, 下載積分: 黑幣 -5

源碼

回復(fù)

使用道具 舉報

板凳
ID:51088 發(fā)表于 2014-11-16 19:31 來自手機(jī) | 只看該作者
太牛了能同時兼容這兩種液晶屏嗎
回復(fù)

使用道具 舉報

地板
ID:66729 發(fā)表于 2014-11-16 22:07 | 只看該作者
jiege 發(fā)表于 2014-11-16 19:31
太牛了能同時兼容這兩種液晶屏嗎

可以的,這個是我買的開發(fā)板上的配夽程序:/********************************************************************************
*         描述:                                                                 *
*         lcd1602顯示 遙控鍵值讀取器                                            *
*         lcd1602顯示 遙控器接p3.3                                              *
*         喇叭接p3.6                                                            *
*         連接方法:使用紅外功能時 J1跳線短接                                   *
********************************************************************************/

#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

void delay(uchar x);  //x*0.14MS
void delay1(int ms);
void beep();

sbit IRIN = P3^3;         //紅外接收器數(shù)據(jù)線
sbit BEEP = P3^6;         //蜂鳴器驅(qū)動線
sbit RELAY= P1^4;         //繼電器驅(qū)動線

uchar IRCOM[7];

sbit LCD_RS = P2^3;            
sbit LCD_RW = P2^4;
sbit LCD_EN = P2^5;

uchar code  cdis1[ ] = {" Red Control "};
uchar code  cdis2[ ] = {"  IR-CODE: --H  "};

/*******************************************************************/
/*                                                                 */
/*檢查LCD忙狀態(tài)                                                    */
/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。      */
/*                                                                 */
/*******************************************************************/

bit lcd_busy()
{                          
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    delayNOP();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result);
}

/*******************************************************************/
/*                                                                 */
/*寫指令數(shù)據(jù)到LCD                                                  */
/*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                             */
/*                                                                 */
/*******************************************************************/

void lcd_wcmd(uchar cmd)

{                          
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();
    _nop_();
   // cmd = ((cmd&0x01)<<7)|((cmd&0x02)<<5)|((cmd&0x04)<<3)|((cmd&0x08)<<1)|((cmd&0x10)>>1)|((cmd&0x20)>>3)|((cmd&0x40)>>5)|((cmd&0x80)>>7);
    P0 = cmd;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;  
}

/*******************************************************************/
/*                                                                 */
/*寫顯示數(shù)據(jù)到LCD                                                  */
/*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。                               */
/*                                                                 */
/*******************************************************************/

void lcd_wdat(uchar dat)
{                          
   while(lcd_busy());
    LCD_RS = 1;
    LCD_RW = 0;
    LCD_EN = 0;
//        dat = ((dat&0x01)<<7)|((dat&0x02)<<5)|((dat&0x04)<<3)|((dat&0x08)<<1)|((dat&0x10)>>1)|((dat&0x20)>>3)|((dat&0x40)>>5)|((dat&0x80)>>7);
    P0 = dat;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;
}

/*******************************************************************/
/*                                                                 */
/*  LCD初始化設(shè)定                                                  */
/*                                                                 */
/*******************************************************************/

void lcd_init()
{
    delay1(15);                  
    lcd_wcmd(0x38);      //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)
    delay1(5);
    lcd_wcmd(0x38);         
    delay1(5);
    lcd_wcmd(0x38);         
    delay1(5);

    lcd_wcmd(0x0c);      //顯示開,關(guān)光標(biāo)
    delay1(5);
    lcd_wcmd(0x06);      //移動光標(biāo)
    delay1(5);
    lcd_wcmd(0x01);      //清除LCD的顯示內(nèi)容
    delay1(5);
}

/*******************************************************************/
/*                                                                 */
/*  設(shè)定顯示位置                                                   */
/*                                                                 */
/*******************************************************************/

void lcd_pos(uchar pos)
{                          
  lcd_wcmd(pos | 0x80);  //數(shù)據(jù)指針=80+地址變量
}

/*******************************************************************/
main()
{
   uchar m;
   
    IRIN=1;                    //I/O口初始化
    BEEP=1;
    RELAY=1;
       
    delay1(10);                 //延時
    lcd_init();                //初始化LCD            
        
    lcd_pos(0);                //設(shè)置顯示位置為第一行的第1個字符

     m = 0;
    while(cdis1[m] != '\0')
     {                         //顯示字符
       lcd_wdat(cdis1[m]);
       m++;
     }

    lcd_pos(0x40);             //設(shè)置顯示位置為第二行第1個字符
     m = 0;
    while(cdis2[m] != '\0')
     {
       lcd_wdat(cdis2[m]);      //顯示字符
       m++;
     }


//        IE = 0x81;                 //允許總中斷中斷,使能 INT0 外部中斷
//        TCON = 0x01;               //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)
IT1=1;
EX1=1;
EA=1;

   while(1)        ;

} //end main
/**********************************************************/
void IR_IN() interrupt 2 using 0
{
  unsigned char j,k,N=0;
     EX1 = 0;   
         delay(15);
         if (IRIN==1)
     { EX1 =1;
           return;
          }
                           //確認(rèn)IR信號出現(xiàn)
  while (!IRIN)            //等IR變?yōu)楦唠娖,跳過9ms的前導(dǎo)低電平信號。
    {delay(1);}

for (j=0;j<4;j++)         //收集四組數(shù)據(jù)
{
  for (k=0;k<8;k++)        //每組數(shù)據(jù)有8位
  {
   while (IRIN)            //等 IR 變?yōu)榈碗娖,跳過4.5ms的前導(dǎo)高電平信號。
     {delay(1);}
    while (!IRIN)          //等 IR 變?yōu)楦唠娖?br />      {delay(1);}
     while (IRIN)           //計算IR高電平時長
      {
    delay(1);
    N++;           
    if (N>=30)
         { EX1=1;
         return;}                  //0.14ms計數(shù)過長自動離開。
      }                        //高電平計數(shù)完畢               
     IRCOM[j]=IRCOM[j] >> 1;                  //數(shù)據(jù)最高位補(bǔ)“0”
     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //數(shù)據(jù)最高位補(bǔ)“1”
     N=0;
  }//end for k
}//end for j
   
   if (IRCOM[2]!=~IRCOM[3])
   { EX1=1;
     return; }

   IRCOM[5]=IRCOM[2] & 0x0F;     //取鍵碼的低四位
   IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位變?yōu)榈退奈?br />
   if(IRCOM[5]>9)
    { IRCOM[5]=IRCOM[5]+0x37;}
   else
          IRCOM[5]=IRCOM[5]+0x30;

   if(IRCOM[6]>9)
    { IRCOM[6]=IRCOM[6]+0x37;}
   else
          IRCOM[6]=IRCOM[6]+0x30;

     lcd_pos(0x4b);            
     lcd_wdat(IRCOM[6]);        //第一位數(shù)顯示
     lcd_pos(0x4c);            
     lcd_wdat(IRCOM[5]);        //第二位數(shù)顯示

     beep();
     EX1 = 1;
}

/**********************************************************/
void beep()
{
  unsigned char i;
  for (i=0;i<100;i++)
   {
   delay(4);
   BEEP=!BEEP;                 //BEEP取反
   }
  BEEP=1;                      //關(guān)閉蜂鳴器
}
/**********************************************************/
void delay(unsigned char x)    //x*0.14MS
{
unsigned char i;
  while(x--)
{
  for (i = 0; i<13; i++) {}
}
}

/**********************************************************/
void delay1(int ms)
{
unsigned char y;
  while(ms--)
{
  for(y = 0; y<250; y++)
  {
   _nop_();
   _nop_();
   _nop_();
   _nop_();
  }
}
}
回復(fù)

使用道具 舉報

5#
ID:69215 發(fā)表于 2014-11-25 01:58 | 只看該作者
非常感謝!
回復(fù)

使用道具 舉報

6#
ID:69215 發(fā)表于 2014-11-25 01:58 | 只看該作者
非常感謝!
回復(fù)

使用道具 舉報

7#
ID:69215 發(fā)表于 2014-11-25 02:02 | 只看該作者
非常感謝!
回復(fù)

使用道具 舉報

8#
ID:69215 發(fā)表于 2014-11-25 02:05 | 只看該作者
很好  學(xué)習(xí) 謝謝
回復(fù)

使用道具 舉報

9#
ID:69215 發(fā)表于 2014-11-25 02:06 | 只看該作者
很好  學(xué)習(xí) 謝謝
回復(fù)

使用道具 舉報

10#
ID:34185 發(fā)表于 2014-11-30 07:12 | 只看該作者
很好  學(xué)習(xí) 謝謝
回復(fù)

使用道具 舉報

11#
ID:70104 發(fā)表于 2014-12-20 13:03 | 只看該作者
學(xué)習(xí)了~~~~~~
回復(fù)

使用道具 舉報

12#
ID:70104 發(fā)表于 2014-12-20 13:14 | 只看該作者
學(xué)習(xí)了~~~~~~
回復(fù)

使用道具 舉報

13#
ID:70769 發(fā)表于 2014-12-21 04:58 | 只看該作者
很好,正需要
回復(fù)

使用道具 舉報

14#
ID:60811 發(fā)表于 2014-12-21 10:40 | 只看該作者
非常感謝!
回復(fù)

使用道具 舉報

15#
ID:67573 發(fā)表于 2014-12-24 15:41 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報

16#
ID:70330 發(fā)表于 2015-1-4 13:35 | 只看該作者
請問:在AT89S52上帶1602調(diào)試通過,但拆除1602,就不響應(yīng)了,什么原因呢?
回復(fù)

使用道具 舉報

17#
ID:70330 發(fā)表于 2015-1-4 13:37 | 只看該作者
并且把1602的驅(qū)動也屏蔽了,繼電器再也不動作了,繼電器沒壞,恢復(fù)1602的驅(qū)動就好使
回復(fù)

使用道具 舉報

18#
ID:70330 發(fā)表于 2015-1-4 13:37 | 只看該作者
拆除1602的程序,再別的好的單片機(jī)上,繼電器也不動作,為什么呢?調(diào)了3天,也沒找到原因
回復(fù)

使用道具 舉報

19#
ID:70330 發(fā)表于 2015-1-4 13:50 | 只看該作者
請問,你的開發(fā)板是哪一款?
回復(fù)

使用道具 舉報

20#
ID:70330 發(fā)表于 2015-1-4 13:50 | 只看該作者
給個淘寶鏈接也行,謝謝!
回復(fù)

使用道具 舉報

21#
ID:62145 發(fā)表于 2015-2-2 12:21 | 只看該作者
看看。。。。。。。
回復(fù)

使用道具 舉報

22#
ID:29438 發(fā)表于 2015-2-3 13:18 | 只看該作者
學(xué)習(xí)了,謝謝!
回復(fù)

使用道具 舉報

23#
ID:72047 發(fā)表于 2015-3-10 22:08 | 只看該作者
不錯,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

24#
ID:54731 發(fā)表于 2015-3-23 16:37 | 只看該作者
C:\Users\Administrator\Downloads\HS0038B測試1602顯示\HS0038B測試1602顯示\IRSEG.C(1): error C318: can't open file 'C:\Users\Administrator\Downloads\HS0038B測試1602顯示\HS0038B測試1602顯示\IRSEG.C'
回復(fù)

使用道具 舉報

25#
ID:29438 發(fā)表于 2015-3-24 11:53 | 只看該作者
好東西,學(xué)習(xí)了。
回復(fù)

使用道具 舉報

26#
ID:76268 發(fā)表于 2015-4-6 20:08 | 只看該作者
很好  學(xué)習(xí) 謝謝
回復(fù)

使用道具 舉報

27#
ID:77496 發(fā)表于 2015-5-10 12:00 | 只看該作者
你好  我在網(wǎng)上看到你的帖子http://www.torrancerestoration.com/bbs/dpj-28635-1.html關(guān)于紅外線解碼的  我在編譯的時候遇到了問題   主要是IRSG.c文件沒有一起發(fā)給我們   導(dǎo)致出現(xiàn)了C:\Users\Administrator\Downloads\HS0038B測試1602顯示\HS0038B測試1602顯示\IRSEG.C(1): error C318: can't open file 'C:\Users\Administrator\Downloads\HS0038B測試1602顯示\HS0038B測試1602顯示\IRSEG.C'這樣的錯誤  無法編譯下去了  能不能幫忙把這個文件發(fā)給我啊    我學(xué)單片機(jī)快一年了  也有不少資料可以送給你作參考  最近想做遙控這一方面的  希望你能幫我一下  我叫王鵬
回復(fù)

使用道具 舉報

28#
ID:63041 發(fā)表于 2015-7-15 20:45 來自手機(jī) | 只看該作者
jiege 發(fā)表于 2014-11-16 19:31
太牛了能同時兼容這兩種液晶屏嗎

太牛了!!
回復(fù)

使用道具 舉報

29#
ID:66729 發(fā)表于 2015-10-8 18:50 | 只看該作者
xsynet 發(fā)表于 2015-1-4 13:35
請問:在AT89S52上帶1602調(diào)試通過,但拆除1602,就不響應(yīng)了,什么原因呢?

拆除1602,,沒有屏了,怎么顯示?這個肯定和數(shù)碼管顯示不兼容的
回復(fù)

使用道具 舉報

30#
ID:66729 發(fā)表于 2015-10-8 18:54 | 只看該作者
單片機(jī)開發(fā)板的原理圖和說明

1-原理圖和說明.rar

257.96 KB, 下載次數(shù): 12, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報

31#
ID:96762 發(fā)表于 2015-11-22 22:20 | 只看該作者
學(xué)習(xí)一下
回復(fù)

使用道具 舉報

32#
ID:51128 發(fā)表于 2015-12-20 23:26 | 只看該作者
好帖子,學(xué)習(xí)了
回復(fù)

使用道具 舉報

33#
ID:102568 發(fā)表于 2016-1-9 20:56 | 只看該作者
來看下最近在做 課程設(shè)計
回復(fù)

使用道具 舉報

34#
ID:102578 發(fā)表于 2016-1-9 21:54 | 只看該作者
剛來論壇!學(xué)習(xí)中!
回復(fù)

使用道具 舉報

35#
ID:112865 發(fā)表于 2016-4-21 18:11 | 只看該作者
非常感謝
回復(fù)

使用道具 舉報

36#
ID:116231 發(fā)表于 2016-4-23 21:57 | 只看該作者
誰有串口接收顯示程序
回復(fù)

使用道具 舉報

37#
ID:124447 發(fā)表于 2016-6-1 13:24 | 只看該作者
謝謝樓主。。。。。。。。。。。。。。。!
回復(fù)

使用道具 舉報

38#
ID:125417 發(fā)表于 2016-6-6 12:51 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報

39#
ID:197937 發(fā)表于 2017-5-16 19:40 | 只看該作者
如果讓紅外遙控做算法加上語音模塊????能用這個改到實(shí)現(xiàn)嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表