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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實(shí)例 >> 瀏覽文章

單片機(jī)定時器-遙控器解碼程序分析

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2010年12月07日   【字體:

一、前言

  利用STC公司1T內(nèi)核的STC12C08S2 單片機(jī)對一款遙控器進(jìn)行解碼,將解碼的數(shù)據(jù)轉(zhuǎn)換為以us為單位的時間通過單片機(jī)串口通訊發(fā)送到STC下載軟件自帶的串口調(diào)試工具接收框進(jìn)行顯示。

  本文主要對測試結(jié)果進(jìn)行展示與分析并對單片機(jī)控制程序進(jìn)行分析,以此起到拋磚引玉的作用,希望讀者理解程序以后可以利用單片機(jī)對身邊的任意一款遙控器進(jìn)行解碼并將遙控器與單片機(jī)的實(shí)際應(yīng)用聯(lián)系在一起。

二、測試結(jié)果展示

1、實(shí)驗(yàn)材料介紹

 

實(shí)驗(yàn)材料硬件部分 軟件部分 KEIL V2 編程軟件 單片機(jī)程序下載軟件STC_ISP_V479

為了高效率學(xué)習(xí)程序編寫,本實(shí)驗(yàn)平臺采用單片機(jī)教程網(wǎng)的51hei-5單片機(jī)開發(fā)板。控制芯片為 STC12C08S2,紅外通訊傳感器為sm0038與單片機(jī)的P3.2引腳連接。大家用一根杜邦線將j7的3腳 連到頂部的p3.2口的排針處即可。程序下載器采用usb轉(zhuǎn)串口線。遙控器采用如上圖(對于NEC標(biāo)準(zhǔn)的遙控器都適用,比如電視遙控器等)。

2、遙控器按下數(shù)字1PC所接收的數(shù)據(jù)碼

顯示的數(shù)據(jù):數(shù)字1 02456 00206 00205 00202 00204 00207 00202 00206 00206 00407 00408 00412 00407 00408 00412 00407 00408 00206 00206 00407 00408 00206 00205 00203 00204 00409 00411 00202 00204 00410 00410 00407 00410

3、遙控器按下數(shù)字2PC所接收的數(shù)據(jù)碼

數(shù)字22456 00206 00200 00206 00206 00202 00205 00206 00202 00412 00407 00410 00410 00407 00408 00412 00407 00206 00205 00202 00410 00410 00203 00204 00205 00408 00409 00410 00205 00202 00408 00412 00407

4、遙控器按下數(shù)字3PC所接收的數(shù)據(jù)碼

數(shù)字302457 00206 00198 00208 00206 00198 00209 00206 00200 00413 00407 00406 00414 00407 00405 00415 00408 00206 00410 00405 00417 00407 00206 00407 00206 00408 00206 00200 00208 00208 00407 00206 00408

三、測試數(shù)據(jù)分析

下載程序在硬件電路正常的情況下,遙控器按下數(shù)字1PC機(jī)可以接收到以下數(shù)據(jù)數(shù)字1 02456 00206 00205 00202 00204 00207 00202 00206 00206 00407 00408 00412 00407 00408 00412 00407 00408 00206 00206 00407 00408 00206 00205 00203 00204 00409 00411 00202 00204 00410 00410 00407 00410

那這些數(shù)據(jù)代表什么意思呢?

單片機(jī)向PC機(jī)每發(fā)送一次都是5位數(shù)據(jù),這5位數(shù)據(jù)是單片機(jī)內(nèi)部定時器以5us循環(huán)一次對temp變量從0開始自加所得到的數(shù)據(jù)。也就是說這些數(shù)據(jù)可以理解為一個時間值,這個時間值就是遙控器每個數(shù)據(jù)碼高電平和低電平所持續(xù)時間的值。

從數(shù)據(jù)可以看出每個按鍵按下去PC機(jī)都接收到33個數(shù)據(jù),這33個數(shù)據(jù)仔細(xì)觀察可以發(fā)現(xiàn)都有以下規(guī)律:

第一個數(shù)據(jù) 24562460之間。

第二個數(shù)據(jù)到第九個數(shù)據(jù) 200210之間。

第十個數(shù)據(jù)到第十八個數(shù)據(jù) 400410之間。

第十九個數(shù)據(jù)到第三十二個數(shù)據(jù)在200210之間和在400410之間都有。

繼續(xù)分析:如果將在24562460之間的數(shù)據(jù)定義為字符‘h’,將在200210之間的數(shù)據(jù)定義為字符‘0’,將在400410之間的數(shù)據(jù)定義為字符‘1’。那么以上33個數(shù)據(jù)可以表達(dá)為:h 1111 1111 0000 0000 0011 0000 1100 1111 那么這個數(shù)據(jù)就是按鍵1按下的用01來表示的編碼。

相同道理可以推測出數(shù)字2和數(shù)字301來表示的編碼如下:

數(shù)字 2 h  0000 0000 1111 1111 0001 1000 1110 0111

數(shù)字 3 h  0000 0000 1111 1111 0111 1010 1000 0101

好了,到了這里我們可以下結(jié)論了,因?yàn)橐呀?jīng)有了3個對比。

我們的結(jié)論是:如上圖的遙控器編碼原理為每個按鍵都有33個編碼其中第一個編碼都相同時間比較長,接著16編碼分別可以用我們所定義的01表示即前八個為0后八個為1。其實(shí)這個我們可以理解為遙控器的地址編碼,就好比電話號碼的區(qū)號一樣的,浙江衢州的區(qū)號是0570而武漢的區(qū)號是027,在本區(qū)域里的所有的座機(jī)號碼都是以這個開頭固定不變的。

接著再仔細(xì)觀察可以發(fā)現(xiàn)原來后面16個數(shù)據(jù)碼也是有規(guī)律的,那就是前8個和后8個是相互取反的的編碼。

好了,更多的思維留個大家,下面我們要分享程序了,希望大家下載程序以后可以得出我以上的結(jié)論,如果復(fù)制到keil上有亂碼,大家可從這里下載源程序:http://www.zg4o1577.cn/f/hwykjm1.rar 哈哈,這也是學(xué)習(xí)單片機(jī)的趣味所在哦。因?yàn)槲覍⒎窒淼某绦蚝w了單片機(jī)外部中斷、內(nèi)部定時器、串口通訊的三個結(jié)構(gòu)的應(yīng)用。

四、程序分享

/*

測試方案_07 

程序設(shè)計:胡琴

電話:15886684881

設(shè)計時間:2010-12-1                              

測試方法:用定時器計算33位紅外信號持續(xù)時間

測試原理:在測試方案_01的結(jié)論上,記錄一組紅外信號33位中各編碼持續(xù)時間

測試結(jié)果:前導(dǎo)碼:約 2457,持續(xù)時間為 2457 * 0.005 = 12.285ms (NEC標(biāo)準(zhǔn)為13.5)

         編碼 0:約 206 持續(xù)時間為  206 * 0.005 = 1.03ms   (NEC標(biāo)準(zhǔn)為1.125)

         編碼 1:約 408 持續(xù)時間為  408 * 0.005 = 2.04ms   (NEC標(biāo)準(zhǔn)為2.25)

*/

  #include <reg52.h>
sbit IR = P3^2;                     // 紅外信號感應(yīng)引腳
unsigned int time;
unsigned int dat[33] ={ 0 };
bit flag = 0;
void Send( void )  //將32位數(shù)據(jù)對應(yīng)的時間發(fā)送到PC上顯示
{
       char i;
       for(i = 0;i < 33;i ++)
       {  
              TI = 0;
              SBUF = dat[i] / 10000 + 48;
              while( !TI );
              TI = 0;
              SBUF = dat[i] / 1000 % 10 + 48;
              while( !TI );
              TI = 0;
              SBUF = dat[i] / 100 % 10 + 48;
              while( !TI );
              TI = 0;
              SBUF = dat[i] / 10 % 10 + 48;
              while( !TI );
              TI = 0;
              SBUF = dat[i] % 10 + 48;
              while( !TI );   
              TI = 0;
              SBUF = ' ';
              while( !TI );
       }
}
void Init( void )             //定時器、外部中斷初始化
{
       TMOD = 0x22;             // 定時器0、1方式2
       SCON = 0x40;              // 串行口方式1,不允許接收    
       TH1 = TL1 = 0xfd;       // 串行口方式2,F(xiàn)osc=11.05926,BPS=9600
       TH0 = TL0 = 0xfb;       // 中斷頻率 0.005ms
       TR1 = 1;               // 開啟與串行口相關(guān)的定時器1
       IT0 = 1;                // 邊沿式觸發(fā)
       ET0 = 1;               // 開啟定時器0中斷
       EX0 = 1;               // 外部中斷0中斷允許
       IP  = 0x02;                  // 定時器0優(yōu)先級高
       EA  = 1;
}
void main( void )     //主程序
{
       Init( );                   //中斷 定時器 初始化
       while( 1 );                    //等待遙控信號
}
void Xint0( void ) interrupt 0 //外部中斷0復(fù)位子程序
{
       char i;
       for(i = 0;i < 33;i ++)
       {     
              time = 0;
              TR0 = 1;
              while( !IR );          // 前導(dǎo)信號檢測
              while( IR );   
              TR0 = 0;
              dat[i] = time;
       }
       Send( );
       flag = 1;
       EX0 = 0; 
}
void Timer0( void ) interrupt 1 //5us中斷一次 變量加1
{
       time ++;
}

  

五、最后的話

  真正入門單片機(jī)的學(xué)習(xí)者應(yīng)該是已經(jīng)掌握了單片機(jī)內(nèi)部定時器、外部中斷、串口通訊的工作原理及編程方法,所以對于這個程序我想很多人都可以馬上體會并變?yōu)樽约旱某绦颉?/span>

  希望在這個程序的引導(dǎo)下結(jié)合自己的C語言編程能力,可以拿起自己身邊的遙控器為單片機(jī)邊學(xué)邊用所應(yīng)用。修改程序?qū)崿F(xiàn)每個按鍵按下單片機(jī)對應(yīng)控制一個LED亮并且蜂鳴器報警器一次。

  如今中國和日本的矛盾不斷,很多技術(shù)人都在抱怨,但是我想其實(shí)我們也是可以為國家出點(diǎn)力的。因?yàn)槲覀兯褂玫拇蟛糠诌b控器的編碼與標(biāo)準(zhǔn)都是日本人技術(shù)所制定。

  同學(xué)們,中國的智能電子愛好者,我們也可以制定出這個標(biāo)準(zhǔn)哦。希望更多的同仁能設(shè)計出自己的家用紅外遙控器。

 

 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 亚洲精品久久久久久久久久久久久 | 91精品国产91久久久久久最新 | 中文字幕91av | 黄色一级片aaa | 亚洲成人一区二区三区 | 一区二区三区在线免费观看 | 青青激情网 | 黄色成人免费在线观看 | 久草视频网站 | 欧美区在线观看 | 欧美日韩视频一区二区 | 精品久久香蕉国产线看观看亚洲 | 国产精品久久久久久久岛一牛影视 | 国产精品欧美一区二区 | 日本在线中文 | a视频在线 | 亚洲午夜av | 中文字幕一区在线观看视频 | 亚洲成人毛片 | 狠狠av| 涩在线| 91久久国产综合久久 | 一级片av | 一区二区三区小视频 | 久久久久久久香蕉 | 亚洲狠狠爱一区二区三区 | 视频在线亚洲 | 免费v片| 怡红院免费的全部视频 | 性福视频在线观看 | 日韩在线资源 | 青青草原综合久久大伊人精品 | 日本成人中文字幕 | av免费电影在线 | 男人天堂网av| 99亚洲精品视频 | 欧美在线视频一区二区 | 亚洲精品欧美 | 欧美日韩一区二区在线 | 久久影音先锋 | 成人性视频免费网站 |