新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机+ds1302+ds18b20+1602液晶万年历

51单片机+ds1302+ds18b20+1602液晶万年历

作者: 时间:2016-11-29 来源:网络 收藏
//****************************************************************************************************void delay(uint32 x){while(x--); }//****************************************************************************************************bit check_1602()//***********判断1602是否处于忙状态{P0=0xff;RS=0;RW=1;ENLCD=0;delay(50);ENLCD=1;return((bit)(P0&0x80)); }//****************************************************************************************************void write_com(uint8 com)//向1602写入一命令{while(check_1602());//***首先判断1602是否在忙 忙则等待RS=0;RW=0;ENLCD=1;P0=com;delay(50);ENLCD=0;}//****************************************************************************************************void write_dat(uint8 dat)//**向1602写入一字节数据{while(check_1602());//**首先判断1602是否在忙 忙则等待RS=1;RW=0;ENLCD=1;P0=dat;delay(50);ENLCD=0;}//****************************************************************************************************void init_1602()//**********1602初始化{write_com(0x38);delay(1000);write_com(0x38);delay(1000);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0c);}//****************************************************************************************************void w_string(uint8 string[],uint8 x,uint8 y)//写入字符型数组 x代表从第一行的第几个方格开始显示{ uint8 i=0; //y 代表在第几行if(y==1){while(string[i]!=0){write_com(0x80+i+x);write_dat(string[i]);i++;};i=0;}if(y==2){while(string[i]!=0){write_com(0xc0+i+x);write_dat(string[i]);i++;};i=0; } }//****************************************************************************************************void w_char(uint8 c,x,y)//*********向1602写入一个字符{if(y==1){write_com(0x80+x);write_dat(c);}if(y==2){write_com(0xc0+x);write_dat(c);} }//****************************************************************************************************void H_1602()//********************1602要显示的内容{ w_char(2+48,0,1);w_char(48,1,1);w_char(year/10%10+48,2,1);w_char(year%10+48,3,1);w_char(:,4,1);w_char(month/10+48,5,1);w_char(month%10+48,6,1);w_char(:,7,1);w_char(day/10+48,8,1);w_char(day%10+48,9,1);w_string(D,11,1);w_char(:,14,1);w_char(week%10+48,15,1);w_char(hour/10+48,0,2);w_char(hour%10+48,1,2);w_char(:,2,2);w_char(minute/10+48,3,2);w_char(minute%10+48,4,2);w_char(:,5,2);w_char(second/10+48,6,2);w_char(second%10+48,7,2);w_char((uint8)T/10%10+48,9,2);w_char((uint8)T%10+48,10,2);w_char(.,11,2);w_char((uint16)(T*10)%10+48,12,2);w_char(0xdf,13,2);//显示圆点w_char(67,14,2);//显示大写字母C}void closeLED()//******************关闭数码管函数{shang=0x00;xia=0x00;}//****************************************************************************************************void init(){timer0_init();ds1302_init();init_1602();closeLED();}//****************************************************************************************************main(){init();beginchange();while(1){jishi0();H_1602();}}
上一页 1 2 3 下一页

评论


技术专区

关闭