以前买了个遥控模块放了很久,现在把它拿出来做个遥控电扇,嘻嘻!但是测了一下,这个模块在单片机上四个控制端始终显示高电平,单片机引脚无法在低电平时进行判断,无奈只能选择了循环显示的程序。本人觉得还行,按一下,低档,按一下,二档,再按一下,高档,最后按一下关掉!大侠勿喷哦!
制作出来实物图如下:
单片机源程序如下:
- /********************************************************************
- *********************************************************************/
- #include<reg52.h> //库文件
- #define uchar unsigned char//宏定义无符号字符型
- #define uint unsigned int //宏定义无符号整型
- /********************************************************************
- 初始定义
- *********************************************************************/
- uchar count; //按键计数,每按一下,count 加1
- uchar a,b; //定义字符型变量
- uchar temp; //定义字符型变量
- sbit BY1=P3^4; //定义按键的输入端(为单片机P2口的P2.1按键)
- //sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit P14=P1^4;sbit P15=P1^5;sbit P16=P1^6;
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay10ms(void) //延时程序
- {
- uchar i,j;
- for(i=20;i>0;i--)
- for(j=248;j>0;j--);
- }
- /********************************************************************
- 按键判断函数
- *********************************************************************/
- void key() //按键判断程序
- {
- if(BY1==0) //判断是否按下键盘
- {
- delay10ms(); //延时,软件去干扰
- if(BY1==0) //确认按键按下
- {
- count++; //按键计数加1
- if(count==4) //计8次重新计数
- {
- count=0;//将count 清零
- }
- }
- while(BY1==0);//按键锁定,每按一次count 只加1.
- }
- }
- /********************************************************************
- 主函数
- *********************************************************************/
- void main()
- {
- temp=0xfe; //定义为11111110
- while(1)
- {
- key(); //调用按键判断函数
-
- a=temp<<count;//左移count位
- b=temp>>(8-count);//右移8-count位
- P1=a|b; //求值 P10=
- // if(P14==0){P10=1;P11=1;P12=1;P13=1;}
- }
- }
-
- /********************************************************************
- 结束
- *********************************************************************/
复制代码
所有资料51hei提供下载:
遥控电扇.zip
(69.26 KB, 下载次数: 37)
|