河南科技大学毕业论文
}
}
LED3=1;
if((time_buf1[4]>5&&time_buf1[4]<23)&&IRON==1&&LEDON==0) {
if(HC_SR0==0)
LED0=0;
else
LED0=1;
if(HC_SR1==0)
LED1=0;
else
LED1=1;
if(HC_SR2==0)
LED2=0;
else
LED2=1;
}
if(HC_SR3==0)
LED3=0;
else
LED3=1;
else if((time_buf1[4]<=5||time_buf1[4]>=23)&&IRON==1) { }
if(HC_SR0==0||HC_SR1==0||HC_SR2==0||HC_SR3==0)
INT1=0;
37
河南科技大学毕业论文
void init() { }
void main() {
init(); ds1302_init();
ds1302_write_time();//写入时间 while(1) {
if((time_buf1[4]==5)&&(time_buf1[5]==59)&&(time_buf1[6]==59)) IRON=1; hr_test();
}
void external1() interrupt 2 {
dat_c=0; SPK=0; TMOD=0x10; EA=1; ET1=1; TR1=1; EX1=1; IT1=0;
}
uchar i,j,t=20; while(t--) {
if(IRON==1)
38
河南科技大学毕业论文
}
}
{ }
for(i=0;i<220;i++) { }
SPK=0;//防止一直给喇叭通电造成损坏
if(INT1==1)
break;
for(j=0;j<20;j++) { }
SPK=!SPK;
display(8,0);
for(i=0;i<200;i++) { }
if(INT1==1)
break;
if(INT1==1)
break;
ds1302_read_time(); display(8,0);
LED0=1; LED1=1; LED2=1; LED3=1; INT1=1;
void timer1() interrupt 3
39
河南科技大学毕业论文
{
TH1=(65536-2500)/256; TL1=(65536-2500)%6;
ds1302_read_time(); if(DAT==1) { }
else if(DAT==0) {
dat_c++;
TempData[0]=SEG_DuanMa[time_buf1[1]/10]; TempData[1]=SEG_DuanMa[time_buf1[1]]; TempData[2]=0x40;
TempData[0]=SEG_DuanMa[time_buf1[4]/10];//时 //数据的转换, TempData[1]=SEG_DuanMa[time_buf1[4]]; TempData[2]=0x40;
//加入\
TempData[3]=SEG_DuanMa[time_buf1[5]/10];//分 TempData[4]=SEG_DuanMa[time_buf1[5]]; TempData[5]=0x40;
TempData[6]=SEG_DuanMa[time_buf1[6]/10];//秒 TempData[7]=SEG_DuanMa[time_buf1[6]];
TempData[3]=SEG_DuanMa[time_buf1[2]/10]; TempData[4]=SEG_DuanMa[time_buf1[2]]; TempData[5]=0x40;
TempData[6]=SEG_DuanMa[time_buf1[3]/10]; TempData[7]=SEG_DuanMa[time_buf1[3]]; if(dat_c>10) {
dat_c=0; DAT=1;
40
河南科技大学毕业论文
}
}
}
display(8,0);
下面为操作DS1302的头程序(ds1302.h):
/********************************************************************/ #include
#define uchar unsigned char #define uint unsigned int
#define ds1302_sec_addr #define ds1302_min_addr #define ds1302_hour_addr #define ds1302_day_addr
0x80 0x82 0x84 0x86 0x88 0x8a 0x8c 0x8e
//秒数据地址 //分数据地址 //时数据地址 //日数据地址 //月数据地址 //星期数据地址 //年数据地址 //控制数据地址
#define ds1302_month_addr #define ds1302_week_addr #define ds1302_year_addr
#define ds1302_control_addr #define ds1302_charger_addr
0x90
#define ds1302_clkburst_addr 0xbe
uchar time_buf1[8] = {20,13,4,27,22,59,00,6};
//空年月日时分秒周
uchar time_buf[8]; //空年月日时分秒周
sbit DS1302_CLK=P1^5; sbit DS1302_IO=P1^6; sbit DS1302_RST=P1^7;
41