找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4987|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)2個IO口6按鍵輸入 源程序與仿真

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:66287 發(fā)表于 2022-3-4 10:55 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
網(wǎng)上見到別人寫的2IO 6Key程序,但一直運(yùn)行不成功,認(rèn)真琢磨了一陣,終于成功�,F(xiàn)分享出來,以供同好參考。
注意:Proteus仿真不行,但在開發(fā)板上正常運(yùn)行。

//CPU:STC89C52單片機(jī)
#include <REG52.h>
#include <intrins.h>
sfr AUXR = 0x8E;
typedef  unsigned char  uchar;
typedef  unsigned int  uint;
#define key_state_0  0  //判斷是否按下
#define key_state_1  1  //判斷是否為抖動和取鍵值
uchar key=0;
bit KEY_1_ON=0;          //按鍵分為2組,1,2,3為第一組,4,5,6為第二組
                                   //KEY_1_ON 為第一組按下標(biāo)志
sbit IO_1=P1^0;
sbit IO_2=P1^1;
void Timer0_Init();   
void keyboard();
void main()
{
  Timer0_Init();
  while(1)
   {
   switch(key)
    {  
    case 1:P2=0XFE;
           break;
    case 2:P2=0XFD;
           break;
    case 3:P2=0XFB;
           break;
    case 4:P2=0XF7;
           break;
    case 5:P2=0XEF;
           break;
    case 6:P2=0XDF;
           break;
   }
  }
}

呵呵,重要的東東不能忘,這是按鍵部分的接線圖
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)




Keil代碼與Proteus仿真下載: 2io6key.rar (29.17 KB, 下載次數(shù): 61)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:66287 發(fā)表于 2022-3-4 15:35 | 只看該作者


這個運(yùn)行圖片清晰些,特別穩(wěn)定!
回復(fù)

使用道具 舉報

板凳
ID:66287 發(fā)表于 2022-3-7 10:14 | 只看該作者
“網(wǎng)上見到別人寫的2IO 6Key程序,但一直運(yùn)行不成功,認(rèn)真琢磨了一陣,終于成功。”
這句話是筆誤,我想說的是“”網(wǎng)上見到別人寫的2IO 6Key程序,但一直運(yùn)行不成功,自己琢磨了一陣,認(rèn)真重寫了代碼,終于成功�!罢嬲亲约簞�(chuàng)作的,非抄襲。
重申一遍:Proteus仿真不行,開發(fā)板上運(yùn)行正常。
回復(fù)

使用道具 舉報

地板
ID:66287 發(fā)表于 2022-3-23 16:07 | 只看該作者

經(jīng)努力,現(xiàn)完全仿真成功。
貼上運(yùn)行圖:

回復(fù)

使用道具 舉報

5#
ID:66287 發(fā)表于 2022-3-23 16:12 | 只看該作者
//這是主程序
#include <REG52.h>
#include <intrins.h>
sfr AUXR = 0x8E;
typedef  unsigned char  uchar;
typedef  unsigned int  uint;
#define key_state_0  0  //判斷是否按下
#define key_state_1  1  //判斷是否為抖動和取鍵值

sfr  P1M1 = 0x91;
sfr  P1M0 = 0x92;

uchar key=0;
bit KEY_1_ON=0;   //按鍵分成兩組,1、2、3為第一組,4、5、6為第二組
                    //KEY_1_ON 為第一組按下標(biāo)志
sbit IO_1=P1^0;
sbit IO_2=P1^1;

void Timer0_Init();     //定時器初始化
void keyboard();
void main()
{
  P1M1=0x03;    //P0^0及P0^1配置成開漏模式  
  P1M0=0x03;    //這樣在要讀外部狀態(tài)時,對該位寫"1"即可

  Timer0_Init();
  while(1)
   {
   switch(key)
    {  
    case 1:P2=0XFE;
           break;
    case 2:P2=0XFD;
           break;
    case 3:P2=0XFB;
           break;
    case 4:P2=0XF7;
           break;
    case 5:P2=0XEF;
           break;
    case 6:P2=0XDF;
           break;
   }
  }
}
回復(fù)

使用道具 舉報

6#
ID:66287 發(fā)表于 2022-3-23 16:14 | 只看該作者
void Timer0_Init()  //定時器初始化
  {    //10毫秒@12.000MHz
    AUXR &= 0x7F;                //定時器時鐘12T模式
    TMOD &= 0xF0;                //設(shè)置定時器模式
    TMOD |= 0x01;                //設(shè)置定時器模式
    TL0 = 0xF0;                  //設(shè)置定時初始值
    TH0 = 0xD8;                  //設(shè)置定時初始值
    TR0 = 1;                    //定時器0開始計(jì)時
    ET0 =1;
   EA = 1;
}

void Timer0() interrupt 1 //定時器中斷
{                     //16位自動重裝模式         
   keyboard();
}       

keyboard() 函數(shù)在附件中,無變化。
回復(fù)

使用道具 舉報

7#
ID:399179 發(fā)表于 2022-3-23 21:03 來自手機(jī) | 只看該作者
樓主真牛人�。�!
回復(fù)

使用道具 舉報

8#
ID:977804 發(fā)表于 2022-3-23 22:21 來自手機(jī) | 只看該作者
少引腳的芯片非常需要
回復(fù)

使用道具 舉報

9#
ID:66287 發(fā)表于 2022-3-24 08:28 | 只看該作者
這是更新后的Keil代碼與Proteus仿真文件。

2io6key.rar (34.13 KB, 下載次數(shù): 48)
回復(fù)

使用道具 舉報

10#
ID:170318 發(fā)表于 2022-3-24 09:47 | 只看該作者
樓主確實(shí)是大拿。不過用帶有ADC口的,可以一個口實(shí)現(xiàn)好多個按鍵功能
回復(fù)

使用道具 舉報

11#
ID:977804 發(fā)表于 2022-3-24 12:51 | 只看該作者
可惜仿真是8.0以上版本的,下載下來想仿真試試,
回復(fù)

使用道具 舉報

12#
ID:66287 發(fā)表于 2022-3-25 08:29 | 只看該作者
Proteus低版本無STC芯片仿真模塊,需要Proteus 8.9 sp2的,
我這是綠色免安裝版。
回復(fù)

使用道具 舉報

13#
ID:136119 發(fā)表于 2022-3-25 08:51 | 只看該作者
我最多能實(shí)現(xiàn)3個按鍵,6個厲害了,程序保留后期研究。
回復(fù)

使用道具 舉報

14#
ID:430492 發(fā)表于 2022-3-26 14:13 | 只看該作者
回頭找找一個IO,通用ADC整的4個按鍵的代碼,幾年前的看還能不能找著。
回復(fù)

使用道具 舉報

15#
ID:513507 發(fā)表于 2022-12-28 17:10 | 只看該作者
厲害!2線6按鍵
回復(fù)

使用道具 舉報

16#
ID:398219 發(fā)表于 2023-1-27 21:39 | 只看該作者
歷害,但是研究了程序,有點(diǎn)點(diǎn)頭緒,但是摸不準(zhǔn)原理~!漢~
回復(fù)

使用道具 舉報

17#
ID:47652 發(fā)表于 2023-1-28 07:01 | 只看該作者
2線6鍵的實(shí)現(xiàn)省下很多io口啊,謝謝分享!
回復(fù)

使用道具 舉報

18#
ID:433219 發(fā)表于 2023-1-31 14:57 | 只看該作者
3個io識別22個按鍵,,,缺點(diǎn),費(fèi)腦瓜子


回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表