久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
MCU 6x6的矩陣鍵盤,按鍵按下串口接收數據感覺多運行了一次,會顯示多一個加6之后的數據
[打印本頁]
作者:
maixueqiu
時間:
2022-5-16 16:29
標題:
MCU 6x6的矩陣鍵盤,按鍵按下串口接收數據感覺多運行了一次,會顯示多一個加6之后的數據
d7dfd79b43eabd24ff641419ec11e72.png
(23.88 KB, 下載次數: 30)
下載附件
2022-5-16 16:29 上傳
單片機源程序如下:
#include "XMCE003.h"
#include "Function_define.h"
//***************** The Following is in define in Fucntion_define.h ***************************
//****** Always include Function_define.h call the define you want, detail see main(void) *******
//***********************************************************************************************
/*------------------------------------------------
The main C function. Program execution starts
here after stack initialization.
------------------------------------------------*/
//P06 P07 串口 P02 P16 燒碼 P20 復位 P30 晶振
//下面端口定義根據實際情況修改
#define P_IN_0 P00 //輸入0號
#define P_IN_1 P10
#define P_IN_2 P11
#define P_IN_3 P12
#define P_IN_4 P13
#define P_IN_5 P14
#define P_OUT_0 P05 //輸出0號
#define P_OUT_1 P20
#define P_OUT_2 P30
#define P_OUT_3 P17
#define P_OUT_4 P03
#define P_OUT_5 P01
#define BR_16M_115200 (0x8a)
#define SCAN_TIMES (10) //1個判決周期內掃描次數
#define PUSH_TIMES (5) //1個判決周期內多少次按下算真正按下
static uint8_t gUartBuf[5]; //串口數據緩沖
static uint8_t gScanCnt; //掃描計數
static uint8_t gKeyPressCnt[36]; //按鍵數
static uint8_t gKeyState[36]; //按鍵狀態
void delay() //延時函數
{
uint16_t temp_u16 = 4000;
while(temp_u16--){nop;}
}
void IO_Init() //IO初始化
{
uint8_t i;
P00_PullUp_Mode;
P06_PullUp_Mode; //上拉
P10_PullUp_Mode;
P11_PullUp_Mode;
P12_PullUp_Mode;
P13_PullUp_Mode;
P14_PullUp_Mode;
P05_OpenDrain_Mode; //開漏
P20_OpenDrain_Mode;
P30_OpenDrain_Mode;
P17_OpenDrain_Mode;
P03_OpenDrain_Mode;
P01_OpenDrain_Mode;
P_OUT_0 = 1;
P_OUT_1 = 1;
P_OUT_2 = 1;
P_OUT_3 = 1;
P_OUT_4 = 1;
P_OUT_5 = 1;
for(i = 0; i < 36; i++)
{
gKeyPressCnt[i] = 0; //按鍵計數清零
gKeyState[i] = 0; //按鍵狀態清零
}
gScanCnt = 0; //掃描計數清零
}
void Send_Data_To_UART(unsigned char r_data)
{
TI = 0;
SBUF = r_data;
while(TI==0);
}
void Send_Key_State(uint8_t Key, uint8_t UpDown)
{
uint8_t i;
uint8_t Check =0; //00000000
gUartBuf[0] = 0xaa; //10101010 10101010
gUartBuf[1] = 0x55; //01010101 11111111
gUartBuf[2] = Key; //00000000
gUartBuf[3] = UpDown; //00000000/00000001
for (i = 0; i < 4; i++)
{
Check ^= gUartBuf[i];
}
gUartBuf[4] = Check;
for (i = 0; i < 5; i++)
{
Send_Data_To_UART(gUartBuf[i]);
}
}
void KeyBoard_ReadInput(uint8_t Line)
{
Line *= 6; //Line=Line*6
if (P_IN_0 == 0)
{
gKeyPressCnt[Line]++;
}
if (P_IN_1 == 0)
{
gKeyPressCnt[Line + 1]++;
}
if (P_IN_2 == 0)
{
gKeyPressCnt[Line + 2]++;
}
if (P_IN_3 == 0)
{
gKeyPressCnt[Line + 3]++;
}
if (P_IN_4 == 0)
{
gKeyPressCnt[Line + 4]++;
}
if (P_IN_5 == 0)
{
gKeyPressCnt[Line + 5]++;
}
}
void UART_Init() //串口初始化
{
P06 = 1;
P07 = 1;
TI = 0; //標志位清零
RI = 0;
B8EN = 0; //關閉串口第九位
SOVRH = 0x00; //波特率高兩位
SOVRL = BR_16M_115200; //波特率低八位
REN = 1; //串口使能位
}
void KeyBoard_ScanOnce(void)
{
uint8_t i;
P_OUT_0 = 0;
KeyBoard_ReadInput(0);
P_OUT_0 = 1;
P_OUT_1 = 0;
KeyBoard_ReadInput(1);
P_OUT_1 = 1;
P_OUT_2 = 0;
KeyBoard_ReadInput(2);
P_OUT_2 = 1;
P_OUT_3 = 0;
KeyBoard_ReadInput(3);
P_OUT_3 = 1;
P_OUT_4 = 0;
KeyBoard_ReadInput(4);
P_OUT_4 = 1;
P_OUT_5 = 0;
KeyBoard_ReadInput(5);
P_OUT_5 = 1;
gScanCnt++;
if (gScanCnt >= SCAN_TIMES) //掃描次數大于上線
{
gScanCnt = 0; //掃描次數清零
for(i = 0; i < 36; i++)
{
if (gKeyPressCnt[i] >= PUSH_TIMES)//判斷按鍵按下
{
if (!gKeyState[i]) // 如果按鍵按下
{
gKeyState[i] = 1; //串口發送按鍵按下
Send_Key_State(i,1);//發送按鍵狀態1
}
}
else
{
if (gKeyState[i]) //按鍵松開
{
gKeyState[i] = 0; //串口發送按鍵抬起
Send_Key_State(i,0);//發送按鍵狀態0
}
}
}
for(i = 0; i < 36; i++)
{
gKeyPressCnt[i] = 0; //按鍵計數清零
}
}
else
{
delay();
}
}
void main (void)
{
Set_All_GPIO_PushPull_Mode; // Define in Function_define.h
UART_Init(); //初始化
IO_Init(); //初始化
WDTEN;
while(1)
{
WDTCLR;
KeyBoard_ScanOnce();
}
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一区中文字幕
|
99热在线播放
|
欧美久久久久久久久
|
国产成人高清视频
|
在线黄
|
www.日本国产
|
在线播放91
|
一级黄色片日本
|
午夜网
|
亚洲在线一区
|
麻豆久久精品
|
成人免费视频
|
黄色成人在线
|
少妇无套高潮一二三区
|
日韩不卡一区二区
|
久久大陆
|
国产精品一区2区
|
伊人网站
|
中文字幕亚洲区一区二
|
国产一级电影在线
|
97色在线观看免费视频
|
黄色av观看
|
亚洲三区在线观看
|
精品国产一区二区三区久久久蜜月
|
北条麻妃99精品青青久久
|
中文字幕精品一区二区三区精品
|
97国产精品
|
成人水多啪啪片
|
国产精品99久久久久久久久久久久
|
国产男人的天堂
|
久久男人天堂
|
国产区在线观看
|
亚洲第一在线
|
久久33
|
中文字幕日韩欧美一区二区三区
|
欧美日韩在线视频一区二区
|
午夜影院
|
久久com
|
亚洲精品日本
|
国产精品一区二区欧美黑人喷潮水
|
久久国产激情视频
|