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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機紅外線發射接收管測速的項目工程

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 51黑電子會員 于 2020-4-29 08:54 編輯
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit qiting=P3^0;//定義啟停按鍵
  5. uchar qitingnum;//定義啟停次數變量
  6. uchar wan,qian,bai,shi,ge;//定義拆字變量
  7. uint count,pulse;//聲明定時器0計時變量、脈沖計數變量
  8. unsigned long speed;//聲明速度變量
  9. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; //共陰數碼管段碼數字0~9字碼表,高電平點亮數碼管段碼數字0~9。
  10. /**ms級延時子程序**/
  11.   void delay(uint x)
  12. {
  13.    uint i,j;                       
  14.    for(i=0;i<x;i++)     
  15.     for(j=0;j<110;j++);
  16.   }
  17.   void display(unsigned long speed)
  18. {
  19.    if(speed<=99999)
  20. {
  21. //  uchar wan,qian,bai,shi,ge;//定義拆字變量
  22. //  wan=speed/10000;//轉速/10000得到萬位
  23. //  qian=speed%10000/1000;//轉速/10000的余數/1000得到千位
  24. //  bai=speed%1000/100;//取得百位
  25. //  shi=speed%100/10;//取得十位數字
  26. //  ge=speed%10;//取得個位數字
  27.    
  28.     P2=0xfd;//數碼管萬位顯示位
  29.     P1=table[wan];//數碼管萬位數值顯示
  30.     delay(2);//延時

  31.     P2=0xfb;//數碼管千位顯示位
  32.     P1=table[qian];//數碼管千位數值顯示
  33.     delay(2);//延時

  34.     P2=0xf7;//數碼管百位顯示位
  35.     P1=table[bai];//數碼管百位數值顯示
  36.     delay(2);//延時

  37.     P2=0xef;//數碼管十位顯示位
  38.     P1=table[shi];//數碼管十位數值顯示
  39.     delay(2);//延時

  40.     P2=0xdf;//數碼管個位顯示位
  41.     P1=table[ge];//數碼管個位數值顯示
  42.     delay(2);//延時
  43.    }
  44. }
  45. /**按鍵掃描程序**/  
  46.   void keyscan()//按鍵掃描函數
  47. {
  48.    if(qiting==0)//判斷啟停鍵是否按下
  49. {
  50. //  delay(5);
  51.     display(speed);
  52.     if(qiting==0)//判斷啟停鍵是否再次按下
  53.   {
  54.      qitingnum++;//啟停次數變量加加
  55. //   while(!qiting);//等待啟停鍵松開
  56.      while(!qiting)//等待啟停鍵松開
  57.      display(speed);
  58. //   lcd_init();//LCD1602液晶顯示器初始化函數
  59.     }
  60.   }
  61.    if(qitingnum==1)//判斷啟停次數變量是否為1
  62. {
  63.     display(speed);//顯示速度函數
  64.   }
  65.    if(qitingnum==2)//判斷啟停次數變量是否為2
  66. {
  67. //  write_1602com(0x08);//關LCD1602液晶顯示器顯示
  68.     P2=0xff;//關數碼管顯示位
  69.     P1=0x00;//關數碼管數值顯示
  70.     qitingnum=0;//啟停次數變量置0
  71.    }
  72. }
  73. /**外部中斷0中斷服務子程序**/  
  74.   void Int0() interrupt 0
  75. {
  76.    pulse++;
  77.   }
  78. /**定時器0、外部中斷0初始化子程序**/
  79.   void Time0_Time1_init()
  80. {
  81.    TMOD=0X01;//模式選定時器0、計數器1,工作方式選定時器0定時模式1、計數器1計數模式1。
  82.    TH0=(65536-50000)/256;//定時器0高8位定時50毫秒
  83.    TL0=(65536-50000)%256;//定時器0低8位定時50毫秒
  84. // TH1=0;//計數器1高8位計數初值為0
  85. // TL1=0;//計數器1低8位計數初值為0
  86.    EA=1;//打開總中斷
  87.    EX0=1;//開外部中斷0
  88.    IT0=1;//INT0負跳變觸發
  89.    ET0=1;//打開定時器0的中斷
  90.    TR0=1;//打開定時器0
  91. // ET1=1;//打開計數器1的中斷
  92. // TR1=1;//打開計數器1
  93. }
  94.   void main()
  95. {
  96.    Time0_Time1_init();//定時器0、計數器1初始化子程序
  97.    while(1)
  98. {
  99.     keyscan();//按鍵掃描函數
  100.    }
  101.   }
  102. /**定時器0中斷服務子程序**/                                      
  103.   void Timer0() interrupt 1
  104. {
  105.    TH0=(65536-50000)/256;//重裝定時器0高8位定時50毫秒
  106.    TL0=(65536-50000)%256;//重裝定時器0低8位定時50毫秒
  107.    count++;//定時器0定時中斷次數變量加加
  108.    if(count==20)//判斷定時器0定時中斷次數變量是否等于20,即1秒鐘。
  109. {
  110.    count=0;//定時器0定時中斷次數變量清0
  111.    speed=pulse/3;//通過在小直流電機軸上套上一個白色圓盤(或白色圓形圖紙),把白色圓盤分成6等份,其中三等份涂黑,余下三等份為白色。利用紅外線照到黑色面時,反射光很弱,紅外線接收端檢測到的光線可以忽略,當照到白色面時,反射光強烈,發射端發射的紅外線幾乎被接收端全部接收的原理來測速。為什么是pluse/3,3是咋么來的?由于套在小直流電機軸上白色圓盤表面有3份白色面被紅外線照射后反射回來3次,也就是3次高低電平脈沖,也產生了3次下降沿,這3次下降沿剛好是小直流電機轉一圈。若算圈/秒就是pluse/3,算圈/分就是(pluse/3)/60,即pluse/20。
  112.    pulse=0;//脈沖個數變量清0,為下一次重新計數脈沖個數。
  113.    wan=speed/10000;//轉速/10000得到萬位
  114.    qian=speed%10000/1000;//轉速/10000的余數/1000得到千位
  115.    bai=speed%1000/100;//取得百位                 
  116.    shi=speed%100/10;//取得十位數字
  117.    ge=speed%10;//取得個位數字
  118.   }
  119. }
復制代碼

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:258520 發表于 2020-5-7 23:14 | 只看該作者
有沒有源文件啊  仿真 求一份學習
回復

使用道具 舉報

板凳
ID:171036 發表于 2020-5-8 20:17 | 只看該作者
makaichuang123 發表于 2020-5-7 23:14
有沒有源文件啊  仿真 求一份學習

在理解程序的基礎上去編寫啊  仿真是一樣的
回復

使用道具 舉報

地板
ID:258520 發表于 2020-5-19 02:49 | 只看該作者
51黑電子會員 發表于 2020-5-8 20:17
在理解程序的基礎上去編寫啊  仿真是一樣的

大佬 ,我缺好多元器件 ,仿真沒弄出來 行個方便發一下源文件吧
回復

使用道具 舉報

5#
ID:664656 發表于 2022-3-1 16:12 | 只看該作者
請問一下,這個系統是測轉速還是物體經過的速度
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 做a视频在线观看 | 久久夜视频 | 自拍视频一区二区三区 | 国产精品久久久久久高潮 | 午夜伦理影院 | 亚洲视频 欧美视频 | 欧美黄色网络 | 精精国产xxxx视频在线 | 亚洲欧美综合 | 成人欧美日韩一区二区三区 | 成人精品一区二区三区中文字幕 | 一道本视频 | 国产情侣激情 | 欧美日韩视频 | 在线成人免费视频 | 成人网在线看 | 污视频免费在线观看 | 亚洲精品久久久一区二区三区 | 国际精品鲁一鲁一区二区小说 | 伊人一区| 欧美国产亚洲一区二区 | 一区二区三区国产好 | 日韩欧美视频在线 | 国产一级视频在线播放 | 午夜视频网 | 日韩免费网站 | 国产精品久久影院 | 亚洲一区二区三区四区五区午夜 | 欧美中文字幕一区二区 | 日本精品久久久久久久 | 久久精品国产免费高清 | 亚洲a视频 | 伊人伊人 | 四虎精品在线 | 欧美日韩专区 | 国产日韩精品视频 | 黄色大片在线视频 | 成人免费高清 | 亚洲精品国产成人 | 97伦理电影网 | 久久久精品国产 |