18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機 >> 正文

51單片機00-59秒計時器 0-59s Timer

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2016-9-30

51單片機00-59秒計時器 0-59s Timer

1.  實驗任務
如下圖所示,在AT89S51單片機的P0和P2端口分別接有兩(liang) 個(ge) 共陰數碼管,P0口驅動顯示秒時間的十位,而P2口驅動顯示秒時間的個(ge) 位。
2.  電路原理圖
 51單片機計時器電路原理圖
00-59秒計時器0-59s Timer
 
 
3.  係統板上硬件連線
(1.       把“單片機係統”區域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個(ge) a-h端口上;要求:P0.0/AD0對應著a,P0.1/AD1對應著b,……,P0.7/AD7對應著h。
(2.       把“單片機係統”區域中的P2.0/A8-P2.7/A15端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個(ge) a-h端口上;要求:P2.0/A8對應著a,P2.1/A9對應著b,……,P2.7/A15對應著h。
4.  程序設計內(nei) 容
(1.       在設計過程中我們(men) 用一個(ge) 存儲(chu) 單元作為(wei) 秒計數單元,當一秒鍾到來時,就讓秒計數單元加1,當秒計數達到60時,就自動返回到0,從(cong) 新秒計數。
(2.       對於(yu) 秒計數單元中的數據要把它十位數和個(ge) 數分開,方法仍采用對10整除和對10求餘(yu) 。
(3.       在數碼上顯示,仍通過查表的方式完成。
(4.       一秒時間的產(chan) 生在這裏我們(men) 采用軟件精確延時的方法來完成,經過精確計算得到1秒時間為(wei) 1.002秒。
DELY1S:        MOV R5,#100
D2:                MOV R6,#20
D1:                MOV R7,#248
                     DJNZ R7,$
                     DJNZ R6,D1
                     DJNZ R5,D2
                     RET
5.  程序框圖
 單片機計時器程序框圖 
 00-59秒計時器0-59s Timer
 
6.  匯編源程序
Second                 EQU 30H
                            ORG 0
START:               MOV Second,#00H
NEXT:                MOV A,Second
                           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
                            LCALL DELY1S
                           INC Second
                            MOV A,Second
                            CJNE A,#60,NEXT
                           LJMP START
DELY1S:             MOV R5,#100
D2:                      MOV R6,#20
D1:                     MOV R7,#248
                            DJNZ R7,$
                            DJNZ R6,D1
                           DJNZ R5,D2
                            RET
TABLE:              DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
                            END
7.  C語言源程序
#include
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
                            0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char Second;
void delay1s(void)
{
  unsigned char i,j,k;
  for(k=100;k>0;k--)
  for(i=20;i>0;i--)
  for(j=248;j>0;j--);
}
void main(void)
{
  Second=0;
  P0=table[Second/10];
  P2=table[Second%10];
  while(1)
    {
      delay1s();
      Second++;
      if(Second==60)
        {
          Second=0;
        }
      P0=table[Second/10];
      P2=table[Second%10];
    }
}

Tags:51單片機,計時器,程序  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢