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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3094|回復: 1
收起左側

紅外遙控

[復制鏈接]
ID:82732 發表于 2015-9-25 09:48 | 顯示全部樓層 |閱讀模式
#include<12c5a.h>
#define QIANJIN   a=1;b=0;c=1;d=0;
#define HOUTUI    a=0;b=1;c=0;d=1;
#define ZUOZHUAN  a=0;b=1;c=1;d=0;
#define YOUZHUAN  a=1;b=0;c=0;d=1;
#define STOP      a=1;b=1;c=1;d=1;

sbit wei =P0^6;
sbit duan=P0^7;
sbit ting   =P2^7;
sbit xzdj1a =P0^0;//行走電機
sbit xzdj1b =P0^1;
sbit xzdj2a =P0^2;
sbit xzdj2b =P0^3;

sbit toua  =P0^6;//頭電機
sbit toub  =P0^7;
sbit shoua =P1^0;//手電機
sbit shoub =P1^1;
sbit wana  =P1^2;//腕電機
sbit wanb  =P1^3;
sbit zhoua =P1^4;//肘電機
sbit zhoub =P1^5;
sbit zhou1a=P1^6;
sbit zhou1b=P1^7;
sbit jiana =P2^0;//肩電機
sbit jianb =P2^1;
sbit jian1a=P2^2;
sbit jian1b=P2^3;
uchar irtime;    //紅外時間
uchar startflag; //起始標志位
uchar irdata[33];//多少個數據
uchar bitnum;    //第幾位
uchar irreceok;  //紅外接收完成
uchar ircode[4]; //用戶碼和鍵值碼4位
uchar irprosok;  //紅外接收結束
uchar disp[4];   //分離出4位數據顯示

uchar code table[]={0xfe,0xfd,0xfb,0xf7};
                                //        0xef,0xbf,0xdf,0x7f};
uchar code smg[]={0xC0,0xF9,0xA4,0xB0,0x99,
                                        0x92,0x82,0xf8,0x80,0x90,0x88,
                                        0x83,0xC6,0xA1,0x86,0x8E};
/*void delay_50ms(uint t)//12m晶振50ms秒延時
{
        uint j;
        for(;t>0;t--)
        for(j=6245;j>0;j--);
}
void delay_1ms(uint t)//12m晶振1ms秒延時
{
        uint j,k;
        for(j=t;j>0;j--)
        for(k=120;k>0;k--);
}*/
void delay_50us(uint t)//12m晶振50us秒延時
{
        uchar j;
        for(;t>0;t--)
        for(j=19;j>0;j--);
}
void timer0init() //定時器初始化
{
//        TMOD=0X12;//T1方式1.T0方式2
        TMOD=0X02;//T0方式2
        TH0=0X00;//高8位清零
        TL0=0X00;//低8位清零
        EA=1;
        ET0=1;
        TR0=1;        
}
void int0init()//外部中斷1初始化
{
        IT1=1; //下降沿觸發
        EX1=1; //打開外部中斷1
        EA=1;  // 開總中斷
}
void irwork()//分離16進制紅外數據
{
        disp[2]=ircode[0]/16;//鍵值碼
        disp[1]=ircode[0]%16;
        disp[3]=ircode[2]/16;//識別碼
        disp[0]=ircode[2]%16;


}
void  shoushen()
{
        shoua=1;
        shoub=0;
}
void  shouzhua()
{
        shoua=0;
        shoub=1;
}
void  wanzuo()
{
         wana =1;
        wanb=0;
}
void  wanyou()
{
         wana =0;
        wanb=1;
}
void zhouzuo()
{
  zhoua=1;
  zhoub=0;
}
void zhouyou()
{
  zhoua=0;
  zhoub=1;
}
void zhoushang()
{
  zhou1a=1;
  zhou1b=0;
}
void zhouxia()
{
  zhou1a=0;
  zhou1b=1;
}
void xzqianjin()
{
        xzdj1a =1;
        xzdj1b =0;
        xzdj2a =1;
        xzdj2b =0;
}
void xzhoutui()
{
        xzdj1a =0;
        xzdj1b =1;
        xzdj2a =0;
        xzdj2b =1;
}
void xzzuozhuan()
{
        xzdj1a =0;
        xzdj1b =1;
        xzdj2a =1;
        xzdj2b =0;
}
void xzyouzhuan()
{
        xzdj1a =1;
        xzdj1b =0;
        xzdj2a =0;
        xzdj2b =1;
}
void jianshang()
{
        jiana=1;
        jianb=0;
}
void jianxia()
{
        jiana=0;
        jianb=1;
}
void jianqian()
{
   jian1a=1;
   jian1b=0;
}
void jianhou()
{
   jian1a=0;
   jian1b=1;
}
void tingsha()
{
        P0=0Xff;
        P2 =0XFF;
        P1=0XFF;
}
void display()//顯示
{
        P2=0xfe;
        wei=1;
        wei=0;
        delay_50us(50);

        P2=smg[disp[0]];
        delay_50us(50);
        duan=1;
        duan=0;
        P2=0xff;

        P2=0xfd;
        wei=1;
        wei=0;
        delay_50us(50);

        P2=smg[disp[1]];
        delay_50us(50);
        duan=1;
        duan=0;
        P2=0xff;

        P2=0xfb;
        wei=1;
        wei=0;
        delay_50us(50);

        P2=smg[disp[2]];
        delay_50us(50);
        duan=1;
        duan=0;
        P2=0xff;

        P2=0xf7;
        wei=1;
        wei=0;
        delay_50us(50);

        P2=smg[disp[3]];
        delay_50us(50);
        duan=1;
        duan=0;
        P2=0xff;

}
/*void display()//顯示
{
        uchar i;        
        for(i=0;i<4;i++)
        {
                duan=1;
                duan=0;
                P2=smg[disp[i]];
                delay_50us(50);
                wei=1;
                wei=0;
                P2=table[i];
                delay_50us(20);
        }
}*/
void irpros()//紅外處理
{
        uchar k,i,j;
        uchar value;   //紅外數據值
        k=1;           //從第一個數據碼開始
        for(j=0;j<4;j++)//只取出4組碼
        {
                for(i=0;i<8;i++)//8位數據循環8次
                {
                //右移一位。移動7次。從低位開始移
                        value=value>>1;
                //循環這個判斷語句8次.判斷是1 還是0
                //大于7為 1. 小于7為 0
                        if(irdata[k]>7)
                        {                                
                                value=value|0x80;
                        }
                        k++;
                }
        //把數據放到數組中
                ircode[j]=value;        
        }
        irprosok=1;
}
void main()
{        
        timer0init() ;
        int0init();
        while(1)
        {
                if(irreceok)
                {
                        irpros();
                        irreceok=0;
                }
                if(irprosok)
                {
                        irwork();
                        irprosok=0;
                }
                display();
                switch(ircode[2])
                {
                //        case 0x05: QIANJIN ;break;
                //        case 0x06: HOUTUI  ;break;
                //        case 0x07: ZUOZHUAN;break;
                //        case 0x08: YOUZHUAN;break;
                //        case 0x04: STOP ;   break;

                        case 0x02: xzqianjin(); break;//電視遙控器鍵值
                        case 0x0a: xzhoutui()  ;break;//電視遙控器鍵值
                        case 0x07: xzzuozhuan();break;//電視遙控器鍵值
                        case 0x05: xzyouzhuan(); break;//電視遙控器鍵值
                        case 0x06: tingsha();  break;//電視遙控器鍵值
                        case 0x18: tingsha();  break;

                        case 0x17: shoushen(); break;
                        case 0x14: shouzhua(); break;

                        case 0x16: wanzuo();   break;
                        case 0x13: wanyou();   break;

                        case 0x15: zhoushang();break;
                        case 0x12: zhouxia();  break;

                        case 0x11: zhouzuo();  break;
                        case 0x1a: zhouyou();  break;

                        case 0x10: jianqian(); break;
                        case 0x0e: jianhou();  break;

                        case 0x0f: jianshang();break;
                        case 0x19: jianxia();  break;




                        default:break;
                }        
        }
}
void timer0() interrupt 1//定時器0中斷服務函數
{
        irtime++; //加到255自動清零再加
}
void int0() interrupt 2//定時器1中斷服務函數
{
        if(startflag)
        {
                if(irtime>32)//檢測引導碼
                {
                        bitnum=0;
                }
                irdata[bitnum]=irtime;
                irtime=0;
                bitnum++;
                if(bitnum==33)
                {
                        bitnum=0;
                        irreceok=1;//紅外接收結束
                }
        }
        else
        {
                startflag=1;
                irtime=0;
        }

}


回復

使用道具 舉報

ID:84745 發表于 2015-10-9 10:54 來自觸屏版 | 顯示全部樓層
看看好用不
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲中午字幕 | 日日操夜夜操天天操 | 成人久久久| 中文字幕在线观 | 91在线网站| 免费高潮视频95在线观看网站 | 国产日韩精品视频 | 一区二区三区在线播放 | 亚洲综合在线视频 | 日本久久精 | 亚洲理论在线观看电影 | 久久88 | 亚洲 中文 欧美 日韩 在线观看 | 国产激情视频网址 | 成人 在线 | www国产成人| 美女艹b | 91精品国产91久久久久久最新 | 超级碰在线 | 精品一区av| 一区二区三区回区在观看免费视频 | 中文字幕久久精品 | 亚洲国产精品99久久久久久久久 | 精品不卡| 亚洲视频在线播放 | 精品视频久久久 | 欧美精品欧美精品系列 | 九九九视频在线观看 | caoporon| 成人一级黄色毛片 | 中文字幕av第一页 | 国产成人精品999在线观看 | 亚洲午夜av| 日韩精品一区二区三区中文字幕 | 色网在线看 | 亚洲va国产日韩欧美精品色婷婷 | 精品日韩在线观看 | 国产在线一区二区三区 | 亚洲一区二区三区四区五区中文 | 亚洲成人精品免费 | 欧美在线观看免费观看视频 |