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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

at89c51單片機(jī)按鍵實(shí)現(xiàn)八位一體數(shù)碼管的遞增顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
at89c2單片機(jī)  一個(gè)按鍵實(shí)現(xiàn)八位一體數(shù)碼管的遞增顯示 。按第一次 第一位顯示一個(gè)數(shù),
按第二次,第一位數(shù)不消失,顯示第二位數(shù),
按第三次,第一位,第二位都不消失,顯示第三位數(shù),以此類推
請大神教我編程序。謝謝。我的電路圖已經(jīng)畫好了。

八段數(shù)碼管 - ISIS Professional (仿真中......)_2.jpg (191.58 KB, 下載次數(shù): 80)

八段數(shù)碼管 - ISIS Professional (仿真中......)_2.jpg

八段數(shù)碼管 - ISIS Professional (仿真中......)_3.jpg (115.33 KB, 下載次數(shù): 67)

八段數(shù)碼管 - ISIS Professional (仿真中......)_3.jpg

八段數(shù)碼管 - ISIS Professional (仿真中......).jpg (127.07 KB, 下載次數(shù): 74)

八段數(shù)碼管 - ISIS Professional (仿真中......).jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來自 2#
ID:21069 發(fā)表于 2018-12-7 16:04 | 只看該作者
按你的意思不用接74HC573,數(shù)碼管可直接接P2與P3口,代碼如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

//段碼表   注意:是共陽數(shù)碼管
uchar code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

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

//延時(shí)
void delay_mS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}

void main()
{
        uchar i,j;
        while(1)
        {       
                for(j=0;j<8;j++)
                {
                        P2=0x00;
                        P2=duan[j];            //發(fā)送段碼
                        P3=wei[j];             //發(fā)送位碼
                        delay_mS(100);         //將動(dòng)態(tài)時(shí)間延長就是你要的效果
                }
        }
}

評(píng)分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:222948 發(fā)表于 2018-12-7 16:04 | 只看該作者
有什么福利
回復(fù)

使用道具 舉報(bào)

地板
ID:441506 發(fā)表于 2018-12-8 18:28 | 只看該作者
jinsheng7533967 發(fā)表于 2018-12-7 16:04
按你的意思不用接74HC573,數(shù)碼管可直接接P2與P3口,代碼如下:
#include
#define uchar unsigned char

大哥 謝謝 你的程序 但是 你編的  沒有按鍵呀
回復(fù)

使用道具 舉報(bào)

5#
ID:441506 發(fā)表于 2018-12-8 18:40 | 只看該作者
jinsheng7533967 發(fā)表于 2018-12-7 16:04
按你的意思不用接74HC573,數(shù)碼管可直接接P2與P3口,代碼如下:
#include
#define uchar unsigned char

大哥 我需要 一個(gè)按鍵控制呀
回復(fù)

使用道具 舉報(bào)

6#
ID:441506 發(fā)表于 2018-12-9 08:22 | 只看該作者
yingchun 發(fā)表于 2018-12-8 20:48
有用的帖子,收藏了以后學(xué)習(xí)

兄弟 你會(huì)編寫程序嗎
回復(fù)

使用道具 舉報(bào)

7#
ID:213173 發(fā)表于 2018-12-9 12:46 | 只看該作者
本帖最后由 wulin 于 2018-12-9 16:23 編輯

給你寫一個(gè)適合做密碼鎖的顯示電路。完全符合你想要的功能。



#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

sbit dula=P3^0;  //HL-1
sbit wela=P3^1; //HL-1
sbit key =P3^2;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
                    0x6d,0x7d,0x07,0x7f,0x6f};
uchar data dis_buf[9];
uint num=0;

void keyscan()//按鍵程序        
{
        static uchar count;        //計(jì)數(shù)消抖變量                        
        static bit key_sign=0;        //按鍵自鎖標(biāo)志
        uchar a;
        if(key==0)                                //檢測輸入如果為0
        {
                if((++count>=100)&&(key_sign==0))
                {                        
                        key_sign=1;                //按鍵自鎖標(biāo)志置1,防止重復(fù)響應(yīng)
                        num++;
                        if(num>=9)
                                num=0;
                        dis_buf[0]=num;
                        for(a=8;a>0;a--)
                                dis_buf[a]=dis_buf[a-1];
                }
        }
        else
        {
                count=0;                                //計(jì)數(shù)變量清0
                key_sign=0;                                //按鍵自鎖標(biāo)志清0
        }
}
void display()//顯示程序
{
        static uchar i=0,j;        //計(jì)數(shù)變量
        if(++j>100)//調(diào)整數(shù)碼管刷新頻率
        {
                j=0;
                P2=0x00;
                dula=1;
                dula=0;
                switch(i)
                {
                        case 0:
                                P2=0xfe;
                                wela=1;
                                wela=0;
                                if(num>7)
                                P2=table[dis_buf[8]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i++;
                        break;
                        case 1:                                
                                P2=0xfd;
                                wela=1;
                                wela=0;
                                if(num>6)
                                P2=table[dis_buf[7]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i++;
                        break;
                        case 2:                                
                                P2=0xfb;
                                wela=1;
                                wela=0;
                                if(num>5)
                                P2=table[dis_buf[6]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i++;
                        break;
                        case 3:                                       
                                P2=0xf7;
                                wela=1;
                                wela=0;
                                if(num>4)
                                P2=table[dis_buf[5]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i++;
                        break;
                        case 4:        
                                P2=0xef;
                                wela=1;
                                wela=0;
                                if(num>3)
                                P2=table[dis_buf[4]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i++;
                        break;
                        case 5:        
                                P2=0xdf;
                                wela=1;
                                wela=0;
                                if(num>2)
                                P2=table[dis_buf[3]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i++;
                        break;
                        case 6:        
                           P2=0xbf;
                           wela=1;
                           wela=0;
                                if(num>1)
                                P2=table[dis_buf[2]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i++;
                        break;
                        case 7:        
                                P2=0x7f;
                                wela=1;
                                wela=0;
                                if(num>0)
                                P2=table[dis_buf[1]];
                                else P2=0x00;
                                dula=1;
                                dula=0;
                                i=0;
                        break;
                }
        }
}
void main()
{
        while(1)
        {
                keyscan();
                display();
        }
}



回復(fù)

使用道具 舉報(bào)

8#
ID:442704 發(fā)表于 2018-12-9 16:26 | 只看該作者
這個(gè)建議你慢慢學(xué),自己編程才有樂趣,沒有基礎(chǔ)的話,別人的不容易看懂。
回復(fù)

使用道具 舉報(bào)

9#
ID:21069 發(fā)表于 2018-12-9 16:28 | 只看該作者
1628990936 發(fā)表于 2018-12-8 18:28
大哥 謝謝 你的程序 但是 你編的  沒有按鍵呀

給你一個(gè)獨(dú)立按鍵代碼,你可以自己加進(jìn)去試試,另外你空間里提到的用74HC573按按鍵保存密碼的事不現(xiàn)實(shí),74HC573是鎖存器(當(dāng)使能位低電平時(shí),鎖存你剛從P/I口送去的數(shù)據(jù),P/I口再來的數(shù)據(jù)據(jù)之門外;當(dāng)使能位高電平時(shí),輸出隨P/I口變化),不是記憶芯片,不可能保存你說的所謂密碼,只能用動(dòng)態(tài)掃描掃出你要的數(shù)字。另外網(wǎng)上有很多獨(dú)立按鍵的與數(shù)碼管的視頻教程,多看幾次,多敲幾次就明白了。

void PORT_key(void)
{
        if(key == 0)            //將你的按鍵位定意為key
        {
                delay(10);          //消抖
                if(key == 0)
                {
                        while(key == 0);//松手
                        i++;  //不知你的變量是不是i
                }
        }
}

再將此代碼放入while(1)中.去掉for的8次循環(huán),i 放入數(shù)組中
回復(fù)

使用道具 舉報(bào)

10#
ID:441506 發(fā)表于 2018-12-9 18:36 | 只看該作者
wulin 發(fā)表于 2018-12-9 12:46
給你寫一個(gè)適合做密碼鎖的顯示電路。完全符合你想要的功能。

謝謝 大佬 非常感謝 留個(gè)微信吧 我給你發(fā)個(gè)紅包
回復(fù)

使用道具 舉報(bào)

11#
ID:441506 發(fā)表于 2018-12-9 18:37 | 只看該作者
jinsheng7533967 發(fā)表于 2018-12-9 16:28
給你一個(gè)獨(dú)立按鍵代碼,你可以自己加進(jìn)去試試,另外你空間里提到的用74HC573按按鍵保存密碼的事不現(xiàn)實(shí),7 ...

謝謝 大哥,留個(gè)vx  我給你發(fā)個(gè)紅包
回復(fù)

使用道具 舉報(bào)

12#
ID:441506 發(fā)表于 2018-12-14 11:24 | 只看該作者
wulin 發(fā)表于 2018-12-9 12:46
給你寫一個(gè)適合做密碼鎖的顯示電路。完全符合你想要的功能。

大哥,如果我想把按鍵顯示結(jié)束后,再按一下,然后顯示helly,同時(shí)顯示,該怎么修改這個(gè)程序呢,請大哥務(wù)必幫我,事后必有重謝。
回復(fù)

使用道具 舉報(bào)

13#
ID:213173 發(fā)表于 2018-12-14 22:36 | 只看該作者
1628990936 發(fā)表于 2018-12-14 11:24
大哥,如果我想把按鍵顯示結(jié)束后,再按一下,然后顯示helly,同時(shí)顯示,該怎么修改這個(gè)程序呢,請大哥務(wù) ...

你是想用數(shù)碼管顯示字符“helly”嗎?不太明白你的意思。
回復(fù)

使用道具 舉報(bào)

14#
ID:441506 發(fā)表于 2018-12-16 18:06 | 只看該作者
wulin 發(fā)表于 2018-12-14 22:36
你是想用數(shù)碼管顯示字符“helly”嗎?不太明白你的意思。

唔,就是 這個(gè) 電路圖, 只有一個(gè)按鍵,按一下 顯示1,按第二下,顯示1,2.......。按第八下,顯示12345678,按第九下,八位數(shù)碼管只顯示helly,就可以了,整個(gè)過程只有一個(gè)按鍵這個(gè)八位的數(shù)碼管。
回復(fù)

使用道具 舉報(bào)

15#
ID:213173 發(fā)表于 2018-12-16 20:24 | 只看該作者
1628990936 發(fā)表于 2018-12-16 18:06
唔,就是 這個(gè) 電路圖, 只有一個(gè)按鍵,按一下 顯示1,按第二下,顯示1,2.......。按第八下,顯示1234567 ...



#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

sbit dula=P3^0;  //HL-1
sbit wela=P3^1; //HL-1
sbit key =P3^2;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
                    0x6d,0x7d,0x07,0x7f,0x6f};
uchar code table1[]={0x00,0x76,0x79,0x38,0x38,0x6e,0x00,0x00};//HELLY
uchar data dis_buf[8];
uint num=0;

void keyscan()//按鍵程序        
{
        static uchar count;        //計(jì)數(shù)消抖變量                        
        static bit key_sign=0;        //按鍵自鎖標(biāo)志
        uchar a;
        if(key==0)                                //檢測輸入如果為0
        {
                if((++count>=100)&&(key_sign==0))
                {                        
                        key_sign=1;                //按鍵自鎖標(biāo)志置1,防止重復(fù)響應(yīng)
                        num++;
                        dis_buf[0]=num;
                        for(a=8;a>0;a--)
                                dis_buf[a]=dis_buf[a-1];
                        if(num>9)
                                num=0;
                }
        }
        else
        {
                count=0;                                //計(jì)數(shù)變量清0
                key_sign=0;                                //按鍵自鎖標(biāo)志清0
        }
}
void display()//顯示程序
{
        static uchar i=0,j;        //計(jì)數(shù)變量
        if(++j>100)//調(diào)整數(shù)碼管刷新頻率
        {
                j=0;
                P2=0x00;
                dula=1;
                dula=0;
                switch(i)
                {
                        case 0:
                        P2=0xfe;
                        wela=1;
                        wela=0;
                        if(num>7)
                        {
                                if(num==9)
                                P2=table1[0];
                                else
                                P2=table[dis_buf[8]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i++;
                        break;

                        case 1:                                
                        P2=0xfd;
                        wela=1;
                        wela=0;
                        if(num>6)
                        {
                                if(num==9)
                                P2=table1[1];
                                else
                                P2=table[dis_buf[7]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i++;
                        break;

                        case 2:                                
                        P2=0xfb;
                        wela=1;
                        wela=0;
                        if(num>5)
                        {
                                if(num==9)
                                P2=table1[2];
                                else
                                P2=table[dis_buf[6]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i++;
                        break;

                        case 3:                                       
                        P2=0xf7;
                        wela=1;
                        wela=0;
                        if(num>4)
                        {
                                if(num==9)
                                P2=table1[3];
                                else
                                P2=table[dis_buf[5]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i++;
                        break;

                        case 4:        
                        P2=0xef;
                        wela=1;
                        wela=0;
                        if(num>3)
                        {
                                if(num==9)
                                P2=table1[4];
                                else
                                P2=table[dis_buf[4]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i++;
                        break;

                        case 5:        
                        P2=0xdf;
                        wela=1;
                        wela=0;
                        if(num>2)
                        {
                                if(num==9)
                                P2=table1[5];
                                else
                                P2=table[dis_buf[3]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i++;
                        break;

                        case 6:        
                        P2=0xbf;
                        wela=1;
                        wela=0;
                        if(num>1)
                        {
                                if(num==9)
                                P2=table1[6];
                                else
                                P2=table[dis_buf[2]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i++;
                        break;

                        case 7:        
                        P2=0x7f;
                        wela=1;
                        wela=0;
                        if(num>0)
                        {
                                if(num==9)
                                P2=table1[7];
                                else
                                P2=table[dis_buf[1]];
                        }
                        else P2=0x00;
                        dula=1;
                        dula=0;
                        i=0;
                        break;
                }
        }
}
void main()
{
        while(1)
        {
                keyscan();
                display();
        }
}

回復(fù)

使用道具 舉報(bào)

16#
ID:441506 發(fā)表于 2018-12-16 22:22 | 只看該作者
wulin 發(fā)表于 2018-12-16 20:24
#include
#define uchar unsigned char
#define uint  unsigned int

非常完美,謝謝 大哥,想和你交個(gè)朋友,做我?guī)煾蛋桑俸?/td>
回復(fù)

使用道具 舉報(bào)

17#
ID:516586 發(fā)表于 2019-8-5 16:38 | 只看該作者
jinsheng7533967 發(fā)表于 2018-12-7 16:04
按你的意思不用接74HC573,數(shù)碼管可直接接P2與P3口,代碼如下:
#include
#define uchar unsigned char

不需要加段鎖存和位鎖存么
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 羞羞视频在线免费 | 日本aaa视频| 亚洲福利在线观看 | 国产一级视频在线播放 | 久久av在线播放 | 欧美一级欧美一级在线播放 | 欧美精品一区二区三区在线 | 欧美日韩国产免费 | 久久里面有精品 | 91色站 | 国产一区二区自拍 | 一区二区三区中文字幕 | 91啪影院| 亚洲91精品| 另类专区亚洲 | 91久久国产综合久久 | 一区二区国产在线观看 | 国产欧美精品一区二区 | 亚洲综合大片69999 | 红色av社区 | 毛片网站在线观看 | 男女午夜激情视频 | 亚洲精品一区二区三区蜜桃久 | xxxxxx国产 | 不卡视频一区二区三区 | 免费网站国产 | 日韩色在线 | 精品日韩一区二区三区 | 久久新视频| 在线一区视频 | 久久国产精品一区 | 久久国产免费看 | 成人午夜av| 成人国产精品久久久 | 欧美aaaa视频| 久草欧美| 久久久久久久一区二区三区 | 亚洲视频中文字幕 | 91精品在线播放 | 日本精品一区二区 | 久久久久国产精品免费免费搜索 |