久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12420|回復: 38
打印 上一主題 下一主題
收起左側

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

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

紅外解碼1602液晶顯示.rar

28.85 KB, 下載次數: 282, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

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

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

24.3 KB, 下載次數: 45, 下載積分: 黑幣 -5

源碼

回復

使用道具 舉報

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

使用道具 舉報

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

可以的,這個是我買的開發板上的配夽程序:/********************************************************************************
*         描述:                                                                 *
*         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;         //紅外接收器數據線
sbit BEEP = P3^6;         //蜂鳴器驅動線
sbit RELAY= P1^4;         //繼電器驅動線

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忙狀態                                                    */
/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。      */
/*                                                                 */
/*******************************************************************/

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

/*******************************************************************/
/*                                                                 */
/*寫指令數據到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;  
}

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

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初始化設定                                                  */
/*                                                                 */
/*******************************************************************/

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

    lcd_wcmd(0x0c);      //顯示開,關光標
    delay1(5);
    lcd_wcmd(0x06);      //移動光標
    delay1(5);
    lcd_wcmd(0x01);      //清除LCD的顯示內容
    delay1(5);
}

/*******************************************************************/
/*                                                                 */
/*  設定顯示位置                                                   */
/*                                                                 */
/*******************************************************************/

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

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

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

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


//        IE = 0x81;                 //允許總中斷中斷,使能 INT0 外部中斷
//        TCON = 0x01;               //觸發方式為脈沖負邊沿觸發
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;
          }
                           //確認IR信號出現
  while (!IRIN)            //等IR變為高電平,跳過9ms的前導低電平信號。
    {delay(1);}

for (j=0;j<4;j++)         //收集四組數據
{
  for (k=0;k<8;k++)        //每組數據有8位
  {
   while (IRIN)            //等 IR 變為低電平,跳過4.5ms的前導高電平信號。
     {delay(1);}
    while (!IRIN)          //等 IR 變為高電平
     {delay(1);}
     while (IRIN)           //計算IR高電平時長
      {
    delay(1);
    N++;           
    if (N>=30)
         { EX1=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])
   { EX1=1;
     return; }

   IRCOM[5]=IRCOM[2] & 0x0F;     //取鍵碼的低四位
   IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位變為低四位

   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]);        //第一位數顯示
     lcd_pos(0x4c);            
     lcd_wdat(IRCOM[5]);        //第二位數顯示

     beep();
     EX1 = 1;
}

/**********************************************************/
void beep()
{
  unsigned char i;
  for (i=0;i<100;i++)
   {
   delay(4);
   BEEP=!BEEP;                 //BEEP取反
   }
  BEEP=1;                      //關閉蜂鳴器
}
/**********************************************************/
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_();
  }
}
}
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

8#
ID:69215 發表于 2014-11-25 02:05 | 只看該作者
很好  學習 謝謝
回復

使用道具 舉報

9#
ID:69215 發表于 2014-11-25 02:06 | 只看該作者
很好  學習 謝謝
回復

使用道具 舉報

10#
ID:34185 發表于 2014-11-30 07:12 | 只看該作者
很好  學習 謝謝
回復

使用道具 舉報

11#
ID:70104 發表于 2014-12-20 13:03 | 只看該作者
學習了~~~~~~
回復

使用道具 舉報

12#
ID:70104 發表于 2014-12-20 13:14 | 只看該作者
學習了~~~~~~
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

22#
ID:29438 發表于 2015-2-3 13:18 | 只看該作者
學習了,謝謝!
回復

使用道具 舉報

23#
ID:72047 發表于 2015-3-10 22:08 | 只看該作者
不錯,學習學習
回復

使用道具 舉報

24#
ID:54731 發表于 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'
回復

使用道具 舉報

25#
ID:29438 發表于 2015-3-24 11:53 | 只看該作者
好東西,學習了。
回復

使用道具 舉報

26#
ID:76268 發表于 2015-4-6 20:08 | 只看該作者
很好  學習 謝謝
回復

使用道具 舉報

27#
ID:77496 發表于 2015-5-10 12:00 | 只看該作者
你好  我在網上看到你的帖子http://www.zg4o1577.cn/bbs/dpj-28635-1.html關于紅外線解碼的  我在編譯的時候遇到了問題   主要是IRSG.c文件沒有一起發給我們   導致出現了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'這樣的錯誤  無法編譯下去了  能不能幫忙把這個文件發給我啊    我學單片機快一年了  也有不少資料可以送給你作參考  最近想做遙控這一方面的  希望你能幫我一下  我叫王鵬
回復

使用道具 舉報

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

太牛了!!
回復

使用道具 舉報

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

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

使用道具 舉報

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

1-原理圖和說明.rar

257.96 KB, 下載次數: 12, 下載積分: 黑幣 -5

回復

使用道具 舉報

31#
ID:96762 發表于 2015-11-22 22:20 | 只看該作者
學習一下
回復

使用道具 舉報

32#
ID:51128 發表于 2015-12-20 23:26 | 只看該作者
好帖子,學習了
回復

使用道具 舉報

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

使用道具 舉報

34#
ID:102578 發表于 2016-1-9 21:54 | 只看該作者
剛來論壇!學習中!
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久星辰影院 | 中文字字幕一区二区三区四区五区 | 欧美精品黄 | 午夜精品福利视频 | 四虎影视 | 亚州成人 | 一区二区三区中文字幕 | 久久国产精品99久久久久久丝袜 | 欧美日韩国产精品一区 | 狠狠av | 日韩欧美理论片 | 视频一区在线观看 | 久久成人精品 | 成人精品国产一区二区4080 | 成人小视频在线观看 | 日韩精品在线播放 | 羞羞色网站 | 中文字幕高清一区 | 伊人精品久久久久77777 | a在线免费观看 | 暖暖日本在线视频 | 91在线精品一区二区 | www.啪啪.com| 一区二区三区四区在线免费观看 | 天天久久 | 黄免费观看| 久久视频精品 | 天天躁日日躁xxxxaaaa | 国产精品高潮呻吟久久av黑人 | 欧美日韩在线不卡 | 成人三级视频 | 国产精品久久久久久一区二区三区 | 亚洲自拍偷拍av | 亚洲网站在线观看 | 天天综合久久 | 国产精品不卡视频 | 99久久精品免费看国产四区 | 亚洲一区中文字幕 | 亚州精品天堂中文字幕 | av手机在线 | 日韩不卡在线 |