空调遥控器c语言源码,51单片机格力空调遥控器设计源码
//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单片机格力空调遥控器设计源码相关推荐
- 毕业设计 基于51单片机的电子秤设计(源码+硬件+论文)
文章目录 0 前言 1 主要功能 2 硬件设计(原理图) 3 核心软件设计 4 实现效果 5 最后 0 前言
- mysql温度报警器源码_基于51单片机的温度报警器设计源码
#include #include #define uchar unsigned char #define uint unsigned int typedef unsigned char U8; ...
- 51单片机循环流水灯源码
51单片机循环流水灯源码 #include <reg52.h> #include <intrins.h> void delay(unsigned char a) {unsign ...
- 洗衣机控制系统c语言编程,采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文.doc...
采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文 深 圳 大 学 本 科 毕 业 论 文(设计) 题目: 基于单片机设计的全自动 洗衣机控制器 姓名: 郑嘉泽 专业: 电子信息工程 学院: ...
- c语言 计步算法,基于51单片机的计步器设计
基于51单片机的计步器设计(任务书,开题报告,外文翻译,论文15000字) 摘 要 随着科技发展和国民健康意识的提高,许多检测健康状态的电子产品开始普及.电子计步器作为一种越来越流行的平民锻炼检测装 ...
- 单片机c语言程序开发洗衣机,基于的51单片机全自动洗衣机设计(北理工
<基于的51单片机全自动洗衣机设计(北理工>由会员分享,可在线阅读,更多相关<基于的51单片机全自动洗衣机设计(北理工(24页珍藏版)>请在人人文库网上搜索. 1.全自动洗衣机 ...
- 基于51单片机信号发生器仿真设计
本设计 基于51单片机信号发生器仿真设计 (仿真+程序源码+设计说明书) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 目录标题 ...
- 基于51单片机自行车码表设计
[毕设课设]基于51单片机自行车码表设计 效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: 效果图 更多内容请关注@WENJIE电子科技 基于51单片机proteu ...
- 基于51单片机的温度报警器设计
目 录 前言.............................................................................................. ...
最新文章
- NVIDIA深度架构
- Java培训的学费标准是多少
- 综述|工业金属平面材料表面缺陷自动视觉检测的研究进展
- Nginx其他配置——日志管理、网页压缩、访问控制
- redis value最大值_Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?...
- C指针原理(41)-递归(2)
- php k线图 echarts,利用ECharts.js画K线图的方法示例
- 如何成为“10倍效率”开发者
- docker公共存储库_Docker入门(2)——镜像结构和私有镜像库
- Hub与Switch的帧的广播细节
- visio 教程-绘图技巧、快捷键大全
- 原来姹紫嫣红开遍 -- 牡丹亭·游园惊梦
- win10锁屏c语言,怎样在Win10锁屏界面打开任意应用程序【图文教程】
- 数学:定积分和数列和互相转化
- 男人三十而立,被动收入,越早开始越好
- 项目经理如何做好项目管理PMP - 持续更新
- 使用阿里巴巴图标库生成iconfont字体图标
- 计算机专业大学生应该买什么样的电脑?
- 两招彻底驯服Vista任务管理器这头倔驴
- ES6的三种暴露方式