国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用定時(shí)器中斷設(shè)計(jì)時(shí)鐘,用1602液晶顯示

用定時(shí)器中斷設(shè)計(jì)時(shí)鐘,用1602液晶顯示

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
時(shí)鐘有些功能還未完全實(shí)現(xiàn),僅實(shí)現(xiàn)一部分功能,年月日星期功能還未實(shí)現(xiàn) 還可以加上整點(diǎn)報(bào)時(shí)和斷電記憶的功能

本文引用地址:http://m.ptau.cn/article/201611/322833.htm

#include

#defineucharunsignedchar

sbit rd=P2^6;

sbit wr=P2^5;

sbit lcde=P2^7;

sbit k1=P1^0;

sbit k2=P1^1;

sbit k4=P1^3;

sbit k8=P1^7;

uchar code table1[]=" 2011-10-01SAT";

uchar code table2[]="00:00:00";

uchar t,s1num;

charshi,fen,miao;

voiddelay(uchar z)//延遲zms函數(shù)

{

uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(uchar com)//液晶寫指令操作

{

rd=0;

wr=0;

delay(5);

lcde=1;

P0=com;

lcde=0;

}

voidwrite_date(uchar date)//液晶寫數(shù)據(jù)操作

{

rd=1;

wr=0;

delay(5);

lcde=1;

P0=date;

lcde=0;

}

voidwrite_sfm(uchar add,uchar date)//更新時(shí)分秒

{

uchar shi,ge;

shi=date/10;

ge=date;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

voidinit()//初始化函數(shù)

{

uchar i;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80+0x00);

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

write_date(table1[i]);

write_com(0x80+0x46);

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

write_date(table2[i]);

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

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

TL0=(65536-50000)%6;//12M晶振時(shí)ms數(shù)為

EA=1;

ET0=1;

TR0=1;

}

voidkeyscan()//鍵盤掃描函數(shù)

{

if(k1==0)//按下k1鍵確定調(diào)時(shí)分秒

{

delay(5);

if(k1==0)

{

s1num++;

while(!k1)

;

delay(5);

while(!k1);

if(s1num==1)

{

TR0=0;//暫停計(jì)時(shí)器

write_com(0x80+0x4d);//光標(biāo)在秒的位置閃爍

write_com(0x0f);

}

if(s1num==2)//光標(biāo)在分的位置

{

TR0=0;

write_com(0x80+0x4a);

write_com(0x0f);

}

if(s1num==3)

{

TR0=0;

write_com(0x80+0x47);

write_com(0x0f);

}

if(s1num==4)//按下第四下時(shí)接著走時(shí)

{

s1num=0;

write_com(0x0c);

TR0=1;

}

}

}

if(s1num!=0)

{

if(s1num==1)

{

if(k2==0)//按k2鍵秒加

{

delay(5);

if(k2==0)

{

while(!k2);

delay(5);

while(!k2);

miao++;

if(miao==60)

miao=0;

write_sfm(0x0c,miao);

write_com(0x80+0x4d);

}

}

}

if(s1num==2)

{

if(k2==0)//分加

{

delay(5);

if(k2==0)

{

while(!k2);

delay(5);

while(!k2);

fen++;

if(fen==60)

fen=0;

write_sfm(0x09,fen);

write_com(0x80+0x4a);

}

}

}

if(s1num==3)

{

if(k2==0)//時(shí)加

{

delay(5);

if(k2==0)

{

while(!k2);

delay(5);

while(!k2);

shi++;

if(shi==24)

shi=0;

write_sfm(0x06,shi);

write_com(0x80+0x47);

}

}

}

if(k4==0)//判斷k3是否被按下

{

delay(5);

if(k4==0)

{

while(!k4);

delay(5);

while(!k4);

if(s1num==1)

{

miao--;//秒減

if(miao==-1)

miao=59;

write_sfm(0x0c,miao);

write_com(0x80+0x4d);

}

if(s1num==2)

{

fen--;//分減

if(fen==-1)

fen=59;

write_sfm(0x09,fen);

write_com(0x80+0x4a);

}

if(s1num==3)

{

shi--;//時(shí)減

if(shi==-1)

shi=23;

write_sfm(0x06,shi);

write_com(0x80+0x47);

}

}

}

}

if(k8==0)//按下k8退出調(diào)時(shí)

{

delay(5);

if(k8==0)

{

while(!k8);

delay(5);

while(!k8);

s1num=0;

write_com(0x0c);

TR0=1;

}

}

}

voidmain()

{

init();

while(1)

{

keyscan();

}

}

voidtimer0() interrupt 1//中斷服務(wù)程序

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%6;//重新設(shè)定定時(shí)器初值

t++;

if(t==20)//定時(shí)器中斷次為秒

{

t=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

}

write_sfm(0x06,shi);//顯示時(shí)

}

write_sfm(0x09,fen);//顯示分

}

write_sfm(0x0c,miao);//顯示秒

}

}



評(píng)論


技術(shù)專區(qū)

關(guān)閉