#include
#define uchar unsigned char
#define uint unsigned int
#define dq rc1
#define dq_high() trisc1=1
#define dq_low() trisc1=0;dq=0
__config(0x3b31);
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f};
const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};
uint temper;
uchar a1,a2,a3,a4;
void delay(uint x);
void delayus(uint,uchar);
void init();
void disp(uchar num1,uchar num2,uchar num3,uchar num4);
void write_byte(uchar date);
uchar read_byte();
void get_tem();
void main()
{
init();
while(1)
{
/*delayus(0,0);//20
delayus(1,1);//30
delayus(2,2);//45
delayus(4,4);//70
delayus(70,30);//750
delayus(50,10);//500*/
//uchar num;
get_tem();
//for(num=20;num》0;num--)
//disp(a1,a2,a3,a4);
}
}
void reset()
{
uchar st=1;
dq_high();
nop();nop();
while(st)
{
dq_low();
delayus(70,30);
dq_high();
delayus(4,4);
if(dq==1)
st=1;
else
st=0;
delayus(50,10);
}
}
void write_byte(uchar date)
{
uchar i,temp;
dq_high();
nop();nop();
for(i=8;i》0;i--)
{
temp=date&0x01;//01010101
dq_low();
delayus(0,0);
if(temp==1)
dq_high();
delayus(2,2);
dq_high();
date=date》》1;//00101010
}
}
uchar read_byte()
{
uchar i,date;
static bit j;
for(i=8;i》0;i--)
{
date=date》》1;
dq_high();
nop();nop();
dq_low();
nop();nop();nop();nop();nop();nop();
dq_high();
nop();nop();nop();nop();
j=dq;
if(j==1)
date=date|0x80;//1000 0000
delayus(1,1);
}
return (date);
}
void get_tem()
{
uchar tem1,tem2,num;
float aaa;
reset(); //复位
write_byte(0xcc);//跳过rom
write_byte(0x44);//温度转换
for(num=100;num》0;num--)
disp(a1,a2,a3,a4);
reset();
write_byte(0xcc);
write_byte(0xbe);
tem1=read_byte();
tem2=read_byte();
aaa=(tem2*256+tem1)*6.25;
temper=(int)aaa;
a1=temper/1000;
a2=temper%1000/100;
a3=temper%100/10;
a4=temper%10;
}
void delayus(uint x,uchar y)
{
uint i;
uchar j;
for(i=x;i》0;i--);
for(j=y;j》0;j--);
}
void delay(uint x)
{
uint a,b;
for(a=x;a》0;a--)
for(b=110;b》0;b--);
}
void init()
{
trisd=0;
trisa=0;
portd=0;
porta=0;
}
void disp(uchar num1,uchar num2,uchar num3,uchar num4)
{
portd=table[num1];//显示第一个数码管
porta=0x20;//0010 0000
delay(2);
portd=table1[num2];//显示第二个数码管
porta=0x10;//0001 0000
delay(2);
portd=table[num3];//显示第三个数码管
porta=0x08;//0000 1000
delay(2);
portd=table[num4];//显示第四个数码管
porta=0x04;//0000 0100
delay(2);
/*portd=table[num5];//显示第五个数码管
porta=0x02;//0000 0010
delay(2);
portd=table[num6];//显示第六个数码管
porta=0x01;//0000 0001
delay(2);*/
}
DC/DC降压型控制器LTC3835的性能特点及应用范围
PLC在控制变频器中的应用
如今无人机防御的研究已经越来越受到重视
AMD第二代EPYC霄龙处理器可提供支持128条PCIe4.0
车载无线手机充电器的研究
PIC单片机对数字温度传感器的控制设计
数字源表的应用领域及其功能介绍
1967年的电车难题待解 自动驾驶的道德困境待解
三星Galaxy A8S将搭载京东方LCD打孔屏
红外传感器/监测航迹主机系统-IR Sensor/Monit
光同步线路的抖动特性和分类有哪些?
智能恒温恒湿箱是什么,它的功能特点有哪些
三星GalaxyA8s体验 到底怎么样
广和通5G模组FG360-EAU通过CE认证,加速欧亚及中东地区FWA规模化商用
USB接口静电整改案例
让物联网盈利的五大关键点
时控开关怎么调时间
告别卷时代,动力电池将迎来3.0“叠时代”
什么是横向推拉力试验机?看完这些你就知道了
虹晶提供基于特许65nm LPe制程的SoC方案