?? main.c
字號:
//-----------------------------------------------------------------
// 名稱: 數碼管顯示4x4鍵盤矩陣按鍵序號
//-----------------------------------------------------------------
// 說明: 本例運行時,數碼管會顯示所按下的任意按鍵在鍵盤矩陣上的位置.
// 掃描程序首先判斷按鍵發生在哪一列,然后判斷按鍵發生在哪一行,
// 由列號和行號即可得到鍵盤按鍵序號.
//
//-----------------------------------------------------------------
#include <pic.h>
#define INT8U unsigned char
#define _XTAL_FREQ 4000000UL
#define BEEP() (RA1 = ~RA1) //蜂鳴器
//0~9,A~F的共陰數碼管段碼
const INT8U SEG_CODE[] =
{
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71
};
//當前按鍵序號,該矩陣中序號范圍為0~15,16表示無按鍵
INT8U KeyNo = 16;
//-----------------------------------------------------------------
// 蜂鳴器子程序
//-----------------------------------------------------------------
void Beep()
{
for (INT8U i = 0; i < 100; i++)
{
BEEP(); __delay_us(60);
}
}
//-----------------------------------------------------------------
// 判斷鍵盤矩陣是否有鍵按下
//-----------------------------------------------------------------
INT8U KeyMatrix_Down()
{
//高四位輸出,低四位輸入,高四位先置0,放入四行
//四列中如果有一列出現0則表示有鍵按下
}
//-----------------------------------------------------------------
// 鍵盤矩陣掃描子程序
//-----------------------------------------------------------------
void Keys_Scan()
{
//在判斷是否有鍵按下的函數KeyMatrix_Down中,
//高四位輸出,低四位輸入,高四位先置0,放入四行
//按鍵后00001111將變成0000XXXX,X中有1個為0,3個仍為1
//下面判斷按鍵發生于0~3列中的哪一列
switch (PORTD)
{
}
//高四位輸入,低四位輸出,低四位先置0,放入四列
//按鍵后11110000將變成XXXX0000,X中1個為0,3個仍為1
//下面對0~3行分別附加起始值0,4,8,12
switch (PORTD)
{
}
}
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
ADCON1 = 0x06; //關閉模擬端口
TRISA1 = 0; //蜂鳴器輸出端口(RA1)
TRISB = 0x00; //配置數碼管顯示輸出端口
PORTB = 0x00; //數碼管初始時黑屏
while(1)
{
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -