/* 例程:315M按键加减操作数码管显示
* 内容:通过315M遥控器的按键对一个数据做加减操作,数码管动态显示
* 现象:本实验是通过51单片机的IO管脚连接315M无线接收模块,接收遥控器的
* 按键信息。通过315M遥控器的按键对两个数据做加减操作,并使用神舟
* 51开发板上的数码管动态显示。*/
/* 包含头文件 */
#include <reg52.h>
#include "delay.h"
#include "display.h"
#define WL_315M_PORT P0 //315M无线接收模块对应端口
sbit WL_315M_D0 = P0^3; //定义D0按键输入端口
sbit WL_315M_D1 = P0^4; //定义D1按键输入端口
sbit WL_315M_D2 = P0^5; //定义D2按键输入端口
sbit WL_315M_D3 = P0^6; //定义D3按键输入端口
sbit WL_315M_VT = P0^7; //定义VT接收数据有效端口
/*-- 主函数 --*/
void main (void)
{
unsigned char num1 = 0, num2 = 0;
//数码管动态显示定时器初始化
Init_Timer0();
WL_315M_PORT = 0xFF; // 315M无线接收模块对应端口电平置高
/* 如果315M无线接收模块的4个管脚同时检测到高电平有效,说明
模块没有安装,数码管闪烁'E'提示用户检查315M无线接收模块 */
while(WL_315M_D0 & WL_315M_D1 & WL_315M_D2 & WL_315M_D3)
{
TempData[2] = DuanMa[0xE]; //ERROR 错误提示
TempData[3] = DuanMa[0xE]; //ERROR 错误提示
TempData[6] = DuanMa[0xE]; //ERROR 错误提示
TempData[7] = DuanMa[0xE]; //ERROR 错误提示
DelayMs(100);
TempData[2] = 0x0; //熄灭
TempData[3] = 0x0; //熄灭
TempData[6] = 0x0; //熄灭
TempData[7] = 0x0; //熄灭
DelayMs(100);
}
while (1) //主循环
{
if(WL_315M_VT) //如果检测到高电平,说明遥控器上有按键按下
{
/* 如果315M无线接收模块的4个管脚同时检测到高电平有效,说明
模块没有安装,数码管闪烁'E'提示用户检查315M无线接收模块 */
if(WL_315M_D0 & WL_315M_D1 & WL_315M_D2 & WL_315M_D3)
{
TempData[2] = DuanMa[0xE]; //ERROR 错误提示
TempData[3] = DuanMa[0xE]; //ERROR 错误提示
TempData[6] = DuanMa[0xE]; //ERROR 错误提示
TempData[7] = DuanMa[0xE]; //ERROR 错误提示
DelayMs(100);
TempData[2] = 0x0; //熄灭
TempData[3] = 0x0; //熄灭
TempData[6] = 0x0; //熄灭
TempData[7] = 0x0; //熄灭
DelayMs(100);
}
else if(WL_315M_D0) //如果D0对应的按键按下则num1增加
{
num1++;
if(num1 > 99)
{
num1 = 0;
}
}
else if(WL_315M_D1) //如果D1对应的按键按下则num1减小
{
if(num1 == 0)
{
num1 = 99;
}
else
{
num1--;
}
}
else if(WL_315M_D2) //如果D2对应的按键按下则num2增加
{
num2++;
if(num2 > 99)
{
num2 = 0;
}
}
else if(WL_315M_D3) //如果D3对应的按键按下则num2减小
{
if(num2 == 0)
{
num2 = 99;
}
else
{
num2--;
}
}
//如果模块正常,等待按键释放
while(WL_315M_D0 | WL_315M_D1 | WL_315M_D2 | WL_315M_D3)
{
if(WL_315M_D0 & WL_315M_D1 & WL_315M_D2 & WL_315M_D3)
{
break;
}
}
}
else
{
TempData[2] = DuanMa[num1/10]; //数字1显示更新
TempData[3] = DuanMa[num1%10];
TempData[6] = DuanMa[num2/10]; //数字2显示更新
TempData[7] = DuanMa[num2%10];
}
}
}
|