找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3565|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

按鍵控制數(shù)碼管加減演示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:165487 發(fā)表于 2018-6-4 10:01 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
   #include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//段碼
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//待顯示的3位緩沖
uchar Num_Buffer[]={0,0,0};
//按鍵代碼,按鍵計數(shù)
uchar Key_Code,Key_Counts=0;
//延時
void DelayMS(uint x)
{
        uchar i;
        while(x--) for(i=0;i<120;i++);
}       
//顯示函數(shù)
void Show_Counts_ON_DSY()
{
        uchar i,j=0x01;
        Num_Buffer[2]=Key_Counts/100;
        Num_Buffer[1]=Key_Counts/10%10;
        Num_Buffer[0]=Key_Counts%10;
        for(i=0;i<3;i++)
        {
                j=_cror_(j,1);
                P0=0xff;
                P0=DSY_CODE[Num_Buffer[i]];
                P2=j;
                DelayMS(1);
        }
}
//主程序
void main()
{
        uchar i;
        P0=0xff;
        P1=0xff;
        P2=0x00;
        Key_Code=0xff;
        while(1)
        {
                Show_Counts_ON_DSY();
                P1=0xff;
                Key_Code=P1;
                //有鍵按下時,數(shù)碼管刷新顯示30次,該行代碼同時起到延時作用
                if(Key_Code!=0xff)
                for(i=0;i<30;i++) Show_Counts_ON_DSY();
                switch(Key_Code)
                {
                        case 0xfe:        if(Key_Counts<255) Key_Counts++;
                                                break;
                        case 0xfd:        if(Key_Counts>0) Key_Counts--;
                                                break;
                        case 0xfb:        Key_Counts=0;
                }
                Key_Code=0xff;
        }
}

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表