久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 單片機2個IO口6按鍵輸入 源程序與仿真 [打印本頁]

作者: bhjyqjs    時間: 2022-3-4 10:55
標題: 單片機2個IO口6按鍵輸入 源程序與仿真
網上見到別人寫的2IO 6Key程序,但一直運行不成功,認真琢磨了一陣,終于成功。現分享出來,以供同好參考。
注意:Proteus仿真不行,但在開發板上正常運行。

//CPU:STC89C52單片機
#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 為第一組按下標志
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, 下載次數: 61)

作者: bhjyqjs    時間: 2022-3-4 15:35


這個運行圖片清晰些,特別穩定!

作者: bhjyqjs    時間: 2022-3-7 10:14
“網上見到別人寫的2IO 6Key程序,但一直運行不成功,認真琢磨了一陣,終于成功。”
這句話是筆誤,我想說的是“”網上見到別人寫的2IO 6Key程序,但一直運行不成功,自己琢磨了一陣,認真重寫了代碼,終于成功。“真正是自己創作的,非抄襲。
重申一遍:Proteus仿真不行,開發板上運行正常。
作者: bhjyqjs    時間: 2022-3-23 16:07

經努力,現完全仿真成功。
貼上運行圖:


作者: bhjyqjs    時間: 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 為第一組按下標志
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;    //這樣在要讀外部狀態時,對該位寫"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;
   }
  }
}
作者: bhjyqjs    時間: 2022-3-23 16:14
void Timer0_Init()  //定時器初始化
  {    //10毫秒@12.000MHz
    AUXR &= 0x7F;                //定時器時鐘12T模式
    TMOD &= 0xF0;                //設置定時器模式
    TMOD |= 0x01;                //設置定時器模式
    TL0 = 0xF0;                  //設置定時初始值
    TH0 = 0xD8;                  //設置定時初始值
    TR0 = 1;                    //定時器0開始計時
    ET0 =1;
   EA = 1;
}

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

keyboard() 函數在附件中,無變化。
作者: 快樂眼淚    時間: 2022-3-23 21:03
樓主真牛人!!!
作者: 3花木城    時間: 2022-3-23 22:21
少引腳的芯片非常需要
作者: bhjyqjs    時間: 2022-3-24 08:28
這是更新后的Keil代碼與Proteus仿真文件。

2io6key.rar (34.13 KB, 下載次數: 48)

作者: jhczy    時間: 2022-3-24 09:47
樓主確實是大拿。不過用帶有ADC口的,可以一個口實現好多個按鍵功能
作者: 3花木城    時間: 2022-3-24 12:51
可惜仿真是8.0以上版本的,下載下來想仿真試試,
作者: bhjyqjs    時間: 2022-3-25 08:29
Proteus低版本無STC芯片仿真模塊,需要Proteus 8.9 sp2的,
我這是綠色免安裝版。
作者: yuyechenai    時間: 2022-3-25 08:51
我最多能實現3個按鍵,6個厲害了,程序保留后期研究。
作者: cooleaf    時間: 2022-3-26 14:13
回頭找找一個IO,通用ADC整的4個按鍵的代碼,幾年前的看還能不能找著。
作者: laohu_zz    時間: 2022-12-28 17:10
厲害!2線6按鍵
作者: herui2128    時間: 2023-1-27 21:39
歷害,但是研究了程序,有點點頭緒,但是摸不準原理~!漢~
作者: 榆林上校    時間: 2023-1-28 07:01
2線6鍵的實現省下很多io口啊,謝謝分享!
作者: wkman    時間: 2023-1-31 14:57
3個io識別22個按鍵,,,缺點,費腦瓜子







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91美女在线 | 亚洲一区二区三区在线视频 | 日韩av网址在线观看 | 99草免费视频 | 国产一区二区三区久久久久久久久 | 欧美一区免费 | 成人在线一区二区 | 日韩高清国产一区在线 | 日本成人在线免费视频 | 日本黄色免费视频 | 99视频在线看 | 女女爱爱视频 | 欧美成人激情 | 9999国产精品欧美久久久久久 | 精品国产欧美一区二区 | 91精品国产欧美一区二区成人 | 精品乱码一区二区 | 国产精品久久久乱弄 | 久久久久久久久久毛片 | 中文字幕在线中文 | 亚洲成人精选 | 久久国产精品99久久久久 | 日韩视频一区二区三区 | 国产综合久久久久久鬼色 | 91电影在线播放 | 日韩一区欧美一区 | 欧美激情欧美激情在线五月 | 国产精品区二区三区日本 | 伊人免费视频二 | 五月婷婷色| 97色综合| 欧美精品电影一区 | 亚洲高清在线观看 | 日韩二三区| 国产精品视频中文字幕 | 91亚洲免费 | 精品美女视频在免费观看 | 日本a∨精品中文字幕在线 亚洲91视频 | 国产高清一区 | 久久精品av | 91精品一区二区三区久久久久 |