新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 00-99計數器

        00-99計數器

        作者: 時間:2011-02-27 來源:網絡 收藏

        1.實驗任務

        利用AT89S51來制作一個手動計數器,在AT89S51P3.7管腳接一個輕觸開關,作為手動計數的按鈕,用P2.0P2.7接一個共陰數碼管,作為0099計數的個位數顯示,用單片機的P0.0P0.7接一個共陰數碼管,作為0099計數的十位數顯示;硬件電路圖如圖19所示。

        2.電路原理圖

        4.10.1

        3.系統板上硬件連線

        (1. 把“單片機系統”區域中的P0.0/AD0P0.7/AD7端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個ah端口上;要求:P0.0/AD0對應著aP0.1/AD1對應著b……P0.7/AD7對應著h

        (2. 把“單片機系統”區域中的P2.0/A8P2.7/A15端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個數碼管的ah端口上;

        (3. 把“單片機系統”區域中的P3.7/RD端口用導線連接到“獨立式鍵盤”區域中的SP1端口上;

        4.程序設計內容

        (1. 單片機對按鍵的識別的過程處理

        (2. 單片機對正確識別的按鍵進行計數,計數滿時,又從零開始計數;

        (3. 單片機對計的數值要進行數碼顯示,計得的數是十進數,含有十位和個位,我們要把十位和個位拆開分別送出這樣的十位和個位數值到對應的數碼管上顯示。如何拆開十位和個位我們可以把所計得的數值對10求余,即可個位數字,對10整除,即可得到十位數字了。

        (4. 通過查表方式,分別顯示出個位和十位數字。

        5.程序框圖

        4.10.2

        6.匯編源程序

        Count EQU 30H

        SP1 BIT P3.7

        ORG 0

        START: MOV Count,#00H

        NEXT: MOV A,Count

        MOV B,#10

        DIV AB

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        MOV A,B

        MOVC A,@A+DPTR

        MOV P2,A

        WT: JNB SP1,WT

        WAIT: JB SP1,WAIT

        LCALL DELY10MS

        JB SP1,WAIT

        INC Count

        MOV A,Count

        CJNE A,#100,NEXT

        LJMP START

        DELY10MS: MOV R6,#20

        D1: MOV R7,#248

        DJNZ R7,$

        DJNZ R6,D1

        RET

        TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

        END

        7.C語言源程序

        #include AT89X51.H>

        unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

        0x6d,0x7d,0x07,0x7f,0x6f};

        unsigned char Count;

        void delay10ms(void)

        {

        unsigned char i,j;

        for(i=20;i>0;i--)

        for(j=248;j>0;j--);

        }

        void main(void)

        {

        Count=0;

        P0=table[Count/10];

        P2=table[Count%10];

        while(1)

        {

        if(P3_7==0)

        {

        delay10ms();

        if(P3_7==0)

        {

        Count++;

        if(Count==100)

        {

        Count=0;

        }

        P0=table[Count/10];

        P2=table[Count%10];

        while(P3_7==0);

        }

        }

        }

        }

        51單片機相關文章:51單片機教程


        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 含山县| 泗洪县| 沅江市| 临安市| 宾川县| 日土县| 镇平县| 永康市| 高雄县| 南京市| 涪陵区| 盐源县| 隆化县| 河东区| 耿马| 晋州市| 铁岭县| 怀安县| 新闻| 长子县| 紫阳县| 镇安县| 利川市| 合肥市| 通榆县| 黄大仙区| 辽阳市| 新营市| 东至县| 崇文区| 衡东县| 隆化县| 洪湖市| 汾阳市| 许昌市| 平昌县| 民丰县| 民县| 防城港市| 唐山市| 阜新市|