{ DELAY2(); DELAY2(); }//延迟4us void DELAY8() { DELAY4(); DELAY4();
}//延迟8us //
void IIC_WRITE( unsigned char dat) { unsigned char temp; for(temp = 0; temp < 8; temp++) { SCL=0;
if((dat << temp) & 0x80) { SDA=1; } else { SDA=0; }
DELAY2(); SCL=1; DELAY4(); SCL=0; } DELAY4(); SDA = 1; DELAY2(); SCL = 1; DELAY4(); SCL = 0; }
unsigned char GET_HOUR() { //START
hour = 0; unsigned char temp; SDA = 1;
11 / 13
SCL = 1; DELAY8(); SDA = 0; DELAY8(); //WRITE IIC_WRITE(0XD0);
//HOURADDRESS IIC_WRITE(0X02);
//RESTART SDA = 1; SCL = 1; DELAY8(); SDA = 0; DELAY8(); //READ IIC_WRITE(0XD1);
//READHOUR SDA = 1; for(temp = 0; temp < 8; temp++) { hour = hour << 1; SCL=1; DELAY2(); if(SDA == 1) { hour++; }
SCL=0; }
//SENDNOACK SDA = 1; SCL = 1; DELAY4(); SCL = 0; //STOP SDA = 0;
12 / 13
}
SCL = 1; DELAY8(); SDA = 1; DELAY4(); SCL = 0; return hour;
四、心得体会
通过这次的实验设计,我深入了对单片机的了解,也明白了日常生活中处处有自动控制的例子,其中不乏有各种系列的单片机,同时我也认识到对单片机的学习应该更加深入才能得心应手,虽然只是一个芯片而已,但是如果你具备足够的知识,就可以充分利用,根据自己的设想就可以做出各种实用的东西,而我现在发现自己基本还处于初级阶段,需要更加努力,特别是编程能力,当然也有收获,首先我对protel的使用更有信心了,又发现了其中的一些功能,同时我也了解了一些其它芯片,比如EEPROM存储芯片AT24C02的非易失性,DS1302时钟芯片可以精确的计时,为了与电脑进行串口通讯必须采用转串口芯片比如MAX232,从而实现单片机的TTL电平到RS232电平的转换。总之这次设计实验收获不少,反省也不少,但重要的是更激发了我对单片机学习的热情。
13 / 13