亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機數(shù)碼管動態(tài)顯示程序上的疑問

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:384762 發(fā)表于 2018-11-9 09:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面面這個是我在51hei論壇上看到的程序,我看了一下我有個疑問(1)當stopwatch=1的時候, LedNumbe[]這個數(shù)組是否除了LedNumbe[0]=1以外,其他LedNumbe[]是否都為0  ,假如是的話,請看問題2。(2)當stopwatch=1的時候,進入動態(tài)刷新,除了第一個數(shù)碼管能顯示1外 其他數(shù)碼管都會有顯示0,到最后的數(shù)碼管的效果就會變成這樣000001 000002 000003,而這個程序的效果應(yīng)該是 1    2     3    4    5    6,就是多余位是不會顯示的0的。我現(xiàn)在疑問的是 我不知道自己所描述的疑問是否正確  

#include <reg52.h>               //包含寄存器的庫文件                  
sbit  ADDR0 = P1^0;
sbit  ADDR1 = P1^1;
sbit  ADDR2 = P1^2;
sbit  ADDR3 = P1^3;
sbit  ENLED = P1^4;
unsigned char code LedChar[] = {   //用數(shù)組來表示數(shù)碼管真值表
    0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
    0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8e,
};
unsigned char LedNumber[6] = {0}; //定義全局變量
unsigned char j = 0;
unsigned int counter = 0;
void main()
{
    unsigned long stopwatch =0;
    ENLED = 0; ADDR3 = 1; P0 = 0XFF;   //74HC138P0初始化部分
    TMOD = 0x01;  //設(shè)置定時器0為模式1
    TH0  = 0xFC;
    TL0  = 0x67;  //定時值初值,定時1ms
    TR0  = 1;     //打開定時器0
    EA = 1;       //打開中中斷
    ET0 = 1;      //打開定時器0中斷
    while(1)
    {
        if(1000 == counter)     //判斷定時器0溢出是否達到1000
        {
            counter = 0;
            stopwatch++;
            LedNumber[0] = stopwatch%10;
            LedNumber[1] = stopwatch/10%10;
            LedNumber[2] = stopwatch/100%10;
            LedNumber[3] = stopwatch/1000%10;
            LedNumber[4] = stopwatch/10000%10;
            LedNumber[5] = stopwatch/100000%10;
        }
    }
}
void InterruptTimer0() interrupt 1               //中斷函數(shù)的特殊寫法,數(shù)字’1’為中斷入口號
{
    TH0 = 0xFC;   //溢出后進入中斷重新賦值
    TL0 = 0x67;
    counter++;   //計數(shù)值counter1
    P0 = 0xFF;   //消隱
    switch(j)
    {
        case 0: ADDR0=0; ADDR1=0; ADDR2=0; j++; P0=LedChar[LedNumber[0]]; break;
        case 1: ADDR0=1; ADDR1=0; ADDR2=0; j++; P0=LedChar[LedNumber[1]]; break;
        case 2: ADDR0=0; ADDR1=1; ADDR2=0; j++; P0=LedChar[LedNumber[2]]; break;
        case 3: ADDR0=1; ADDR1=1; ADDR2=0; j++; P0=LedChar[LedNumber[3]]; break;
        case 4: ADDR0=0; ADDR1=0; ADDR2=1; j++; P0=LedChar[LedNumber[4]]; break;
        case 5: ADDR0=1; ADDR1=0; ADDR2=1; j=0; P0=LedChar[LedNumber[5]]; break;
        default: break;
    }    //動態(tài)刷新
}   


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:384762 發(fā)表于 2018-11-12 19:50 | 只看該作者
有沒有人
回復(fù)

使用道具 舉報

板凳
ID:111339 發(fā)表于 2018-11-13 11:34 | 只看該作者
(1)當stopwatch=1的時候, LedNumbe[]這個數(shù)組是否除了LedNumbe[0]=1以外,其他LedNumbe[]是否都為0  :
答:沒錯 當 stopwatch=1 時stopwatch/10 = 0,0%10 = 0,所以 LedNumber[1] = stopwatch/10%10 = 0 ;  
        
(2)當stopwatch=1的時候,進入動態(tài)刷新,除了第一個數(shù)碼管能顯示1外 其他數(shù)碼管都會有顯示0,到最后的數(shù)碼管的效果就會變成這樣000001 000002 000003,而這個程序的效果應(yīng)該是 1    2     3    4    5    6,就是多余位是不會顯示的0的。
答:你的想法是對的
回復(fù)

使用道具 舉報

地板
ID:111634 發(fā)表于 2018-11-14 08:27 | 只看該作者
4.2  LED數(shù)碼管動態(tài)顯示    實例56  PNP晶體管選通3位共陽LED數(shù)碼管動態(tài)顯示; 實例57  74LS139選通4位LED數(shù)碼管動態(tài)顯示 實例58  74LS138選通8位LED數(shù)碼管動態(tài)顯示 實例59  74LS595串行選通8位LED數(shù)碼管動態(tài)顯示 實例60  8255A擴展8位LED數(shù)碼管動態(tài)顯示 實例63  8155擴展8位LED數(shù)碼管動態(tài)顯示 實例64  MAX7221控制8位LED數(shù)碼管動態(tài)顯示    以上摘自張志良編著《80C51單片機仿真設(shè)計實例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應(yīng)用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設(shè)計有詳細說明,程序語句條條有注解。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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