|
采用51單片機,12864,GPS模塊,矩陣鍵盤,ZigBeeProS1 通信模塊
要求就是在液晶屏上顯示定位信息 (已完成)
問題 就是 每一個按鍵代表一種事件,按下其中一個按鍵之后將該按鍵代表的事件信息名稱和定位信息發出去(修改)
比如說: 矩陣鍵盤上的S1按鍵,按下,液晶屏上顯示 S1:我回來了(舉例)
緊接著就會將定位信息和“我回來了”發送出去
目前程序有點問題,就是按鍵發送程序有問題,各位大神幫忙看一看。
下面是按鍵程序,發布出去12864不顯示按鍵信息。其余的程序在下面文件夾
#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include "LCD.h"
#define uint unsigned int //宏定義無符號整型數據
#define uchar unsigned char //宏定義無符號字符型數?
uchar key=0; //定義鍵值全局變量
void keyscan() //按鍵掃描程序
{
static bit sign=0; //按鍵有效標志
static uint count=0; //消抖計數變量
uchar num=0; //臨時變量
P2=0xf0; //賦值P2 1111 0000
if(P2!=0xf0) //檢測有按鍵按下
{
count++; //消抖計數
if((count>=500)&&(sign==0))//100~1000,根據主循環周期調整約10~20ms
{
sign=1; //按鍵有效標志置1
num=P2; //保存P2值xxxx 0000,x為0或1
num|=0x0f; //保存num按位或0x0f值xxxx 1111
P2=num; //賦值P2xxxx 1111
num=P2; //保存P2值xxxx xxxx
switch(num)
{
case 0xee: key= 1; break;
case 0xde: key= 2; break;
case 0xbe: key= 3; break;
case 0x7e: key= 4; break;
case 0xed: key= 5; break;
case 0xdd: key= 6; break;
case 0xbd: key= 7; break;
case 0x7d: key= 8; break;
case 0xeb: key= 9; break;
case 0xdb: key=10; break;
case 0xbb: key=11; break;
case 0x7b: key=12; break;
case 0xe7: key=13; break;
case 0xd7: key=14; break;
case 0xb7: key=15; break;
case 0x77: key=16; break;
}
}
}
else //鍵抬起
{
sign=0; //按鍵有效標志清0
count=0; //消抖計數清0
}
下面是整個項目的 完整程序。大神幫忙看一下,錯在什么地方了,相關接口文件里面有。
全部資料51hei下載地址:
GPS相關程序.rar
(107.09 KB, 下載次數: 46)
2019-5-2 21:45 上傳
點擊文件名下載附件
|
|