资源描述:
《1602lcd可调 时钟》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/********************************************************************不懂可以问哦*文件名:数字钟*描述:可调数字钟*创建人:小木子,(口口;三零三零二零九八三)2012年11月20日***********************************************************************/#include#include#include#include#defineucharunsignedcha
2、r#defineuintunsignedintuchara,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;ucharcodetab3[]={"20--"};//年显示的固定字符ucharcodetab2[]={"::"};//时间显示的固定字符//这三个引脚参考资料1604液晶引脚//sbitE=P2^7;//1602使能引脚//sbitRW=P2^6;//1602读写引脚//sbitRS=P2^5;//1602数据/命令选择引脚sbitkey1=P3^3;//设置键sbitkey2=P3^2;//加键sbitkey3=P3^4;//减
3、键/*********************************************************************名称:delay_1()*功能:延时,延时时间大概为1ms。delay_ms(uintms)delay1ms(uinti)delay_1ms(uchari)***********************************************************************/voiddelay_ms(uintms)//延时函数,有参函数{uintx,y;for(x=ms;x>0;x--)for(y=113;y>0;y-
4、-);}/*voiddelay_140us(){inti,j;for(i=0;i<=10;i++)for(j=0;j<=2;j++);}*///----------------------------------------voidwrite_sfm(ucharadd,uchardat)//向LCD写时分秒,有显示位置加、现示数据,两个参数{ucharg,s;g=dat%10;//取得个位数字s=dat/10;//取得十位数字lcd_char(2,add+1,s+48);lcd_char(2,add+2,g+48);/*lcd_com(eh+add);//er是头文件规定的值0x8
5、0+0x40lcd_dat(0x30+sw);//数字+30得到该数字的LCD1602显示码lcd_dat(0x30+gw);//数字+30得到该数字的LCD1602显示码*/}//-------------------------------------//年月日显示子函数voidwrite_nyr(ucharadd,uchardat)//向LCD写年月日,有显示位置加数、显示数据,两个参数{uchargw,sw;gw=dat%10;//取得个位数字sw=dat/10;//取得十位数字lcd_char(1,add+1,sw+48);lcd_char(1,add+2,gw+48);
6、/*lcd_com(yh+add);//设定显示位置为第一个位置+addlcd_dat(0x30+sw);//数字+30得到该数字的LCD1602显示码lcd_dat(0x30+gw);//数字+30得到该数字的LCD1602显示码*/}//-------------------------------------------voidwrite_week(ucharweek)//写星期函数{lcd_com(yh+12);//星期字符的显示位置switch(week){case1:/*lcd_dat('M');//星期数为1时,显示lcd_dat('O');lcd_dat('N');
7、*/lcd_str(1,13,"MON");break;case2:/*lcd_dat('T');//星期数据为2时显示lcd_dat('U');lcd_dat('E');*/lcd_str(1,13,"TUE");break;case3:/*lcd_dat('W');//星期数据为3时显示lcd_dat('E');lcd_dat('D');*/lcd_str(1,13,"WED");break;case4:/*lcd_dat('T');//星期数据为4是显示lcd_