新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 紅外解碼程序(用1602顯示碼值)

        紅外解碼程序(用1602顯示碼值)

        作者: 時間:2016-12-02 來源:網絡 收藏
        #include

        #define uchar unsigned char
        #define uint unsigned int
        sbit beep=P1^7;
        bit startflag; //定義一個掃描開始標志位
        bit irreceok;//紅外接收OK標志位
        bit irprosok;//紅外接收處理OK標志位
        uchar irdata[33];//定義一個存放編碼的數組。引導碼1位,客戶碼8位,客戶反碼8位,數據碼8位,數據反碼8位 ,共33位
        uchar bitnum;//接收到的第幾位數據的標志位
        uchar irtime;//定義紅外掃描時間
        uchar ircode[4];//為四個碼值定義一個數組存放,把四位碼分開
        uchar disp[8];//四組數據,每組拆成高四位和低四位,共八個元素
        /**************1602部分******************/
        sbit lcden=P1^2;
        sbit lcdrs=P1^0;
        sbitlcdrw=P1^1;
        /*char code Tab[]={0,1,2,3,4,5,6,7,8,
        9,A,B,C,D,E,F};*/
        char code Tab[]="0123456789abcdef";
        void delay(uint z) //延時子程序
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=220;y>0;y--);
        }

        本文引用地址:http://www.104case.com/article/201612/324698.htm

        void write_com(uchar com)//定義一個帶參數的寫命令子程序
        {
        lcdrs=0; //1602的rs為0時,接收命令,為1時接收數據
        P0=com;//把void write_com(uchar com)中的COM中的數據給P0口
        delay(2);
        lcden=1;
        delay(2);
        lcden=0;
        delay(2);
        }

        void init_1602()//定義一個初始化子程序
        {
        lcden=0;
        lcdrw=0;
        write_com(0x38);//調用 write_com子程序并把0x38賦給P0口,顯示模式打開
        write_com(0x0f);//調用 write_com子程序并把“開顯示,顯示光標,光標閃爍”指令碼賦給P0口
        write_com(0x06);//調用 write_com子程序并把“地址指針加1,整屏不移動”指令碼賦給P0口
        //write_com(0x80+0x10);//數據指針初始化,讓指針指向可顯示的最右端
        write_com(0x80);//數據指針初始化,讓指針指向最左端,顯示從第一行開始
        write_com(0x01);//調用 write_com子程序并把"清零指"令碼賦給P0口
        }

        void write_dat(uchar dat)//定義一個帶參數的寫數據子程序
        {
        lcdrs=1; //1602的rs為0時,接收命令,為1時接收數據
        P0=dat;//把void write_shu(uchar shu)中的COM中的數據給P0口
        delay(2);
        lcden=1;
        delay(2);
        lcden=0;
        delay(2);
        }

        void delayms(uint t)
        {
        uint i,j;
        for(i=t;i>0;i--)
        for(j=110;j>0;j--);
        }
        void timer0init()//定時器O初始化
        {
        TMOD=0x02;//定時器設成方式2,因為方式2可以自動重裝初值
        TH0=0x00;//高位設為O
        TL0=0x00;//低位設為O
        ET0=1; //中斷打開
        EA=1;//總中斷打開
        TR0=1;//定時器打開
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 东至县| 安陆市| 剑川县| 新丰县| 嘉善县| 股票| 公安县| 鄂温| 大田县| 黄龙县| 南京市| 清水县| 原阳县| 象州县| 耒阳市| 普格县| 鄂州市| 蕉岭县| 宣汉县| 应城市| 宣恩县| 丹棱县| 商城县| 建德市| 滦平县| 天水市| 芒康县| 东兰县| 长沙市| 临汾市| 黄平县| 寿光市| 大关县| 阜南县| 湘阴县| 师宗县| 白河县| 乌拉特后旗| 新龙县| 巨鹿县| 本溪市|