立即注冊 登錄
返回首頁

uid:191525的個(gè)人空間

日志

51單片機(jī)用K1-K3控制數(shù)碼管移位顯示設(shè)計(jì)

已有 530 次閱讀2017-4-20 10:27 | 單片機(jī), 數(shù)碼管

               51單片機(jī)用K1-K3控制數(shù)碼管移位顯示設(shè)計(jì)

功能:1.按下 K1 時(shí)加1 計(jì)數(shù)并增加顯示位,

      2.按下K2 時(shí)減1 計(jì)數(shù)并減少顯示位,

      3.按下K3 時(shí)清零。

 

#include<reg51.h>    //頭文件

#define uchar unsigned char   // uchar 定義為usigned char 為后面定義的時(shí)候方便

#define uint unsigned int

uchar code acode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};// 其陽極數(shù)碼管09的數(shù)字,即為段碼

uchar code index[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//位碼

 uchar buffer[]={0,10,10,10,10,10,10,10};//待顯示到各數(shù)碼管的數(shù)字緩沖(開始僅在0 位顯示0,其他黑屏)

 

void delay(uchar x)  //延時(shí)程序

{

    uchar i;

    while(x--) for(i=0;i<120;i++);

         }

void show()   //顯示程序

{

    uchar i;

         for(i=0;i<8;i++)

         {

            P0=0xff;//消除對(duì)P0口的影響

            P0=acode[buffer[i]];//P0口為連接數(shù)碼管的端口

            P2=index[i];// 位選

            delay(2);//延時(shí)

            }

 }

void main()//主程序

{

   uchar i,key1,keycount=0;//定義變量i,key1,keycount

   P0=0xff;

   P1=0xff;

   P2=0x00;

   while(1)

   {

       show();

            P1=0xff;

            key1=P1;/P1的狀態(tài)保存到key1

            switch (key1)//通過P1的狀態(tài)來決定作什么操作

            {

               case 0xfe: keycount++;//當(dāng)P1=0xfe時(shí)即P1.0=0,k1按下

                                if(keycount>8) keycount=8;

                                                buffer[keycount-1]=keycount;//按下 K1 時(shí)加1 計(jì)數(shù)并增加顯示位

                                                break;

                     case 0xfd: if(keycount>0) buffer[--keycount]=10;//當(dāng)P1=0xfd時(shí)即P1.1=0,k2按下

                                break; 按下 K2時(shí)減1 計(jì)數(shù)并減少顯示位

                     case 0xfb: buffer[0]=0;

                                for(i=0;i<8;i++) buffer[i]=10;//當(dāng)P1=0xfb時(shí)即P1.2=0,k2按下

                                                keycount=0;//按下K3 時(shí)清零。

                                                }

                   while(P1!=0xff) show();

//查詢是否有鍵按下,若沒有繼續(xù)判斷,若有則顯示出來相應(yīng)結(jié)果

         }

 }

 

Protues仿真圖:

 

 

 


路過

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

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

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

返回頂部