定時器計時,並在數碼管實時顯示時間

2021-08-13 10:37:43 字數 1303 閱讀 3111

用定時器計時,並將實時秒數顯示到數碼管上面,本例僅支援0-99顯示

#include

#define uchar unsigned char

#define uint unsigned int

uint code a= ;

sbit we = p2^7;

sbit du = p2^6;

void delay(uint i);

void display(uchar i);

void delay(uint i)  //普通延時函式

uint x,y;

for(x = 0;x < i;x++)

for(y = 0;y < 114;y++);

void display(uchar i)

uchar one,two;

one = i / 10; //十位數的數值

two = i % 10; //個位數的數值

p0 = 0xff;    //防止重影,消影手段

we= 1; //位選開啟

p0 = 0xfe;

we = 0;

du = 1;   //段選開啟

p0 = a[one];//第乙個數碼管顯示十位數

du = 0;

delay(5);

p0 = 0xff;

we = 1;

p0 = 0xfd;

we = 0;

du = 1;

p0 = a[two];//第二個數碼管顯示個位數

du = 0;

delay(5);

void main()

tr1= 1;  //開啟定時計數器1

tmod = 0x10; //工作方式設定為定時器

th1 = 0x4b; //裝入初值,根據微控制器的晶振和你打算計算的時間有關

tl1 = 0xfc;   //微控制器晶振為11.0592,計時50ms;裝入0x4bfc;

while(1){

uchar m,b;

if(tf1 == 1){ //檢測tf1位是否為1,是則說明定時器已裝滿一次

th1 = 0x4b; //重新裝入初值

tl1 = 0xfc;

tf1 = 0;  //將tf1位重新置0

m++;       //裝滿次數,即50ms的次數

if(m == 20){    //當20次裝滿50ms時,則過了1s

m = 0;      //將次數置0,繼續計時下一秒

b++;        //程式執行的總時間,總秒數

display(b);    

定時器數碼管時鐘

mai.c handlebars include system.h include key.h extern uchar flag 1ms 在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。void main void 程式的主函式 在這裡插入 片key.c include key.h...

定時器控制數碼管2011 1 24

1.利用定時器 計數器t1產生定時時鐘,由p1口控制8個發光二極體,使8個指示燈依次一次一次閃動,閃動頻率為10次 秒,迴圈 2.用定時器以間隔500ms在6位數碼管依次顯示0,1,2,3,c,d,e,f,重複 include include define uchar unsigned char s...

51 定時器掃瞄矩陣鍵盤 數碼管顯示

大二的時候學完51寫的乙個綜合程式。用定時器中斷掃瞄行,即行已知 再在主程式中判斷列 得到的行列值帶入顯示函式display 按下鍵顯示,鬆開取消顯示。涉及原理理解,邏輯比較混亂,可讀性低。includeunsigned char i,j,l,r,add 0,temp 注意微控制器的行列對應的引腳 ...