智能小汽车红外遥控器信号接收和实现的设计

合集下载

基于单片机的红外遥控智能小车设计报告

基于单片机的红外遥控智能小车设计报告

基于单片机的红外遥控智能小车设计报告毕业设计(论文)题目:基于单片机的红外遥控智能小车西安邮电学院毕业设计(论文)任务书学生姓名指导教师职称工程师学院电子工程学院系部光电子技术专业光电信息工程题目基于单片机的红外遥控智能小车任务与要求任务:以51单片机为控制核心,实现具有自动避障、加速、减速等功能的红外遥控智能小车。

要求:1 搜集资料,熟悉单片机开发流程;熟悉红外传感器等相关器件;掌握单片机接口和外围电路应用;具备一定的单片机开发经验。

2 学会电路设计、仿真等相关软件的使用;3 具备一定的硬件调试技能。

4 学会查阅资料;5 学会撰写科技论文。

开始日期2010年3月22日完成日期2010年6月27日主管院长(签字) 年月日西安邮电学院毕业设计 (论文) 工作计划学生姓名赵美英指导教师崔利平职称工程师学院电子工程学院系部光电子技术专业光电信息工程题目基于单片机的红外遥控智能小车工作进程主要参考书目(资料)1、何立民,单片机应用系统设计,北京:航天航空大学出版社;2、李广弟,单片机基础,北京:北京航空航天大学出版社,2001;3、何立民,MCS-51系列单片机应用系统设计系统配置与接口技术,北京航空航天大学出版社,1990.01;4、赵负图,传感器集成电路手册,第一版,化学工业出版社,2004;5、Atmel.AT89S51数据手册.主要仪器设备及材料1.普通计算机一台,单片机开发环境;2.电路安装与调试用相关仪器和工具。

(如示波器、万用表、电烙铁、镊子、钳子等)。

论文(设计)过程中教师的指导安排每周四进行交流与总结;其余时间灵活安排,及时解决学生问题。

对计划的说明依学生实际情况,适当调整工作进度。

西安邮电学院毕业设计(论文)开题报告电子工程学院光电子技术系(部)光电信息工程专业2006 级光电0601班课题名称:基于单片机的红外遥控智能小车学生姓名:赵美英学号:05064028指导教师:崔利平报告日期: 2010年3月25日说明:本报告必须由承担毕业论文(设计)课题任务的学生在毕业论文(设计) 正式开始的第1周周五之前独立撰写完成,并交指导教师审阅。

毕业设计论文-红外线控制电动小车

毕业设计论文-红外线控制电动小车

毕业设计论文-红外线控制电动小车1 引言1.1 研究背景与意义随着现代电子技术和自动化技术的飞速发展,红外线遥控技术因其操作简便、抗干扰能力强、低功耗等特点在众多领域得到了广泛应用。

电动小车作为现代交通工具的一种,其控制系统的智能化、远程化成为研究热点。

红外线控制电动小车将红外线遥控技术与电动小车相结合,使得小车操作更为便捷,控制更为精确,尤其在特殊环境下,如危险区域的远程探测和物品搬运,具有显著的应用价值。

1.2 研究目的与内容本文旨在设计并实现一种基于红外线控制的电动小车。

研究内容包括:红外线控制技术的原理及其在电动小车上的应用;电动小车的硬件设计,主要包括电动机选型与驱动、电源与控制系统设计;电动小车的软件设计,包括红外线接收与解码、速度与方向控制算法等。

1.3 研究方法与论文结构本研究采用理论与实验相结合的方法,首先对红外线控制技术进行概述,分析电动小车的结构与功能需求,进而设计并实现相应的硬件和软件系统。

论文结构如下:第二章介绍红外线控制技术的基本原理及发展应用;第三章详细阐述电动小车的硬件与软件设计;第四章进行系统测试与分析;第五章对论文研究进行总结,指出不足,并对未来发展进行展望。

2. 红外线控制技术概述2.1 红外线基本原理红外线是一种电磁波,位于可见光与微波之间,波长范围约为700纳米到1毫米。

红外线的发现归功于天文学家威廉·赫歇尔在19世纪早期的实验。

红外线具有热效应,能够被许多物体吸收并转化为热能,这一特性使其在通信和控制技术中得到了广泛应用。

红外线遥控技术基于红外线的传输特性,通过发射和接收红外线信号来实现远距离控制。

其基本原理是利用红外发射二极管发射调制后的红外信号,经过空气传播后,由红外接收器接收并解调,最终将信号传送到控制电路进行处理。

2.2 红外线遥控技术的发展与应用红外线遥控技术自20世纪60年代问世以来,已广泛应用于家电遥控、工业控制、智能家居等领域。

智能小车红外遥控的实现

智能小车红外遥控的实现

主控芯片89s52,接受方式为在51单片机的某一引脚外接一个红外接受管,通过51的编程实现对红外接受数据的接受解码,遥控器使用普通电视遥控,通过51解码读取几个按键的红外码之后记下写入51的新程序为带判定的红外接受程序,接受到特定的红外信号后做出特定的动作,如改变某引脚的电平,在这些引脚外接马达等外为器件可实现控制。

一下抄一段51实验板带的实例程序,我试过可以实现解码:/ 本程序主要是遥控器解码和1602驱动程序//-------------------------------------------------------// LCD1602 IR-DECODE// writed by nxp---2006.12.29//-------------------------------------------------------// 连线表: CPU=89S52// SysClock=12MHz// LCD: 1602// 功能:解码红外遥控器// 遥控器芯片:tc9012-011#include <at89x52.h>#define uchar unsigned char#define uint unsigned int/*----------------------------控制I/O口设置,根据实际而定---------------*/#define RS P3_0 //RS数据命令选择端,高电平数据,低电平命令#define RW P3_1 //RW读写选择端,高电平读操作,低电平写操作#define E P2_2 //E使能控制端,E高电平跳变为低电平时LCD执行命令#define DATA P0 //数据端口定义#define D0 P0_0#define D1 P0_1#define D2 P0_2#define D3 P0_3#define D4 P0_4#define D5 P0_5#define D6 P0_6#define D7 P0_7#define KEY1 P1_0#define KEY2 P1_1#define IR_RE P3_2/*------------------------------------------------------------------------------*/bit k=0; //红外解码判断标志位,为0则为有效信号,为1则为无效uchar n=0; //用来控制外部中断uchar code str0[16]=" REMOTE CONTROL"; //开机画面显示uchar code str1[16]=" IR-CODE: ";uchar code str2[16]="ERROR";uchar *p0=str0;uchar *p1=str1;uchar *p2=str2;delay1ms(uint k);void disp(void); //红外键值显示程序uchar data date[4]; //date数组为存放地址原码,反码,数据原码,反码/*------------------------LCD忙判断子程序--------------------------------------*/void busy(){RS=0;RW=1;E=0;E=1;DATA=0xff;while(D7);}/*----------------------- 写命令子程序-----------------------------------------*/void wcom(uchar com){busy();RS=0;RW=0;E=1;DATA=com;E=0;}/*-------------------------写数据子程序--------------------------------------*/void wdata(uchar dat){busy();RS=1;RW=0;E=1;DATA=dat;E=0;}/*--------------------------读命令子程序-----------------------------------*/uchar rcom(void){uchar com;busy();RS=0;RW=1;DATA=0xff;E=1;com=DATA;E=0;return(com);}/*----------------------------读数据子程序-----------------------------*/uchar rdat(void){uchar dat;busy();RS=1;RW=1;DATA=0xff;E=1;dat=DATA;E=0;return(dat);}/*--------------------------延时1ms程子程序-----------------------*/ delay1000(){uint i,j;for(i=0;i<1;i++)for(j=0;j<124;j++);}/*---------------------------延时882us子程序-----------------------*/delay882(){uint i,j;for(i=0;i<1;i++)for(j=0;j<109;j++);}/*--------------------------延时2400ms程子程序-----------------------*/delay2400(){uint i,j;for(i=0;i<3;i++)for(j=0;j<99;j++);}/*--------------------------以下为初始化程序,由上面子程序组成,根据个人爱好-----------*//******************************清屏程序***********************************/void clear(){ wcom (0x01);}/******************************归位程序********************************/void rehome(){ wcom(0x02); }/*******************8*****888**88888显示模式设定8888888888888888888888*/void mode(bit x){if(x==1)wcom(0x38); //两行5*8 modeelse wcom(0x34); //一行5*10 mode}/*------------------------显示开关控制命令----------------------------*/void on_off(bit x){if(x==1)wcom(0x0f); //显示开,光标开,光标闪烁else wcom(0x0c); //显示开,光标关}/*------------------------init初始化组合-------------------------*/void init(){clear(); //清屏mode(1); //模式设置on_off(1); //显示设置wcom(0x06); //移动方式}/*---------------------------对字符串的处理------------------------*/void strchar(uchar *p){while(*p!='\0'){wdata(*p);p++;}}/*----------------------------------------------------------*//*-----------------------红外解码程序(核心)-----------------*//*----------------------------------------------------------*/void IR_decode(){uchar i,j;while(IR_RE==0);delay2400();if(IR_RE==1) //延时2.4ms后如果是高电平则是新码{delay2400(); //延时4.8ms避开4.5ms的高电平for(i=0;i<4;i++){for(j=0;j<8;j++){while(IR_RE==0); //等待地址码第1位高电平到来delay882(); //延时882ms判断此时引脚电平///CY=IR_RE;if(IR_RE==0){date[i]>>=1;date[i]=date[i]&0x7f;}else if(IR_RE==1){delay1000();date[i]>>=1;date[i]=date[i]|0x80;}} //1位数据接收结束} //32位二进制码接收结束}}/*------------------二进制码转换为压缩型BCD码,并显示---------------*/void two_2_bcd(uchar date){uchar temp;temp=date;date&=0xf0;date>>=4; //右移四位得到高四位码date&=0x0f; //与0x0f想与确保高四位为0if(date<=0x09){// wcom(0xcb);wdata(0x30+date); //lcd显示键值高四位}else{date=date-0x09;//wcom(0xcb);wdata(0x40+date);}date=temp;date&=0x0f;if(date<=0x09){wdata(0x30+date); //lcd显示低四位值}else{date=date-0x09;wdata(0x40+date);}wdata(0x48); //显示字符'H'}//////////////////////////////转换程序结束////////////////////////////*----------------------解码成功后,1602显示键值子程序---------------*/void disp(){uchar date1;date1=date[3]^0xff; //如果得到的数据原码和数据反码相反if(date[2]==date1) //显示键值{wcom(0xc0);two_2_bcd(date[0]);wdata(0x20);two_2_bcd(date[1]);wdata(0x20);two_2_bcd(date[2]);wdata(0x20);two_2_bcd(date[3]);}}/*------------------------外部中断0程序-------------------------*//*------------------主要用于处理红外遥控键值--------------------*/void int0() interrupt 0{uint i;for(i=0;i<4;i++){delay1000();if(IR_RE==1){k=~k;} //刚开始为4.5ms的引导码,如果4ms内出现高电平则退出解码程序}if(k==0){EX0=0; //检测到有效信号关中断,防止干扰IR_decode(); //如果接收到的是有效信号,则调用解码程序disp(); //解码成功,调用显示程序,显示该键值}EX0=1; //开外部中断,允许新的遥控按键}/*---------------------------------------------------------------*//* 以下为主程序,主要对LCD初始化,开始界面设置*//*---------------------------------------------------------------*/void main(void){SP=0x60; //堆栈指针TMOD=0x11; //定时器模式设置所选为模式1TH0=0xd8; //定时器初值理论为10ms;TL0=0xf7; //实际取d8f7ET0=1; //允许定时器0中断EX0=1; //允许外部中断0,用于检测红外遥控器按键EA=1; //总中断开init(); //初始化LCDwcom(0x80); //写入字符的地址为第1行第1列strchar(p0); //调用显示字符串函数wcom(0xc0);//strchar(p1);while(1);}。

基于51单片机红外无线遥控智能小车控制设计

基于51单片机红外无线遥控智能小车控制设计

基于51单片机红外无线遥控智能小车控制设计摘要:本文利用51单片机设计了一款具有红外无线遥控功能的智能小车控制系统。

该系统基于红外技术,实现了对智能小车的远程控制。

通过建立遥控信号传输模型和小车控制模块,实现了智能小车的实时运动控制,包括前进、后退、左转、右转等操作。

本文详细介绍了系统设计方案、硬件设计和软件设计,通过实验验证,证明该系统能够稳定地实现智能小车的远程控制,具有一定的应用价值和推广前景。

关键词:51单片机;红外无线遥控;智能小车控制;遥控信号传输模型Abstract:In this paper, a smart car control system with infrared wireless remote control function based on 51 single-chip microcomputer is designed. The system is based on infrared technology, which realizes the remote control of the smart car. By establishing the remote control signal transmission model and the car control module, real-time motion control of the smart car, including forward, backward, turning left and turning right, is realized. This paper introduces the system design scheme, hardware design and software design in detail. Through experiments, it is proved that the system can stably realize the remote control of the smart car, and has certain application value and promotion prospects.Keywords:51 single-chip microcomputer; infrared wireless remote control; smart car control; remote control signaltransmission model1. 引言智能小车控制系统是一种目前比较受关注的智能化系统,在智能出行和智慧交通中有着广泛的应用。

红外遥控小车系统设计

红外遥控小车系统设计

红外遥控小车系统设计目录摘要 (1)关键词 (1)Abstract.......................................................................................................... 错误!未定义书签。

Key words: ..................................................................................................... 错误!未定义书签。

1 系统设计 (1)1.1 主控系统 (1)1.2 红外遥控器 (2)1.2.1 红外遥控器的组成 (2)1.2.2 实现原理 (3)1.2.3 解码方法 (4)1.3 红外循迹模块 (7)1.3.1 原理 (7)1.3.2 组成 (7)1.3.3 电压比较器 (8)1.4 红外壁障模 (8)1.4.1 红外蔽障的原理 (9)1.4.2 优点 (9)1.4.3 缺点 (9)1.5 驱动模块 (10)1.5.1选用芯片及原理图 (10)1.5.2产品参数 (10)1.5.3实物图 (11)2 结果与分析 (11)2.1 红外控制模块 (11)2.2 循迹的结果分析 (12)2.3 壁障模块分析 (12)2.4 调速的方法 (12)2.4.1直流调速系统的选择 (12)2.4.2 PWM调速系统的优点 (13)3 结语 (13)3.1 改进意见 (13)3.2 设计的实用性 (13)致谢 (13)参考文献 (13)附录程序:..................................................................................................... 错误!未定义书签。

程序一:......................................................................................................... 错误!未定义书签。

基于AVR的遥控小车的设计

基于AVR的遥控小车的设计

基于AVR的遥控小车的设计引言本文将介绍基于AVR单片机的遥控小车的设计。

遥控小车是一种具有较高自主性的机器人,可以通过遥控器实现远距离操控。

这种小车在各个领域都有广泛的应用,如智能家居、仓库物流等。

本文将介绍遥控小车的硬件设计、软件设计以及实现过程。

硬件设计1. 硬件组成遥控小车的硬件主要包括以下几个部分: - AVR单片机:用于控制整个小车的运行逻辑。

- 电机驱动模块:用于控制小车的移动,一般通过PWM信号控制电机的速度和方向。

- 电源模块:为遥控小车提供供电,可以使用锂电池、直流电源等。

- 传感器模块:用于感知周围环境,如红外线传感器、超声波传感器等。

2. 连接方式遥控小车的硬件部分需要通过电路板进行连接。

一般来说,AVR单片机与其他硬件模块之间的连接方式包括以下几种: - GPIO口连接:使用GPIO口实现单向或双向的数据传输。

- SPI接口连接:通过SPI接口进行数据传输。

- UART接口连接:使用UART接口进行串口通信。

- I2C接口连接:通过I2C接口进行数据传输。

硬件连接时需要注意各个模块之间的电平匹配和信号调制,以保证数据传输的正确性和稳定性。

软件设计1. 控制逻辑遥控小车的控制逻辑一般包括以下几个部分: - 遥控信号接收:通过遥控器接收到的信号来判断小车的运行指令,如前进、后退、左转、右转等。

- 数据处理:将接收到的信号进行处理,转换为相应的控制命令。

- 电机控制:根据控制命令控制电机的运行,如改变电机的速度、方向等。

2. 编程框架AVR单片机的软件设计一般使用嵌入式C语言进行编写。

常用的编程框架有以下几种: - Arduino:适合初学者,提供了丰富的库函数和示例程序。

- AVR Studio:适合有一定经验的开发人员,提供了更加灵活的开发环境和工具链。

在软件设计过程中,需要注意内存使用、任务调度等问题,以保证程序的稳定性和效率。

实现过程1. 硬件搭建首先,根据设计需求选择合适的硬件模块,并进行适当的连线和固定。

基于单片机的红外遥控智能小车设计

基于单片机的红外遥控智能小车设计

基于单片机的红外遥控智能小车设计引言:随着科技的不断发展,智能物联网已经走进了我们的生活。

智能小车作为一种智能化的产品,能够实现远程遥控、自动避障等功能,受到了广大消费者的青睐。

本文就基于单片机的红外遥控智能小车设计进行详细介绍。

一、设计目标本设计的目标是通过红外遥控,实现对智能小车的远程控制,小车能够根据收到的指令进行行驶、避障等操作。

二、设计原理1.主控芯片:本设计使用单片机作为主控芯片,常用的单片机有51系列、AVR系列等,可根据实际需求选择合适的芯片型号。

2.红外遥控模块:红外遥控模块是实现红外通信的设备,可以将遥控器发出的红外信号解码成数据,实现遥控操作。

3.电机驱动模块:电机驱动模块可将单片机的PWM信号转化为电机的动力驱动信号,控制小车的行驶方向和速度。

4.超声波传感器:超声波传感器可以感知到小车前方的障碍物距离,根据测得的距离,进行相应的避障操作。

5.电源模块:小车需要使用适当的电源,通常是锂电池或者直流电源供应。

三、系统设计1.硬件设计:(1)搭建小车底盘:根据所选择的底盘,搭建小车结构,并安装好电机驱动模块、电源模块等硬件设备。

(2)连接电路:将红外遥控模块、超声波传感器等硬件设备与主控芯片进行连接,确保每个模块正常工作。

2.软件设计:(1)红外遥控程序设计:通过红外遥控模块接收红外信号,并解码成相应的指令。

根据指令控制电机驱动模块,实现小车的行驶方向和速度控制。

(2)超声波避障程序设计:根据超声波传感器测得的距离,判断是否有障碍物,如果有障碍物就停止或者转向。

四、实验结果和讨论经过实验验证,本设计的红外遥控智能小车能够准确接收红外信号,并根据指令控制小车的行驶方向和速度。

同时,超声波传感器能够及时感知到前方的障碍物,并进行相应的避障操作。

然而,该设计仍然存在一些不足之处,比如超声波传感器的测距范围有限,可能无法感知到较小的障碍物。

此外,红外遥控信号的传输距离也有一定限制,需要保持遥控器与小车之间的距离不过远。

汽车中的红外遥控发射器和接收机设计

汽车中的红外遥控发射器和接收机设计

汽车中的红外遥控发射器和接收机设计
线遥控是目前应用最广泛的一种通信和遥控手段。

因为红外线遥控器具有体积小、功耗低、功能强、成本低等特点。

因此,彩电、录像机、音响设备、空调、玩具、门铃以及遥控汽车路牌等其它小型装置上也纷纷采纳红外线遥控。

为转变目前汽车上的车头路牌指示灯(以下简称车号器),无法灵便转变的缺陷,把红外遥控用在其中,使其可以轻松实现远距离、非接触性的一次转变车号的目的,从而转变以前用人工翻牌的旧模式。

一、汽车车号器的红外遥控系统
汽车上的车号器,原用容易的数码管控制,用法起来很不便利,为了能远离的控制它,就采纳了红外遥控。

通常红外遥控系统由放射和接收两部分组成,应用编/解码专用芯片来举行控制操作,1所示,放射部分包括键盘矩阵、编码调制、红外发送器。

接收部分包括光电转换、解调、解码电路。

红外发送每次编码的发送是一个键值,即一个十六进制的数据。

为了达到一次能发送一组数据(如车次号,通常为三位十进制数),我们可以采纳89C2051的软件编码/解码的办法,先一次性输入一组车号,按下发送键后,所有发送出;同时在接收时,用延续接收办法,一次性解码全部数据。

二、遥控放射器及其编码
遥控放射器的专用芯片无数,但在汽车车号器遥控中,采纳的是
89C2051 芯片。

用P1口组成矩阵扫描反馈,猎取键值,用内部的定时器1产生一个38K的软件定时中断,驱动P1.0产生一个38K的方波,当作红外线的调制基波,需要发送的数据,以串行方式,用波特率为1200,带奇偶校验的方式,挺直送至TXD的串口发送端,而后TXD和P1.0举行规律与后,经过40106整形,用驱动红外放射管挺直发出。

其原理图如下:
第1页共3页。

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

电子电路毕业设计总结报告题目:红外遥控器信号接收和现实的设计摘要随着电子技术的发展,红外遥控器越来越多用到电气设备中,为电器用户提供了极大的方便。

但是各种型号的遥控器的大量使用带来的遥控器的大批量多品种的生产检测却是一个难题,因此红外遥控器接受和显示的设计实现以改变生产一线的这种状况成为一种迫切的需要。

在本实验的设计中,采用HS0038塑封一体化红外线接收器,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而且体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。

整个电路分为四个模块:单片机最小系统、通信模块、红外接收模块以及数码管显示模块。

四个模块的相互连接配合实现了数码管显示遥控器的按键值以及当按下左右键时,数码管上实现流水灯现象,并通过串口调试助手,在PC机上显示其按键值。

此设计加以完善推广,可在生产生活中被广泛的应用。

目录一课题的任务与要求 (4)二系统概述 (4)三单元电路设计与分析 (6)四安装调试及测量数据分析 (8)五结束语 (10)六附录 (10)一课题的任务与要求结合单片机最小电路和红外接收接口电路共同设计一个基于单片机的红外遥控信号接收与转发系统,用普通电视机遥控器控制该系统,使数码管显示信号的接受结果。

1 当遥控器按下数字键时,在数码管上显示其键值。

如按下数字键1,则在数码管上显示号码“01”。

2当遥控器按下左键及右键时,用两位数码的周围段实现顺时针或者逆时针旋转的流水灯功能。

*3 运用串口调试助手,在遥控器有按键按下时,将其键值显示在PC机上。

二系统概述1 设计方案为了实现系统整体功能,红外解码部分是核心,红外解码指将遥控发射器所产生的红外遥控编码脉冲所对应的键值翻译出来的过程。

下面将系统方案做一论证,通常有硬件解码和软件解码两种方案。

方案一: 硬件解码此方案中,使用专用遥控器作为控制信号发出装置,当按下遥控器的按键后,一体化红外接收装置接收到遥控器发出的设置控制信号,然后将信号送到专用的解码芯片中进行解码,解码后将信号送到单片机,由单片机查表判断这个信号是按键数值信号或控制音量、频道等信号,当确认是何种信号后,启动子程序,然后进行查询。

每次红外接收头接收到红外信号传到解码器中,解码器解码完毕后送到单片机,单片机再通过查表确定这些数值并进行相应功能的控制。

设计原理图如图1所示。

图1 方案一原理图方案二:软件解码此方案中,采用普通的家用遥控器作为控制信号发出装置,当按下遥控器的按键后,一体化红外接收装置接收到遥控器发出的红外线控制信号,然后把这个信号转换成电信号,传到单片机中,利用单片机对这个信号进行解码,解码完成后查表确定是按键数值信号或控制音量、频道等信号,启动子程序,进行相应的显示数字等功能。

然后查询,重复上述流程。

设计原理图如图2所示。

图2 方案二设计原理图2 方案比较与选取方案一为硬件解码方案,硬件解码需要使用与遥控器相配套的专用的解码器芯片,而解码芯片一般不易得到,价格也较贵,或者自行开发解码电路(但电路太复杂,性能欠佳)。

方案二为软件解码方案,软件解码可以不考虑遥控器的芯片是什么型号的,因为我们只需检测到它的发射编码,然后用软件方式来对它进行处理,从而得到所要的信息。

软件解码具有灵活、硬件精简(仅需集成红外接收头和一片单片机)、可靠性高,成本低等特点。

基于以上特点,选取方案二作为实验方案。

3 系统框图系统框图如图3所示。

图3 系统框图遥控器为控制信号的发出装置,用一体化红外接收装置HS0038接收遥控器发出的红外线控制信号,并与单片机相连实现数据传输,通过单片机编程将接收到的数字编码在数码管上显示出来,当按下左右键时,数码管将实现流水灯现象。

使用MAX232芯片、串口及若干电容来完成串口模块,以实现单片机和PC机的通信功能并且达到可以使用串口调试助手的目的。

三单元电路设计与分析1 单片机最小系统单片机选用STC89C51,主要负责整个系统的控制及数据的存储和处理。

放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。

外接晶体谐振器以及电容构成并联谐振电路,接在放大器的反馈回路中。

根据情况本设计中选择12MHz的晶振,补偿电容选择30pF左右的电容。

单片机最小系统电路图如图4所示。

图4 单片机最小系统2通信模块通信模块用于将编写好的程序下载至单片机中,采用MAX232与串口相连组成了通信下载电路。

MAX232是MAXIM公司专门为PC视RS-232标准串口设计的电平转换电路。

该芯片与TTL/COMS电平兼容,片内有2个发送器,2个接收器,且使用+5 V单电源供电。

通信模块电路如图5所示。

图5 通信模块电路图3 红外接收模块本电路采用HS0038塑封一体化红外线接收器,它是一种集红外线接收、放大、整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平,收到红外信号时为低电平,而且体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。

电路图如图6所示。

图6 红外接收电路4 数码管显示电路数码管显示电路采用两位共阳数码管LG5022BH,由单片机的P3^2和P3^3作为位选口,输出低电平时数码管被选中;P1口作为段选。

选用三极管S8550驱动,e极与VCC相连,b极接电阻后与单片机的P3^2和P3^3口相连,c极与数码管的位选口相连。

数码管显示电路如图7所示。

图7 数码管显示电路四安装调试及测量数据分析总体电路一次组装完毕后,首先采用分块调试,采用这种调试的方法,可以缩小问题出现的范围,可及时发现,易于解决。

首先进行单片机最小系统的测试,将单片机的VCC与电源正极相连,连接完成后用示波器观察晶振两端起振,且30管脚有波形。

单片机最小系统正常工作。

接下来测试通信模块,测试单片机与PC机之间能否正常通信,单片机与PC 机之间正常通信,通信模块测试正常。

接下来对数码管显示电路进行测试,首先将数码管动态显示的程序下载至单片机中对数码管显示电路进行测试,数码管没有示数,用万用表检查数码管显示电路是否有短路和短路的情况,检测结果发现三极管连接有断路,将断路处重新焊接好后再次进行检测,这时数码管有示数出现,但其中一位的“c”段始终没有显示,检查“c”段所对应的电路连接情况,发现有断路情况出现,再次焊接好后重新检测,数码管正常显示,数码管显示电路调试完毕。

之后进行程序下载调试。

主函数软件流程图如图8所示。

图8 主函数软件流程图将最初编写好的程序下载到电路板上后,数码管不能按照预定的想法显示,对程序进行仔细检查后,发现有的数组编写错误,经细心修正后,使得所有的数组均能正确的显示想要表示的功能。

但在显示数值时发生数值跳变的情况,由一个数值跳变为乱码,后经在程序中增加延时函数解决此问题。

最后,在使用串口调试助手实现单片机与PC机之间的通信时,PC机接收到得数据有误,后经程序修正及调节串口调试助手的比特率,使得两机之间的通信顺利进行。

至此,电路和程序全部调试完毕。

五结束语本实验基本满足了设计要求,实现了当遥控器按下数字键时,在数码管上显示其键值。

如按下数字键1,则在数码管上显示号码“01”;当遥控器按下左键及右键时,两位数码的周围段实现顺时针或者逆时针旋转的流水灯功能;运用串口调试助手,在遥控器有按键按下时,能将其键值显示在PC机上。

本设计仍然存在着一些不足之处,例如只能实现对遥控器少量按键在数码管上的显示情况,而对于其他按键的显示大多没有规律或显示乱码,在此方面有待提高和改进。

随着电子技术的发展,红外遥控器越来越多用到电气设备中,为电器用户提供了极大的方便。

但是,对于电器生产厂家来说,各种型号的遥控器的大量使用带来的遥控器的大批量多品种的生产检测却是一个难题。

目前市面上对遥控器的检测还是使用比较落后的手动方式逐一进行,使得一线的检测工人既费时又费力而又效率低下;另外,在电器产品的调试过程中,当出现控制故障时,很难判断到底是遥控器的发射故障还是电脑上的接受故障。

因此红外遥控器接受和显示的设计实现以改变生产一线的这种状况成为一种迫切的需要。

通过此次试验的整个设计,焊接以及调试的完成,使我了解了常用红外接收器的原理并基本掌握了其设计和使用的方法,了解了实际遥控器编码的数据格式,掌握了数码管显示电路的实际构建方法,了解了单片机最小系统的构成及应用设计,熟悉了单片机串行通信模块的设计。

在以前的各类实验课所做的实验中,多数为单元实验且电路模式比较固定,调试也较容易,多数实验没能培养出我们对整个电子电路系统的整体认识,而通过这次的实验,不仅使我学到了有关红外接收方面的内容,而且,提高了我对整个电子电路系统从设计到调试整体的系统性认识,培养了综合运用多学科相关知识进行初步工程设计与实际装调系统电路的能力,收获颇多。

最后,感谢高敬鹏老师在整个实验过程中给我们的指点和帮助!六附录附录二:程序清单#include<reg51.h>#define uchar unsigned char#define uint unsigned int//宏定义sbit a=P3^3;sbit b=P3^2;int a,read,bj,result,yiweiresult,nuresult,k=0;uchar table[4]={0};//定义数组用来存放用户码和数据码uchar dis[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa 1,0x86,0x8e};//数码管显示编码uchar tablea[3]={0xef,0xdf,0xfe}; //{0xef,0xdf,0xfe};uchar tableb[4]={0xfe,0xfd,0xfb,0xf7};//{0xfe,0xfd,0xfb,0xf7};uchar tableaf[2]={0xef,0xf7}; //{0xef,0xf7};uchar tablebf[2]={0xfe,0xdf}; //{0xfe,0xdf};//数码管流水灯顺时针逆时针数组void delay_9000us(){uint i,j;for(i=0;i<5;i++)for(j=0;j<308;j++);} //延时9.0msvoid delay_5000us(){uint i,j;for(i=0;i<2;i++)for(j=0;j<308;j++);} //延时5.0msvoid delay_100us(){uint i,j;for(i=0;i<1;i++)for(j=0;j<11;j++);} //延时100usvoid delay_6ms(){uint i,j;for(i=0;i<1;i++)for(j=0;j<660;j++);} //延时6msvoid delay_500ms() {uint j;for(j=0;j<12850;j++){ read=P3;if((read&0x10)==0)break;}} //延时500msvoid start_t0(){TH0=0;TL0=0;TR0=1;} //定时计数器初始化/*解码子函数*/uchar jiema(){uchar i,j,rd,pd,dat=0;for(i=4;i>0;i--){for(j=8;j>0;j--){dat>>=1;dord=P3;while(!(rd&0x10));//等待高电平start_t0();//初始化定时器dord=P3;while(rd&0x10);//等待低电平TR0=0;//关闭定时器pd=TH0;if(pd>0x03)dat=(dat|0x80); //接收1并存储elsedat=(dat&0x7f); //接收0并存储}table[i]=dat;//接收8位数据完毕}//接受32位数据完毕return(table[2]);//返回数据码}//流水灯子函数(zheng)两位数码管外围段顺时针转void liushuideng(){int i=0;while(1){for(i=0;i<3;i++){b=1;a=0;P1=tablea[i];delay_500ms() ;}for(i=0;i<4;i++){a=1;b=0;P1=tableb[i];delay_500ms();}for(i=0;i<1;i++){a=0;b=1;delay_500ms() ;P1=0xf7;}delay_6ms();read=P3;//查询if((read&0x10)==0)break;}}//流水灯子函数(fan) 两位数码管外围段逆时针转void fanliushuideng(){int i=0;while(1){for(i=0;i<2;i++){b=1;a=0;P1=tableaf[i];delay_500ms();}for(i=3;i>=0;i--){a=1;b=0;P1=tableb[i];delay_500ms();}for(i=0;i<2;i++){a=0;b=1;P1=tablebf[i];delay_500ms();}delay_6ms();read=P3;//查询if((read&0x10)==0)break;}}//显示子函数void display(uchar dat){while(1){a=0;b=1;if(dat<=9){P1=0xc0;delay_5000us();P1=0xff;}if(dat<=9){ a=1;b=0;P1=dis[dat];delay_5000us();P1=0xff;}a=1;b=0;delay_100us();read=P3;//查询if((read&0x10)==0)break;}nuresult=dat;}/*************串口发送子程序*****************/ void init(void){TMOD=0x20;TH1=0xf3;TL1=0xf3;PCON=0x00;TR1=1;SCON=0x50;}void checkout(unsigned int para){ unsigned int paracheck;paracheck=para;SBUF=paracheck;while(TI==0);TI=0;}void sent(unsigned int i){checkout(i+48);}/*******************************************/ /************************/void chuankou(uint f){/********串口发送*******/ init();sent(0);TI=0;init();sent(f);TI=0;TMOD=0x01;/*********************/}/**********************//*解码主函数*/void main(){TMOD=0x01; //选择方式1,定时器工作模式jj:do read=P3;while(read&0x10);//等待低电平delay_100us();//消抖100usdoread=P3;while(!(read&0x10));//等待高电平start_t0();doread=P3;while(read&0x10);//等待低电平TR0=0;//关闭定时器bj=TH0;if(bj>0x0c)//判断正常码和数据码result=jiema(); //调用解码函数if(result==0x1a) //1a音量增加按键{liushuideng();goto jj;}if(result==0x1e) //1e音量减少按键{fanliushuideng();goto jj;}chuankou(result);delay_9000us(); //显示延时display(result); //显示//chuankou(result);goto jj; //等待再次发送数据}附录三:元件清单表附录4 参考文献1 《实用电子系统设计基础》姜威. 北京理工大学出版社.2 《电子线路设计实验测试》罗杰,谢自美. 电子工业出版社.3 《单片机实验与应用系统设计》范蟠果. 国防工业出版社.4 《红外遥控在节能和无线操作方面的应用》王伟生,郑小真. 河南工业大学5 《单片机C语言开发技术》龚运新. 清华大学出版社。

相关文档
最新文档