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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

M16單片機l紅外線解碼程序+led數碼管顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:292438 發表于 2018-3-15 19:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我自己用icc+M16寫的一個led顯示+紅外線解碼程序


一個特別功能 也是他們常用的功能 按鍵處理程序 按一下只變一個數 
按住1s左右(自己設置)快速變化  進一步的功能正開發中 
下一步 就是3771+39610 步進電機驅動程序 希望大家多多支持哦!
哦對了 里面的圖片是用flash8做的         原理圖是用protues6.9 畫的 仿真上有點問題 實際電路中 是正常的

單片機源碼:
  1. /*
  2. 01-05 22:30       2007-1-6 23:04
  3. infrared
  4. //ICC-AVR application builder : 2006-12-16 0:17:05         2006-12-18 20:04       IR_CDOE
  5. // Target : M16
  6. // Crystal: 16.000Mhz //注冊大小寫識別        開始必須為字母 紅外線
  7. */
  8. #include <iom16v.h>
  9. #include <macros.h>
  10. #include "led.h"
  11. #include "IR_DATA.H"
  12. #define IR       6
  13. //#include "delay.h"
  14. //用戶碼
  15. #define          CUSTOMCODE          9
  16. //按鍵碼
  17. #define          POWER_ON            221
  18. #define          STAND_BY            220
  19. #define          DMX                 216
  20. #define          AUTO                212
  21. #define          AUDIO               208
  22. #define        FADETIME_UP           217
  23. #define        FADETIME_DOWN         209
  24. #define        PATTERN_UP            218
  25. #define        PATTERN_DOWN          210

  26. //                值            0         1                                                 10        11       12        13        14        15
  27. //                         0         1         2         3         4          5        6         7         8        9          d          f            
  28. char LED_DATA[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0Xa1,0X0e,0x00,0xff,0xef,0x3f}; //11 FOR "d"
  29. char iPos,iPreBit,iNowBit,iHight,iLow,iIrMode,iBitCount,bIrCmdOk,bCmdOk,iCmd,iIrData[6];
  30. char JS_001=0,JS_002=0;
  31. long       JS_003=0;
  32. char JS_004=0;
  33. char JS_005=0;
  34. char JS_006=0;
  35. char JS_007=0;
  36. char JS_008=0;
  37. long       TIMER1_ICP_T,TIMER1_ICP_T1,TIMER1_ICP_T2;
  38. char       LED_DISPLAY_V1=10;              // 初始值       顯示 為 d001
  39. char       LED_DISPLAY_V2=0;
  40. char       LED_DISPLAY_V3=0;
  41. char       LED_DISPLAY_V4=1;
  42. char       LED_DISPLAY_V5=14;
  43. long        JS_PRESS_ON_UP=0;
  44. long        JS_PRESS_ON_DOWN=0;
  45. char        JS_TIMER1_ICP_INPUT=0;
  46. char        OUT_22_LOW;
  47. char       JS_PRESS_ON_UP_1=0;
  48. char       JS_PRESS_ON_UP_10000=0;
  49. char       JS_PRESS_DWON_ON_1=0;
  50. char       JS_PRESS_ON_DOWN_10000=0;
  51. int         JS_PRESS_ON_UP_FAST=0;
  52. int         JS_PRESS_OFF_UP=0;
  53. char       JS_MODE_MODE=0;
  54. char       JS_MENU_MODE=0;
  55. char       JS_UP_MODE=0;
  56. char       JS_DOWN_MODE=0;
  57. int         JS_PRESS_OFF_DOWN;
  58. int         JS_PRESS_ON_DOWN_FAST;
  59. char       JS_PRESS_DOWN_ON_1;
  60. char       ICP_TIME=0,ICP_TIME_T1=0;
  61. char START_ICP_JS_TLOW=0;
  62. char ICP_INT_SN=0;               //ICP 產生中斷標志位
  63. char KEY_BANK=0;
  64. char KEY_PAN_MODE_1=0;
  65. char KEY_PAN_MODE_2=0;
  66. char KEY_PAN_MODE_3=0;
  67. char KEY_PAN_3=0;
  68. char KEY_PAN_4=0;
  69. char KEY_PAN_5=0;
  70. char KEY_PAN_6=0;
  71. char KEY_PAN_7=0;
  72. char KEY_PAN_8=0;
  73. char PAN_ICP_INPUT_CHECK=0,JS_ICP_INT=0;
  74. char N_001=1,SUM=0;
  75. char IR_CUSTOM_CODE=0;IR_DATA_CODE=0;
  76. // 共陽極用
  77. void port_init(void)
  78. {
  79. PORTA = 0xFF;
  80. DDRA       = 0xFF;
  81. PORTB = 0x1F;
  82. DDRB       = 0x1F;
  83. PORTC = 0x1F; //m103 output only
  84. DDRC       = 0x10;
  85. PORTD = 0x00;
  86. DDRD       = 0x00;
  87. }
  88. //Watchdog initialize
  89. // prescale: 16K
  90. //void watchdog_init(void)
  91. //{
  92. //WDR(); //this prevents a timout on enabling
  93. //WDTCR = 0x08; //WATCHDOG ENABLED - dont forget to issue WDRs
  94. //}      
  95. //Watchdog initialize
  96. // prescale: 2048K
  97. void watchdog_init(void)
  98. {
  99. WDR(); //this prevents a timout on enabling
  100. WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
  101. }
  102. #pragma interrupt_handler eeprom_ready_isr:16
  103. void eeprom_ready_isr(void)
  104. {
  105. //eeprom ready event
  106. }
  107. /////////////////////////TIMER0/////////////////////////////////////////////////////////////
  108. //TIMER0 initialize - prescale:8
  109. // WGM: Normal
  110. // desired value: 100uSec
  111. // actual value: 100.000uSec (0.0%)
  112. void timer0_init(void)
  113. {
  114. TCCR0 = 0x00; //stop
  115. TCNT0 = 0xCE; //set count
  116. OCR0       = 0x32;       //set compare
  117. TCCR0 = 0x02; //start timer
  118. }
  119. #pragma interrupt_handler timer0_ovf_isr:10
  120. void timer0_ovf_isr(void)
  121. {
  122.        TCNT0 = 0xCE; //reload counter value       100us
  123.        LED_SCAN();
  124.        KEY_CHK();
  125.        CheckIR();  
  126.         JS_003=++JS_003;                     //KEY_CHECK
  127.         TEST();
  128.         //display_times();              //TEST USE
  129.   
  130.   
  131.    
  132. }
  133. /////////////////test/////////////////////////////////////
  134. void       TEST()
  135. {
  136.        //LED_DISPLAY_V4=8;               //TEST
  137.        if (JS_003==10000)
  138.                 {
  139.                 LED_DISPLAY_V5=14;
  140.             
  141.                 }  
  142.          else if (JS_003==20000)  
  143.               {
  144.               JS_003=0;  
  145.               LED_DISPLAY_V5=13;
  146.               }
  147. }
  148. /////////////////////////timer2///////////////////////////////////////////////////////////////////
  149. //TIMER2 initialize - prescale:32
  150. // WGM: Normal
  151. // desired value: 10uSec
  152. // actual value: 10.000uSec (0.0%)
  153. void timer2_init(void)
  154. {
  155. TCCR2 = 0x00; //stop
  156. ASSR       = 0x00; //set async mode
  157. TCNT2 = 0xFB; //setup
  158. OCR2       = 0x05;
  159. TCCR2 = 0x03; //start
  160. }
  161. #pragma interrupt_handler timer2_ovf_isr:5
  162. void timer2_ovf_isr(void)        //10us
  163. {
  164. TCNT2 = 0xFB; //reload counter value
  165. //ICP_INT_JS();
  166. //ICP_INT_CLR_JS();

  167. }
  168. /////////////////////////KEY_CHK/////////////////////////////////////////////////////////////
  169. void KEY_CHK()
  170. {
  171.    
  172. KEY_CHK_MODE();                       // 調用        KEY_CHK_MODE
  173. KEY_CHK_MENU();                       // 調用        KEY_CHK_MENU
  174. KEY_CHK_UP();                         // 調用        KEY_CHK_UP
  175. KEY_CHK_DOWN();                       // 調用        KEY_CHK_DOWN  
  176. }
  177. //////////////////////////MODE///////////////////////////////////////////////////////////
  178. void KEY_CHK_MODE()                        //100us /times
  179. {
  180.          KEY_BANK=KEY_INPUT;                    // 取PINC值
  181.          KEY_BANK&=0X01;                        // 取mode 值
  182. if (KEY_BANK==0)          //有按下 執行   
  183.         {           //TEST--------OK------------->>>>  
  184.             KEY_BANK=1;               
  185.             JS_004=++JS_004;
  186.             if (JS_004==1)
  187.                              {
  188.               //LED_DISPLAY_V1=11;
  189.              LED_DISPLAY_V2=0;
  190.              LED_DISPLAY_V3=0;
  191.              LED_DISPLAY_V4=1;        
  192.                              }
  193.             else if (JS_004==2)
  194.                               {
  195.                                        JS_004&=0;
  196.                                 //LED_DISPLAY_V1=10;
  197.                  LED_DISPLAY_V2=0;
  198.               LED_DISPLAY_V3=0;
  199.               LED_DISPLAY_V4=1;
  200.                               }
  201.         }
  202.         else
  203.            KEY_BANK=0;
  204.    
  205. }
  206. void KEY_PRESS_CHECK_OFF()
  207. {
  208.             KEY_BANK=KEY_INPUT;           // 取PINC值
  209.             KEY_BANK&=0X01;   
  210.           if       (KEY_BANK==0)               // V1有按下
  211.               KEY_PAN_MODE_3=1;
  212.           else                            // V1沒有按下  
  213.               KEY_PAN_MODE_3=0;
  214. }
  215. ///////////////////////////////MENU/////////////////////////////////////////////////////////////////
  216. void KEY_CHK_MENU()
  217. {
  218. }
  219. ///////////////////////////////UP///////////////////////////////////////////////////////////////////////
  220. void KEY_CHK_UP()
  221. {
  222.          KEY_BANK=KEY_INPUT;                    // 取PINC值
  223.          KEY_BANK=KEY_BANK>>2;
  224.          KEY_BANK&=0X01;                        // 取DOWN 值
  225.        if (KEY_BANK==0)                   //press on       do it
  226.            {   
  227.            
  228.                 JS_PRESS_OFF_UP==0;  
  229.            
  230.             if (JS_PRESS_ON_UP_1==0)                 //press on       yes        first times
  231.                 {
  232.                 JS_PRESS_ON_UP_1=1;
  233.                 JS_PRESS_ON_UP=0;
  234.                 JS_PRESS_ON_UP_FAST=0;      
  235.                 JS_PRESS_ON_UP_10000=0;
  236.                 LED_DISPLAY_UP_DMX512();
  237.            
  238.                    // JS_UP_MODE=++JS_UP_MODE;
  239.                    //        if (JS_UP_MODE==4)
  240.                    //        JS_UP_MODE=0;
  241.                 }  
  242.              else
  243.              {
  244.                     if (JS_PRESS_ON_UP_10000==1)
  245.                         {
  246.                                            if (JS_PRESS_ON_UP_FAST==2000)
  247.                                              {
  248.                             JS_PRESS_ON_UP_FAST=0;         
  249.                             LED_DISPLAY_UP_DMX512();
  250.                             }
  251.                             else
  252.                            JS_PRESS_ON_UP_FAST=++JS_PRESS_ON_UP_FAST;   
  253.                         }
  254.                   
  255.                     if (JS_PRESS_ON_UP==30000)
  256.                          {
  257.                          JS_PRESS_ON_UP=0;         
  258.                          JS_PRESS_ON_UP_10000=1;
  259.                          }
  260.                     else
  261.                         JS_PRESS_ON_UP=++JS_PRESS_ON_UP;                  
  262.               }      
  263.           }
  264.        else             //unpress     
  265.                 {
  266.                     JS_PRESS_ON_UP=0;
  267.                     JS_PRESS_ON_UP_10000=0;
  268.                     JS_PRESS_ON_UP_FAST=0;     
  269.                     JS_PRESS_OFF_UP=++JS_PRESS_OFF_UP;
  270.                   if (JS_PRESS_OFF_UP==2000)
  271.                                {
  272.                                 JS_PRESS_ON_UP_1=0;
  273.                                 JS_PRESS_OFF_UP=0;         
  274.                                }
  275.           }     
  276.                         
  277. }
  278.   
復制代碼


led顯示+紅外線解碼程序.doc

59 KB, 下載次數: 13, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品www| 超碰97免费 | 成人精品国产一区二区4080 | 久久久入口 | 亚洲精品视频在线观看免费 | 亚洲国产精品第一区二区 | 日本高清不卡视频 | 97在线观看| h视频在线免费 | 99色视频| 久久宗合色 | 日韩在线精品 | 国产精品一区二区三 | 成人国产综合 | 久久a久久| 国产日产欧产精品精品推荐蛮挑 | 一区二区三区欧美在线观看 | 国产一区二区三区四区在线观看 | 久久一区二区三区四区五区 | 国产视频久久久久 | 99视频免费在线 | 日韩欧美大片 | 福利视频一区二区 | 毛片a级 | 日韩在线电影 | 在线超碰 | 成人不卡| 日韩视频在线一区 | 99精品久久99久久久久 | 午夜精品久久久久久久久久久久久 | 午夜视频在线免费观看 | 成人精品系列 | 欧美日韩精品一区 | 亚洲香蕉在线视频 | 三级视频在线观看电影 | 拍戏被cao翻了h承欢 | 超碰成人在线观看 | 伊人免费网| 国产乱码久久久久久 | 欧美激情视频一区二区三区免费 | 皇色视频在线 |