日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]分別通過數(shù)碼管顯示時(shí)分秒,key0按下停止計(jì)數(shù),進(jìn)入調(diào)整時(shí)間狀態(tài),之后按下key1分鐘加1,按下key2小時(shí)加1,再按下key0繼續(xù)計(jì)數(shù)。#include#define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66

分別通過數(shù)碼管顯示時(shí)分秒,key0按下停止計(jì)數(shù),進(jìn)入調(diào)整時(shí)間狀態(tài),之后按下key1分鐘加1,按下key2小時(shí)加1,再按下key0繼續(xù)計(jì)數(shù)。

#include

#define uchar unsigned char

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9共陰

#define dula P0//數(shù)碼管段選

#define wela P2 //數(shù)碼管位選

//定義按鍵

sbit Key0=P1^0;//時(shí)間停止等待調(diào)整,恢復(fù)計(jì)數(shù)

sbit Key1=P1^1;//調(diào)整分鐘,加1

sbit Key2=P1^2;//調(diào)整小時(shí),加1

//定義秒,分,時(shí),秒的個(gè)位,十位,分的個(gè)位,十位,時(shí)的個(gè)位,十位

uchar sec,min,hour,sec_ge,sec_shi,min_ge,min_shi,hour_ge,hour_shi;

uchar byCounter;//中斷次數(shù),20次為1s(500ms定時(shí))

/*****************************函數(shù)聲明************************************/

void init();

void increase();

void disp();

void delay(uchar);

void time_modify();

/****************************主函數(shù)***************************/

void main()

{

init();//初始化

while(1)

{

TR0=1;//開定時(shí)器

disp();//顯示

time_modify();//調(diào)整時(shí)間

}

}

/*******************************初始化****************************/

void init()

{

wela=0;

sec_ge=sec_shi=0;

min_ge=min_shi=0;

hour_ge=hour_shi=0;

sec=min=hour=0;

byCounter=0;

TMOD=0x01;//定義定時(shí)器0工作與方式1

TH0=(65536-50000)/256; //定時(shí)器賦初值

TL0=(65536-50000)%256;

EA=1;//開總中斷

ET0=1;//開T0中斷

}

/******************************延時(shí)**********************************/

void delay(uchar x)

{

uchar i,j;

for(i=x;i>0l;i--)

for(j=255;j>0;j--);

}

/****************************中斷***********************************/

void t0()interrupt 1

{

TH0=(65536-50000)/256;//重賦初值

TL0=(65536-50000)%256;

byCounter++;

if(byCounter==20)//到了1s

{

byCounter=0;

increase();//計(jì)數(shù)加1

}

}

/****************************計(jì)數(shù)加1***********************************/

void increase()

{

sec++; //秒加1

if(sec==60)//如果秒為60,則清零,分加1

{

sec=0;

min++;

}

if(min==60)//如果分為60,則清零,時(shí)加1

{

min=0;

hour++;

}

if(hour==24)//如果時(shí)為24,則清零

{

hour=0;

}

}

/****************************顯示***********************************/

void disp()

{

sec_ge=sec%10;//秒的個(gè)位和十位

sec_shi=sec/10;

min_ge=min%10;//分的個(gè)位和十位

min_shi=min/10;

hour_ge=hour%10;//時(shí)的個(gè)位和十位

hour_shi=hour/10;

//循環(huán)掃描

wela=0xDF;

dula=table[hour_shi];//時(shí)的十位

delay(10);

wela=0xEF;

dula=table[hour_ge];//時(shí)的個(gè)位

delay(10);

wela=0xF7;

dula=table[min_shi];//分的十位

delay(10);

wela=0xFB;

dula=table[min_ge];//分的個(gè)位

delay(10);

wela=0xFD;

dula=table[sec_shi];//秒的十位

delay(10);

wela=0xFE;

dula=table[sec_ge];//秒的個(gè)位

delay(10);

}

/*****************************調(diào)整時(shí)間*********************************/

void time_modify()

{

uchar flag=0;

if(Key0==0)//如果Key0按下

{

while(Key0==0)//等待按鍵放開

{

disp();

}

flag=1;//標(biāo)志位置1

while(flag)//當(dāng)標(biāo)志位為1時(shí)才能進(jìn)行時(shí)間調(diào)整

{

TR0=0;//定時(shí)器停止

disp();//顯示停止時(shí)的時(shí)間

if(Key0==0)//如果Key0按下

{

while(Key0==0)//等待按鍵放開

{

disp();

}

flag=0;//標(biāo)志位清零

}

if(Key1==0)//如果Key1按下

{

while(Key1==0)//等待按鍵放開

{

disp();

}

min++;

if(min==60)

min=0;

}

if(Key2==0)//如果Key2按下

{

while(Key2==0)//等待按鍵放開

{

disp();

}

hour++;

if(hour==24)

hour=0;

}

}

}

}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉