欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機學習紅外遙控程序,求指導

[復制鏈接]
跳轉到指定樓層
樓主
ID:437615 發表于 2019-10-22 13:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
學習紅外線遙控好幾天,看了很多教程,感覺還是一頭霧水,最后自己估摸著寫了一個最小發射程序,不出意外,沒有任何動靜,請大家幫忙看一下,這個程序錯在哪兒,如果錯的實在太多,能不能麻煩幫忙寫一個這樣的小程序,讓我學習一下,謝謝!(不要寫大的遙控器程序,我的智商,根本看不懂)
單片機源程序如下:
#include <stc52.h>
#include <intrins.h>

#define u8 unsigned char
#define u16 unsigned int

sbit plflag=P1^0;        //定義紅外發射口                                
sbit key=P1^1;                //定義一個發射開關

void time_init();        //定時器初始化,
void s0();                //發射一位0,
void s1();                //發射一位1,


void main()
        
{        
        plflag=0;        //P1.0口先置0,
        time_init();
        while(1)
        {
                if(key==0)
                {
               
                TL1 = 0x9A;                //定時器1延時9毫秒設定,
                TH1 = 0xDF;                //
                TR0 = 1;                //打開定時器0,
                TR1 = 1;                //打開定時器1,
                while(!TF1);                //等待9毫秒
                TR0 = 0;                //關閉定時器0
                TR1 = 0;                //關閉定時器1,
                plflag=0;                //P1.0口歸0,
                        
                        
                TL1 = 0xCD;                //定時器一延時4.5毫秒,
                TH1 = 0xEF;                //
                TF1 = 0;                //清空定時器1標志位,
                TR1 = 1;                //打開定時器1,
                while(!TF1);                //等待4.5毫秒,
                TR1 = 0;                //關閉定時器1,

               
                s0();s0();s0();s0();s0();s0();s0();s0();        //測試寫三個字節,0x00,0xff,0xff
                s1();s1();s1();s1();s1();s1();s1();s1();
                s1();s1();s1();s1();s1();s1();s1();s1();
                }
               
        }
        
}

void s0()                                //寫一位0的函數,
        {
                TL1 = 0xFC;                //定時560微秒設置,
                TH1 = 0xFD;
                TF1 = 0;
                TR0 = 1;
                TR1 = 1;
                while(!TF1);
                TR0 = 0;
                TR1 = 0;
                plflag=0;
               
                TL1 = 0xFC;        
                TH1 = 0xFD;
                TF1 = 0;
                TR1 = 1;
                while(!TF1);
                TR1 = 0;
               
        }
        
void s1()                                //寫一位1的函數,
        {
                TL1 = 0xFC;                //定時560微秒設置,
                TH1 = 0xFD;
                TF1 = 0;
                TR0 = 1;
                TR1 = 1;
                while(!TF1);
                TR0 = 0;
                TR1 = 0;
                plflag=0;
               
                TL1 = 0xEF;                //定時器1.685毫秒設置,
                TH1 = 0xF9;
                TF1 = 0;
                TR1 = 1;
                while(!TF1);
                TR1 = 0;
        }        

void time_init()                        定時器初始化函數,定時器零產生38khz
{
        
        TMOD = 0x11;                        //定時器0定時器1,設置為工作模式1,
        TL0 = 0xF4;                        //
        TH0 = 0xFF;
        
        TF0 = 0;
        TF1 = 0;
        ET0 = 1;
        EA = 1;
}

void Timer0() interrupt 1                //定時器0中斷服務函數
        {

                TL0 = 0xf4;
                TH0 = 0xFF;
                plflag=~plflag;
               
        }


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

使用道具 舉報

沙發
ID:351421 發表于 2019-10-22 17:11 | 只看該作者
紅外遙控的話,你具體想實現什么功能,比如要控制一款空調的開關,你要先讓程序學習他的編碼,然后發送正確的指令(包括格式和指令的內容),才能實現
回復

使用道具 舉報

板凳
ID:149144 發表于 2019-10-22 19:21 | 只看該作者
誰來接收?要在接收端看數據啊,加個接收的,然后再串口里看數據
回復

使用道具 舉報

地板
ID:437615 發表于 2019-10-22 20:37 來自觸屏版 | 只看該作者
兄弟們我是問這個程序問題在什么地方,接收是連在電腦串口上自動的,現在接收不到數據
回復

使用道具 舉報

5#
ID:650660 發表于 2019-11-27 11:27 | 只看該作者
沒耐心 發表于 2019-10-22 17:11
紅外遙控的話,你具體想實現什么功能,比如要控制一款空調的開關,你要先讓程序學習他的編碼,然后發送正確 ...

我想要做一個電視的遙控器怎么做?
回復

使用道具 舉報

6#
ID:25310 發表于 2019-11-27 17:56 | 只看該作者
找個例程看看,正點原子也有,金沙灘哪個也不錯。
回復

使用道具 舉報

7#
ID:396245 發表于 2019-11-27 18:04 | 只看該作者
首先,引導碼后面需要4個字節才能構成一個完整的數據(引導碼  地址碼  地址反碼 數據碼 數據反碼)。
回復

使用道具 舉報

8#
ID:396245 發表于 2019-11-27 18:07 | 只看該作者
首先,一個完整的數據幀應該是  引導碼 地址碼 地址反碼 數據碼 數據反碼。你引導碼后面只發送3個字節,接收端無法檢驗是否有數據錯誤,會被拋棄。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表