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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1568|回復: 5
打印 上一主題 下一主題
收起左側

求教89c52rc單片機六位一體數碼管怎么可以第一次顯示如123456

[復制鏈接]
跳轉到指定樓層
樓主
求教89c52rc 六位一體數碼管怎么可以第一次顯示如(123456),第二次顯示(338737),第三次顯示(decfga),六個數同時顯示(用delay(1)),三次顯示間隔一秒
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:866313 發表于 2024-3-28 18:07 | 只看該作者
其實你只需要了解一個動態掃描的顯示方式就可以實現了,我這里把我之前的學習筆記貼出來,我自己溫故知新的同時希望對你也有所幫助。
數碼管動態掃描顯示原理
六位八段數碼管的內部結構圖如下(下圖以共陽極為例)


由圖可知,六位八段數碼管當中,每個數碼位的段選信號全部連接到了一起,然后進行輸出(對于共陽極數碼管來說,段選引腳為低電平時有電流從數碼管的段選引腳流出);每個數碼位單獨引出一個位選信號用來控制數碼位的選擇,這種連接方式會使得被選中的數碼位顯示的內容都是相同的,因為這些被選中的數碼位的段選信號已經全部連接到了一起。如何使用這個六位八段數碼管來實現數碼管的動態顯示呢?我們需要使用一種方式:動態掃描
如何使用動態掃描的方式來實現數碼管的動態顯示呢?這里給大家舉一個例子:比如說,我們想要使用六位八段數碼管顯示數字 123456



如何使用六位八段數碼管來顯示數字 123456 呢?
首先我們選中第一個數碼位,讓這個數碼位顯示數字 1;然后它顯示的時間設為 T,這個 T 可以看作一個周期

當第一個數碼位完成一個 T 周期數字 1 的顯示之后,立刻選中第二個數碼位;注意,此時只選中了第二個數碼位讓它顯示數字 2,顯示的時間同樣是一個周期 T

當第二個數碼位完成了一個周期 T 數字 2 的顯示之后,立刻選中第三個數碼位;這兒注意,也是只選中了第三個數碼位讓它顯示數字 3,同樣顯示時間為 T

依次往下類推,那么此時就顯示 4

然后是 5

然后是 6

當第六個數碼位完成了一個周期 T 數字 6 的顯示之后,再重新選中第一個數碼位;這兒也是只選中了第一個數碼位,讓它繼續顯示數字 1,然后顯示的時間仍然是 T 周期,這樣依次往下循環。
通過上述動態顯示過程的描述,我們知道這樣一個循環是六個周期就是 6*T;如果說給這個 T 規定一個確切的時間會怎樣呢?首先給 T 規定一個確切的時間 1s;如果說 T 等于 1s,六位八段數碼管的六個數碼位會依次顯示 1、2、3、4、5、6 每個數字顯示的時間為 1s,如下GIF動圖所示

如果進一步把這個 T 進行縮短,比如說縮短到 20ms 這時候六位八段數碼管的六個數碼位會進行閃爍顯示,顯示的內容依次是 1、2、3、4、5、6,如下GIF動圖所示

如果進一步縮短時間 T 為 1ms,這時候,六位八段數碼管的六個數碼位實際上也是依次進行閃爍的顯示,顯示的內容依次是 1、2、3、4、5、6 每個數字顯示時間是 1ms,如下GIF動圖所示

但是它們切換的頻率太快了,我們的肉眼不能分辨這種閃爍,就誤以為六位八段數碼管的六個數碼位在同時進行顯示,而且顯示的內容是 123456。
這樣就使用動態掃描的方式實現了數碼管的動態顯示。
使用動態掃描的方式實現數碼管的動態顯示,實際上是利用了兩個現象:人眼的視覺暫留特性和數碼管的余暉效應。人眼在觀察景物時,光信號傳入到大腦神經需要經過一段時間,光的作用結束之后我們的視覺影像并不會立刻的消失,這種殘留的視覺被稱為后像,這種現象就被稱為視覺暫留;數碼管的余暉效應是什么意思呢?當我們停止向發光二極管供電時,發光二極管的亮度仍能夠維持一段時間。我們的動態掃描利用這兩個特性就實現了數碼管的動態顯示。

以上內容是我在觀看視頻教程34-第二十三講-數碼管動態顯示(一)后的筆記的一部分


Proteus 仿真看看吧一開始先設置T為3s左右看一看,如下GIF動圖所示


接著設置為300ms左右,如下GIF動圖所示(閃爍起來了


然后設置為30ms左右,如下GIF動圖所示(貌似眨眼補幀后就是同時顯示的了


我還要快一點,那就再除個10,每個位只顯示3ms左右的時間看看吧


看來它已經可以欺騙我們的眼睛和大腦了(至少仿真軟件認為是這樣的)
用手機拍視頻時如果畫面中有對準過多位數碼管顯示類產品的話,相信你一定注意到過手機畫面中,數碼管通常會閃爍吧,原因就是使用了動態掃描的方式顯示

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:230500 發表于 2024-3-29 08:54 | 只看該作者
看來單片機開發板還沒有學入門; 找個視頻自己看了后再寫出來,然后下載到板子上看看實際情況, 再改改延時時間  你就會看到另一種不一樣的結果, 只有這樣才真正學會, 在這問這些是沒有用的, 跟你講動態掃描 就好像講無字天書一樣, 很玄妙!
回復

使用道具 舉報

地板
ID:1110945 發表于 2024-3-29 10:02 | 只看該作者
你知道六位的數碼管里面有多少個發光二極管嗎?
6x8=48個發光二極管,最笨的辦法要用49根引腳才能控制它,
聰明的辦法只要6+8=14根引腳就行了,但是要用動態掃描的方
法才能正常顯示。實際同一時間只能有一個數碼管在顯示,其
它的都是關著的不顯示的,“動態掃描”的意思是排著隊一個一個
的來顯示,只要切換的速度足夠快,我們就感覺是“同時”都在顯
示數字了。你感覺1秒鐘的時間很短,對于單片機來說卻是很漫長
的,比如24MHz的頻率它要計數2400萬才到1秒鐘。
你這個題目很大,慢慢來吧,從點亮一個發光管開始吧,然后學會
在其中的一個數碼管上顯示“12345abcd”這些,還要能隨意的顯示,
隨意的變換顯示給出的內容,然后是把時間分成小段完成動態掃描。
你要的不同時間段顯示不同的內容,還要再把時間分成大的時間段
顯示你要的內容。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:977869 發表于 2024-3-29 11:09 | 只看該作者
#define  display_tm_base    15u

//
display_time++
if(display_time>=display_tm_base)
                                {
                                        display_show();
                                        display_time=0;
                                        index++;
                                        if(index>=12)


                                        {
                                                index=0;
                                        }
                                }

//上面那部分程序放在定時器中


void display_show()//數碼管顯示程序
{
        if(run_mode==6)
        {
                show_value[0]=mode_timer_value/100;     //百位
                show_value[1]=mode_timer_value%100/10;   //十位
                show_value[2]=mode_timer_value%100%10;//十位  
        }
        else
        {
                  if(pro_set==0)
                {
                                show_value[0]=trigger_cut/100;     //百位
                }
                else
                {
                                show_value[0]=16;     //P段顯示
                }
        show_value[1]=trigger_cut%100/10;   //十位
        show_value[2]=trigger_cut%100%10;//十位  
        }

        show_value[3]=intergral/100;  //百位
        show_value[4]=intergral%100/10;// 十位
        show_value[5]=intergral%100%10;//個位
        if(index==0)
        {
                        select_pin1=0;
                        select_pin2=1;
                        select_pin3=1;
                        select_pin4=1;
                        select_pin5=1;
                        select_pin6=1;
                        show_port=table[show_value[2]];
        }
        else if(index==2)
        {
                        select_pin1=1;
                        select_pin2=0;
                        select_pin3=1;
                        select_pin4=1;
                        select_pin5=1;
                        select_pin6=1;
                        show_port=table[show_value[1]];
        }
        else if(index==4)
        {
                        select_pin1=1;
                        select_pin2=1;
                        select_pin3=0;
                        select_pin4=1;
                        select_pin5=1;
                        select_pin6=1;
                        show_port=table[show_value[0]];
        }
        else if(index==6)
        {
                        select_pin1=1;
                        select_pin2=1;
                        select_pin3=1;
                        select_pin4=0;
                        select_pin5=1;
                        select_pin6=1;
                        show_port=table[show_value[5]];
        }
        else if(index==8)
        {
                        select_pin1=1;
                        select_pin2=1;
                        select_pin3=1;
                        select_pin4=1;
                        select_pin5=0;
                        select_pin6=1;
                        show_port=table[show_value[4]];
        }
        else if(index==10)
        {
                        select_pin1=1;
                        select_pin2=1;
                        select_pin3=1;
                        select_pin4=1;
                        select_pin5=1;
                        select_pin6=0;
                        show_port=table[show_value[3]];
        }
        else
        {
                        select_pin1=1;
                        select_pin2=1;
                        select_pin3=1;
                        select_pin4=1;
                        select_pin5=1;
                        select_pin6=1;
                //        show_port=0X00;
        }
}


char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x73};  //數碼管共陰極編碼表
回復

使用道具 舉報

6#
ID:619259 發表于 2024-3-31 23:11 | 只看該作者

修改多次都失敗,不知何因,補發附件。



#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xc2};                //共陽代碼
uchar code com[]={0x01,0x02,0x04,0x08,0x10,0x20};   //位碼
uchar seg_buff[6];      //顯示緩沖區
/****************************************************
    延時子函數(xms)
****************************************************/
void delay(uint xms)   
{
    uint i,j;
    for(i=xms;i>0;i--)
       for(j=120;j>0;j--);
}

/***************************************************************
    顯示子函數
***************************************************************/
void seg_show(uchar a,uchar b,uchar c,uchar x,uchar y,uchar z)
{
    uchar i;
    seg_buff[0]=seg[a];
    seg_buff[1]=seg[b ];
    seg_buff[2]=seg[c];
    seg_buff[3]=seg[x];
    seg_buff[4]=seg[y];
    seg_buff[5]=seg[z];   
   
    for(i=0;i<6;i++)
    {
        P2=0x00;
        P0=seg_buff[ i];
        P2=com[ i];
        delay(1);
    }
}

/****************************************************
    主函數
****************************************************/
void main()
{
    while(1)
    {
        uint cnt;       //延時計數參數,不精確的計算,想精確的建議用定時器
                          //數碼管刷新一次約為6ms,167次約為1秒
        if(cnt<167)    seg_show(1,2,3,4,5,6);
        else if(cnt>=167 && cnt<334)   seg_show(3,3,8,7,3,7);
        else   seg_show(13,14,12,15,16,10);
        cnt++;
        if(cnt>501) cnt=0;
    }
}

seg05.rar

729 Bytes, 下載次數: 1

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区在线视频 | 亚洲午夜视频 | 91高清在线视频 | 亚洲视频手机在线 | 亚洲精品自拍视频 | 久久精品免费观看 | 国产亚洲欧美在线视频 | 在线欧美小视频 | 久久久国产一区 | 国户精品久久久久久久久久久不卡 | 国产一区在线免费 | 成人精品一区二区户外勾搭野战 | 日韩精品在线免费 | 色婷婷一区二区三区四区 | 国产免费观看一区 | 亚洲精品1区 | 正在播放一区二区 | 日本精品视频一区二区三区四区 | 国产欧美在线 | 黄网站在线观看 | 日韩三级 | av二区三区 | 国产精品亚洲综合 | 亚洲人成在线观看 | 国产精品久久精品 | 国产精品久久 | 亚洲国产精品久久久 | 一区二区电影网 | 国产999精品久久久 午夜天堂精品久久久久 | 色综合国产 | 欧美视频网 | 亚洲伊人久久综合 | 91精品福利 | 先锋资源亚洲 | 欧美一区在线视频 | 九九九视频精品 | 亚洲视频 欧美视频 | 国产精品精品3d动漫 | 国产在线视频一区二区 | www.狠狠干| 成人影院网站ww555久久精品 |