万年历课程设计报告 联系客服

发布时间 : 星期一 文章万年历课程设计报告更新完毕开始阅读0b62a5b4a0116c175f0e48f4

inf=output_BYTE(); T_CLK=1; T_RST=0;

return (inf); }

void init_1302() {

write_1302(0x8e,0x00);//关闭写保护; // write_1302(0x90,0xaa);//设置充电方式; write_1302(0x80,0x00);//秒寄存器初始化; write_1302(0x82,0x01);//分....... write_1302(0x84,0x10);//时....... write_1302(0x86,0x01);//日........ write_1302(0x88,0x10);//月....... write_1302(0x8a,0x02);//星期...

write_1302(0x8c,0x13);//年...... write_1302(0x8e,0x80);//打开写保护; }

/********************************** 闹钟显示子程序

**********************************/ void show_naozhong(uchar x,uchar y) {

uchar i,x1,x2,y1,y2; x1=x/10; //十位 x2=x;//个位

WriteAddress(0x80+0x0b); //显示闹钟的小时部分 WriteData(table1[x1]); WriteAddress(0x80+0x0c); WriteData(table1[x2]);

y1=y/10; //十位 y2=y;//个位

WriteAddress(0x80+0x0e); //显示闹钟的分钟部分 WriteData(table1[y1]); WriteAddress(0x80+0x0f); WriteData(table1[y2]);

WriteAddress(0x80+0x0d); //显示小时与分钟之间的那个冒号 WriteData(':');

WriteAddress(0x80); //显示字符串:Alarm Clock for(i=0;i<11;i++) {

29

WriteData(table[i]); }

WriteAddress(0x80+0x40); //显示字符串:Today is fine! for(i=0;i<14;i++) {

WriteData(table3[i]); } }

void main(void) {

uchar i;

uchar TL; //储存暂存器的温度低位 uchar TH; //储存暂存器的温度高位 uchar TN; //储存温度的整数部分 uchar TD; //储存温度的小数部分 LcdInitiate(); //将液晶初始化 init_1302();

delaynms(5); //延时5ms给硬件一点反应时间 // if(Init_DS18B20()==1) // display_error(); EA=1;//开总中断

EX1=1;//开外部中断1 IT1=0;//下降沿触发

WriteAddress(0x80+0x10); for(i=0;i<6;i++) {

WriteData(table4[i]); }

WriteAddress(0x80+0x50); for(i=0;i<16;i++) {

WriteData(table5[i]); }

for(i=0;i<16;i++) {

write_com(0x18); delaynms(250); }

delaynms(250); delaynms(250); delaynms(250); write_com(0x01); while(1)

30

// // // //

{

t_sec=read_1302(0x81);//读秒 ; sec1=t_sec&0x0f; sec2=(t_sec>>4);

t_min=read_1302(0x83);//读分 ; min1=t_min&0x0f; min2=(t_min>>4);

t_hour=read_1302(0x85);//读小时 ; hour1=t_hour&0x0f; hour2=(t_hour>>4);

WriteAddress(0x80+0x40+0x08); //显示小时 WriteData(table1[hour2]); WriteAddress(0x80+0x40+0x09); WriteData(table1[hour1]); t_day=read_1302(0x87);//读日; day1=t_day&0x0f; day2=(t_day>>4);

t_mon=read_1302(0x89);//读月 ; mon1=t_mon&0x0f; mon2=(t_mon>>4);

week=read_1302(0x8b);//读星期 ; week1=week&0x0f;

t_year=read_1302(0x8d);//读年 ; year1=t_year&0x0f; year2=(t_year>>4);

WriteAddress(0x80+0x06); WriteData('2');

WriteAddress(0x80+0x07); WriteData('0');

WriteAddress(0x80); //显示星期(0x80~0x80+0x05) for(i=0;i<4;i++) {

WriteData(table2[i]); }

31

WriteAddress(0x80+0x04); WriteData(table1[week1]);

WriteAddress(0x80+0x08);//显示年 WriteData(table1[year2]); WriteAddress(0x80+0x09); WriteData(table1[year1]);

WriteAddress(0x80+0x0a); //显示‘/’ WriteData('/');

WriteAddress(0x80+0x0b);//显示月 WriteData(table1[mon2]); WriteAddress(0x80+0x0c); WriteData(table1[mon1]);

WriteAddress(0x80+0x0d); //显示‘/’ WriteData('/');

WriteAddress(0x80+0x0e);//显示日 WriteData(table1[day2]); WriteAddress(0x80+0x0f); WriteData(table1[day1]); /*第一行在此显示完毕*/

display_dot(); //显示温度的小数点 display_cent(); //显示温度的单位

WriteAddress(0x80+0x40+0x08); //显示小时 WriteData(table1[hour2]); WriteAddress(0x80+0x40+0x09); WriteData(table1[hour1]);

WriteAddress(0x80+0x40+0x0a); //显示':' WriteData(':');

WriteAddress(0x80+0x40+0x0b); //显示分钟 WriteData(table1[min2]); WriteAddress(0x80+0x40+0x0c); WriteData(table1[min1]);

WriteAddress(0x80+0x40+0x0d); //显示':' WriteData(':');

WriteAddress(0x80+0x40+0x0e); //显示秒 WriteData(table1[sec2]);

32