红外遥控设计 - 图文(8)

2019-03-27 16:39

南昌航空大学 学士学位论文

void keyscan() //按键扫描 {

if(k1==0)

{ delay(10); if(k1==0)

{ keyflag=1;

while(!k1); IRdata=0x11; } }

if(k2==0) {

delay(10); if(k2==0)

{

keyflag=1;

while(!k2); IRdata=0x22; } }

if(k3==0) {

delay(10); if(k3==0)

{ keyflag=1; while(!k3); IRdata=0x33; } }

if(k4==0) {

delay(10); if(k4==0)

{

keyflag=1; while(!k4); IRdata=0x44; }

31

南昌航空大学 学士学位论文

}

if(k5==0) {

delay(10); if(k5==0) {

keyflag=1; while(!k5); IRdata=0x55; } } }

void IR_sendbyte() //红外发送一个字节数据 { unsigned char i;

for(i=0;i<8;i++) //发送8位数据

{ set_count=35; //发送编码中的0.56ms高电平 IRflag=1; // 启动红外发射二极管发射 count=0; //中断计数先清零 TR0=1; //开启定时器0

while(count

if(IRcode&0x01) set_count=130; //判断最低位,若为1则1.69ms的低电平 else set_count=35; //为0则0.565ms的低电平 IRflag=0; //低电平则不发射 count=0; //中断计数清零 TR0=1; //开启定时器0 while(count

IRcode=IRcode>>1; //将数据右移,即从低位到高位发送 } }

void IR_send() {

set_count=672; //发送编码中的引导码(9ms高电平+4.5ms低电平) IRflag=1; //启动红外发射二极管发射 count=0; //中断计数清零 TR0=1;

while(count

set_count=336; //发送编码中的4.5ms低电平

32

南昌航空大学 学士学位论文

IRflag=0; count=0; TR0=1;

while(count

IRcode=IRsys[0]; //发送16位用户码的前8位 IR_sendbyte();

IRcode=IRsys[1]; //发送16位用户码的后8位 IR_sendbyte();

IRcode=IRdata; //发送8位数据码 IR_sendbyte();

IRcode=~IRdata; //发送8位数据反码 IR_sendbyte();

set_count=35; //发送编码中的0.56ms高电平 IRflag=1; count=0; TR0=1;

while(count

delay(23); //延时23ms(编码中的23ms低电平)

set_count=670; //发送编码中的引导码(9ms高电平+4.5ms低电平) IRflag=1; count=0; TR0=1;

while(count

set_count=336; //发送编码中的4.5ms低电平 IRflag=0; count=0; TR0=1;

while(count

set_count=35; //发送编码中的0.56ms高电平 IRflag=1; count=0; TR0=1;

while(count

void timer0_init() //定时器初始化 {

33

南昌航空大学 学士学位论文

EA=1;

TMOD=0x02; //定时0 8位自动重装模式 ET0=1;

TH0=0xF3; //定时26us,38K红外矩形波 TL0=0xE6; }

void main() {

timer0_init(); //初始化定时器 count=0; //中断清0 IR=0;

IRflag=0; //红外标志位设置为0 while(1) {

keyscan(); //键盘扫描

if(keyflag) //判断是否完成按键操作 {

delay(10);

IR_send(); //发送红外编码指令 delay(500);

keyflag=0; //将按键标志位设置为0 delay(100); } } }

void timer0() interrupt 1 {

count++;

if(IRflag==1) //假如开始发射红外编码指令 IR=~IR; //有发射标志,则发射38khz的矩形波 else IR=0; }

34

南昌航空大学 学士学位论文

附录3:接收部分软件

#include #include

#define uint unsigned int

sbit IR=P3^2; //红外接口标志

sbit led1=P1^5; //第一个led是和P1^0口连接的。 sbit led2=P1^6; sbit led3=P1^7; sbit RS = P1^0 ; sbit RW = P1^1 ; sbit EN = P2^5 ; sbit STA7 = P0^7;

typedef unsigned char uint8;

unsigned char code word1[]={\ //对应5个按键的五个显示 unsigned char code word2[]={%unsigned char code word3[]={%unsigned char code word4[]={%unsigned char code word5[]={%unsigned char code word6[]={\/*------------------------------------------------0 00 全局变量声明

------------------------------------------------*/

unsigned char IRtime;//红外用全局变量

bit IRpro_ok,IRok;

unsigned char IRcord[4]; unsigned char IRdata[33];

/*----------------------------------------------- -------------lcdxianshi-----------------------*/ /**

* 等待繁忙标志 */

void wait(void) {

P0 = 0xFF; do { RS = 0; RW = 1; EN = 0; EN = 1;

35


红外遥控设计 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:足球理论试题(最新)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: