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

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

QQ登錄

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

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

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

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

八段數(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)

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

//段碼表   注意:是共陽(yáng)數(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í)間延長(zhǎng)就是你要的效果
                }
        }
}

評(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

大哥 謝謝 你的程序 但是 你編的  沒(méi)有按鍵呀
回復(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ì)編寫(xiě)程序嗎
回復(fù)

使用道具 舉報(bào)

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

給你寫(xiě)一個(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)                                //檢測(cè)輸入如果為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é),自己編程才有樂(lè)趣,沒(méi)有基礎(chǔ)的話,別人的不容易看懂。
回復(fù)

使用道具 舉報(bào)

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

給你一個(gè)獨(dú)立按鍵代碼,你可以自己加進(jìn)去試試,另外你空間里提到的用74HC573按按鍵保存密碼的事不現(xiàn)實(shí),74HC573是鎖存器(當(dāng)使能位低電平時(shí),鎖存你剛從P/I口送去的數(shù)據(jù),P/I口再來(lái)的數(shù)據(jù)據(jù)之門(mén)外;當(dāng)使能位高電平時(shí),輸出隨P/I口變化),不是記憶芯片,不可能保存你說(shuō)的所謂密碼,只能用動(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
給你寫(xiě)一個(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
給你寫(xiě)一個(gè)適合做密碼鎖的顯示電路。完全符合你想要的功能。

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

使用道具 舉報(bào)

13#
ID:213173 發(fā)表于 2018-12-14 22:36 | 只看該作者
1628990936 發(fā)表于 2018-12-14 11:24
大哥,如果我想把按鍵顯示結(jié)束后,再按一下,然后顯示helly,同時(shí)顯示,該怎么修改這個(gè)程序呢,請(qǐng)大哥務(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è)過(guò)程只有一個(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)                                //檢測(cè)輸入如果為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ī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费的色网站 | 成人在线视频免费观看 | av入口 | 色成人免费网站 | 日韩毛片中文字幕 | 久久99国产精一区二区三区 | 成人乱人乱一区二区三区软件 | 久久毛片| 成人特级毛片 | 日本免费一区二区三区 | 国产丝袜一区二区三区免费视频 | 在线观看国产91 | 久久精品国产亚洲夜色av网站 | 亚洲黄色在线 | 欧美一区二区三区在线观看视频 | 欧美成人一区二区 | 亚洲97| 免费三级黄 | 福利社午夜影院 | 日韩视频免费看 | 日韩一区二区在线视频 | 亚洲精品第一 | 国产精品久久久久久久久久久久久 | 久久99精品国产麻豆婷婷 | 亚洲精品视频免费观看 | 亚洲成人一区 | 亚洲免费在线观看 | 91亚洲欧美| 精品麻豆剧传媒av国产九九九 | 久久国产精品无码网站 | 亚洲国产精品久久久久秋霞不卡 | 一区二区三区中文字幕 | 国产精品一区二区三区在线 | 视频国产一区 | 国产高潮好爽受不了了夜色 | 日韩久久网| 精品视频久久久久久 | 日韩精品成人在线 | 一级视频在线免费观看 | 无吗视频| 一级a性色生活片久久毛片波多野 |