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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4113|回復: 0
收起左側

51單片機小車的速度檢測,中斷輸入P3.3,P3.4

[復制鏈接]
ID:342184 發表于 2018-5-31 15:12 | 顯示全部樓層 |閱讀模式
利用51單片機測小車的速度。

b3c11518763231126edb111a.jpg

  1. #include <reg52.h>   
  2. #define uint  unsigned int
  3. #define ulong unsigned long
  4. #define uchar unsigned char //定義一下方便使用

  5. sbit d0=P2^0; // 數度公共端
  6. sbit d1=P2^1; // 數度公共端
  7. sbit d2=P2^2; // 數度公共端
  8. sbit d3=P2^3; // 數度公共端
  9. uchar code  ledp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0xa0};//數字顯示 //數字顯示
  10. uchar code ledpd[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //帶小數點的數字顯示
  11. uint l,c,x,x1;
  12. uint a8;  //進入循環的窗口
  13. uint i;    //時間計數

  14. delay(uint t)   //時間軟件延時函數
  15.    {
  16.      uint z,x;
  17.    for(z=0;z<t;z++)
  18.    for(x=0;x<120;x++);
  19.    
  20.     }

  21. void int1() interrupt 0    //0外中斷函數 接P3,2
  22. { x1=1;
  23. }
  24. void int0() interrupt 2   //2外中斷函數 接P3,3        子彈先穿過P3,3
  25. {
  26.   x=1;  
  27.   }         
  28.   
  29. void main(void) // 主程序

  30. {  
  31.   P1=0xc0; //P1口初始化
  32.     d0=0;
  33.     d1=0;
  34.     d2=0;
  35. d3=0;
  36. TMOD=0x01; //工作方式
  37. TH0=0xff; //設置初值
  38. TL0=0xf6;
  39. TR0=1;  //打開定時器
  40. IT1=1;   //外中斷低電位產生中斷   2外中斷函數 接P3,3     
  41. EX1=1;

  42.   IT0=1;   //外中斷低電位產生中斷   0外中斷函數 接P3,2
  43. EX0=1; //
  44. EA=1;     //打開總中斷

  45. a8=1;
  46.    
  47.             
  48. while(a8)    //子彈發射完成后進入數度中斷信號等待
  49.    { while(x) //進入第2個線圈程序
  50.         {
  51.           if(TF0==1)
  52.             {
  53.               TF0=0;
  54.               TH0=0xff; //設置初值 10us單位
  55.               TL0=0xf6;
  56.               i++;
  57.             }
  58.    if(x1==1)  
  59.    { x=0;
  60.     x1=0;            
  61.     break;
  62.    }      
  63.             }
  64. if(i!=0)
  65. {c=10000/i;   //數度公式   i是指中斷時間   這里顯示的是實際速度  10000距離為0.1米

  66.   d0=0; d1=1;d2=1; d3=1;  
  67.      
  68.   P1=ledp[c/1000%10];  //百位     
  69.    delay(5);  //百位顯示延時 可以更改  時間很短
  70.    
  71.   
  72.   d1=0; d0=1;d2=1; d3=1;
  73.    
  74.   P1=ledp[c/100%10];  //十位
  75.       delay(5);
  76.      
  77.   d2=0; d1=1;d0=1; d3=1;
  78.   
  79.   P1=ledp[c/10%10];//帶小數點 //個位   
  80.     delay(5);


  81.   d3=0; d2=1;d1=1;d0=1;
  82.    
  83.   P1=ledp[c%10];  //小數點的后一位
  84. delay(5);
  85.     l++;    //循環累計  延時
  86. }
  87.   if(l==450)   //延時時間可更改
  88.    {
  89.    l=0;
  90.    P1=ledp[0]; //速度顯示完畢后,顯示為0
  91.    c=0;   //速度歸零
  92.    i=0;    //中斷時間歸零
  93.    a8=0;
  94.   
  95.    break;
  96.    
  97. }
  98. }
  99.    }

復制代碼


測速.docx

15.33 KB, 下載次數: 27, 下載積分: 黑幣 -5

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表