日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer

發(fā)布時(shí)間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

51單片機(jī)00-59秒計(jì)時(shí)器 0-59s Timer

1.? 實(shí)驗(yàn)任務(wù)

如下圖所示,在AT89S51單片機(jī)的P0和P2端口分別接有兩個共陰數(shù)碼管,P0口驅(qū)動顯示秒時(shí)間的十位,而P2口驅(qū)動顯示秒時(shí)間的個位。

2.? 電路原理圖

?

00-59秒計(jì)時(shí)器0-59s Timer

3.? 系統(tǒng)板上硬件連線

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

(2.?????? 把“單片機(jī)系統(tǒng)”區(qū)域中的P2.0/A8-P2.7/A15端口用8芯排線連接到“四路靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任一個a-h端口上;要求:P2.0/A8對應(yīng)著a,P2.1/A9對應(yīng)著b,……,P2.7/A15對應(yīng)著h。

4.? 程序設(shè)計(jì)內(nèi)容

(1.?????? 在設(shè)計(jì)過程中我們用一個存儲單元作為秒計(jì)數(shù)單元,當(dāng)一秒鐘到來時(shí),就讓秒計(jì)數(shù)單元加1,當(dāng)秒計(jì)數(shù)達(dá)到60時(shí),就自動返回到0,從新秒計(jì)數(shù)。

(2.?????? 對于秒計(jì)數(shù)單元中的數(shù)據(jù)要把它十位數(shù)和個數(shù)分開,方法仍采用對10整除和對10求余。

(3.?????? 在數(shù)碼上顯示,仍通過查表的方式完成。

(4.?????? 一秒時(shí)間的產(chǎn)生在這里我們采用軟件精確延時(shí)的方法來完成,經(jīng)過精確計(jì)算得到1秒時(shí)間為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秒計(jì)時(shí)器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];

}

}

總結(jié)

以上是生活随笔為你收集整理的59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。