找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

大一新人 怎么樣編寫程序在51單片機(jī)上的數(shù)碼管顯示不同的數(shù)字呢?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:86845 發(fā)表于 2015-7-25 21:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
怎么樣編寫程序在51單片機(jī)上的數(shù)碼管顯示不同的數(shù)字呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:84598 發(fā)表于 2015-7-25 22:04 | 只看該作者
要顯示啥給對應(yīng)的數(shù)碼管顯示段電平信號就行了么

回復(fù)

使用道具 舉報(bào)

板凳
ID:74441 發(fā)表于 2015-7-25 22:52 | 只看該作者
首先得看你是用什么樣的方法來點(diǎn)量數(shù)碼管了,但是說到底都是操作IO口的電平,first共陽極數(shù)碼管還是共陰極數(shù)碼管,是單個(gè)數(shù)碼管,還是多個(gè)在一起,其實(shí)都一樣,接下來就是看你怎么樣操作數(shù)碼管了,我一般用兩種方法,第一種是74ls573,但是比較浪費(fèi)IO口,但是適合初學(xué)者,還有就是74Ls595移位寄存器,省端口,最好有數(shù)電的基礎(chǔ)吧!
回復(fù)

使用道具 舉報(bào)

地板
ID:86861 發(fā)表于 2015-7-26 00:37 | 只看該作者
查一下說明書
回復(fù)

使用道具 舉報(bào)

5#
ID:86873 發(fā)表于 2015-7-26 10:35 | 只看該作者
你要先了解數(shù)碼管點(diǎn)亮原理,分共陰和共陽數(shù)碼管,由于51單片機(jī)輸出電流有限輸出管腳有限,所以單片機(jī)控制數(shù)碼管中間要有個(gè)橋梁,可理解成驅(qū)動,這個(gè)橋梁也有多種形式,三極管、鎖存器、移位寄存器、等等,控制方法和接線各有不同,還有數(shù)碼管根據(jù)不同接法要考慮到限流,否則會燒掉。 數(shù)碼管顯示不同的數(shù)碼 是和他的段選有關(guān),控制不同的引腳 顯示不同的段,
回復(fù)

使用道具 舉報(bào)

6#
ID:86863 發(fā)表于 2015-7-26 12:41 | 只看該作者
動態(tài)掃描可以
回復(fù)

使用道具 舉報(bào)

7#
ID:85124 發(fā)表于 2015-7-26 14:29 | 只看該作者
利用人的視覺暫留效應(yīng),每次使一個(gè)數(shù)碼管亮一下,然后再使第二個(gè)數(shù)碼管亮一下時(shí)間如果很短的話,就相當(dāng)于同時(shí)看到兩個(gè)數(shù)碼管在顯示數(shù)字了,(位選用來選擇第幾個(gè)數(shù)碼管,斷選選擇數(shù)碼管當(dāng)中的某一段亮)。同時(shí)要注意消影現(xiàn)象。消影就是一個(gè)延時(shí),避免你在剛顯示完一個(gè)斷選后,立即選通下一個(gè)位選,這樣當(dāng)你再次選通第二個(gè)斷選時(shí)會出現(xiàn)剛剛的數(shù)字。
回復(fù)

使用道具 舉報(bào)

8#
ID:86891 發(fā)表于 2015-7-26 15:06 | 只看該作者
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
        wela=1;//11101010
        P0=0xea;
        wela=0;
        while(1)
        {
                for(num=0;num<16;num++)
                        {
                                dula=1;
                                P0=table[num];
                                dula=0;
                                delay(1000);       
                        }
        }
}

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);       
}
回復(fù)

使用道具 舉報(bào)

9#
ID:70839 發(fā)表于 2015-7-26 16:36 | 只看該作者
共陰極還是共陽極,一般用共陽極接法吧,如果一位數(shù)碼管就簡單的多,送上對應(yīng)的電平信號就可以,如果是多位數(shù)碼管,就得采用動態(tài)掃描,為了穩(wěn)定無閃爍,一個(gè)掃描周期一般控制在16ms,比如4位數(shù)碼管,一位顯示的時(shí)間就控制在4ms.
回復(fù)

使用道具 舉報(bào)

10#
ID:86938 發(fā)表于 2015-7-27 11:30 | 只看該作者
液晶寫數(shù)據(jù)一遍就夠了。把主程序里的display1();放到while(1)前面。
回復(fù)

使用道具 舉報(bào)

11#
ID:86972 發(fā)表于 2015-7-27 14:51 | 只看該作者
把不同數(shù)字編碼寫在一個(gè)數(shù)組里,要顯示幾就調(diào)用第幾個(gè)就行了
回復(fù)

使用道具 舉報(bào)

12#
ID:86972 發(fā)表于 2015-7-27 14:53 | 只看該作者
看下教程就懂了
回復(fù)

使用道具 舉報(bào)

13#
ID:86979 發(fā)表于 2015-7-27 15:24 | 只看該作者
數(shù)碼管就是7段LED嗎......
回復(fù)

使用道具 舉報(bào)

14#
ID:86976 發(fā)表于 2015-7-27 20:23 | 只看該作者
有個(gè)數(shù)碼管計(jì)算器的軟件,上面可以計(jì)算顯示字符相關(guān)的數(shù)碼管電平,然后要用掃描的方法輸出,節(jié)約IO口
回復(fù)

使用道具 舉報(bào)

15#
ID:87047 發(fā)表于 2015-7-28 11:13 | 只看該作者
顯示不同的數(shù)字是動態(tài)數(shù)碼管的顯示,動態(tài)顯示是多個(gè)數(shù)碼管,交替顯示,利用人的視覺暫停作用使人看到多個(gè)數(shù)碼管同時(shí)顯示的效果。就像我們看的電影是有一幀一幀的畫面顯示的,當(dāng)速度夠快的時(shí)候我們看到它就是動態(tài)的。當(dāng)我們顯示數(shù)碼管的速度夠快的時(shí)候,也就可以看到它們是同時(shí)顯示了。動態(tài)掃描顯示是指輪流向各位數(shù)碼管送出段選(字形碼)和位選,由于人眼的視覺殘留作用,使人的感覺好像各位數(shù)碼管同時(shí)都在顯示。
下面的例程可以參考一下:
/*********************************************************************************
*實(shí)驗(yàn)名   :數(shù)碼管動態(tài)顯示
*實(shí)驗(yàn)效果        :8位數(shù)碼管顯示數(shù)字12345678
*注意   : 每位數(shù)碼管顯示之間延遲時(shí)間小于3ms可看見8位數(shù)碼管同時(shí)點(diǎn)亮
*
*********************************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit DU=P2^6;
sbit WE=P2^7;

uchar code sz[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 main()
{
    while(1)
        {
            P0=sz[8];        //數(shù)字8
                DU=1;
                DU=0;
                P0=0x7f;
                WE=1;
                WE=0;
                delay(2);                //延遲小于3ms人眼則看到8位數(shù)碼管同時(shí)點(diǎn)亮

                P0=sz[7];        //數(shù)字7
                DU=1;
                DU=0;
                P0=0xbf;
                WE=1;
                WE=0;
                delay(2);

                P0=sz[6];        //數(shù)字6
                DU=1;
                DU=0;
                P0=0xdf;
                WE=1;
                WE=0;
                delay(2);

                P0=sz[5];        //數(shù)字5
                DU=1;
                DU=0;
                P0=0xef;
                WE=1;
                WE=0;
                delay(2);

                P0=sz[4];        //數(shù)字4
                DU=1;
                DU=0;
                P0=0xf7;
                WE=1;
                WE=0;
                delay(2);

                P0=sz[3];        //數(shù)字3
                DU=1;
                DU=0;
                P0=0xfb;
                WE=1;
                WE=0;
                delay(2);

                P0=sz[2];        //數(shù)字2
                DU=1;
                DU=0;
                P0=0xfd;
                WE=1;
                WE=0;
                delay(2);

                P0=sz[1];        //數(shù)字1
                DU=1;
                DU=0;
                P0=0xfe;
                WE=1;
                WE=0;
                delay(2);



        }
}




















回復(fù)

使用道具 舉報(bào)

16#
ID:274500 發(fā)表于 2018-1-10 20:20 | 只看該作者
CHASE 發(fā)表于 2015-7-28 11:13
顯示不同的數(shù)字是動態(tài)數(shù)碼管的顯示,動態(tài)顯示是多個(gè)數(shù)碼管,交替顯示,利用人的視覺暫停作用使人看到多個(gè)數(shù) ...

有沒有按鍵顯示的
回復(fù)

使用道具 舉報(bào)

17#
ID:274741 發(fā)表于 2018-1-11 12:16 | 只看該作者
動態(tài)掃描
回復(fù)

使用道具 舉報(bào)

18#
ID:274635 發(fā)表于 2018-1-11 14:47 | 只看該作者
先讓你的第一個(gè)數(shù)碼管顯示要顯示的第一個(gè)數(shù)字,其他數(shù)碼管關(guān)閉; 然后關(guān)閉第一個(gè)數(shù)碼管顯示; 然后讓你的第二個(gè)數(shù)碼管顯示要顯示的第二個(gè)數(shù)字,其他數(shù)碼管關(guān)閉; 然后關(guān)閉第二個(gè)數(shù)碼管; 然后讓第三個(gè)數(shù)碼管顯示要顯示的第三個(gè)數(shù)字,其他數(shù)碼管關(guān)閉; 然后關(guān)閉第三個(gè)數(shù)碼管; …… …… 依次類推,到最后一個(gè)后返回到第一個(gè)重新顯示。 當(dāng)顯示的速度足夠快的時(shí)候,你就看到所有的數(shù)碼管都亮起來,顯示了不同的數(shù)字。 這個(gè)叫掃描顯示。 當(dāng)你從頭掃到尾的頻率在25Hz之上的時(shí)候,看到的就都亮了,當(dāng)然如果之后25Hz會感覺到抖動。 至于能跑到多少Hz要看你單片機(jī)的速度了。 我們電腦顯示屏一般在60Hz。
回復(fù)

使用道具 舉報(bào)

19#
ID:274833 發(fā)表于 2018-1-11 15:29 | 只看該作者
網(wǎng)上很多教程,看一看 就好了
回復(fù)

使用道具 舉報(bào)

20#
ID:193818 發(fā)表于 2018-1-11 15:50 | 只看該作者
建議先自己仔細(xì)學(xué)習(xí)和操作后再來問別人。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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