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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

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

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

板凳
ID:192228 發(fā)表于 2017-4-22 05:40 | 只看該作者
/*********************************************************************************
*實(shí)驗(yàn)名   :矩陣鍵盤(pán)掃描 數(shù)碼管顯示
*實(shí)驗(yàn)效果        :按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位同時(shí)顯示
        WE=1;
        WE=0;
        while(1)
        {
           keyscan4x4();
        }
}








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

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

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

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 老司机免费视频 | www久久av| 男女深夜网站 | japanhdxxxx裸体| 亚洲aⅴ | 99久久久久久久久 | 亚洲天堂成人在线视频 | 91精品国产一区二区在线观看 | 国产专区免费 | 亚洲视频一区在线播放 | 黄网站涩免费蜜桃网站 | 成人在线观看免费视频 | 国产十日韩十欧美 | www.久久99| 在线看91 | 91私密视频 | 91精品国产高清一区二区三区 | 国产成人精品一区二区 | 天天躁日日躁狠狠躁2018小说 | 日韩成人免费在线视频 | 日韩欧美一区二区三区在线播放 | 欧美三级久久久 | 91视频在线| 国产黄色在线 | aa级毛片毛片免费观看久 | 日韩一级免费 | 欧美激情 亚洲 | 久久久一区二区 | 日本又色又爽又黄又高潮 | 国产精品区二区三区日本 | 亚洲一区二区三区四区五区午夜 | 天天色天天色 | 在线日韩| 久久伊 | 国产91网址 | 黄视频网站免费观看 | 在线 丝袜 欧美 日韩 制服 | 亚洲国产精品一区二区久久 | 日韩日韩日韩日韩日韩日韩日韩 | 久久高清国产视频 | 日韩精品一区在线观看 |