国产三级在线看完整版-内射白嫩大屁股在线播放91-欧美精品国产精品综合-国产精品视频网站一区-一二三四在线观看视频韩国-国产不卡国产不卡国产精品不卡-日本岛国一区二区三区四区-成年人免费在线看片网站-熟女少妇一区二区三区四区

儀器網(wǎng)(yiqi.com)歡迎您!

| 注冊2 登錄
網(wǎng)站首頁-資訊-話題-產(chǎn)品-評測-品牌庫-供應(yīng)商-展會-招標-采購-知識-技術(shù)-社區(qū)-資料-方案-產(chǎn)品庫-視頻

問答社區(qū)

用單片機C51中的計數(shù)器來測霍爾傳感器轉(zhuǎn)一圈的時間程序

路難走asd 2016-04-21 00:05:31 450  瀏覽
  • 請求大神們盡量給出詳細程序,

參與評論

全部評論(1條)

  • 一徑梅苔 2016-04-21 01:40:49
    #include<reg52.h> #include<Star1602.h> #define CIRCLE 1.8 //宏定義 車輪的周長(這個要根據(jù)實際的車輪進行設(shè)置) sbit Signal = P1^0; //這里的Signal表示的是霍爾傳感器的信號引腳 int m_second=0; //定義變量m_second,用來記錄時間(以毫秒為單位) float speed=0.0 ; //定義速度變量 float length=0.0 ;//定義路程變量 void main() { lcd_init(); //初始化液晶函數(shù) TMOD = 0x01; //打開定時器0,并設(shè)定其工作方式為16位定時模式。 TH0=(65536-10000)/ 256; TL0=(65536-10000)% 256; //設(shè)定定時器的初值,使得沒10ms中斷一次 EA = 1; //允許總中斷 ET0 = 1; //允許定時器0終端 TR0 = 1; //啟動定時器0 while(1) //大循環(huán) { while(Signal); //等待霍爾傳感器信號線拉低; speed = CIRCLE *1000 / m_second ; //計算速度。 m_second = 0; //計時清零 length += CIRCLE ; //路程加一個車輪周期 //diyi行,顯示速度 lcd_pos(0x0); //設(shè)定液晶的寫入位置為diyi行diyi格 lcd_wdat(‘S’); lcd_wdat(‘p’); lcd_wdat(‘e’); lcd_wdat(‘e’); lcd_wdat(‘d’); lcd_wdat(‘:’); lcd_wdat( (int)speed%10 ); //顯示速度的整數(shù)部分 lcd_wdat( (int)(speed*10)%10 ); //顯示速度的小數(shù)diyi位 lcd_wdat( (int)(speed*100)%10 ); //顯示速度的小數(shù)第二位 lcd_wdat(‘m’); lcd_wdat(‘/’); lcd_wdat(‘s’); //第二行,顯示里程 lcd_pos(0x80); //設(shè)定液晶的寫入位置為第二行diyi格 lcd_wdat(‘L’); lcd_wdat(‘e’); lcd_wdat(‘n’); lcd_wdat(‘g’); lcd_wdat(‘t’); lcd_wdat(‘h’); lcd_wdat(‘:’); lcd_wdat(length /10000+0x30); //顯示里程的萬位; lcd_wdat(length %10000/1000+0x30); //顯示里程的千位; lcd_wdat(length %1000/100+0x30); //顯示里程的百位; lcd_wdat(length %100/10+0x30); //顯示里程的十位; lcd_wdat(length %10+0x30); //顯示里程的個位; lcd_wdat(‘m’); } } void timer0_intt() interrupt 1 // { TH0=(65536-10000)/ 256; TL0=(65536-10000)% 256; //設(shè)定定時器的初值,使得沒10ms中斷一次 m_second += 10; //因為中斷每10毫秒一次,所以這里每次加10; } 附件1 Star1602.h #ifndef __STAR1602_H__ #define __STAR1602_H__ sbit rs= P2^0; // sbit rw = P2^1; // sbit ep = P2^2; // void lcd_init(); //液晶初始化函數(shù) void lcd_pos(unsigned char pos); //設(shè)定液晶的顯示位置函數(shù) void lcd_wdat(unsigned char dat); //液晶寫入字符 void lcd_write_int(unsigned int x); //液晶顯示一個整形變量 #endif 附件2 Star1602.c #include <reg52.h> #include "1602.h" /***************************************************************************** 函數(shù)功能:LCD延時子程序 入口參數(shù):ms 出口參數(shù): *****************************************************************************/ static void delay(unsigned char ms) { unsigned char i; while(ms--) { for(i = 0; i< 5; i++); } } /***************************************************************************** 函數(shù)功能:測試LCD忙碌狀態(tài) 入口參數(shù): 出口參數(shù):result *****************************************************************************/ static bit lcd_bz() { bit result; rs = 0; rw = 1; ep = 1; delay(5); result = (bit)(P0 & 0x80); ep = 0; return result; } /***************************************************************************** 函數(shù)功能:寫指令數(shù)據(jù)到LCD子程序 入口參數(shù):cmd 出口參數(shù): *****************************************************************************/ static void lcd_wcmd(unsigned char cmd) { while(lcd_bz()); //判斷LCD是否忙碌 rs = 0; rw = 0; ep = 0; delay(5); P0 = cmd; delay(5); ep = 1; delay(5); ep = 0; } /***************************************************************************** 函數(shù)功能:設(shè)定顯示位置子程序 入口參數(shù):pos 出口參數(shù): *****************************************************************************/ void lcd_pos(unsigned char pos) { lcd_wcmd(pos | 0x80); } /***************************************************************************** 函數(shù)功能:寫入顯示數(shù)據(jù)到LCD子程序 入口參數(shù):dat 出口參數(shù): *****************************************************************************/ void lcd_wdat(unsigned char dat) { while(lcd_bz()); //判斷LCD是否忙碌 rs = 1; rw = 0; ep = 0; P0 = dat; delay(5); ep = 1; delay(5); ep = 0; } /***************************************************************************** 函數(shù)功能:LCD初始化子程序 入口參數(shù): 出口參數(shù): *****************************************************************************/ void lcd_init() { lcd_wcmd(0x38); delay(100); lcd_wcmd(0x0c); delay(100); lcd_wcmd(0x06); delay(100); lcd_wcmd(0x01); delay(100); } /***************************************************************************** 函數(shù)功能:LCD寫入一個整形數(shù)據(jù) 入口參數(shù):int x *****************************************************************************/ void lcd_write_int(unsigned int x); { unsigned char x1,x2,x3,x4,x5; x1 = x/10000; x2=x%10000/1000; x3=x%1000/100; x4=x%100/10; x5=x%10; lcd_wdat(x1+0x30); lcd_wdat(x2+0x30); lcd_wdat(x3+0x30); lcd_wdat(x4+0x30); lcd_wdat(x5+0x30); }

    贊(10)

    回復(fù)(0)

    評論

熱門問答

用單片機C51中的計數(shù)器來測霍爾傳感器轉(zhuǎn)一圈的時間程序
請求大神們盡量給出詳細程序,
2016-04-21 00:05:31 450 1
C51單片機計時器50ms程序編寫
 
2017-05-24 09:29:03 623 2
霍爾傳感器測轉(zhuǎn)速的程序。
#include #include #define uint unsigned int #define uchar unsigned char sbit rs=P2^2; sbit rw=P2^1; sbit lcdcs=P2^0; sbit warning=P2^4; uint i,z,count,zhuan,msec; uchar display[]={" speed= r/s"}; void ... #include #include #define uint unsigned int #define uchar unsigned char sbit rs=P2^2; sbit rw=P2^1; sbit lcdcs=P2^0; sbit warning=P2^4; uint i,z,count,zhuan,msec; uchar display[]={" speed= r/s"}; void delay(uint ms) { uint i,j; for (j=0;j3000) { warning=0; } if(zhuan<300) { warning=1; } } void main() { int_all(); while(1) { disp_count(); warning_speed(); displaytolcd(); } } 這個程序模擬的時候是用圖中得模擬的。但是霍爾傳感器產(chǎn)生的是開關(guān)量。請問怎么改動才能讓他實現(xiàn)轉(zhuǎn)速測量的功能? 展開
2012-06-14 03:13:26 527 2
基于C51單片機的信號發(fā)生器
求各位前輩和同學(xué)指點下該怎么開始各個部分有什么作用怎么組成總之就是整體的設(shè)計思路謝謝... 求各位前輩和同學(xué)指點下該怎么開始 各個部分有什么作用 怎么組成 總之就是整體的設(shè)計思路 謝謝 展開
2016-10-28 15:46:50 430 1
無刷電機的霍爾傳感器當輪子轉(zhuǎn)一圈時傳感器動作幾次?
我想把市售的碼表傳感器信號改為從無刷電機的霍爾傳感器取出,從而計算速度與里程.不知當電機輪子轉(zhuǎn)一圈時,其中一個霍爾傳感器動作幾次?
2009-10-08 12:55:48 692 2
基于單片機C51的頻率計電路圖
1、要共陰數(shù)碼顯示。2、頻率超過2K報警。3、蜂鳴器報警??蓽y1Hz到5KHz
2018-11-17 14:51:41 451 0
怎么來確定一個伺服電機轉(zhuǎn)一圈所需要的脈沖數(shù)量?
 
2013-11-10 02:05:25 595 4
用單片機對直流電機調(diào)速的程序
 
2011-04-22 10:35:59 370 2
霍爾傳感器怎么樣來測速,并如何連接單片機
 
2017-04-24 06:58:22 477 1
基于單片機的光電傳感器的計數(shù)器設(shè)計
要求: 1.計數(shù)范圍0~99,Z初顯示數(shù)值99。Z好用7段數(shù)碼顯示器。 2.用光電傳感器作為信號觸發(fā)源。 3.光電傳感器A的信號顯示數(shù)值減一,光電傳感器B的信號顯示數(shù)字加一。 4.Z好能有電路圖。
2008-05-02 17:20:24 395 1
誰能幫忙寫一下用霍爾傳感器和51單片機測量電機轉(zhuǎn)速的程序和接線圖
 
2016-04-14 17:07:35 327 1
單片機中中斷與計時器/計數(shù)器的關(guān)系是什么?
為什么發(fā)生一次中斷響應(yīng)時需要用到TMOD和TCON,而定時器計數(shù)器在工作的時候同樣需要使用到他們之間的關(guān)系到底是什么?
2015-01-25 01:30:42 606 2
RTU通訊協(xié)議中的 3.5個字符的靜止時間怎么寫(單片機的程序) 謝謝!
RTU通訊協(xié)議中的 3.5個字符的靜止時間怎么寫(單片機的程序) 謝謝!
2014-06-26 01:07:04 583 2
單片機簡易頻率計,怎么編程序測正弦信號的?
測方波信號的我知道,就是用計數(shù)器來計數(shù),但正弦信號不能這樣子的吧。
2011-06-18 10:21:18 488 3
伺服電機轉(zhuǎn)一圈需要多少脈沖
 
2017-09-21 21:53:37 1145 1
伺服電機是多少個脈沖轉(zhuǎn)一圈
 
2017-02-21 03:08:49 1530 1
單片機60秒計時器的程序,用AT89C51實現(xiàn)
 
2009-06-03 22:35:17 423 4
C51單片機怎么讓lcd1602顯示兩行?
 
2012-12-17 03:50:22 422 4
用霍爾傳感器測轉(zhuǎn)速
單位要用霍爾傳感器測船主軸轉(zhuǎn)速,我不是搞這個的,就過來瞎問問 網(wǎng)上查了點資料,大概就是霍爾傳感器輸出脈沖波然后用單片機采集信號換算成轉(zhuǎn)速。 霍爾傳感器輸出的脈沖信號是直接可以讓單片機采集處理還是要另外接個電路整形后再接入單片機,要是需要的話... 單位要用霍爾傳感器測船主軸轉(zhuǎn)速,我不是搞這個的,就過來瞎問問 網(wǎng)上查了點資料,大概就是霍爾傳感器輸出脈沖波然后用單片機采集信號換算成轉(zhuǎn)速。 霍爾傳感器輸出的脈沖信號是直接可以讓單片機采集處理還是要另外接個電路整形后再接入單片機,要是需要的話電路如何設(shè)計選擇? 有沒有現(xiàn)成可買的元器件 單片機如何選擇,主軸轉(zhuǎn)速應(yīng)該在80~2000rpm不等 還有程序怎么編,有現(xiàn)成可以買的嗎 然后是顯示問題 是在單片機連個LED數(shù)碼管還是如何 用電腦顯示的話還得另外做采集程序吧 另外,單位有National Instruments的采集卡和程序,可以利用嗎? 再次聲明下,我只是個搞船舶檢測的 這種東西專業(yè)性太強我沒有接觸過,可能問得很傻,大家別笑話我 請明白人指點,給出個方案是Z好了 謝謝 到Z后才知道自己財富值就一點 唉,總不能白打字了吧 展開
2009-12-31 16:16:29 447 3

4月突出貢獻榜

推薦主頁

最新話題