找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3500|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于SC2622的315M遙控器設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基于51單片機(jī)的SC2622的315M遙控器設(shè)計(jì)的原理圖如下:

單片機(jī)程序源碼:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit dula=P3^7;//定義段選引腳
  5. sbit wela=P3^6;//定義位選引腳
  6. sbit P30=P3^0;//定義百位控制引腳
  7. sbit P31=P3^1;//定義十位控制引腳
  8. sbit P32=P3^2;//定義個(gè)位控制引腳
  9. sbit VCC=P3^3;//定義控制加電信號(hào)輸出引腳
  10. sbit UP=P3^4;//定義上升信號(hào)輸出引腳
  11. sbit DOWN=P3^5;//定義下降信號(hào)輸出引腳
  12. uchar code table[]=
  13. {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//八段共陽數(shù)碼管數(shù)組
  14. //uchar code table0[]=
  15. //{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  16. //uchar code table1[]=
  17. //{0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};       
  18. void init();//聲明初始化程序
  19. void delayms(uint);//聲明延時(shí)程序
  20. void display(uchar,uchar,uchar);//聲明數(shù)碼管顯示程序
  21. void address();//聲明地址運(yùn)算程序
  22. uint bai,shi,ge,num,k,add,add1,flag,ok,right;
  23. uchar keyscan(void);//

  24. /********************初始化程序*************************/
  25. void init()
  26. {
  27. // TMOD=0x11;
  28. // TH0=(65536-45872)/256;
  29. // TL0=(65536-45872)%256;
  30. // TH1=(65536-45872)/256;
  31. // TL1=(65536-45872)%256;
  32. // EA=1;
  33. // TR1=1;
  34. // ET0=1;
  35. // ET1=1;
  36. // TR0=1;
  37. // P2=0x00;
  38. // P1=0x00;
  39. // P3=0;
  40. k=0;
  41. bai=0;
  42. shi=0;
  43. ge=0;
  44. ok=0;
  45. }

  46. /********************數(shù)碼管顯示程序*************************/
  47. void display(uchar bai,uchar shi,uchar ge)
  48. {
  49. dula=1;
  50. P2=table[bai];
  51. dula=0;
  52. P2=0x00;
  53. wela=1;
  54. P30=1;P31=0;P32=0;
  55. wela=0;
  56. delayms(2);

  57. dula=1;
  58. P2=table[shi];
  59. dula=0;
  60. P2=0x00;
  61. wela=1;
  62. P30=0;P31=1;P32=0;
  63. wela=0;
  64. delayms(2);

  65. dula=1;
  66. P2=table[ge];
  67. dula=0;
  68. P2=0x00;
  69. wela=1;
  70. P30=0;P31=0;P32=1;
  71. wela=0;
  72. delayms(2);
  73. }

  74. /*******************延時(shí)程序*************************/
  75. void delayms(uint xms)
  76. {
  77. uint i,j;
  78. for(i=xms;i>0;i--)
  79. for(j=110;j>0;j--);
  80. }

  81. /********************鍵盤掃描程序*************************/
  82. uchar keyscan(void)
  83. {
  84.    uchar cord_h,cord_l;   
  85.    P0=0x0f;
  86.    cord_h=P0&0x0f;   
  87.    if(cord_h!=0x0f)   
  88.    {
  89.     delayms(10);      
  90.     if(cord_h!=0x0f)
  91.     {
  92.      cord_h=P0&0x0f;
  93.      P0=cord_h|0xf0;
  94.      cord_l=P0&0xf0;
  95.      return(cord_h+cord_l);       
  96.     }       
  97.    }
  98.    while(cord_h!=0x0f);  
  99.    flag=1;
  100.    return(0xff);     
  101. }

  102. /********************主程序*************************/
  103. void main()
  104. {
  105. uchar key;
  106. init();
  107. while(1)
  108. {           
  109.   key=keyscan();       
  110.   switch(key)
  111.   {
  112.    case 0x7e:         //1
  113.               //ok=0;
  114.                       flag=0;
  115.                       k=0;
  116.            // address();
  117.                       if(ok==1&&right==1)
  118.                       {
  119.                         //right=0;
  120.                   UP=1;          
  121.                           DOWN=0;
  122.                           P1=add;
  123.                             VCC=1;
  124.                           delayms(1000);
  125.                           P1=add1;//display(bai,shi,ge);
  126.                           delayms(1000);
  127.                           VCC=0;
  128.                           UP=0;
  129.                           add=0;
  130.                           P1=0;
  131.                       }
  132.                       break;//上升
  133.          
  134.    case 0x7d:          //2
  135.              //ok=0;
  136.                      flag=0;
  137.                      k=0;
  138.                    //address();
  139.                      if(ok==1&&right==1)
  140.                      {
  141.                       // right=0;
  142.                  DOWN=1;         
  143.                          UP=0;                 
  144.                          P1=add;                                   
  145.                          VCC=1;
  146.                          delayms(1000);
  147.                          P1=add1;// display(bai,shi,ge);
  148.                          delayms(1000);
  149.                          VCC=0;
  150.                          DOWN=0;
  151.                          add=0;
  152.                          P1=0;
  153.                      }
  154.                      break;//下降
  155.          
  156.   // case 0x7b:  //3
  157.             
  158.          
  159.    case 0x77:  //a
  160.              ok=0;flag=0;right=0;
  161.                      break;//取消ok

  162.          
  163.    case 0xbe:  //4
  164.              if(flag==1)
  165.                      {
  166.                  num=3; k=k+1; flag=0;ok=0;right=0;
  167.                      }
  168.                      break;//3
  169.                     
  170.    …………余下代碼請(qǐng)下載附件…………
復(fù)制代碼


下載:
遙控器0328.rar (1.6 KB, 下載次數(shù): 25)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表