標(biāo)題: 大一新人 怎么樣編寫程序在51單片機(jī)上的數(shù)碼管顯示不同的數(shù)字呢? [打印本頁(yè)]

作者: wrecking    時(shí)間: 2015-7-25 21:36
標(biāo)題: 大一新人 怎么樣編寫程序在51單片機(jī)上的數(shù)碼管顯示不同的數(shù)字呢?
怎么樣編寫程序在51單片機(jī)上的數(shù)碼管顯示不同的數(shù)字呢?

作者: sxlwh    時(shí)間: 2015-7-25 22:04
要顯示啥給對(duì)應(yīng)的數(shù)碼管顯示段電平信號(hào)就行了么


作者: 時(shí)光溢彩    時(shí)間: 2015-7-25 22:52
首先得看你是用什么樣的方法來(lái)點(diǎn)量數(shù)碼管了,但是說(shuō)到底都是操作IO口的電平,first共陽(yáng)極數(shù)碼管還是共陰極數(shù)碼管,是單個(gè)數(shù)碼管,還是多個(gè)在一起,其實(shí)都一樣,接下來(lái)就是看你怎么樣操作數(shù)碼管了,我一般用兩種方法,第一種是74ls573,但是比較浪費(fèi)IO口,但是適合初學(xué)者,還有就是74Ls595移位寄存器,省端口,最好有數(shù)電的基礎(chǔ)吧!
作者: 2534321412    時(shí)間: 2015-7-26 00:37
查一下說(shuō)明書
作者: SUNCE    時(shí)間: 2015-7-26 10:35
你要先了解數(shù)碼管點(diǎn)亮原理,分共陰和共陽(yáng)數(shù)碼管,由于51單片機(jī)輸出電流有限輸出管腳有限,所以單片機(jī)控制數(shù)碼管中間要有個(gè)橋梁,可理解成驅(qū)動(dòng),這個(gè)橋梁也有多種形式,三極管、鎖存器、移位寄存器、等等,控制方法和接線各有不同,還有數(shù)碼管根據(jù)不同接法要考慮到限流,否則會(huì)燒掉。 數(shù)碼管顯示不同的數(shù)碼 是和他的段選有關(guān),控制不同的引腳 顯示不同的段,
作者: AZONI    時(shí)間: 2015-7-26 12:41
動(dòng)態(tài)掃描可以
作者: 可愛(ài)的夢(mèng)揚(yáng)    時(shí)間: 2015-7-26 14:29
利用人的視覺(jué)暫留效應(yīng),每次使一個(gè)數(shù)碼管亮一下,然后再使第二個(gè)數(shù)碼管亮一下時(shí)間如果很短的話,就相當(dāng)于同時(shí)看到兩個(gè)數(shù)碼管在顯示數(shù)字了,(位選用來(lái)選擇第幾個(gè)數(shù)碼管,斷選選擇數(shù)碼管當(dāng)中的某一段亮)。同時(shí)要注意消影現(xiàn)象。消影就是一個(gè)延時(shí),避免你在剛顯示完一個(gè)斷選后,立即選通下一個(gè)位選,這樣當(dāng)你再次選通第二個(gè)斷選時(shí)會(huì)出現(xiàn)剛剛的數(shù)字。
作者: 1072247069    時(shí)間: 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--);       
}
作者: beautiful-life    時(shí)間: 2015-7-26 16:36
共陰極還是共陽(yáng)極,一般用共陽(yáng)極接法吧,如果一位數(shù)碼管就簡(jiǎn)單的多,送上對(duì)應(yīng)的電平信號(hào)就可以,如果是多位數(shù)碼管,就得采用動(dòng)態(tài)掃描,為了穩(wěn)定無(wú)閃爍,一個(gè)掃描周期一般控制在16ms,比如4位數(shù)碼管,一位顯示的時(shí)間就控制在4ms.
作者: h1314258    時(shí)間: 2015-7-27 11:30
液晶寫數(shù)據(jù)一遍就夠了。把主程序里的display1();放到while(1)前面。
作者: Canva    時(shí)間: 2015-7-27 14:51
把不同數(shù)字編碼寫在一個(gè)數(shù)組里,要顯示幾就調(diào)用第幾個(gè)就行了
作者: Canva    時(shí)間: 2015-7-27 14:53
看下教程就懂了
作者: abcbig    時(shí)間: 2015-7-27 15:24
數(shù)碼管就是7段LED嗎......
作者: cryuncle    時(shí)間: 2015-7-27 20:23
有個(gè)數(shù)碼管計(jì)算器的軟件,上面可以計(jì)算顯示字符相關(guān)的數(shù)碼管電平,然后要用掃描的方法輸出,節(jié)約IO口
作者: CHASE    時(shí)間: 2015-7-28 11:13
顯示不同的數(shù)字是動(dòng)態(tài)數(shù)碼管的顯示,動(dòng)態(tài)顯示是多個(gè)數(shù)碼管,交替顯示,利用人的視覺(jué)暫停作用使人看到多個(gè)數(shù)碼管同時(shí)顯示的效果。就像我們看的電影是有一幀一幀的畫面顯示的,當(dāng)速度夠快的時(shí)候我們看到它就是動(dòng)態(tài)的。當(dāng)我們顯示數(shù)碼管的速度夠快的時(shí)候,也就可以看到它們是同時(shí)顯示了。動(dòng)態(tài)掃描顯示是指輪流向各位數(shù)碼管送出段選(字形碼)和位選,由于人眼的視覺(jué)殘留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。
下面的例程可以參考一下:
/*********************************************************************************
*實(shí)驗(yàn)名   :數(shù)碼管動(dòng)態(tài)顯示
*實(shí)驗(yàn)效果        :8位數(shù)碼管顯示數(shù)字12345678
*注意   : 每位數(shù)碼管顯示之間延遲時(shí)間小于3ms可看見(jiàn)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);



        }
}





















作者: fasefwegf    時(shí)間: 2018-1-10 20:20
CHASE 發(fā)表于 2015-7-28 11:13
顯示不同的數(shù)字是動(dòng)態(tài)數(shù)碼管的顯示,動(dòng)態(tài)顯示是多個(gè)數(shù)碼管,交替顯示,利用人的視覺(jué)暫停作用使人看到多個(gè)數(shù) ...

有沒(méi)有按鍵顯示的
作者: SIRRIAM    時(shí)間: 2018-1-11 12:16
動(dòng)態(tài)掃描
作者: wxzsd    時(shí)間: 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ù)碼管都亮起來(lái),顯示了不同的數(shù)字。 這個(gè)叫掃描顯示。 當(dāng)你從頭掃到尾的頻率在25Hz之上的時(shí)候,看到的就都亮了,當(dāng)然如果之后25Hz會(huì)感覺(jué)到抖動(dòng)。 至于能跑到多少Hz要看你單片機(jī)的速度了。 我們電腦顯示屏一般在60Hz。
作者: 於曉凱    時(shí)間: 2018-1-11 15:29
網(wǎng)上很多教程,看一看 就好了
作者: 漫步經(jīng)心    時(shí)間: 2018-1-11 15:50
建議先自己仔細(xì)學(xué)習(xí)和操作后再來(lái)問(wèn)別人。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1