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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5066|回復: 2
收起左側

單片機紅外遙控可調時鐘程序源代碼

[復制鏈接]
ID:85764 發表于 2015-7-15 23:31 | 顯示全部樓層 |閱讀模式
數碼管顯示部分的原理圖(開發板中只需要截圖顯示部分即可):http://www.zg4o1577.cn/f/51hei-5.pdf

電路:紅外接收頭接在 單片機的外部中斷0口。數碼管用8位共陰極數碼管,2個573鎖存 詳見上面的51hei單片機開發板的pdf圖,本人測試成了.

程序源代碼:


  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit wela=P2^7;
  5. sbit dula=P2^6;
  6. uchar smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  7. uchar smg_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  8. uchar miao,fen,shi,flag_set,key_can;
  9. uchar startflag,bitnum,irtime;
  10. uchar irreceok,irprosok,flag_s;
  11. bit flag_500ms;
  12. uchar dis_smg[6];
  13. uchar irdata[33];
  14. uchar ircode[4];
  15. uchar bdata bdat;
  16. sbit dat0=bdat^0;
  17. sbit dat1=bdat^1;
  18. sbit dat2=bdat^2;
  19. sbit dat3=bdat^3;
  20. sbit dat4=bdat^4;
  21. sbit dat5=bdat^5;
  22. sbit dat6=bdat^6;
  23. sbit dat7=bdat^7;
  24. void smg_s(uchar dat)     //用于閃爍
  25. {
  26. bdat=dat;
  27. if(dat0==1)
  28.     dis_smg[0]=0x00;
  29. if(dat1==1)
  30.     dis_smg[1]=0x00;
  31. if(dat2==1)
  32.     dis_smg[2]=0x00;
  33. if(dat3==1)
  34.     dis_smg[3]=0x00;
  35. if(dat4==1)
  36.     dis_smg[4]=0x00;
  37. if(dat5==1)
  38.     dis_smg[5]=0x00;
  39. if(dat6==1)
  40.     dis_smg[6]=0x00;
  41. if(dat7==1)
  42.     dis_smg[7]=0x00;
  43. }      
  44.       
  45. void dis_init()        //顯示初始化
  46. {
  47. dis_smg[0]=smg_du[miao%10];
  48. dis_smg[1]=smg_du[miao/10];
  49. dis_smg[2]=smg_du[fen%10]|0x80;
  50. dis_smg[3]=smg_du[fen/10];
  51. dis_smg[4]=smg_du[shi%10]|0x80;
  52. dis_smg[5]=smg_du[shi/10];
  53. }
  54. void display()
  55. {
  56. static uchar i;
  57. P0=0x00;
  58. dula=1;
  59. dula=0;
  60. P0=smg_we[5-i];
  61. wela=1;
  62. wela=0;
  63. P0=dis_smg[i];
  64. dula=1;
  65. dula=0;
  66. i++;
  67. if(i==6)
  68. i=0;
  69. }
  70. void timer0_init()        //定時器0方式1,用于時鐘定時
  71. {

  72. TH0=0;
  73. TL0=0;
  74. ET0=1;
  75. TR0=1;
  76. }   
  77.            //定時器1方式2,用于紅外時間加數
  78. void timer1_init()
  79. {
  80. TMOD=0X20|0x01;       //選擇定時器0和定時器1
  81. TH1=0;
  82. TL1=0;
  83. ET1=1;
  84. TR1=1;
  85. EA=1;
  86. }
  87.               //外部中斷0,用于確定紅外數據
  88. void int0_init()
  89. {              //下降沿觸發
  90. IT0=1;
  91. EX0=1;
  92. EA=1;
  93. }
  94. void irpros()     //紅外數據處理函數
  95. {
  96. uchar k=1,value;
  97. uchar i,j;
  98. for(j=0;j<4;j++)
  99. {
  100.   for(i=0;i<8;i++)
  101.   {
  102.    value=value>>1;   //低位在前,高位在后
  103.    if(irdata[k]>6)     //比較數據,確定數據為1還是為0
  104.    {
  105.     value=value|0x80; //數據為一
  106.    }
  107.    k++;
  108.   }
  109.   ircode[j]=value;
  110. }
  111. irprosok=1;
  112. }
  113. void keyinit()     //按鍵初始化
  114. {
  115. switch(ircode[3])
  116. {
  117.   case 0xfe:key_can=1;break;   //選擇鍵
  118.   case 0xfd:key_can=2;break;   //加鍵
  119.   case 0xff:key_can=3;break;   //減鍵
  120. }
  121. ircode[3]=0;     //紅外數據最后一位
  122. }
  123. void clock_can()    //時間調整
  124. {
  125. if(key_can==1)
  126. {
  127.      key_can=0;
  128.   flag_set++;
  129.   if(flag_set>=4)
  130.   {
  131.    flag_set=0;
  132.    flag_s=0x00;
  133.   }
  134.   if(flag_set==1)
  135.      flag_s=0x30;
  136.   if(flag_set==2)
  137.      flag_s=0x0c;
  138.   if(flag_set==3)
  139.      flag_s=0x03;
  140. }
  141. if(key_can==2)
  142. {
  143.   key_can=0;
  144.   if(flag_set==1)
  145.   {
  146.    shi++;
  147.    if(shi>=24)
  148.    shi=0;
  149.   }
  150.   if(flag_set==2)
  151.   {
  152.    fen++;
  153.    if(fen>=60)
  154.    fen=0;
  155.   }
  156.   if(flag_set==3)
  157.   {
  158.    miao++;
  159.    if(miao>=60)
  160.    miao=0;
  161.   }
  162. }
  163. if(key_can==3)
  164. {
  165.   key_can=0;
  166.   if(flag_set==1)
  167.   {
  168.    if(shi==0)
  169.     shi=24;
  170.     shi--;
  171.   }
  172.   if(flag_set==2)
  173.   {
  174.    if(fen==0)
  175.     fen=60;
  176.     fen--;
  177.   }
  178.   if(flag_set==3)
  179.   {
  180.    if(miao==0)
  181.     miao=60;
  182.     miao--;
  183.   }
  184. }
  185. }   
  186. void main()
  187. {
  188. timer0_init();  
  189. timer1_init();
  190. int0_init();
  191. dis_init();
  192. while(1)
  193. {
  194.      if(flag_500ms)
  195.    dis_init();
  196.   else
  197.    smg_s(flag_s);
  198.   if(irreceok)
  199.   {
  200.    irpros();
  201.    irreceok=0;
  202.   }
  203.   if(irprosok)
  204.   {
  205.    irprosok=0;
  206.    dis_init();
  207.   }
  208.   keyinit();
  209.   clock_can();
  210.   display();
  211. }
  212. }
  213. void timer0() interrupt 1
  214. {
  215. static uchar i,j;
  216.   TH0=0x3c;
  217.   TL0=0xb0;
  218.   j++;
  219.   if(j>=10)
  220.   {
  221.    j=0;
  222.   flag_500ms=~flag_500ms;
  223.   }
  224.   i++;
  225.   if(flag_set==0)
  226.   if(i>=20)
  227.   {
  228.    i=0;
  229.   miao++;
  230.   if(miao>=60)
  231.   {
  232.    miao=0;
  233.    fen++;
  234.    if(fen>=60)
  235.    {
  236.     fen=0;
  237.     shi++;
  238.     if(shi>=24)
  239.     {
  240.      shi=0;
  241.     }
  242.    }
  243.   }
  244.   }
  245. }      
  246. void timer1() interrupt 3
  247. {
  248. irtime++;
  249. }
  250. void int0() interrupt 0
  251. {
  252. if(startflag)
  253. {
  254.   if(irtime>32)
  255.   {
  256.    bitnum=0;
  257.   }
  258.   irdata[bitnum]=irtime;
  259.   irtime=0;
  260.   bitnum++;
  261.   if(bitnum==33)
  262.   {
  263.     bitnum=0;
  264.    irreceok=1;
  265.   }
  266. }
  267. else
  268. {
  269.   startflag=1;
  270.   irtime=0;
  271. }
  272. }
復制代碼



評分

參與人數 1黑幣 +5 收起 理由
luo22 + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:194701 發表于 2017-5-1 16:55 | 顯示全部樓層
能提供一下電路圖嗎?
回復

使用道具 舉報

ID:140489 發表于 2017-5-2 14:20 | 顯示全部樓層
本帖最后由 lids 于 2017-5-2 14:24 編輯

用的什么遙控器,是不是圖片這種遙控器,我把程序下載到單片機,6位數碼管能顯示走時,但是按遙控器沒反應
QQ截圖20170502142309.png
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费看一级毛片 | 欧美aⅴ片 | 日韩欧美精品 | 国产情品 | av片免费| 欧美日韩高清在线观看 | 日韩精品久久久久久 | 美日韩免费视频 | 免费看黄视频网站 | 五月激情婷婷在线 | 国产在线拍偷自揄拍视频 | 国产精品久久久久久久久久久久久 | 一区二区在线免费观看视频 | 亚洲欧美在线一区 | 理论片87福利理论电影 | 精品产国自在拍 | 精品三区 | 国产精品视频在线观看 | 久久久久久久国产精品视频 | 国产亚洲精品精品国产亚洲综合 | 风间由美一区二区三区在线观看 | 久久综合欧美 | 久久99精品久久久久久狂牛 | 日韩在线电影 | 超碰97人人人人人蜜桃 | 最新国产视频 | 亚洲一区二区在线电影 | 欧美久久天堂 | 伊人免费在线观看高清 | 中文字幕日韩三级 | 久久久亚洲精品视频 | 精品久久久久久久 | 欧美日韩一区在线播放 | 男人电影天堂 | 国产精品一区二区欧美黑人喷潮水 | 欧美综合在线观看 | 乱码av午夜噜噜噜噜动漫 | 国产电影一区二区在线观看 | 久久精品亚洲 | 麻豆精品国产免费 | 中文字幕在线免费观看 |