光电传感器和激光传感器的区别.docx
2021-01-28 22:10:20 20KB 光电传感器激光传感器
1
本文介绍的速度与里程表设计以单片机和光电传感器为核心。传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的速度与里程数据能直观的显示给使用者。
2020-01-03 11:35:17 131KB 光电传感器 速度里程表
1
用于mega16控制的直流电机小车测速、计路程。用于计数光电传感器的输入脉冲,实现测速和测距离。
2019-12-21 22:02:40 2KB 光电传感器、测速、单片机
1
本智能车是以有机玻璃板为车架,AT89S52单片机为控制核心,加以直流电机、光电传感器、光敏传感器和电源电路以及其他电路构成。系统由89S52通过IO口控制小车的前进后退以及转向。壁障,黑线检测及路程测量由RPR220型光电对管完成。同时本系统用ISD2560进行语音的播报,以提示当前状态。
2019-12-21 21:13:51 455KB 智能消防小车 光电传感器
1
#include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define LED_DAT P0 sbit LED_SEG0 = P2^7; sbit LED_SEG1 = P2^6; sbit LED_SEG2 = P2^5; sbit LED_SEG3 = P2^4; #define TIME_CYLC 100 //12M晶振,定时器10ms 中断一次 我们1秒计算一次转速 // 1000ms/10ms = 100 #define PLUS_PER 10 //码盘的齿数 ,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈 #define K 1.65 //校准系数 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar data Disbuf[4];// 显示缓冲区 uint Tcounter = 0; //时间计数器 bit Flag_Fresh = 0; // 刷新标志 bit Flag_clac = 0; //计算转速标志 bit Flag_Err = 0; //超量程标志 void DisplayFresh();//在数码管上显示一个四位数 void ClacSpeed();//计算转速,并把结果放入数码管缓冲区 void init_timer();//初始化定时器T0\T1 void Delay(uint ms);//延时函数 void it_timer0() interrupt 1 /* interrupt address is 0x000b */ { TF0 = 0; //定时器 T0用于数码管的动态刷新 TH0 = 0xC0; TL0 = 0x00; Flag_Fresh = 1; Tcounter++; if(Tcounter>TIME_CYLC) { Flag_clac = 1;//周期到,该重新计算转速了 } } void it_timer1() interrupt 3 /* interrupt address is 0x001b */ { TF1 = 0; //定时器T1用于单位时间内收到的脉冲数 //要速度不是很快,T1永远不会益处 Flag_Err = 1; //如果速度很高,我们应考虑另外一种测速方法:T测速法 } void main(void) { Disbuf[0] = 0; //开机时,初始化为0000 Disbuf[1] = 0; Disbuf[2] = 0; Disbuf[3] = 0; init_timer(); while(1) { if(Flag_Fresh) { Flag_Fresh = 0; DisplayFresh(); // 定时刷新数码管显示 } if(Flag_clac) { Flag_clac = 0; ClacSpeed(); //计算转速,并把结果放入数码管缓冲区 Tcounter = 0;//周期定时 清零 TH1=TL1 = 0x00;//脉冲计数清零 } if(Flag_Err) //超量程处理 { Disbuf[0] = 0x9e; //开机时,初始化为0000 Disbuf[1] = 0x9e; Disbuf[2] = 0x9e; Disbuf[3] = 0x9e; while(1) { DisplayFresh();//不再测速 等待复位i } } } } //在数码管上显示一个四位数 void DisplayFresh() { P2 |= 0xF0; LED_SEG0 = 0; LED_DAT = table[Disbuf[0]]; Delay(1); P2 |= 0xF0; LED_SEG1 = 0; LED_DAT = table[Disbuf[1]]; Delay(1); P2 |= 0xF0; LED_SEG2 = 0; LED_DAT = table[Disbuf[2]]; Delay(1); P2 |= 0xF0; LED_SEG3 = 0; LED_DAT = table[Disbuf[3]]; Delay(1); P2 |= 0xF0; } //计算转速,并
2010-07-25 00:00:00 400KB 光电传感器、测速、protus、pcb
1