/* 例程: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];
}
}
}
|