c51单片机光电门测反应时间(实战小项目)
生活随笔
收集整理的這篇文章主要介紹了
c51单片机光电门测反应时间(实战小项目)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第一步:準(zhǔn)備材料(光電門)也叫測距模塊
?產(chǎn)品用途:廣泛用于電機(jī)轉(zhuǎn)速檢測,脈沖計數(shù),位置限位等。
模塊特色: 1、使用進(jìn)口槽型光耦傳感器,槽寬度 5mm。 2、有輸出狀態(tài)指示燈,輸出高電平燈滅,輸出低電平燈亮。 3、有遮擋,輸出高電平;無遮擋,輸出低電平。 4、比較器輸出,信號干凈,波形好,驅(qū)動能力強(qiáng),超過 15mA。 5、工作電壓 3.3V-5V 6、輸出形式 :數(shù)字開關(guān)量輸出(0 和 1) 7、設(shè)有固定螺栓孔,方便安裝 8、小板 PCB 尺寸:3.2cm x 1.4cm 9、使用寬電壓 LM393 比較器 模塊使用說明: 1.模塊槽中無遮擋時,接收管導(dǎo)通,模塊 DO 輸出低電平,遮擋時, DO 輸出高電平; 2、DO 輸出接口可以與單片機(jī) IO 口直接相連,檢測傳感器是否有遮 檔,如用電機(jī)碼盤則可檢測電機(jī)的轉(zhuǎn)速。 2.模塊 DO 可與繼電器相連,組成限位開關(guān)等功能,也可以與有源蜂 鳴器模塊相連,組成報警器。還有一個普中的開發(fā)板
直接上代碼吧
這個原理主要是光點(diǎn)門沒有東西過的時候反饋的是一個低電平,反之是高電平。然后根據(jù)高低電平來判斷是否啟動定時器來計速既是反應(yīng)時間(毫秒級別)可以用來測人的反應(yīng)時間。神經(jīng)反應(yīng)時間。
main.c
#include <REGX52.H> #include "LCD1602.h"sbit LightDoor=P3^7;typedef unsigned int uint;uint fen,miao,umiao;uint m1,m2,m3,m4,m5;void Timer0_Init() {TMOD &= 0xF0; //設(shè)置定時器模式TMOD |= 0x01; //設(shè)置定時器模式TL0 = 0x18; //設(shè)置定時初值TH0 = 0xFC; //設(shè)置定時初值TF0 = 0; //清除TF0標(biāo)志TR0 = 0; //定時器0開始計時ET0=1;EA=1;//打開中斷 }void main() {Timer0_Init();LCD_Init();//初始化 LCD_ShowString(1,12,"GAP");while(1){LCD_ShowString(1,1,"F");//顯示分LCD_ShowString(1,4,"M");//顯示miaoLCD_ShowString(1,7,"mM");//顯示微秒LCD_ShowNum(2,1,fen,2);//顯示分LCD_ShowChar(2,3,'.');//顯示.LCD_ShowNum(2,4,miao,2);//顯示秒LCD_ShowChar(2,6,'.');//顯示.LCD_ShowNum(2,7,umiao,2);//顯示u秒LCD_ShowString(2,9,"s");LCD_ShowChar(2,14,'.');LCD_ShowNum(2,15,umiao,2);LCD_ShowNum(2,12,miao,2);// m4=umiao;//毫秒 // m3=miao;//秒轉(zhuǎn)為毫秒*1000 // //m2=fen*m3;//分轉(zhuǎn)為毫秒if(LightDoor==1){TR0=0;}else{TR0=1;if(umiao>1000){m1=umiao=0;m2=miao=0;m3=fen=0;LCD_ShowChar(2,14,'.');LCD_ShowNum(2,15,m1,2);LCD_ShowNum(2,12,m2,2);} // LCD_ShowChar(2,14,'.'); // LCD_ShowNum(2,15,umiao,2); // LCD_ShowNum(2,12,miao,2);}} }void Timer0_Routine() interrupt 1 {TL0 = 0x18; //設(shè)置定時初值TH0 = 0xFC; //設(shè)置定時初值umiao++;if(umiao>1000){ // m1=umiao;umiao=0;miao++;if(miao>60){miao=0;fen++;}} }?LCD1602模塊之前的博客也發(fā)過了,如有需要請自行查找吧
?最后是運(yùn)行效果圖
?
總結(jié)
以上是生活随笔為你收集整理的c51单片机光电门测反应时间(实战小项目)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1. R语言中grep函数和gsub()
- 下一篇: CentOS7.4下安装Oracle 1