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

標題: 基于51單片機定時器0計時計數器1計數的霍爾傳感器精確測速數碼管顯示測速的項目工程 [打印本頁]

作者: 51黑電子會員    時間: 2020-4-7 20:38
標題: 基于51單片機定時器0計時計數器1計數的霍爾傳感器精確測速數碼管顯示測速的項目工程
本帖最后由 51黑電子會員 于 2020-4-8 21:32 編輯

單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit qiting=P3^0;//定義啟停按鍵
  5. uchar qitingnum;//定義啟停次數變量
  6. uint count;//定時器0定時中斷次數變量
  7. unsigned long speed;//轉速變量
  8. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; //共陰數碼管段碼數字0~9字碼表,高電平點亮數碼管段碼數字0~9。
  9. /**ms級延時子程序**/
  10.   void delay(uint x)
  11. {
  12.    uint i,j;                       
  13.    for(i=0;i<x;i++)     
  14.     for(j=0;j<110;j++);
  15.   }
  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、計數器1初始化子程序**/
  74.   void Time0_Time1_init()
  75. {
  76.    TMOD=0X51;//模式選定時器0、計數器1,工作方式選定時器0定時模式1、計數器1計數模式1。
  77.    TH0=(65536-50000)/256;//定時器0高8位定時50毫秒
  78.    TL0=(65536-50000)%256;//定時器0低8位定時50毫秒
  79.    TH1=0;//計數器1高8位計數初值為0
  80.    TL1=0;//計數器1低8位計數初值為0
  81.    EA=1;//打開總中斷
  82.    ET0=1;//打開定時器0的中斷
  83.    TR0=1;//打開定時器0
  84.    ET1=1;//打開計數器1的中斷
  85.    TR1=1;//打開計數器1
  86. }
  87. /**主函數**/     
  88.   void main()
  89. {
  90.    Time0_Time1_init();//定時器0、計數器1初始化子程序
  91.    while(1)
  92. {
  93.     keyscan();//按鍵掃描函數
  94.    }
  95.   }
  96. /**定時器0中斷服務子程序**/                                      
  97.   void Timer0() interrupt 1
  98. {
  99.    TH0=(65536-50000)/256;//重裝定時器0高8位定時50毫秒
  100.    TL0=(65536-50000)%256;//重裝定時器0低8位定時50毫秒
  101.    count++;//定時器0定時中斷次數變量加加
  102.    if(count==20)//判斷定時器0定時中斷次數變量是否等于20,即1秒鐘。
  103. {
  104.     count=0;//定時器0定時中斷次數變量清0
  105.     TR1=0;//關計數器1,開始統計1秒鐘內,霍爾元件發送的脈沖個數。
  106.     speed=TH1*256+TL1;//表示計數器1計數霍爾元件發送的脈沖個數,即轉速:轉/秒。
  107.     TH1=0;//計數器1高8位計數清0,為了下一次計數。
  108.     TL1=0;//計數器1低8位計數0,為了下一次計數。
  109.     TR1=1;//開計數器1,為了下一次統計1秒鐘內,霍爾元件發送的脈沖個數。
  110.    }
  111. }
復制代碼


圖片10.png (79.3 KB, 下載次數: 66)

圖片10.png

作者: xmfjfhcel    時間: 2020-4-8 11:42
不知樓主有沒有用過這個霍爾來測電機的轉速。
如果有,咨詢一下,霍爾是要檢測電機轉軸上的磁鐵吧? 磁鐵用什么磁鐵都可以么?磁鐵怎么固定在轉軸上的呢? 磁鐵與這個位置怎么確定呢?如果有實物就最好啦。我一直想弄這個實物進行實驗一下。但就是這幾個問題不能確定。
作者: 51黑電子會員    時間: 2020-4-8 14:28
xmfjfhcel 發表于 2020-4-8 11:42
不知樓主有沒有用過這個霍爾來測電機的轉速。
如果有,咨詢一下,霍爾是要檢測電機轉軸上的磁鐵吧? 磁鐵 ...

有試過的哦   一般磁鐵可以啦   用一個磁鐵粘到套在電機軸上的旋轉盤或者其他圓盤  如果有偏心塊那最好  偏心塊套在電機軸上  再用磁鐵粘在偏心塊上  至于霍爾傳感器  可以上網買霍爾傳感器模塊就可以啦
作者: 我是靴子    時間: 2020-4-17 21:24
樓主大大可以告訴下接霍爾傳感器的哪些電阻用什么用嗎
作者: 51黑電子會員    時間: 2020-4-18 12:05
我是靴子 發表于 2020-4-17 21:24
樓主大大可以告訴下接霍爾傳感器的哪些電阻用什么用嗎

這些電阻用來限流啊  霍爾傳感器測速部分只是模擬  實際上可以購買霍爾傳感器模塊來代替即可
作者: 我只是過客    時間: 2020-5-4 20:24
不需要寫外部中斷嗎?
作者: 51黑電子會員    時間: 2020-5-6 20:01
我只是過客 發表于 2020-5-4 20:24
不需要寫外部中斷嗎?

用定時器計數器來做霍爾測速相對于外部中斷測速準確的哦
作者: 我只是過客    時間: 2020-5-7 14:44
51黑電子會員 發表于 2020-5-6 20:01
用定時器計數器來做霍爾測速相對于外部中斷測速準確的哦

我有霍爾傳感器,為什么有時候霍爾傳感器感應磁鐵時,有觸發兩次中斷呢?是因為磁鐵的磁性太強了?一直卡在這里
作者: 我只是過客    時間: 2020-5-7 23:39
太感謝博主了,用定時器計數確實比外部中斷準確,點贊
作者: 我只是過客    時間: 2020-5-7 23:44
光電傳感器也可以用定時器來計數吧?
作者: 我只是過客    時間: 2020-5-8 20:43
博主,定時1分鐘,數據也會不準確吧?霍爾一圈要給多少個脈沖精度才準確?
作者: 51黑電子會員    時間: 2020-5-22 08:29
我只是過客 發表于 2020-5-8 20:43
博主,定時1分鐘,數據也會不準確吧?霍爾一圈要給多少個脈沖精度才準確?

速度一定后 也就是每秒多少轉恒定后  每分鐘是不是每秒累積出來的速度  會說不準確嗎?
作者: return520    時間: 2021-4-28 11:02
需要對兩個電機測速的話,可以T0,T1連接兩個霍爾元件進行測速嗎?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人精品国产免费网站 | 国产在线视频一区 | 日韩福利在线观看 | 黄色毛片在线观看 | 色婷婷久久久亚洲一区二区三区 | 国产乱人伦精品一区二区 | 欧美综合一区二区三区 | 日韩一级精品视频在线观看 | 狠狠操av| 成年人在线观看 | 国产一区二区三区不卡av | 久久久久久久久久久蜜桃 | 男女搞网站 | 伊人超碰 | 国产伦精品一区二区三区精品视频 | 亚洲成人精品在线 | 欧美久久久电影 | 国产色99| 天天碰日日操 | 羞羞网站在线观看 | 一区二区三区av | 国产精品久久久久久久午夜片 | 日韩成人在线播放 | 欧美在线a | 一级毛片成人免费看a | 亚洲免费在线 | 日韩av在线一区二区三区 | 欧美激情精品久久久久久变态 | 香蕉久久av | 国产日韩一区二区三区 | 2019精品手机国产品在线 | 久久精品亚洲精品国产欧美 | 亚洲免费精品一区 | 福利视频一区二区 | av国产精品毛片一区二区小说 | 91精品亚洲| 成人在线日韩 | 中文字幕99 | 亚洲福利在线视频 | 手机av在线 | 亚洲精彩视频在线观看 |