//51单片机格力空调遥控器

#include

#include

#define uchar unsigned char

#define uint  unsigned int

#define enTransmitt   flag=1

#define disTransmitt  flag=0

sfr   T2MOD  = 0XC9;

bit   flag=0;

sbit IR38k =P2^3;     //红外发射管

sbit key1=P1^1;

sbit key2=P1^3;

sbit key3=P1^5;

sbit key4=P1^7;

sbit key5=P1^0;

sbit key6=P1^4;

uchar KeyScan();

uint  count=0,set_count=0;

uchar fengliang_value=0;

uchar key_value=0;

uchar wendu_value=0;

uchar mode_value=0;

uchar switch_value=0;

uchar zhuanye_value=0;

uchar code zhuanye[][5]={{0x39,0x04,0x00,0x50,0x02},{0x79,0x04,0x00,0x50,0x02}};  // 手动,自动转页(20度,冷气)

uchar code  fengliang[][5]={{0x28,0x08,0x00,0x50,0x02},{0x19,0x08,0x00,0x50,0x02},

{0x09,0x08,0x00,0x50,0x02}

}; //自动模式风量 小,中,大  (20度)

uchar code  mode[][5]={

{0x58,0x00,0x00,0x50,0x02},{0x59,0x04,0x00,0x50,0x02},

{0x5a,0x04,0x00,0x50,0x02},{0x5b,0x04,0x00,0x50,0x02}

};    //自动,冷气,除湿,送风

/*uchar code  on_or_off[][5]={ {0x40,0x00,0x00,0x50,0x02},{0x48,0x00,0x00,0x50,0x02} }; */

uchar code  on_or_off[][5]={

{0x39,0x08,0x00,0x50,0x02},{0x31,0x08,0x00,0x50,0x02},

{0x59,0x08,0x00,0x50,0x02},{0x51,0x08,0x00,0x50,0x02},

{0x79,0x08,0x00,0x50,0x02},{0x71,0x08,0x00,0x50,0x02},

}; //开机,关机

uchar code  wendu[][5]={

{0x59,0x00,0x00,0x50,0x02},{0x59,0x01,0x00,0x50,0x02},

{0x59,0x02,0x00,0x50,0x02},{0x59,0x03,0x00,0x50,0x02},

{0x59,0x04,0x00,0x50,0x02},{0x59,0x05,0x00,0x50,0x02},

{0x59,0x06,0x00,0x50,0x02},{0x59,0x07,0x00,0x50,0x02},

{0x59,0x08,0x00,0x50,0x02},{0x59,0x09,0x00,0x50,0x02},

{0x59,0x0a,0x00,0x50,0x02},{0x59,0x0b,0x00,0x50,0x02},

{0x59,0x0c,0x00,0x50,0x02},{0x59,0x0d,0x00,0x50,0x02},

{0x59,0x0e,0x00,0x50,0x02}

}; //温度值

void send_precode(unsigned int s_cnt_1,unsigned int s_cnt_2);

void send_8bit_code(uchar value);

void send_4bit_code(uchar value);

void send_final_code();

void ir_out1() //启动和关闭

{

send_precode(180,90);

send_8bit_code(on_or_off[switch_value][0]);

send_8bit_code(on_or_off[switch_value][1]);

send_8bit_code(on_or_off[switch_value][2]);

send_8bit_code(on_or_off[switch_value][3]);

send_4bit_code(on_or_off[switch_value][4]);

//send_final_code();

// key_value=0;

switch_value++;

if(switch_value==6){ switch_value=0; }

}

void ir_out2() //wendu--

{

send_precode(180,90);

send_8bit_code(wendu[wendu_value][0]);

send_8bit_code(wendu[wendu_value][1]);

send_8bit_code(wendu[wendu_value][2]);

send_8bit_code(wendu[wendu_value][3]);

send_4bit_code(wendu[wendu_value][4]);

send_final_code();

wendu_value--;

if(wendu_value==0)  {wendu_value=15;}

}

void ir_out3() //wendu++

{

send_precode(180,90);

send_8bit_code(wendu[wendu_value][0]);

send_8bit_code(wendu[wendu_value][1]);

send_8bit_code(wendu[wendu_value][2]);

send_8bit_code(wendu[wendu_value][3]);

send_4bit_code(wendu[wendu_value][4]);

send_final_code();

wendu_value++;

if(wendu_value==15) { wendu_value=0;}

}

void ir_out4()//mode choose

{

send_precode(180,90);

send_8bit_code(mode[mode_value][0]);

send_8bit_code(mode[mode_value][1]);

send_8bit_code(mode[mode_value][2]);

send_8bit_code(mode[mode_value][3]);

send_4bit_code(mode[mode_value][4]);

send_final_code();

mode_value++;

if(mode_value==4)

{ mode_value=0;}

}

void ir_out5() //转叶

{

send_precode(180,90);

send_8bit_code(zhuanye[zhuanye_value][0]);

send_8bit_code(zhuanye[zhuanye_value][1]);

send_8bit_code(zhuanye[zhuanye_value][2]);

send_8bit_code(zhuanye[zhuanye_value][3]);

send_4bit_code(zhuanye[zhuanye_value][4]);

send_final_code();

zhuanye_value++;

if(zhuanye_value==2)  {zhuanye_value=0;}

}

void ir_out6() //风量

{

send_precode(180,90);

send_8bit_code(fengliang[fengliang_value][0]);

send_8bit_code(fengliang[fengliang_value][1]);

send_8bit_code(fengliang[fengliang_value][2]);

send_8bit_code(fengliang[fengliang_value][3]);

send_4bit_code(fengliang[fengliang_value][4]);

send_final_code();

fengliang_value++;

if(fengliang_value==3)  {fengliang_value=0;}

}

//============================================

void delayms(unsigned char ms)

{

unsigned char i;

while(ms--)

{

for(i=0;i<120;i++){};

}

}

void TimerInit()

{

EA=1;

ET0=1;

TMOD=0X01;

TH0=0XfF;

TL0=221;  //50US

T2CON=0x00;

T2MOD=0x02;  //enable T2's wave output through T2 pin(P10)

RCAP2H=(65536-11059/38/4)>>8; //output frequency is 38KHz

RCAP2L=(65536-11059/38/4)&0xff;

}

void TransmittPulse()

{

enTransmitt;

// ir=0;

TR0=1;

TR2=1;

}

void TransmittLow()

{

//ir=1;

TR0=1;

disTransmitt;

TR2=0;

IR38k=1;

}

void endTransmitt()

{

//ir=0;

TR0=0;

TR2=0;

IR38k=1;   //JIEZHI

}

void send_logic0(unsigned int s_cnt_1,unsigned int s_cnt_2)

{

set_count=s_cnt_1;//

TransmittPulse();

count =0;

while(count

;

endTransmitt();

//ir=1;

set_count=s_cnt_2;//11;//

//ir=1;

count =0;

TransmittLow();

while(count

;

endTransmitt();

}

void send_logic1(unsigned int s_cnt_1,unsigned int s_cnt_2)

{

set_count=s_cnt_1;//

TransmittPulse();

count =0;

while(count

;

endTransmitt();

//ir=1;

//=========================

set_count=s_cnt_2;//32;//

//ir=1;

count =0;

TransmittLow();

while(count

;

endTransmitt();

}

void send_precode(unsigned int s_cnt_1,unsigned int s_cnt_2)

{

set_count =s_cnt_1;//180;// 9MS

TransmittPulse();  //start send pulse

count =0;

while(count

{;}

endTransmitt();

set_count =s_cnt_2;//90;//4.5MS

count =0;

TransmittLow();

while(count

{;}

endTransmitt();

}

void send_final_code()

{

set_count=28;//

count =0;

TransmittPulse();

while(count

;

endTransmitt();

}

void send_8bit_code(uchar value)

{

uchar i,temp;

temp=value;

for(i=0;i<8;i++)

{

if(temp&0x01)  send_logic1(11,32); //1.68ms

else  send_logic0(11,11); //600US

temp=temp>>1;

}

}

void send_4bit_code(uchar value)

{

uchar i,temp;

temp=value;

for(i=0;i<4;i++)

{

if(temp&0x01)  send_logic1(11,32); //1.68ms

else  send_logic0(11,11); //600US

temp=temp>>1;

}

}

//============================主函数========================

void main()

{

TimerInit();

while(1)

{

key_value=KeyScan();

switch(key_value)

{

case 1:ir_out1();delayms(200);break;  //   开和关

case 2:ir_out2();delayms(200);break;  //   温度-

case 3:ir_out3();delayms(200);break;   //   温度+.

case 4:ir_out4();delayms(200);break;  // 模式选择

case 5:ir_out5();delayms(200);break;    //转叶设置

case 6:ir_out6();delayms(200);break;

//default:ir=1;break;

}

}

}

void timer0(void) interrupt 1

{

TH0=0XfF;

TL0=221; //50us

count++;

if(flag)

TR2=1; //IR38k=0;

else TR2=0;//IR38k=1;

}

unsigned char KeyScan()

{

/*-------------第一列扫描-----------------*/

if(key1==0)

{

delayms(20);

if(key1==0)

{

return 1;

}

while(!key1);

}

if(key2==0)

{

delayms(20);

if(key2==0)

{

return 2;

}

while(!key2);

}

if(key3==0)

{

delayms(20);

if(key3==0)

{

return 3;

}

while(!key3);

}

if(key4==0)

{

delayms(20);

if(key4==0)

{

return 4;

}

while(!key4);

}

if(key5==0)

{

delayms(20);

if(key5==0)

{

return 5;

}

while(!key5);

}

if(key6==0)

{

delayms(20);

if(key6==0)

{

return 6;

}

while(!key6);

}

return 0 ;

}

空调遥控器c语言源码,51单片机格力空调遥控器设计源码相关推荐

  1. 毕业设计 基于51单片机的电子秤设计(源码+硬件+论文)

    文章目录 0 前言 1 主要功能 2 硬件设计(原理图) 3 核心软件设计 4 实现效果 5 最后 0 前言

  2. mysql温度报警器源码_基于51单片机的温度报警器设计源码

    #include #include #define uchar unsigned char #define uint  unsigned int typedef unsigned char  U8;  ...

  3. 51单片机循环流水灯源码

    51单片机循环流水灯源码 #include <reg52.h> #include <intrins.h> void delay(unsigned char a) {unsign ...

  4. 洗衣机控制系统c语言编程,采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文.doc...

    采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文 深 圳 大 学 本 科 毕 业 论 文(设计) 题目: 基于单片机设计的全自动 洗衣机控制器 姓名: 郑嘉泽 专业: 电子信息工程 学院: ...

  5. c语言 计步算法,基于51单片机的计步器设计

    基于51单片机的计步器设计(任务书,开题报告,外文翻译,论文15000字) 摘  要 随着科技发展和国民健康意识的提高,许多检测健康状态的电子产品开始普及.电子计步器作为一种越来越流行的平民锻炼检测装 ...

  6. 单片机c语言程序开发洗衣机,基于的51单片机全自动洗衣机设计(北理工

    <基于的51单片机全自动洗衣机设计(北理工>由会员分享,可在线阅读,更多相关<基于的51单片机全自动洗衣机设计(北理工(24页珍藏版)>请在人人文库网上搜索. 1.全自动洗衣机 ...

  7. 基于51单片机信号发生器仿真设计

    本设计 基于51单片机信号发生器仿真设计 (仿真+程序源码+设计说明书) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 目录标题 ...

  8. 基于51单片机自行车码表设计

    [毕设课设]基于51单片机自行车码表设计 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机proteu ...

  9. 基于51单片机的温度报警器设计

    目 录 前言.............................................................................................. ...

最新文章

  1. NVIDIA深度架构
  2. Java培训的学费标准是多少
  3. 综述|工业金属平面材料表面缺陷自动视觉检测的研究进展
  4. Nginx其他配置——日志管理、网页压缩、访问控制
  5. redis value最大值_Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?...
  6. C指针原理(41)-递归(2)
  7. php k线图 echarts,利用ECharts.js画K线图的方法示例
  8. 如何成为“10倍效率”开发者
  9. docker公共存储库_Docker入门(2)——镜像结构和私有镜像库
  10. Hub与Switch的帧的广播细节
  11. visio 教程-绘图技巧、快捷键大全
  12. 原来姹紫嫣红开遍 -- 牡丹亭·游园惊梦
  13. win10锁屏c语言,怎样在Win10锁屏界面打开任意应用程序【图文教程】
  14. 数学:定积分和数列和互相转化
  15. 男人三十而立,被动收入,越早开始越好
  16. 项目经理如何做好项目管理PMP - 持续更新
  17. 使用阿里巴巴图标库生成iconfont字体图标
  18. 计算机专业大学生应该买什么样的电脑?
  19. 两招彻底驯服Vista任务管理器这头倔驴
  20. ES6的三种暴露方式

热门文章

  1. 【Android】音乐播放器APP的设计与实现
  2. 如何从 GRUB rescue 恢复 Win7,win7 USB恢复盘制作
  3. 计算机辅助仿真模拟的英文缩写,全国计算机等级考试二级MS Office
  4. import和@import
  5. AngularJS + RequireJS
  6. UG 10.0 GRIP 问题
  7. 贾跃亭回应传闻:乐视的成功不是靠政府关系
  8. Vue中使用tailwindcss
  9. 前端较好的社区,快收藏起来吧~!
  10. 招聘 | 腾讯TEG机器学习平台预训练组实习生JD