当前时间格式为: 秒 分 时 日 月 星期 年7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B***********************************************************************/void Get1302(uchar ucCurtime[]) {uchar i;uchar ucAddr = 0x81;EA = 0;for (i=0; i<7; i++){ucCurtime[i] = R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */ucAddr += 2;}EA = 1;}//DS18B20延时函数void delay(unsigned int i){while(i--);}//DS18B20初始化函数void Init_DS18B20(void){unsigned char x=0;DQ = 1; //DQ复位delay(8); //稍做延时DQ = 0; //单片机将DQ拉低delay(80); //精确延时 大于 480usDQ = 1; //拉高总线delay(14);x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(20);}uchar ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ) dat|=0x80;delay(4);}return(dat);}//DS18B20写一个字节void WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;}}//DS18B20读取温度uint ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*0.0625; //将温度的高位与低位合并t= tt*10+0.5; //对结果进行4舍5入return(t);}//void lcd_delay(uchar ms) /*LCD1602 延时*/{uchar j;while(ms--){for(j=0;j<250;j++){;}} }void lcd_busy_wait() /*LCD1602 忙等待*/{lcd_rs_port = 0;lcd_rw_port = 1;lcd_en_port = 1;lcd_data_port = 0xff;while (lcd_data_port&0x80);lcd_en_port = 0; }void lcd_command_write(uchar command) /*LCD1602 命令字写入*/{lcd_busy_wait();lcd_rs_port = 0;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = command;lcd_en_port = 1;lcd_en_port = 0;}void lcd_system_reset() /*LCD1602 初始化*/{lcd_delay(20);lcd_command_write(0x38);lcd_delay(100);lcd_command_write(0x38);lcd_delay(50);lcd_command_write(0x38);lcd_delay(10);lcd_command_write(0x08);lcd_command_write(0x01);lcd_command_write(0x06);lcd_command_write(0x0c); lcd_data_port = 0xff; /*释放数据端口*/}void lcd_char_write(uchar x_pos,y_pos,lcd_dat) /*LCD1602 字符写入*/{x_pos &= 0x0f; /* X位置范围 0~15 */y_pos &= 0x01; /* Y位置范围 0~ 1 */if(y_pos==1) x_pos += 0x40;x_pos += 0x80;lcd_command_write(x_pos);lcd_busy_wait();lcd_rs_port = 1;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = lcd_dat;lcd_en_port = 1;lcd_en_port = 0; lcd_data_port = 0xff; /*释放数据端口*/}unsigned char j,k,a1,a0,s=0;unsigned int m;sbit CM=P3^2;sbit beep=P2^3;void delay2(uchar z)//延时函数{ uchar a,b; for(a=z;a>0;a--) for(b=110;b>0;b--);}void main(){ unsigned char shi,ge;uchar i,ma=5;uint temp; //温度值lcd_system_reset(); /*LCD1602 初始化*//////////////////////////////////////////////////////////////////P0=0X00;//关掉数码管的信号。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-112296-4.html
西方列强普遍认为吨位和火炮数量占优的日本海军胜算较大
多少人丢了这份执着