基于51单片机的红外反射式光电传感器测速机的简易设计

合集下载

基于51单片机的红外测仪

基于51单片机的红外测仪

基于51单片机的红外测仪【摘要】本系统是基于51单片机的一款测量精度为0.1毫米红外测距仪。

本系统采用能量测距原理,通过红外接收模块将采集的光信号转化成电信号,再经信号放大,A/D采样将信号转化为数字信号输入单片机中,通过编写相应的程序实现自动测量功能,通过显示电路显示出结果。

并在超出系统测试范围时进行警报。

【关键词】红外测距当前主流测距方法主要有三种:传统测量、激光测量、红外测量、超声波测量。

传统测量方法需要话费大量人力时间,且精度和范围都无法达到高标准要求。

激光测距虽在测量范围和时间上有一定优势,但对操所人员的技能要求较高容易出现安全事故,且制做的难度较大,成本较高。

超声波测距误差较大环境温度、湿度、海拔高度等都可能对其造成影响。

红外线是介于可见光和微波之间的一种电磁波,因此,它不仅具有可见光直线传播、反射、折射等特性,还具有微波的某些特性,如较强的穿透能力和能贯穿某些不透明物质等。

故在未来的发展中红外测距技术必将拥有广阔的应用前景。

本文提供一种用51单片机解决短距高精度红外测距的方法。

此系统精度高电路简单,用51c编程易懂且方便移植。

降低了调试难度且增加了初学者的可操作性。

1 方案论证与比较目前在红外测距领域中,主要有应用一下三种测距法:时间差测距法、放射能测距法和相位测距法。

这三测距法原理如下1.1 时间差测距法原理红外线发射器发射出有频率的红外线,经障碍物反射,红外线接收器接收到反射波信号,并将其转变为电信号。

测出发射波与接收到反射波的时间差,即可求出距离s,但是经过计算这个方法并不合理,红外线的传播速度为310 m/s,单片机要想反应的过来的话,处理速度至少在GHz以上,很显然是不可能的,所以是无法根据时间测出距离的。

1.2 反射能量法原理反射能量法:仪器发射一束光(通常是近红外光)照射到被障碍物表面,同时红外接收管接收障碍物的反射光能量,传播距离越远,光强就越弱,所以根据接收到的反射光能量来判断被测物体的距离。

基于51单片机红外计数器设计毕业设计(论文)

基于51单片机红外计数器设计毕业设计(论文)

毕业设计论文红外线自动计数器的设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

基于单片机控制的红外测速装置设计报告

基于单片机控制的红外测速装置设计报告

基于单片机控制的红外测速装置设计报告姓名学号学院班级组长李庆鹏11221097机电学院机械1104组员郭鑫鹏11221065机电学院机械1103指导教师:邓湘联系方式:xdeng@完成日期:2013.7.10内容摘要:90C51单片机 LED动态显示红外传感测速(计时)通过利用分布在车辆运行线路上的两个红外传感装置A和B,使得其在车辆通过时因为被车体遮挡而产生低电位,进而控制单片机进行开始(停止)计时,达到计时效果;同时,利用LED动态显示方法将得到的时间显示出来。

利用得到的时间T和预先设定的检测口A、B距离S(S被认为是足够小的一段距离),则可以近似得出列车通过A、B时的瞬时速率V, V=S/T。

若利用通信设备将此速率传输到调度中心,可以建立一个独立于列车以外的运行监测系统,这样可以防止因列车通信系统意外故障而产生的运行监测失效,为列车安全运行提供了另一把安全锁。

目录1.背景和意义 (1)1.1设计背景及意义 (1)1.2设计内容 (1)1.3设计要求 (1)2.仿真设计............................. 错误!未定义书签。

2.1设计思路......................... 错误!未定义书签。

2.2硬件设计......................... 错误!未定义书签。

2.3软件设计......................... 错误!未定义书签。

2.4Proteus软件仿真结果.............. 错误!未定义书签。

3.实物设计............................. 错误!未定义书签。

3.1工作原理......................... 错误!未定义书签。

3.2硬件设计......................... 错误!未定义书签。

3.3软件设计......................... 错误!未定义书签。

基于51单片机的红外遥控课程设计

基于51单片机的红外遥控课程设计

目录第一章设计简介 (2)第二章系统方案 (2)一、设计方案对比 (2)二、方案设计 (4)第三章硬件设计 (4)一、红外遥控器 (4)二、红外接收模块部分 (6)第四章软件设计 (7)一、红外遥控器软件设计 (7)二、红外接收模块软件设计 (10)三、程序代码 (10)第五章测试及分析 (10)第六章结论 (10)第七章参考文献 (11)附录一(程序代码): (12)第一章设计简介本设计分为红外遥控器与红外接收模块两部分。

红外遥控器包括矩阵键盘、增强型51单片机(STC11L04E)、红外发射电路组成。

单片机扫描矩阵键盘后,将按键状态进行信源编码与信道编码,载波(38k脉冲)后由红外发射器发射。

红外接收模块部分由传统51单片机、数码管、一体化红外接收头组成。

一体化红外接收头将信号进行限幅放大、带通滤波、解调、积分、整形后输出解调信号至单片机,并由单片机输出解调信号。

第二章系统方案一、设计方案对比红外遥控器部分2.1.1 主控芯片方案一:HT6222方案二:STC11L04E分析:传统红外遥控器芯片HT6222具有性价比高、功能强大、稳定可靠、使用简单等特点,但该芯片难以零购。

STC11L04E为增强型51单片机,控制灵活(载波频率可调、通信协议可变更、用户码可变换)、价格较HT6222稍贵。

STC11L04E最大的特别是低功耗,功作电压低3.3V,易于应用于移动设备。

结论:由于STC11L04E单片机的灵活性以及学习性(可增强我们对一个完整通信系统的理解)。

因此我们采用方案二。

2.1.2 矩阵键盘方案一:3*6*2.5 贴片轻触开关方案二:6*6*6 直插轻触开关分析:3*6*2.5贴片轻触开关虽然体积小巧、美观,但与6*6*6直插轻触开关对比,在制板布线上较繁锁。

结论:综上,我们采用6*6*6直插轻触开关,使得整体布线简单,可布单面版,简化制板流程。

2.1.3电源模块方案一:钮扣电池CR2032方案二:可充电锂电池18650分析:可充电锂电池18650容量大,节能环保(可多次利用),但体积大。

基于51单片机和霍尔传感器的测速

基于51单片机和霍尔传感器的测速

基于51单片机和霍尔传感器的测速1. 小项目简介主要采用stc89c51/52单片机作为主控,由霍尔传感器作为测速的基本模块,采用按键控制速度快慢,数码管显示当前速度。

最后成品图如下:2.电源部分1.电源供电的功率尽可能的稍微大一些,我是采用罗马仕充电宝供电(5V,2.1A输出口)。

因为电源功率过小,将造成电机无法带动,或者数码管闪烁等硬件上的bug。

2.如果电源的电压高于5V,需要在电源输入端使用一个稳压电路,将输入电压稳压到5V给单片机,和其他外设供电。

防止电压过高造成器件损坏。

3.硬件部分1. stc89c51/52的最小系统注意:如果使用一般的USB接口供电,当电机转动时候,可能照成单片机的管脚供电不稳定,所以需要在单片机的IO的外接上拉排阻。

P3口不需要。

9针排阻如下:有小点的一端是公共端,需要和电源5V连接,其余口和单片机管脚一一对应焊接就行。

2. 霍尔传感器注意引脚,窄的一面来看引脚顺序:这里的VOUT口可以直接连接单片机的外部中断1口,可以经过一个电压比较器lm393之类的在给单片机。

3. 直流电机马达驱动51单片机的IO口输出的电流过小,驱动直流电机马达效果不明显,达不到后期变速,需要使用一个三极管(9015\9013这类都可以)放大电路去驱动马达:示范电路如下:(电阻根据自己需要修改)4. 共阴数码管//数码管位选sbit S1=P2^4;sbit S2=P2^5;sbit S3=P2^6;sbit S4=P2^7;//数码管段选:P1的八个IO口。

连线的时候一定根据下列图示的段选(注意注意注意:容易连错)4.软件部分1.软件工程整体图:2.main.c文件代码:自己创建一个51单片机的keil工程文件,将下面代码拷贝到自己工程文件下的main.c文件替换即可/************************************************************** ************************* 基于51单片机测速* 实现现象:按下按键K1减速按下按键K2加速外部中断1对应IO口P3^3注意事项:电机速度不能过快,否则会造成数码管显示不稳定*************************************************************** ************************/#include 'reg52.h' //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;//测试端口(根据自己需要决定)sbit led=P0^0; //将单片机的P0.0端口定义为led/************************************************************** ****************************************************核心部分**************************************************************************************************************** ************************///占空比u16 time = 0; // 定义占空比的变量u16 count=30; //定义占空比上限sbit PWM=P0^1;// P0.1输出pwm//速度u16 zhuansu=0; //转速初值为0u16 jishu = 0; //jishu的变量初值为0u8 flag = 0; //定时器1计数变量//按键sbit k1=P2^0;sbit k2=P2^1;sbit k3=P2^2;sbit k4=P2^3;//数码管位选sbit S1=P2^4;sbit S2=P2^5;sbit S3=P2^6;sbit S4=P2^7;//数码管位选:P1的八个IO口//共阴数码管段选u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值//数码管存储中间变量unsigned char Display_data[4];/************************************************************** ****************** 函数名 : delay* 函数功能 : 延时函数,i=1时,大约延时10us*************************************************************** ****************/void delay(u16 i){while(i--);}//定时器和外部中断1的初始化函数void InitSyetem(){//配置外部中断1:采集霍尔传感器触发下降沿IT1 = 1; //选择下降沿触发EX1 = 1; //打开外部中断1//定时器0,1工作方式1TMOD=0x11; //定时或者计数模式控制寄存器//定时器0配置:产生PWM波TH0=(65536-10)/256;//赋初值定时10usTL0=(65536-10)%256;//sET0=1;//开定时器0中断TR0=1;//启动定时器0//定时1:测速TH1=(65536-10000)/256;//赋初值定时10msTL1=(65536-10000)%256;ET1=1;//开定时器0中断TR1=1;//启动定时器0PX1=1;//设置优先级PT1=1;//设定定时器1为最高优先级EA=1;//开总中断}//外部1中断服务函数void Service_Int1() interrupt 2{jishu++; //霍尔下降沿一次就记一次数if(jishu == 100) //累加计数有100次,总时间为100 * 10ms = 1s{led^=led; //led闪烁}}//定时0处理函数产生PWM 调速原理———在PWM高电平时候驱动电机转动在PWM低电平时候让电机停止转动void Service_Timer0() interrupt 1{TR0=0;//赋初值时,关闭定时器TH0=(65536-10)/256;//赋初值定时TL0=(65536-10)%256;//0.01msTR0=1;time++; //计数变量if(time>=100) time= 0; //清零标志变量if(time<=count) //小于设定值,输出高电平{PWM = 1;}elsePWM = 0;}//定时器1中断处理显示转速void Service_Timer1() interrupt 3{TR1=0;//赋初值时,关闭定时器TH1=(65536 - 10000) / 256;TL1=(65536 - 10000) % 256;//定时10msTR1=1;flag++; //计数变量加if(flag==100) //计时到达1s 测量此时的转速{// led=~led; //led状态取反zhuansu = jishu; //监测霍尔传感器总共计数次数jishu=0; //转速置0flag=0; //清除计数变量}}//数码管处理函数void Deal_data(){Display_data[3]=smgduan[zhuansu/1000]; //数码管高位Display_data[2]=smgduan[zhuansu/100%10];//去第二位Display_data[1]=smgduan[zhuansu/10%10];Display_data[0]=smgduan[zhuansu%10]; //数码管低位}/************************************************************** ****************** 函数名 : DigDisplay* 函数功能 : 数码管动态扫描函数,循环扫描4个数码管显示*******************************************************************************/void DigDisplay(){u8 i;for(i=0;i<4;i++){switch(i) //位选,选择点亮的数码管,{case 0 : S1 = 0; S2 = 1; S3 = 1; S4 = 1;break; //点亮第一位数码管case 1 : S2 = 0; S1 = 1; S3 = 1; S4 = 1;break;case 2 : S3 = 0; S1 = 1; S2 = 1; S4 = 1;break;case 3 : S4 = 0; S1 = 1; S2 = 1; S3 = 1;break;}P1=Display_data[i];//发送段码delay(5); //间隔一段时间扫描时间越少,一起亮且显示越稳定;时间越多,是流水点亮P1=0x00;//消隐时间过快时,每个数码管将会有重影}}/************************************************************** ****************** 函数名 : keypros* 函数功能 : 按键处理函数,判断按键K1是否按下*************************************************************** ****************/void keypros(){if(k1==0) //检测按键K1是否按下{delay(100); //消除抖动一般大约10ms 时间的估算100*n=1(s) if(k1==0) //再次判断按键是否按下{led=~led; //led状态取反count+=10;if(count >= 90) //设置一个上限count+=90;}while(!k1); //检测按键是否松开为假时候说明按键没有释放}if(k2==0) //检测按键K1是否按下{delay(100); //消除抖动一般大约10msif(k2==0) //再次判断按键是否按下{led=~led; //led状态取反count-=10;if(count <= 10){count = 10;}}while(!k2); //检测按键是否松开}}/************************************************************** ****************** 函数名 : main* 函数功能 : 主函数* 输入 : 无* 输出 : 无*************************************************************** ****************/void main(){led = 0; //上电熄灭小灯P1 = 0x00; //上电初始化熄灭数码管InitSyetem();//定时器和外部中断1的初始化函数while(1){keypros(); //按键处理函数Deal_data(); //数据处理函数DigDisplay(); //数码管显示函数}}。

基于51单片机的红外遥控-自动避障-贴墙行走-人体感应智能小车机器人

基于51单片机的红外遥控-自动避障-贴墙行走-人体感应智能小车机器人

基于51单片机的红外遥控-自动避障-贴墙行走-人体感应智能小车机器人队员1姓名:周葛学院:仪器科学与电器工程学院专业:测控技术与仪器年级:大一教学号:65130109邮箱:zhouge94@队员2姓名:成妍学院:药学院专业:生物医学工程(再生医学)年级:大一教学号:73130430邮箱:lianyungangcheng@作品类别:基本电子技术应用类目录一、引言 (1)二、总体设计 (1)三、单元电路设计 (2)1)单片机最小驱动模块 (2)2)红外接收模块 (3)方案选择 (3)方案确定 (3)理论分析与方案论证 (3)3)电机驱动模块 (4)4)避障循迹贴墙模块 (5)方案选择 (5)方案确定 (5)理论分析与方案论证 (6)5)电源模块 (7)6)人体感应模块 (7)四、软件设计 (8)五、整体测试 (8)六、结论 (9)【参考文献】 (9)【附录】 (10)源程序 (10)一、引言以STC89C52单片机为核心,制作一款红外线遥控小车,小车具有自动驾驶、手动驾驶和循迹前进等功能。

自动驾驶时,小车在前进过程中可以自动躲避障碍物。

手动驾驶时,可以手动遥控小车前进、后退、左转、右转、加速等操作。

寻迹时小车可以按轨迹前进。

红外遥控的特点是利用红外线进行点对点通信的技术,不影响周边环境,不干扰其他电器设备。

室内近距离(小于10米),信号无干扰、传输准确度高、体积小、功率低的特点,遥控中得到了广泛的应用。

本系统采用成品红外发射遥控器,具有21个按键,采用NEC红外传输协议。

接收端使用1838一体化接受头,通过单片机中断程序处理红外信号。

二、总体设计本系统由硬件和软件两部分组成。

硬件部分由红外线接受电路,控制电路,直流电机驱动,障碍物检测电路,人体感应电路五部分组成,完成红外编码信号的接受,直流电机的驱动,障碍物检测、墙体检测、地面检测,人体感应检测等功能。

软件部分主要完成信号的检测和处理、直流电机的控制,障碍物的规避等功能。

基于51单片机红外测温的设计

基于51单片机红外测温的设计

基于51单⽚机红外测温的设计前⾔体温是⼈体⽣命活动的基本特征,也是观察⼈体机能是否正常的重要标志之⼀。

⽬前,⼈们使⽤最⼴泛的⽔银体温计是根据⽔银等随温度升降的热胀冷缩的性质,通过读取刻度值来判断温度值,它有诸多的缺陷:传统温度计在使⽤时要和被测量者接触,⽽且往往要等待较长的时间,以让其充分受热,当测量结束后还要将⽔银重新甩⼊⽔银泡中,由于⽔银泡是由很薄的玻璃制成的,极易破碎,⽽且其中的⽔银蒸汽对⼈体有极强的毒害作⽤,因此普通的温度计有⾮常严重的安全隐患。

红外测温为测量⼈体温度提供了快速,⾮接触测量⼿段,可⼴泛,有效的⽤于密集⼈群的体温测量。

⽽且可以以数字的⽅式显⽰出测量结果,使测量过程变得直观,⽽且耗时短,往往在⼏秒钟之内就能测得结果,⽽且寿命长,是较为理想的测温仪器。

红外测温的设计,其内容包含了电⼦技术,检测技术,单⽚机等多⽅⾯的内容,红外测温技术是⼀门很实⽤和前沿的技术,做此课题,有利于理论联系实际,更好的掌握这⼀⽅⾯的知识体系,是对学习内容的升华,特别是对单⽚机控制技术知识的深⼊理解,对于⾃⾝综合素质与⼯程能⼒的培养也有重要意义。

⽬录⼀.概述 (1)1.红外测温概况 (1)1.1红外测温的基础理论 (1)1.2红外测温的特点 (1)1.3设计的⽬的和意义 (2)⼆.设计的整体思路和框架 (2)2.1总体设计 (2)2.2系统总体结构框图 (3)三.AT89S52单⽚机简介 (3)四.红外传感器简介 (4)五.显⽰模块简介 (5)六.软硬件调试 (6)6.1 系统硬件调试 (6)6.2 系统软件调试 (6)七.总结 (7)⼋.参考⽂献 (8)⼀.概述1.红外测温概况1.1红外测温的基础理论红外线是电磁波谱的⼀个部分,这⼀波段位于可见光和微波之间,根据普朗克辐射定理,凡是绝对温度⼤于零度的物体都能辐射电磁能,物体的辐射强度与温度表⾯的辐射能⼒有关,辐射的光谱分布也与物体温度密切相关。

在电磁波谱中,我们把⼈眼可直接感知的0.4~0.75微⽶破段称为可见光波段,⽽把波长从0.75⾄1000微⽶的电磁波称为红外波段,红外波段的短波段与可见光红光相邻,长波端与微波相接。

基于51单片机的步进电机红外控制系统的设计

基于51单片机的步进电机红外控制系统的设计

文章标题:基于51单片机的步进电机红外控制系统的设计引言在现代科技发展迅速的时代,控制系统已经被广泛应用于各个领域。

其中,基于51单片机的步进电机红外控制系统的设计,不仅在工业领域有着重要的作用,同时也在家电领域、智能家居等方面得到了广泛的应用。

本文将从步进电机控制系统的设计原理、红外控制的基本概念以及基于51单片机的系统设计方案等方面展开深入探讨。

一、步进电机控制系统的设计原理步进电机是一种将电脉冲信号转换为机械位移的执行元件,其控制系统设计原理是核心。

以步进电机为执行元件的控制系统通常包括电脉冲发生电路、电流驱动电路、位置控制逻辑电路以及接口电路等模块。

在系统设计中,需要考虑步进电机的类型、工作方式、转动角度以及控制精度等因素,以选择合适的控制方案和相关元器件。

针对步进电机的控制系统设计,首先需要从硬件电路和软件控制两个方面进行综合考虑。

硬件方面需要设计合适的脉冲发生电路和驱动电路,并根据具体场景考虑相关的接口电路,以实现步进电机的控制和驱动。

而软件控制方面,则需要编写相应的控制程序,使得系统能够根据具体的控制要求进行精准的控制和调节。

二、红外控制的基本概念红外控制是一种常见的无线遥控技术,通过使用红外线传输信号来实现对设备的控制。

通常包括红外发射器和红外接收器两个部分,发射器将控制信号转换成红外信号发送出去,接收器接收红外信号并将其转换成电信号进行处理。

在实际应用中,红外控制技术已经被广泛应用于各种家电遥控器、智能家居系统以及工业自动化领域。

红外控制的基本原理是在发射器和接收器之间通过红外线进行双向通信,通过调制解调的方式进行信号的传输和解析。

设计基于红外控制的步进电机系统需要考虑红外信号的发射和接收过程,以及相关的解析算法和信号处理。

信号的稳定性、抗干扰能力以及传输距离等也是需要考虑的重要因素。

三、基于51单片机的系统设计方案在步进电机红外控制系统的设计中,选择合适的控制芯片和处理器是至关重要的。

基于51单片机的红外反射式光电传感器测速机的简易方案设计书

基于51单片机的红外反射式光电传感器测速机的简易方案设计书
因为当红外线照到面黑色时,反射光很弱,接收端检测到的光线可以忽略,当照到白色面时,反射光强烈,发射端发射的红外线几乎被接收端全部接收,因此,检测到的信号经过比较电路输出后,会给单片机输入高低两种电平。所以,在编程中,假定在1S时间内共检测到n个低电平信号,那么此电机的转速为 。
四:整体电路图及实物图
(二)单片机部分
(1)单片机外部连线图:如下图(3)所示
图(3)单片机连线图
在上接线图中,可在数码管与单片机之间接上一个分压电阻,起到保护作用。单片机型号选89C51或89C52都行。在实验板上把图(1)中的2管脚(逻辑电平输出管脚)和图(2)中的12管脚(中断输入管脚)连接,即可构成整个测速系统。
(c)
图(1)LM339工作原理图及管脚图
(2)整体连线图:如下图(2)所示:
图(2)比较型光电传感器整体电路图
在上图中,LED灯相当于一个红外线发射管,JP1是红外线接收管,接收光强在上面转换成电流,在R上成为电压信号。当光线照射到白色面上时,光线反射强烈,光线照射到黑色面上时,光线反射较弱。因此当光照在不同颜色面上时,阻值会发生明显的变化。将阻值的变化值与RA1的标准值进行比较,就可以从LM339输出逻辑电平给单片机。
if(aa==20)
{
aa=0。
temp=20*n。
n = 0。
qian=temp/1000。
bai=temp%1000/100。
shi=temp%100/10。
ge=temp%10。
}
}
P1=0xfb。
delay(1)。
P0=table[shi]。
P1=0xfd。
delay(1)。
P0=table[ge]。
P1=0xfe。

基于51单片机智能红外遥控器的设计

基于51单片机智能红外遥控器的设计

6511青岛农业大学毕业论文(设计)任务书论文(设计)题目简易智能红外遥控器的设计要求完成时间论文(设计)内容(需明确列出研究的问题):本设计要求设计一简易智能红外遥控器,需要解决以下问题:1、熟悉红外遥控器的工作原理;2、掌握红外通信的编解码原理及至少一种串行通信数据校验算法;3、实现一个遥控器对至少2台家电设备的控制;4、绘制系统电气原理图及PCB图;5、画出系统的软件流程图并编写系统程序;6、尽量做出样机并完成系统调试。

资料、数据、技术水平等方面的要求:1、查阅至少10篇以上与课题相关资料,至少有两篇是英文文献;2、原理图的绘制要求规范;3、绘制系统PCB图;4、编写并调试系统程序;5、完成实物演示;6、独立完成论文;7、论文要求打印。

指导教师签名:年月日目录摘要 (I)ABSTRACT (II)一. 绪论 (1)1.1课题研究的背景 (1)1.2课题研究的目的 (1)1.3课题研究的内容 (1)二. 系统概述 (3)2.1国外发展概况 (3)2.2国内发展概况 (4)三. 智能红外遥控器的硬件设计 (5)3.1主要元器件介绍 (5)3.1.1 STC系列单片机介绍 (5)3.1.2 红外发光二极管 (6)3.1.3 红外接收头 (7)3.1.4 E2PROM-AT24C02的应用 (8)3.2系统设计思路 (12)3.2.1 红外遥控器组成 (14)3.2.2 红外遥控器的框图 (15)3.3硬件电路设计 (15)3.3.1 发射端硬件电路 (15)3.3.2 接收端硬件电路 (16)四. 智能红外遥控器的软件设计 (18)4.1编解码约定与存储 (18)4.1.1 发射编码部分 (18)4.1.2 接收解码部分 (21)4.1.3 存储部分 (23)4.2子程序介绍 (25)4.2.1 发射子程序 (25)4.2.2 接收子程序 (29)五. 总结与展望 (33)5.1总结 (33)5.2本文的不足 (33)参考文献 (34)致谢 (35)附录一原理图 (36)附录二程序 (37)简易智能红外遥控器的设计摘要红外遥控技术能给人们日常生活带来更加人性化的关怀和体贴,同时还兼具节能与安防等辅助功能,相对应的红外遥控器与人们的日常生活息息相关,是人们使用频率最高的智能化设备。

基于51单片机的红外遥控设计-毕业设计论文

基于51单片机的红外遥控设计-毕业设计论文

摘要很多电器都采用红外遥控,那么红外遥控的工作原理是什么呢?本文将介绍其原理和设计方法。

红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。

常用的红外遥控系统一般分发射和接收两个部分。

红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的,在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。

也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。

接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。

“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。

一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便后级适时地来取数据。

这种输出形式一般用于与单片机或微机接口。

除以上输出形式外,还有“锁存”和“暂存”两种形式。

所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述介绍的“电平”输出类似。

关键词:80c51单片机、红外发光二极管、晶振目录第一章1、引言 (3)2、设计要求与指标 (3)3、红外遥感发射系统设计 (4)4、红外发射电路设计 (4)5、调试结果及分析 (9)6、结论 (10)第二章1、引言 (10)2、设计要求与指标 (11)3、红外遥控系统设计 (11)4、系统功能实现方法 (15)5、红外接收电路 (16)6、软件设计 (17)7、调试结果及分析 (18)8、结论 (19)参考文献附录绪论人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。

其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。

比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。

红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。

基于51单片机的红外反射式光电传感器测速机的简易设计

基于51单片机的红外反射式光电传感器测速机的简易设计

基于51单片机的红外反射式光电传感器测速机的简易设计——基于红外反射式的测速机引言在工程实践中,经常会遇到各种需要测量转速的场合。

转速是电动机极为重要的一个状态参数,在很多运动系统的测控中,都需要对电机的转速进行测量,不论是直流调速系统还是交流调速系统,只有转速的高精度检测才能得到高精度的控制系统。

迄今为止,测速可分为两类:模拟电路测速和数字电路测速。

随着微电子技术的发展,计算机技术的广泛应用,出现了以计算机为核心的数字测速装置。

这样的速度测量装置测量范围宽、工作方式灵活多变、适应面广,具有普通数字测速装置不可比拟的快速性、精确性和优越性。

一:设计思路用一个红外发光二极管和一个接受红外光的二极管组成一套光电管。

当检测到物表面为黑色时,反射光很弱,接收端检测到的光线可以忽略,使接收端呈现一种状态,例如开关管截止;当被检测物表面为白色时,反射光强烈,发射端发射的红外线被接收端全部接收,使接收端呈现另一种相反的状态,例如开关管开通。

这两种相反的状态表现在电路中,就是高低电平组成的脉冲信号。

由此,我想到用一个比较器来比较两种接受到的信号,从而输出“0”“1”两种高低电平,并把两种信号传给单片机进行统计,然后利用设定算法进行计算,最后通过数码显示管显示计算结果。

二:所需模块本测速系统共有两个模块构成,一个为光电传感器部分,用于接收光信号并转换为电信号,即高低电平信号;另一个为单片机部分,用于接收高低电平信号并通过内部计算,然后再通过数码显示管显示测出的结果。

(一) 光电传感器部分(1)LM339工作原理及管脚图:LM339类似于增益不可调的运算放大器。

每个比较器有两个输入端和一个输出端。

两个输入端中的一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。

当用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压,当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。

基于51的避障循迹重力感应遥控的智能小车设计(C语言)

基于51的避障循迹重力感应遥控的智能小车设计(C语言)

基于51的避障/循迹/重力感应遥控的智能小车设计1 绪论1.1 选题背景随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。

全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。

可见其研究意义很大。

本设计就是在这样的背景下提出的,指导教师已经有充分的准备。

本题目是结合科研项目而确定的设计类课题。

设计的智能电动小车应该能够实现适应能力,能自动避障,可以智能规划路径。

智能化作为现代社会的新产物,是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。

同遥控小车不同,遥控小车需要人为控制转向、启停和进退,比较先进的遥控车还能控制器速度。

常见的模型小车,都属于这类遥控车;智能小车,则可以通过计算机编程来实现其对行驶方向、启停以及速度的控制,无需人工干预。

操作员可以通过修改智能小车的计算机程序来改变它的行驶方向。

因此,智能小车具有再编程的特性,是机器人的一种。

中国自1978年把“智能模拟”作为国家科学技术发展规划的主要研究课题,开始着力研究智能化。

从概念的引进到实验室研究的实现,再到现在高端领域(航天航空、军事、勘探等)的应用,这一过程为智能化的全面发展奠定基石。

智能化全面的发展是实现其对资源的合理充分利用,以尽可能少的投入得到最大的收益,大大提高工业生产的效率,实现现有工业生产水平从自动化向智能化升级,实现当今智能化发展由高端向大众普及。

从先前的模拟电路设计,到数字电路设计,再到现在的集成芯片的应用,各种能实现同样功能的元件越来越小为智能化产物的生成奠定了良好的物质基础。

智能小车,是一个集环境感知、规划决策,自动行驶等功能于一体的综合系统,它集中地运用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体。

1.2 智能小车研究现状智能车辆作为智能交通系统的关键技术,是许多高新技术综合集成的载体。

基于C51单片机直流电机测速仪设计

基于C51单片机直流电机测速仪设计

基于C51单⽚机直流电机测速仪设计基于C51单⽚机直流电机测速仪设计摘要:电机的转速是各类电机运⾏过程中的⼀个重要监测量,测速装置在电机调速系统中占有⾮常重要的地位,特别是数字式测速仪在⼯业电机测速⽅⾯有独到的优势。

本⽂介绍了⼀种基于C51单⽚机的光电传感器转速测量系统的设计。

系统采⽤对射式光电传感器产⽣与齿轮相对应的脉冲信号,使⽤AT89C51单⽚机采样脉冲信号并计算每分钟内脉冲信号的数⽬,即电机对应的转速值,最终系统通过LCD实时显⽰电机的转速值。

经过软硬件系统的搭建,分别通过Protues软件系统仿真实验和实际电路搭建检查实验。

仿真实验表明本系统满⾜设计要求,并且结构简单、实⽤。

整个直流电机测速系统在降低测速仪成本,提⾼测速稳定性及可靠性等⽅⾯有⼀定的应⽤价值。

关键词:转速测量;光电传感器;单⽚机Based On C51 SCM Single DC Motor Speedometer DesignABSTRACT:Motor speed is all kinds of motor operation is an important process to monitor the amount of speed measuring device in the motor control system occupies a very important position, Especially the digital speedometer in the industrial motor speed has unique advantage. This paper describes a photoelectric sensor 51 SCM-based speed measurement system design. System uses a beam photoelectric sensor generates a pulse signal corresponding to the gear, the use of a sampling pulse signal AT89C51 SCM and calculating the pulse per minute, the number of signals that the speed of the motor corresponding to the value of the final system time through the LCD display the motor speed value.After a hardware and software system structures, respectively, through Protues software system to build the actual circuit simulation and experimental examination. Simulation results show that the system meets the design requirements, and the structure is simple and practical. DC Motor Speed entire system in reducing speedometer costs, improve reliability, speed stability and a certain application value.Keywords: Speed measurement; Photoelectric; Single chip micyoco⽬录1 绪论 (1)1.1 数字式转速测量系统的发展背景 (1)1.2 转速测量在国民经济中的应⽤ (1)1.3主要研究内容 (2)1.4 设计的⽬的和意义 (2)2 转速测量系统的原理 (4)2.1 转速测量原理 (4)2.2 转速测量计算⽅法 (5)3转速测量系统设计⽅案 (7)3.1 直流电机转速测量⽅法 (7)3.2 设计任务及⽅案 (8)4 直流电机测速系统设计 (9)4.1 单⽚机AT89C51介绍 (9)4.2 转速信号采集 (14)4.2 转速信号处理电路设计 (16)4.4 最⼩系统的设计 (17)4.4.1复位电路 (17)4.4.2 晶振电路 (20)4.5 显⽰部分设计 (20)5 直流测速系统仿真 (24)5.1 直流测速系统仿真 (24)5.1.1单⽚机最⼩系统仿真 (25)5.1.2 数码管显⽰仿真 (25)5.2 主程序流程设计 (26)5.2.1 主程序流程设计 (26)5.2.2 定时器的初始化 (27)5.3 实际电路实验 (28)参考⽂献 (30)致谢 (31)1 绪论1.1 数字式转速测量系统的发展背景在现代⼯业⾃动化⾼度发展的时期,⼏乎所有的⼯业设备都离不开旋转设备,形形⾊⾊的电机在不同领域发挥着很重要的作⽤。

基于51单片机的光电传感器转速计设计

基于51单片机的光电传感器转速计设计

#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char/*----1602 Part------*/sbit RS = P2^4; //定义端口sbit RW = P2^5;sbit EN = P2^6;#define RS_CLR RS=0#define RS_SET RS=1#define RW_CLR RW=0#define RW_SET RW=1#define EN_CLR EN=0#define EN_SET EN=1#define DataPort P0/*---------ISR Part-----------*/uint timer=0,timer1=0,PWM_timer=0;/*---------KEY Part-----------*/sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;char key1_flag=0,key2_flag=0,key3_flag=0;/*---------MOTOR Part-----------*/sbit PWM=P1^4;int pwm_num=5;char exchange_flag=0; //切换显示 minute or second/*---------REV Part-----------*/sbit REV_flag=P1^5;uint grating=0; //光栅数uchar ge_num=0,shi_num=0,bai_num=0,qian_num=0,tens_num=0,percentile_num=0;/*---------MAIN Part-----------*//*------------------------------------------------ T=tx2+5 uS------------------------------------------------*/ void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/ void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------判忙函数------------------------------------------------*/ bit LCD_Check_Busy(void){DataPort= 0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0x80);}/*------------------------------------------------写入命令函数------------------------------------------------*/ void LCD_Write_Com(unsigned char com){// while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPort= com;_nop_();EN_CLR;}/*------------------------------------------------写入数据函数------------------------------------------------*/void LCD_Write_Data(unsigned char Data){//while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_SET;RW_CLR;EN_SET;DataPort= Data;_nop_();EN_CLR;}/*------------------------------------------------清屏函数------------------------------------------------*/void LCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*------------------------------------------------写入字符串函数------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}while (*s){LCD_Write_Data( *s);s ++;}}/*------------------------------------------------写入字符函数------------------------------------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}LCD_Write_Data( Data);}/*------------------------------------------------初始化函数------------------------------------------------*/void LCD_Init(void){LCD_Write_Com(0x38); /*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08); /*显示关闭*/LCD_Write_Com(0x01); /*显示清屏*/LCD_Write_Com(0x06); /*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C); /*显示开及光标设置*/}/*--------------KEY------------------*/void key(){if(!KEY1){DelayMs(10);if(!KEY1){pwm_num++;if(pwm_num>=19) pwm_num=19;while(!KEY1);}}if(!KEY2){DelayMs(10);if(!KEY2){pwm_num--;if(pwm_num<=1) pwm_num=1;while(!KEY2);}}if(!KEY3){DelayMs(5);if(!KEY3){exchange_flag=!exchange_flag;while(!KEY3);}}}/*-------------REV--------------*/unsigned char Trg;unsigned char Cont;void REVRead(){unsigned char ReadData = REV_flag^0xff; // 1Trg = ReadData & (ReadData ^ Cont); // 2Cont = ReadData; // 3 if(Trg==0x01){grating++; //记录光栅数目}}/*--------------ISR------------------*/ void ISR_init(){TMOD=0x01;TH0=(65536-1000)/256; //1msTL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;}void T0_ISR()interrupt 1{TH0=(65536-1000)/256; //1msTL0=(65536-1000)%256;PWM_timer++;timer++;REVRead();if(PWM_timer==0){PWM = 1;}if(PWM_timer==pwm_num){PWM = 0;}if(PWM_timer==20){PWM = 1;PWM_timer =0;}if(timer==1) //1ms 扫描一次{timer1++;timer=0;}if(timer1==1000) //1000ms 计算一次光栅数量{if(exchange_flag==0){ge_num=grating/20%10; //20 plus per revshi_num=grating/20%1000/100 ;bai_num=grating/20%1000/100;qian_num=grating/20%10000/1000;tens_num=grating%20/10; //十分位percentile_num=grating%20%10; //百分位 }if(exchange_flag==1){grating=grating*60; //REV per secondge_num=grating/20%10; //20 plus per revshi_num=grating/20%1000/100 ;bai_num=grating/20%1000/100;qian_num=grating/20%10000/1000;tens_num=grating%20/10; //十分位percentile_num=grating%20%10; //百分位 }grating=0;timer1=0;}}/*------------------------------------------------主函数------------------------------------------------*/void main(void){ISR_init();LCD_Init();PWM = 0;LCD_Write_String(0,0,"THE REV IS:");while (1){//LCD_Clear();key();if(exchange_flag==0){LCD_Write_Char(1,1,qian_num+0x30);LCD_Write_Char(2,1,bai_num+0x30);LCD_Write_Char(3,1,shi_num+0x30);LCD_Write_Char(4,1,ge_num+0x30);LCD_Write_Char(5,1,'.');LCD_Write_Char(6,1,tens_num+0x30);LCD_Write_Char(7,1,percentile_num+0x30);LCD_Write_String(9,1,"rad/sec");}if(exchange_flag==1){LCD_Write_Char(1,1,qian_num+0x30);LCD_Write_Char(2,1,bai_num+0x30);LCD_Write_Char(3,1,shi_num+0x30);LCD_Write_Char(4,1,ge_num+0x30);LCD_Write_Char(5,1,'.');LCD_Write_Char(6,1,tens_num+0x30);LCD_Write_Char(7,1,percentile_num+0x30);LCD_Write_String(9,1,"rad/min");}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

光电传感器——基于红外反射式的测速机引言在工程实践中,经常会遇到各种需要测量转速的场合。

转速是电动机极为重要的一个状态参数,在很多运动系统的测控中,都需要对电机的转速进行测量,不论是直流调速系统还是交流调速系统,只有转速的高精度检测才能得到高精度的控制系统。

迄今为止,测速可分为两类:模拟电路测速和数字电路测速。

随着微电子技术的发展,计算机技术的广泛应用,出现了以计算机为核心的数字测速装置。

这样的速度测量装置测量范围宽、工作方式灵活多变、适应面广,具有普通数字测速装置不可比拟的快速性、精确性和优越性。

一:设计思路用一个红外发光二极管和一个接受红外光的二极管组成一套光电管。

当检测到物表面为黑色时,反射光很弱,接收端检测到的光线可以忽略,使接收端呈现一种状态,例如开关管截止;当被检测物表面为白色时,反射光强烈,发射端发射的红外线被接收端全部接收,使接收端呈现另一种相反的状态,例如开关管开通。

这两种相反的状态表现在电路中,就是高低电平组成的脉冲信号。

由此,我想到用一个比较器来比较两种接受到的信号,从而输出“0”“1”两种高低电平,并把两种信号传给单片机进行统计,然后利用设定算法进行计算,最后通过数码显示管显示计算结果。

二:所需模块本测速系统共有两个模块构成,一个为光电传感器部分,用于接收光信号并转换为电信号,即高低电平信号;另一个为单片机部分,用于接收高低电平信号并通过内部计算,然后再通过数码显示管显示测出的结果。

(一)光电传感器部分(1)LM339工作原理及管脚图:LM339类似于增益不可调的运算放大器。

每个比较器有两个输入端和一个输出端。

两个输入端中的一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。

当用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压,当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。

当“-”端电压高于“+”端时,输出管饱和,相当于输出端接高电位。

两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339用在弱信号检测等场合是比较理想的。

LM339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只电阻(称为上拉电阻,选3-15K)。

选不同阻值的上拉电阻会影响输出端高电位的值。

因为当输出晶体三极管截止时,它的集电极电压基本上取决于上拉电阻与负载的值。

下图(1a)给出了一个LM399的基本单限比较器。

输入信号Uin为待比较电压,把它加到同相输入端,在反相输入端接一个参考电压(门限电平)Ur。

当输。

图(1b)为其传输特性。

图(1c)为LM339入电压Uin>Ur时,输出为高电平UOH的管脚图。

(c)图(1)LM339工作原理图及管脚图(2)整体连线图:如下图(2)所示:图(2) 比较型光电传感器整体电路图在上图中, LED 灯相当于一个红外线发射管,JP1是红外线接收管,接收光强在上面转换成电流,在R 上成为电压信号。

当光线照射到白色面上时,光线反射强烈,光线照射到黑色面上时,光线反射较弱。

因此当光照在不同颜色面上时,阻值会发生明显的变化。

将阻值的变化值与RA1的标准值进行比较,就可以从LM339输出逻辑电平给单片机。

(二) 单片机部分(1)单片机外部连线图:如下图(3)所示AL E W R RD RXD T XD INT 0E A/VP 31X119X218RE SE T 9RD 17W R16INT 012INT 113T 014T 115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSE N29AL E /P 30T XD 11RXD 10VCC 40GND 20U189C52PSE NP10P11P12P13P14P15P16P17T 0T 1INT 1P00P01P02P03P04P05P06P07P 00P 01P 02P 03P 04P 05P 06P 07P20P21P22P23P24P25P26P27P 20P 21P 22P 23a b f cg deDPY117421105a b c d e fg 3d p d pa b f c g d ed pab fc gd ed pab fc g ded p C 06C 28C 39C 412LED DPY 4-L E D12345678161514131211109R 1KP 00P 01P 02P 03P 04P 05P 06P 075V图(3)单片机连线图在上接线图中,可在数码管与单片机之间接上一个分压电阻,起到保护作用。

单片机型号选89C51或89C52都行。

在试验板上把图(1)中的2管脚(逻辑电平输出管脚)和图(2)中的12管脚(中断输入管脚)连接,即可构成整个测速系统。

(2)单片机内部主程序流程图主程序是控制单片机系统按照预定的操作方式运转,它完成人机对话和各种控制功能,是单片机系统程序的框架。

主程序的主要任务是完成系统自检、初始化、处理键盘命令等功能。

在本实验中,未涉及到键盘命令。

本系统的主程序流程如下图(4)所示。

图(4)主程序流程图图(5)外部中断0 中断程序流程图在该测速系统的程序中,主程序执行的过程中共执行了3 个中断程序,即外部中断0 中断、外部脉冲计数0 中断和定时器1 中断。

图(5)所示为外部中断0 中断程序流程图。

外部中断0 中断程序主要用于测速起始。

当测速开始时,执行外部中断0 中断,外部脉冲计数加1,并判断T0、T1 是否开启,若没有开启则开启,再判断1S 定时到了没有,若1S 定时到计算转速,并关INT0、T0、T1 软件清零。

图(6)为T0 中断程序流程图。

T0 对内部时钟脉冲计数, T0 为8 位定时器,1S 定时的内部时钟脉冲超过了T0 上限,故采用软件延时计数。

图(7)为T1 中断程序流程图,T1 定时1S, 当一秒定时到,则置位标志位。

图(6)T0 中断程序流程图图(7)T1 中断程序流程图三:测速原理首先,选一小型直流电机,在其轴上固定一张圆形硬纸片,以此来代替被测物。

其次把此圆形纸片平均分成6等分,并把其中的三块涂黑(具体见实物)。

再次,用光电管正对圆形纸片。

最后,启动整个系统就可以进行测速了。

因为当红外线照到面黑色时,反射光很弱,接收端检测到的光线可以忽略,当照到白色面时,反射光强烈,发射端发射的红外线几乎被接收端全部接收,因此,检测到的信号经过比较电路输出后,会给单片机输入高低两种电平。

所以,在编程中,假定在1S时间内共检测到n个低电平信号,那么此电机的转速为。

四:整体电路图及实物图见附一图所示。

五:所需器件名称型号个数价格51单片机STC89C51RC 1件9元光电管1套5元四电压比较器LM339 1件 1.5元四位数码显示管12管脚1件5元1/4电阻0.47K,1K,3.3K,10K, 各10个(备用)0.8元电位器103(10K)2个1元瓷片电容22PF,104(100nF)各10个(备用)2元万用版1块3元电池盒1个1元PIC座20,40脚(2+1)个1元排针40PIN 2排1元晶振12M 1个1元复位开关1个0.1元LED灯5个0.5元共计:31.9元六:总结本设计的光电传感器测速机能够快速检测到电机横截面上的黑白相间的面,并通过单片机编写测速程序,用数码管显示。

但本设计的测速系统的整体性能只能满足一般小型电机和一些要求不高的测速,并且在其测速时,还需要在被测物上安装一个黑白相间的圆盘,这对某些被测物体来说是不太好实现的,即其是存在一定的局限性的。

除此之外,其精确度也不尽完美。

但整体来说,此测速系统还是具有可行性的。

当我们需要知道某电机的转速而又缺少测速装置时,就可以用此套系统来进行测速。

它的简单性,方便性和快捷性也是某些测速装置不可比拟的。

至于其缺点,由于设计者水平目前有限,暂不能完美解决,只待以后对此方面有较多理解后在解决,同时也希望对此精通的师生给予指点,从而进行改进测速方法,提高整个系统的测速性能。

附一:整体电路图附二:程序源代码#include<reg52.h>#define uint unsigned intuint temp,qian,bai,shi,ge,aa,n;sbit dula=P0;sbit wela=P1;sbit zd=P3^2;uint codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void display(uint qian,uint bai,uint shi,uint ge);void delay (uint z);void init();void main(){EA=1;//开总中断EX0=1;//开外部中断0init();//初始化子程序while(1){display(qian,bai,shi,ge);}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(uint qian,uint bai,uint shi,uint ge) {P0=table[qian];P1=0xf7;delay(1);P0=table[bai];P1=0xfb;delay(1);P0=table[shi];P1=0xfd;delay(1);P0=table[ge];P1=0xfe;delay(1);}void exter0() interrupt 0{n++;while(zd==0);}void init(){wela=0;dula=0;temp=0;TMOD=0x01;TCON|=0X04;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}timer0() interrupt 1 {TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==20){aa=0;temp=20*n;n = 0;qian=temp/1000;bai=temp%1000/100;shi=temp%100/10;ge=temp%10;}}。

相关文档
最新文档