⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ceshi.c

📁 单片机单片机单单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机片机单片机单片机单片机
💻 C
字号:
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int; 

sbit dula=P2^6;
sbit wela=P2^7;
sbit dq=P2^2;
sbit feng=P2^3;

uint c1_temper;
uint L_temper;
uint H_temper;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,
0xBf,0x86,0xDb,0xCf,0xE6, 0xEd,0xEd,0x87,0xFf,0xEf};

void init();
/*****************复位*************************/


void delay_ms(uint z)//毫秒级的延迟
{	
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);	
}

void delay_us()//延时微秒
{
	_nop_();
}

void dq_reset()
{
	uchar t;
	uchar dd;
	dq=0;
	for(t=250;t>0;t--);
	dq=1;
	delay_us();delay_us();
	dd=dq;
	for(t=150;t>0;t--);
}

/******************读位写位**********************/

uchar read_bit()
{
	uchar t;
	uchar dd;

	dq=0;
	delay_us();delay_us();
	dq=1;
	for(t=3;t>0;t--);
	dd=dq;//get the signal
	for(t=20;t>0;t--);
	return dd;
}

void write_bit(uchar dd)
{
	uchar t;

	if(dd==1)
	{
		dq=0;
		delay_us();
		dq=1;
		for(t=30;t>0;t--);	
	}	
	else
	{
		dq=0;
		for(t=30;t>0;t--);
		dq=1;
		delay_us();
		delay_us();
	}
}

void write_cmd(uchar z)//写命令
{
	uchar i,t;
	uchar temp;
	uchar cmd=z;

	for(i=0;i<8;i++)
	{
		temp=cmd&0x01;
		if(temp)
		{
			dq=0;
			delay_us();delay_us();//
			dq=1;
			for(t=40;t>0;t--);	
		}
		else
		{
			dq=0;
			for(t=40;t>0;t--);
			dq=1;
			delay_us();	delay_us();		
		}
		cmd=_cror_(cmd,1);
	}	
	
}

/*****************温度******************************/

uchar read_byte()//读字节
{ 
	uchar i;
	uchar temp; 
	uchar dd;

	temp=0x00; 
	for(i=0;i<8;i++) 
	{ 
		temp=_cror_(temp,1); 
		dd=read_bit();
		if(dd==1) 
		{ 
			temp=temp|0x80; 
		} 
		else 
		{ 
			temp=temp|0x00; 
		} 
	} 
	return(temp); 
} 

uint get_temper()//get centigrad for the ram
{

	uchar LSB_temper;
	uchar MSB_temper;
	//uchar i;
	uint c_temper=0;
	float f_temper=0;
	
	dq_reset();
	write_cmd(0xcc);
	//write_cmd(0x55);
	/*if(z==1)
	{
		for(i=0;i<8;i++)
		{
			write_date(code1[i]);
		}
	}
	else 
	{
		for(i=0;i<8;i++)
		{
			write_date(code2[i]);
		}
	}*/
	write_cmd(0xbe);//读存储器内的温度

	LSB_temper=read_byte();
	MSB_temper=read_byte();
	
	c_temper=MSB_temper;
	c_temper=(c_temper<<8);
	c_temper=c_temper|LSB_temper;
	f_temper=c_temper*0.0625;
	c_temper=f_temper*10+0.5;
	
	return (c_temper);
}

/******************温度显示***********************/

void display_temper(uint wengdu,uchar fc)//显示当前温度值
{
	uchar xx,yy,zz;
	uint temp;
	
	temp=wengdu;
	xx=temp/100;
	yy=temp%100/10;
	zz=temp%10;
	
	wela=1;
	P0=0xfe;
	wela=0;

	P0=0x00;
	dula=1;
	P0=table[xx];
	dula=0;
	delay_ms(2);
	
	P0=0xff;
	wela=1;
	P0=0xfd;
	wela=0;

	P0=0x00;
	dula=1;
	P0=(table[yy]+0x80);
	dula=0;
	delay_ms(2);
	
	P0=0xff;
	wela=1;
	P0=0xfb;
	wela=0;

	P0=0x00;
	dula=1;
	P0=table[zz];
	dula=0;
	delay_ms(1);

	P0=0xff;
	wela=1;
	P0=0xdf;
	wela=0;

	P0=0x00;
	dula=1;
	P0=table[fc];
	dula=0;
	delay_ms(1);
}



void init()//初始化
{
	L_temper=100;
	H_temper=320;
	
	c1_temper=200;
	dula=0;
	wela=0;
}

void main()
{
	init();
	uint i;
	while(1)
	{
		dq_reset();
		write_cmd(0xcc);
		write_cmd(0x44);
		c1_temper=get_temper();
		for(i=10;i>0;i--)
		{
			display_temper(get_temper(),1);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -