?? ds.c
字號:
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define disdata P0
#define discan P2
sbit bin=P0^7;
sbit dq=P2^2;
uint h;
uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,
0x08,0x08,0x09,0x09,} ;
uchar code dis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff,0xbf};
uchar code scan_con[4]={0xef,0xdf,0xbf,0x7f};
uchar data temp_data[2]={0x00,0x00};
uchar data display[5]={0x00,0x00,0x00,0x00,0x00};
delay(uint t)
{
for(;t>0;t--);
}
scan()
{ uchar i;
for(i=0;i<4;i++)
{
disdata=dis_7[display[i]] ;
if(i==1
{bin=0;}
discan=scan_con[i];delay(99);discan=0xff;
}
}
reset(void)
{
uchar presence=1;
while(presence)
{
while(presence)
{
dq=1;_nop_(); _nop_();
dq=0;delay(50);
dq=1;delay(6);
presence=dq;
}
delay(45);
presence=~dq;
}
dq=1;
}
void write_byte(uchar val)
{
uchar i;
for(i=8;i>0;i--)
{
dq=1;_nop_();_nop_();
dq=0;_nop_();_nop_();_nop_();_nop_();_nop_();
dq=val&0x01;delay(6);
val=val/2;
}
dq=1;delay(1);
}
uchar read_byte(void)
{
uchar i;
uchar value=0;
for(i=8;i>0;i--)
{
dq=1;_nop_();_nop_();
value>>=1;
dq=0;_nop_();_nop_();_nop_();_nop_();
dq=1;_nop_();_nop_();_nop_();_nop_();
if(dq)
value|=0x80;
delay(6);
}
dq=1;
return(value);
}
read_temp()
{
reset();
write_byte(0xcc);
write_byte(0xbe);
temp_data[0]=read_byte();
temp_data[1]=read_byte();
reset();
write_byte(0xcc);
write_byte(0x44);
}
work_temp()
{
uchar n=0;
if(temp_data[1]>127)
{
temp_data[1]=(256-temp_data[1]);
temp_data[0]=(256-temp_data[0]);
n=1;
}
display[4]=temp_data[0]&0x0f;
display[0]=ditab[display[4]];
display[4]=((temp_data[0]&0xf0>>4)|((temp_data[1]&0x0f)<<4));
display[3]=display[4]/100;
display[1]=display[4]%100;
display[2]=display[1]/10;
display[1]=display[1]%10;
if(!display[3])
{
display[3]=0x0a;
if(!display[2])
{
display[2]=0x0a;
}
}
if(n)
display[3]=0x0b;
}
void main()
{
disdata=0xff;
discan=0xff;
for(h=0;h<4;h++)
{
display[h]=8;
}
reset();
write_byte(0xcc);
write_byte(0x44);
for(h=0;h<500;h++)
{scan();}
while(1)
{
read_temp();
work_temp();
for(h=0;h<400;h++)
{scan();}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -