1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 大一新人 怎么樣編寫程序在51單片機上的數碼管顯示不同的數字呢? [打印本頁]

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

作者: sxlwh    時間: 2015-7-25 22:04
要顯示啥給對應的數碼管顯示段電平信號就行了么


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

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

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

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

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

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

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

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



        }
}





















作者: fasefwegf    時間: 2018-1-10 20:20
CHASE 發表于 2015-7-28 11:13
顯示不同的數字是動態數碼管的顯示,動態顯示是多個數碼管,交替顯示,利用人的視覺暫停作用使人看到多個數 ...

有沒有按鍵顯示的
作者: SIRRIAM    時間: 2018-1-11 12:16
動態掃描
作者: wxzsd    時間: 2018-1-11 14:47
先讓你的第一個數碼管顯示要顯示的第一個數字,其他數碼管關閉; 然后關閉第一個數碼管顯示; 然后讓你的第二個數碼管顯示要顯示的第二個數字,其他數碼管關閉; 然后關閉第二個數碼管; 然后讓第三個數碼管顯示要顯示的第三個數字,其他數碼管關閉; 然后關閉第三個數碼管; …… …… 依次類推,到最后一個后返回到第一個重新顯示。 當顯示的速度足夠快的時候,你就看到所有的數碼管都亮起來,顯示了不同的數字。 這個叫掃描顯示。 當你從頭掃到尾的頻率在25Hz之上的時候,看到的就都亮了,當然如果之后25Hz會感覺到抖動。 至于能跑到多少Hz要看你單片機的速度了。 我們電腦顯示屏一般在60Hz。
作者: 於曉凱    時間: 2018-1-11 15:29
網上很多教程,看一看 就好了
作者: 漫步經心    時間: 2018-1-11 15:50
建議先自己仔細學習和操作后再來問別人。




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