- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计
需求分析
(1)应用场合: 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅全可靠而且能有效地隔离电气干扰。
发射部分包括键盘矩阵、LED红外发送器接收部分包括器、解码电路。 名称 型号 数量 1 单片机 AT89C51 2 2 按键 四脚 12 3 电阻 470Ω 5 4 电阻 4.7KΩ 2 5 电解电容 22uf 2 6 瓷片电容 30pf 4 7 晶振 12MHz 2 8 红外发射器 φ5 1 9 接收头 V34138 1 10 电源 5V 2 11 七段数码管 共阳 1 12 三极管 NPN 1 13 万用板 2
AT89C51芯片的原理:
AT89系列单片机是ATMEL公司最早推出,也是功能最简单的一个系列,该系列都是内含Flash程序存储器的MCS-51兼容单片机,AT89C51就是其中一款可在线编程ISP Flash单片机。AT89C51具有价格便宜、性能优良、可在线编程等特点。其具体性能参数如下:兼容MCS-51内核单片机;4KB可在线编程Flash存储器,可有效擦除/读写1000次;工作电压范围4.0~5.5V;完全静态工作:0Hz~33MHz;ROM三级加密模式;128*8bit内置RAM;32位可控I/O引脚;2个16位的时钟源;5个中断源;全双工UART串行接口;低功耗工作模式;看门狗计时器;两个数据指针;快速编程特性。
软件设计方案
发射流程图:
接收流程图:
算法分析:
这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.6ms、间隔0. 6ms、周期为1.2ms 的组合表示二制的“0”;以脉宽为1.2ms、间隔0.6ms、周期为1.8ms 的组合表示二进制的“1”,其波形如图2 所示。
图2 遥控码的“0”和“1”
上述“0”和“1”组成的10 位二进制码经38kHz 的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3 所示。
图3 遥控信号编码波形图
利用定时器产生的遥控编码是连续的10 位二进制码组,其中前2位为引导码,能区别不同的电器设备,防止不同机种遥控码互相干扰。后8位操作码(数据码)。
调试
软件调试:使用伟福WAVE.在使用中,我们使用断点调试,用跟踪型单步观察程序,设定观察项,查看程序运行时设定值的变化,并修改程序,并使用伟#include "reg51.h"
#include"absacc.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit A=P2^0;
uchar flag=1,k;
uchar flag2;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
unsigned char GetKey() //按键扫描子程序
{
uchar key,temp;
P1=0xFF; //扫描第一行
P1_0=0; //第一行线送0 temp=P1; //读取P口数据
temp&=0xF0; //取高四位
if(temp !=0xF0) //判断高四位是否全为1 若果不是进入此函数
{
temp=P1; //消抖从新检测
temp&=0xF0;
if(temp !=0xF0)
{
temp=P1;
temp&=0xF0;
switch(temp) //高四位判断数值 并进行码制转换
{
case 0xE0: key=0;flag2++;break;
case 0xD0: key=1;flag2++;break;
文档评论(0)