tft每日頭條

 > 科技

 > 51單片機利用數碼管顯示倒計時

51單片機利用數碼管顯示倒計時

科技 更新时间:2025-02-05 13:58:01

标簽: 單片機 C51 數碼管 倒計時

在之前的文章中我們學習了單片機是如何實現一位數碼管顯示數字,一位數碼管隻能顯示個位數讓我們觀察到,那如何顯示十位數、百位數,甚至更大的數字呢。其實也并不複雜,我們可以選用多位數碼管來進行顯示數字,當每一個0到來的時候下一個十位的數碼管再開始工作就可以了。

51單片機利用數碼管顯示倒計時(面向單片機編程)1

功能概述

上一章節我們介紹了一位數碼管的功能,下面介紹多位數碼管與一位數碼管的共同點和不同點。每位數碼管都分為段碼線和位碼線以此來控制數碼管的工作,多位數碼管并不是很多很多個一位數碼管組成的,實際上他們的8根段碼線是共用的,而對每個數碼管進行控制的線叫做選位線,共陰數碼管哪個選位線是低電平,哪個數碼管就會顯示,反之共陽數碼管也是一樣的。

顯示原理

多位數碼管也是由LED燈組和成的,它的段同樣也是a,b,c,d,e,f,g,dp,但是多位數碼管比一位數碼管多了一個選位線,因此我們需要對這個選位線的引腳也進行定義。

電路連接

51單片機利用數碼管顯示倒計時(面向單片機編程)2

所使用的單片機為AT89C52,數碼管為共陽的數碼管,開始全部P0設置為低電平,開始運行後發生變化。

程序設計

設計的程序首先根據我們連接好的電路圖來進行,首先我們明确我們需要讓我們的兩位的共陽數碼管顯示59倒計時到0,對多位數碼管上的引腳和單片機上的IO口進行定義,當我們在寫這個程序時有兩種思路,一種是利用循環和延時的方式來實現數字的倒數,而另一種方式需要用到新的知識定時器的方式,定時器是C51單片機一個專門用來計數的模塊,但是其定義也需要我們去記憶,因此本章我們選用循環來進行倒計時。

多位數碼管59倒計時到0顯示,功能實現代碼如下:

#include<reg52.h>

#define uchar unsigned char#define uint unsigned intuchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar code LED_W[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void delay(uint i){uint x,j;for(j=0;j<128;j );for(x=0;x<=148;x );}void display(uint temp){P0=0;P2=0xfb;P0=table[temp/100];delay(2);P0=0;P2=0xfd;P0=table[temp0/10];P0=P0 | 0x80;delay(2);P0=0;P2=0xfe;P0=table[temp];delay(2);}void main(){uint i=100,j;while(1){ if(i!=0){for(j=0;j<10;j ){display(i);}i--;}else{while(1){ uint i;for(i=0;i<10;i ){P2=0xfe;P0=0x3f;delay(2);P2=0xfd;P0=0x3f;delay(2);P2=0xfb;P0=0x3f;delay(2);}P2=0xff;delay(200);}}}}

總結

多位數碼管的學習和一位數碼管類似,隻不過需要對選位線來進行編寫,不同的多位數碼管也都是需要用邏輯的方式改變選位線引腳的電平來控制屬于哪個的數碼管顯示。共陰數碼管和共陽數碼管是不一樣的字碼,這需要大家對其進行區分。接下來我們将學習如何使用數碼管實現時間的計時。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved