基于lpc922单片机的电子钟温度计设计(4)

2020-02-21 13:37

} return BCD; }

////////////////////////十进制直接作为十六进制(eg:16变为0x16) uchar D_Xswitch(uint Date) {

uint Xdate;

DCOUNT_INT_BCD(Date); Xdate=BCD[1]; Xdate=Xdate<<4;

Xdate=Xdate+BCD[0]; return(Xdate); }

//////////////////////十六进制直接作为十进制(eg:0x16变为16) uchar X_Dswitch(uint Date) {

uint Ddate;

XCOUNT_INT_BCD(Date); Ddate=BCD[1]*10+BCD[0]; return(Ddate); }

/*************************************************** bcd_to_disp(bcd_code)

bcd码转换为显示字型码输出 bcd_code为相应的bcd码 返回值:相应的显示字型码

****************************************************/ uchar BCD_TO_DISP(uchar bcd_code) { uchar disp; switch(bcd_code) { case 0:disp=TABLE2[0];break; case 1:disp=TABLE2[1];break; case 2:disp=TABLE2[2];break; case 3:disp=TABLE2[3];break; case 4:disp=TABLE2[4];break; case 5:disp=TABLE2[5];break; case 6:disp=TABLE2[6];break; case 7:disp=TABLE2[7];break; case 8:disp=TABLE2[8];break; case 9:disp=TABLE2[9];break; default: disp=0xff;break; }

16

return disp; }

/******************** 显示器延时函数

*********************/ void delay(int MS) { int us,usn; while(MS!=0) { usn = 4; while(usn!=0) { us=0x30; while (us!=0){us--;}; usn--; } MS--; } }

//月份天数判断函数

uint months(uint month,uint year) {

switch(month) { case 1:lastday=31;break; case 3:lastday=31;break; case 5:lastday=31;break; case 7:lastday=31;break; case 8:lastday=31;break; case 10:lastday=31;break; case 12:lastday=31;break; case 4:lastday=30;break; case 6:lastday=30;break; case 9:lastday=30;break; case 11:lastday=30;break; case 2:if(year@0==0 || (year%4==0 && year0!=0)) lastday=29; else lastday=28; break; }

17

return(lastday); }

/////////////////////////////////*显示函数*/ void displaytime(uchar swap[]) {

//显示时、分、秒、星期

XCOUNT_INT_BCD(second);//秒个位 P2=0xfe; if(swap[0]==1) P0=BCD_TO_DISP(BCD[0]); //显示其值 else P0=0xff; //LED熄灭-------下同 delay(1); P0=0xff;

P2=0xfd; //秒十位 if(swap[0]==1) P0=BCD_TO_DISP(BCD[1]); else P0=0xff; delay(1); P0=0xff; XCOUNT_INT_BCD(minute);//分个位 P2=0xfb; if(swap[1]==1) P0=BCD_TO_DISP(BCD[0]); else P0=0xff; delay(1); P0=0xff;

P2=0xf7; //分十位 if(swap[1]==1) P0=BCD_TO_DISP(BCD[1]); else P0=0xff; delay(1); P0=0xff; XCOUNT_INT_BCD(hour);//时个位 P2=0xef; if(swap[2]==1)

18

P0=BCD_TO_DISP(BCD[0]); else P0=0xff; delay(1); P0=0xff;

P2=0xdf; //时十位 if(swap[2]==1)

P0=BCD_TO_DISP(BCD[1]); else P0=0xff; delay(1); P0=0xff; XCOUNT_INT_BCD(week);//星期 P2=0x7f; if(swap[3]==1) P0=BCD_TO_DISP(BCD[0]); else P0=0xff; delay(1); P0=0xff; }

void displayymd(uchar swap[]) {

//显示年、月、日 XCOUNT_INT_BCD(day);//日个位 P2=0xfe; if(swap[6]==1) P0=BCD_TO_DISP(BCD[0]); else P0=0xff; delay(1); P0=0xff;

P2=0xfd; //日十位 if(swap[6]==1) P0=BCD_TO_DISP(BCD[1]); else P0=0xff; delay(1); P0=0xff;

XCOUNT_INT_BCD(month);//月个位

19

P2=0xfb; if(swap[5]==1) P0=BCD_TO_DISP(BCD[0]); else P0=0xff; delay(1); P0=0xff;

P2=0xf7; //月十位 if(swap[5]==1) P0=BCD_TO_DISP(BCD[1]); else P0=0xff; delay(1); P0=0xff;

XCOUNT_INT_BCD(year);//年个位 P2=0xef; if(swap[4]==1) P0=BCD_TO_DISP(BCD[0]); else P0=0xff; delay(1); P0=0xff;

P2=0xdf; //年十位 if(swap[4]==1) P0=BCD_TO_DISP(BCD[1]); else P0=0xff; delay(1); P0=0xff;

P2=0xbf; //年百位 if(swap[4]==1) P0=TABLE2[0]; else P0=0xff; delay(1); P0=0xff;

P2=0x7f; //年千位 if(swap[4]==1) P0=TABLE2[2];

20


基于lpc922单片机的电子钟温度计设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:迷人的阅读读书笔记

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: