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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4449|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

求51單片機(jī)矩陣鍵盤輸入,四位共陰數(shù)碼管簡易計算機(jī)程序及仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:175071 發(fā)表于 2017-4-21 10:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
30黑幣
要求能做兩位數(shù)的加減乘除

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

使用道具 舉報

沙發(fā)
ID:82765 發(fā)表于 2017-4-21 22:34 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

板凳
ID:192228 發(fā)表于 2017-4-22 05:40 | 只看該作者
/*********************************************************************************
*實驗名   :矩陣鍵盤掃描 數(shù)碼管顯示
*實驗效果        :按S1-S16矩陣按鍵,數(shù)碼管8位依次顯示0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
*
*********************************************************************************/
#include<reg52.h>
#include"bstv51.h"

uchar code table[17]={0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d ,
                   0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 ,
                   0x5e , 0x79 , 0x71 , 0x00};         //0-9&A-F&“不顯示”  字型碼

void delay(uint xms)        //延遲xms
{
    uint i,j;
        for(i=xms;i>0;i--)
          for(j=112;j>0;j--);
}

void display(uchar num)           //數(shù)碼管顯示函數(shù)
{
    P0=table[num];                 //段選
        DU=1;
        DU=0;
}

void keyscan4x4()
{
    uchar temp,key;


        ///////////////第一行掃描///////////////////
        P3=0xfe;//1111 1110 讓P3.0口輸出低
        temp=P3;
        temp=temp&0xf0;//1111 0000        位與操作 屏蔽后四位
        if(temp!=0xf0)
        {
            delay(10);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                    temp=P3;
                        switch(temp)
                        {
                          case 0xee:           //1110 1110 S1被按下
                               key=0;
                                   break;
                          case 0xde:                  //1101 1110  S2被按下
                                   key=1;
                                   break;
                          case 0xbe:                  //1011 1110  S3被按下
                                   key=2;
                                   break;
                          case 0x7e:                  //0111 1110  S4被按下
                                   key=3;
                                   break;
                        }
                        while(temp!=0xf0)
                        {
                            temp=P3;
                                temp=temp&0xf0;
                        }
                        display(key);
                }
        }
                        ///////////////第二行掃描///////////////////
        P3=0xfd;//1111 1101 讓P3.1口輸出低
        temp=P3;
        temp=temp&0xf0;//1111 0000        位與操作 屏蔽后四位
        if(temp!=0xf0)
        {
            delay(10);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                    temp=P3;
                        switch(temp)
                        {
                          case 0xed:           //1110 1101 S5被按下
                               key=4;
                                   break;
                          case 0xdd:                  //1101 1101  S6被按下
                                   key=5;
                                   break;
                          case 0xbd:                  //1011 1101  S7被按下
                                   key=6;
                                   break;
                          case 0x7d:                  //0111 1101  S8被按下
                                   key=7;
                                   break;
                        }
                        while(temp!=0xf0)
                        {
                            temp=P3;
                                temp=temp&0xf0;
                        }
                        display(key);
                }
         }
                        ///////////////第三行掃描///////////////////
        P3=0xfb;//1111 1011 讓P3.2口輸出低
        temp=P3;
        temp=temp&0xf0;//1111 0000        位與操作 屏蔽后四位
        if(temp!=0xf0)
        {
            delay(10);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                    temp=P3;
                        switch(temp)
                        {
                          case 0xeb:           //1110 1011 S9被按下
                               key=8;
                                   break;
                          case 0xdb:                  //1101 1011  S10被按下
                                   key=9;
                                   break;
                          case 0xbb:                  //1011 1011  S11被按下
                                   key=10;
                                   break;
                          case 0x7b:                  //0111 1011  S12被按下
                                   key=11;
                                   break;
                        }
                        while(temp!=0xf0)
                        {
                            temp=P3;
                                temp=temp&0xf0;
                        }
                        display(key);
                  }
                }

                        ///////////////第四行掃描///////////////////
        P3=0xf7;//1111 0111 讓P3.0口輸出低
        temp=P3;
        temp=temp&0xf0;//1111 0000        位與操作 屏蔽后四位
        if(temp!=0xf0)
        {
            delay(10);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                    temp=P3;
                        switch(temp)
                        {
                          case 0xe7:           //1110 0111 S13被按下
                               key=12;
                                   break;
                          case 0xd7:                  //1101 0111  S14被按下
                                   key=13;
                                   break;
                          case 0xb7:                  //1011 0111  S15被按下
                                   key=14;
                                   break;
                          case 0x77:                  //0111 0111  S16被按下
                                   key=15;
                                   break;
                        }
                        while(temp!=0xf0)
                        {
                            temp=P3;
                                temp=temp&0xf0;
                        }
                        display(key);

                 }
         }

}

void main()
{
    bstv51_init(); //學(xué)習(xí)板初始化
        P0=0;                 //位選 鎖存為8位同時顯示
        WE=1;
        WE=0;
        while(1)
        {
           keyscan4x4();
        }
}








/*********************************************************************
*
*                         bstv51.c
*
*********************************************************************
* 描    述: BST-V51開發(fā)板初始化
* 開發(fā)平臺: BST-V51開發(fā)板+KEIL C51
********************************************************************/

#include <reg52.h>/*包含51系統(tǒng)頭文件*/
#include "bstv51.h"/*包含BST-V51開發(fā)板頭文件*/

/*BST-V51主板初始化函數(shù)*/
void bstv51_init(void)
{
        /* 引腳方向、輸出初值定義 */
        FM=1;/*蜂鳴器*/
        EN=0;/*讓LCD1602數(shù)據(jù)口處于輸入狀態(tài),相當(dāng)于LCD1602使不能,讓其釋放數(shù)據(jù)總線*/
        CS=1;/*TF卡使不能*/
        RST=0;/*ds1302使不能*/
}

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频二区三区 | 国产精品久久影院 | 亚洲成人毛片 | 九九看片| 欧美日韩国产中文 | 欧美国产日韩一区二区三区 | 欧美一区二区在线观看 | 成人福利在线视频 | 久久国产精品亚洲 | 久久久久一区 | 久久久做 | 国产精品久久久久久婷婷天堂 | 亚洲精品国产第一综合99久久 | 成人三级在线观看 | 成人av在线播放 | 欧美综合一区二区三区 | 国产成人精品一区二区三区网站观看 | 亚洲欧美在线一区 | 丝袜天堂 | 中文字幕日韩一区 | 国产精品99精品久久免费 | 黄色片免费在线观看 | 欧美日韩三级 | 国产福利91精品 | 国产91久久久久 | 狠狠干美女| 亚洲国产欧美日韩 | 精品久久久网站 | 色资源站 | 黄色毛片免费视频 | 国产精品自拍啪啪 | 国产男女猛烈无遮掩视频免费网站 | 青青草精品 | 久久精品免费观看 | 中文视频在线 | 夜夜爽99久久国产综合精品女不卡 | 一区二区三区中文字幕 | 欧美久久久 | 日韩电影在线一区 | 久久久亚洲一区 | 亚洲在线一区 |