機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
用AT89S51單片機來制作的手動計數器-課程設計
用AT89S51單片機來制作的手動計數器-課程設計
 更新時間:2008-7-27 13:54:26  點擊數:4
【字體: 字體顏色

1 實驗任務

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

2 電路原理圖

 

3 系統板上硬件連線

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

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

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

4 程序設計內容

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

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

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

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

5 程序框圖

 

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單片機并行I/O口直接驅動LED顯示-課程設計
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1