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

標(biāo)題: 簡單8數(shù)碼管顯示紅外編碼 單片機(jī)程序 [打印本頁]

作者: Elison    時(shí)間: 2019-4-13 02:31
標(biāo)題: 簡單8數(shù)碼管顯示紅外編碼 單片機(jī)程序
無需復(fù)雜的電路,使用8個(gè)數(shù)碼管既可顯示出紅外遙控的編碼,電路簡單,代碼少,適合新手玩,不知道論壇有沒有人發(fā)過,新人新帖

單片機(jī)源程序如下:
  1. /***************************************************************************
  2. 標(biāo)題:        紅外遙控解碼器數(shù)碼管顯示   使用12mhz晶振
  3. 管腳:P33紅外接收數(shù)據(jù),P0口數(shù)碼管數(shù)據(jù)口,P10數(shù)碼管千位,P11數(shù)碼管百位,P12數(shù)碼管十位,P13數(shù)碼管個(gè)位
  4. 效果:        運(yùn)行程序,按遙控器按鍵,在數(shù)碼管上顯示相應(yīng)的地址碼-控制碼(以16進(jìn)制顯示)
  5.                         分兩段,前段是地址碼,后段為控制碼,用點(diǎn)隔開,顯示兩字節(jié),忽略反碼,使用共陰數(shù)碼管

  6. ******************************************************************************/

  7. #include <reg51.h>

  8. sbit SMG_0 = P1^0;        //定義數(shù)碼管(千萬位)
  9. sbit SMG_1 = P1^1;        //定義數(shù)碼管(百萬位)
  10. sbit SMG_2 = P1^2;        //定義數(shù)碼管(十萬位)
  11. sbit SMG_3 = P1^3;        //定義數(shù)碼管(萬位)
  12. sbit SMG_4 = P1^4;        //定義數(shù)碼管(千位)
  13. sbit SMG_5 = P1^5;        //定義數(shù)碼管(百位)
  14. sbit SMG_6 = P1^6;        //定義數(shù)碼管(十位)
  15. sbit SMG_7 = P1^7;        //定義數(shù)碼管(個(gè)位)

  16. /********數(shù)據(jù)定義*************************************************************/
  17. sbit hwx=P3^3;                  //紅外接收數(shù)據(jù)引腳,
  18. code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};        //數(shù)碼管段值表 0-9 a-f
  19. unsigned char ly_disdate[8]={0,0,0,0,0,0,0,0};        //顯示緩沖
  20. unsigned char ly_lhj[4];        //保存NEC的四個(gè)字節(jié)數(shù)據(jù)
  21. unsigned char ly_ct=0;    //計(jì)數(shù)時(shí)間
  22. bit ly_flag=1;                  //成功接收標(biāo)志

  23. //函數(shù)聲明:
  24. void display();//定義顯示函數(shù),直接顯示緩沖區(qū)數(shù)值
  25. void delay(void);
  26. void delay100us(void);

  27. /***********外中斷1入口函數(shù),P33引腳,紅外線接收IC數(shù)據(jù)腳**************************/
  28. void hongwai(void) interrupt 2
  29.         {
  30.                 unsigned char i,ia;
  31. /**************開始判斷是否為NEC波形引導(dǎo)碼的前9MS和后4.5MS******************************/
  32.                 ly_ct=0;              //計(jì)數(shù)時(shí)間清0

  33.                 while(!hwx)     //hwx紅外管腳

  34.                 delay100us();         //調(diào)用0.1MS延時(shí)計(jì)數(shù),ly_ct每調(diào)用一次加1

  35.                 if(ly_ct<80||ly_ct>100)            //NEC引導(dǎo)碼前9MS,ly_ct約等于90,給個(gè)誤差值,用80-100之間來判斷

  36.                 return;

  37.                 ly_ct=0;              //計(jì)數(shù)時(shí)間請0

  38.                 while(hwx)

  39.                 {
  40.                         delay100us();

  41.                         if(ly_ct>50)        //NEC引導(dǎo)碼引導(dǎo)碼的后4.5MS,ly_ct約45

  42.                         return;

  43.                 }
  44.                
  45.                 if(ly_ct<40)        //NEC引導(dǎo)碼引導(dǎo)碼的后4。5MS,ly_ct約45

  46.                 return;

  47. /***********開始接收四個(gè)字節(jié)內(nèi)容**************************************/

  48.                 for(i=0;i<4;i++)
  49.                 {
  50.                        
  51.                         for(ia=0;ia<8;ia++)
  52.                         {

  53.                                 while(!hwx);        //低電平開始,不處理只等待高電平接收

  54.                                 ly_ct=0;

  55.                                 while(hwx)   //高電平開始,
  56.                                         {       
  57.                                                
  58.                                                 delay100us();

  59.                                                 if(ly_ct>20)

  60.                                                 return;

  61.                                         }

  62. //高電平結(jié)束,判斷數(shù)據(jù)1或0向變量移入

  63.                                                 ly_lhj[i]>>=1;        //數(shù)據(jù)由高位移入低位

  64.                                                 if(ly_ct>10)        //時(shí)間量TH1高于10,即高于1MS判斷為1

  65.                                                 ly_lhj[i]|=0x80;

  66.                                 }

  67.                 }

  68.                 ly_flag=1;        //接收成功

  69.                 TF1=0;

  70. }

  71. //顯示函數(shù),參數(shù)為顯示內(nèi)容,只顯示兩位數(shù)

  72.         void display()
  73.         {

  74.                 SMG_0=0;        //選擇千萬位數(shù)碼管

  75.                 P0=table[ly_disdate[0]];        //

  76.                 delay();        //

  77.                 P0=0XFF;        //

  78.                 SMG_0=1;        //

  79.                 SMG_1=0;        //選擇百萬位數(shù)碼管SMG_b

  80.                 P0=table[ly_disdate[1]]|0x80;        //加上小數(shù)點(diǎn)

  81.                 delay();        //延時(shí)

  82.                 P0=0XFF;        //

  83.                 SMG_1=1;        //

  84.                 SMG_2=0;        //選擇十位數(shù)碼管

  85.                 P0=table[ly_disdate[2]];        //

  86.                 delay();        //

  87.                 P0=0XFF;        //

  88.                 SMG_2=1;        //

  89.                 SMG_3=0;        //選擇個(gè)位數(shù)碼管

  90.                 P0=table[ly_disdate[3]]|0x80;        //加上小數(shù)點(diǎn);        //

  91.                 delay();        //

  92.                 P0=0XFF;        //

  93.                 SMG_3=1;        //
  94.                
  95.                 SMG_4=0;        //選擇千萬位數(shù)碼管

  96.                 P0=table[ly_disdate[4]];        //

  97.                 delay();        //

  98.                 P0=0XFF;        //

  99.                 SMG_4=1;        //

  100.                 SMG_5=0;        //選擇百萬位數(shù)碼管SMG_b

  101.                 P0=table[ly_disdate[5]]|0x80;        //加上小數(shù)點(diǎn)

  102.                 delay();        //延時(shí)

  103.                 P0=0XFF;        //

  104.                 SMG_5=1;        //

  105.                 SMG_6=0;        //選擇十位數(shù)碼管

  106.                 P0=table[ly_disdate[6]];        //

  107.                 delay();        //

  108.                 P0=0XFF;        //

  109.                 SMG_6=1;        //

  110.                 SMG_7=0;        //選擇個(gè)位數(shù)碼管

  111.                 P0=table[ly_disdate[7]];        //加上小數(shù)點(diǎn)

  112.                 delay();        //

  113.                 P0=0XFF;        //

  114.                 SMG_7=1;        //

  115.         }

  116. //延時(shí)子函數(shù),短暫延時(shí)

  117. void delay(void)
  118.         {

  119.                 unsigned char i=10;

  120.                 while(i--);

  121.         }

  122. void delay100us(void)
  123.         {
  124.                 unsigned char i=15;
  125.                 while(i--);
  126.                 ly_ct++;
  127.         }

  128. void main(void)
  129.         {
  130.                 EA=1;        //首先開啟總中斷
  131.                 EX1=1; //開啟外部中斷1,紅外接收數(shù)據(jù)引腳
  132.                 IT1=1; //設(shè)置成下降沿觸發(fā)方式
  133.                 while(1)
  134.                         {
  135.                                 if(ly_flag)
  136.                                         {                 //接收成功處理顯示緩沖,以16進(jìn)制顯示
  137.                                                 ly_flag=0;
  138.                                                 ly_disdate[0]=ly_lhj[0]/16;
  139.                                                 ly_disdate[1]=ly_lhj[0]%16;
  140.                                                 ly_disdate[2]=ly_lhj[1]/16;
  141.                                                 ly_disdate[3]=ly_lhj[1]%16;
  142.                                                 ly_disdate[4]=ly_lhj[2]/16;
  143.                                                 ly_disdate[5]=ly_lhj[2]%16;
  144.                                                 ly_disdate[6]=ly_lhj[3]/16;
  145.                                                 ly_disdate[7]=ly_lhj[3]%16;
  146.                                         }
  147.                                         display();//顯示緩沖內(nèi)容

  148.                         }

  149.         }
復(fù)制代碼

所有資料51hei提供下載:
紅外遙控解碼8數(shù)碼管顯示.zip (36.27 KB, 下載次數(shù): 30)





作者: admin    時(shí)間: 2019-4-13 03:13
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者: 村雨    時(shí)間: 2019-4-13 09:55
大佬,牛逼了




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1