亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5111|回復: 2
收起左側

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

[復制鏈接]
ID:175071 發表于 2017-4-21 10:58 | 顯示全部樓層 |閱讀模式
30黑幣
要求能做兩位數的加減乘除

回復

使用道具 舉報

ID:82765 發表于 2017-4-21 22:34 | 顯示全部樓層
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

ID:192228 發表于 2017-4-22 05:40 | 顯示全部樓層
/*********************************************************************************
*實驗名   :矩陣鍵盤掃描 數碼管顯示
*實驗效果        :按S1-S16矩陣按鍵,數碼管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)           //數碼管顯示函數
{
    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(); //學習板初始化
        P0=0;                 //位選 鎖存為8位同時顯示
        WE=1;
        WE=0;
        while(1)
        {
           keyscan4x4();
        }
}








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

#include <reg52.h>/*包含51系統頭文件*/
#include "bstv51.h"/*包含BST-V51開發板頭文件*/

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

回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表