Re: [請益] 4X4的 keyboard 寫法
P0為接收。採用低態驅動 表示 LOW動作。
所以P0的腳位 用 電阻 PUSH HIGH(5V)。
按鈕按下導通後讓他接地。(目地按下按鈕能讓準位拉地)
若沒示波器 就用 三用電錶 量MCU的P0腳。看每隻腳是否按下按鈕會拉LOW。
PS:不知道你硬體是否看書接的?
※ 引述《kinkipikachu (提琴手的無弦之聲)》之銘言:
: 小弟知道網路上跟書上有很多,我自己試寫了一個
: 用 keil c 寫的 keypad 程式,但是七段就是不會亮,
: 請大大指點一下我錯誤的觀念,我不知錯再哪裡?
: 硬體架構:
: OUTPUT 接收
: 89S51 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
: 採用低態驅動
: P2 接 7段顯示器
: 程式:
: #include <AT89X51.H>
: char keypad(void);
: code char
: table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,
: 0x83,0xc6,0xa1,0x86,0x8e,0xff};
: main()
: {
: char n;
: while(1)
: {
: n=table[keypad()];
: P2=~n;
: }
: }
: char keypad(void)
: {
: char key=16;
: if (P0==0x77)
: {
: key=0;
: return key;
: }
: else if (P0==0x7b)
: {
: key=1;
: return key;
: }
: else if (P0==0x7c)
: {
: key=2;
: return key;
: }
: else if (P0==0x7e)
: {
: key=3;
: return key;
: }
: else if (P0==0xb7)
: {
: key=4;
: return key;
: }
: else if (P0==0xbb)
: {
: key=5;
: return key;
: }
: else if (P0==0xbc)
: {
: key=6;
: return key;
: }
: else if (P0==0xbe)
: {
: key=7;
: return key;
: }
: else if (P0==0xc7)
: {
: key=8;
: return key;
: }
: else if (P0==0xcb)
: {
: key=9;
: return key;
: }
: else if (P0==0xce)
: {
: key=10;
: return key;
: }
: else if (P0==0xc7)
: {
: key=11;
: return key;
: }
: else if (P0==0xe7)
: {
: key=12;
: return key;
: }
: else if (P0==0xeb)
: {
: key=13;
: return key;
: }
: else if (P0==0xec)
: {
: key=14;
: return key;
: }
: else if (P0==0xee)
: {
: key=15;
: return key;
: }
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.80.6
推
02/10 14:53, , 1F
02/10 14:53, 1F
→
02/10 14:54, , 2F
02/10 14:54, 2F
→
02/10 14:55, , 3F
02/10 14:55, 3F
→
02/10 14:55, , 4F
02/10 14:55, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章