新聞中心

        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單片機教程


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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 奉节县| 台山市| 宝山区| 荥阳市| 永丰县| 保定市| 宿松县| 武安市| 房产| 乐业县| 柳州市| 重庆市| 越西县| 商南县| 名山县| 苍溪县| 分宜县| 北宁市| 托克逊县| 苍南县| 丰宁| 济阳县| 外汇| 罗甸县| 莲花县| 和政县| 龙岩市| 循化| 贵港市| 右玉县| 河源市| 四平市| 沙洋县| 新源县| 舒兰市| 依安县| 拜泉县| 锡林郭勒盟| 六盘水市| 景洪市| 石棉县|