在数码管上显示温度启动继电器

#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char 
	bit fiag;
sbit D0=P2^2;
sbit  duan=P2^5;
sbit  wei=P2^6;
sbit  fmq=P3^3;

sbit si=P1^0;//数据输入口
sbit rck=P2^3;//595移位寄存器,数据送输出的时钟
sbit srck=P1^4;//595数据    写进   移位 寄存器时钟输入口
uchar code suzu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};
uint temp;
void wo_74_hc595(uchar v)
{
	uchar H;
	rck=0;
	
for(H=0;H<8;H++)
	{
	srck=0;
	si=(v<<H)&0x80;
	srck=1;		
  }
	rck=1;
	si=1;
	 }
 

void delay(uchar x)
{
  uchar a,b;
	for(a=x;a>0;a--)
	 for(b=200;b>0;b--);
}
void delayyanshi(uint t )
   
	{ while(t--);}
	 
	 
	 
void D0_reset(void)
      {
 D0=1;
	delayyanshi(5);
 D0=0;
	delayyanshi(80);
 D0=1;
	delayyanshi(14);
	if(D0==0)
		fiag=1;
	else
		fiag=0;
	delayyanshi(20);
      }
bit D0_read_bit()
			  {
	bit dat;
D0=0;
_nop_();
_nop_();
D0=1;
_nop_();
dat=D0;
delayyanshi(10);
return	dat;				
				}
uchar D0_read_byte()
				   {
uchar i,j,k;
for(i=0;i<8;i++)//循环8次
  {
	j=D0_read_bit();
	k=(j<<7)|(k>>1);
	
	}	
return k;	
					 }
void D0_write_byte(uchar dat)
      {
uchar i;
for(i=0;i<8;i++)
				{
D0=0;
_nop_();
D0=dat&0x01;
delayyanshi(6);
D0=1;
dat=dat>>1;
				}
				delayyanshi(6);
			}
uint read_temperature()
			{
uchar a,b;
				D0_reset();
				D0_write_byte(0xcc);
				D0_write_byte(0xbe);
				a=D0_read_byte();
				b=D0_read_byte();
				temp=b;
				temp=temp<<8;
				temp=temp|a;
				temp=temp*0.0625*10+0.5;
				
				
				return temp;
			}
void display(uint temp)
			{
				
				wei=1;
				P0=0x01;
				wei=0;
				duan=1;
				P0=suzu[temp/100];
				duan=0;
				delay(4);
				
				
				
				wei=1;
				P0=0x02;
				wei=0;
				duan=1;
				P0=suzu[temp%100/10]&0x7f;
				duan=0;
				delay(4);
			
        
				
				
				wei=1;
				P0=0x04;
				wei=0;
				duan=1;
				P0=suzu[temp%10];
				duan=0;
				delay(2);
				
			
				
				
				
				}
			
void main(void)
{
	
	while(1)
	{
D0_reset();
D0_write_byte(0xcc);
D0_write_byte(0x44);
	display(read_temperature());
		
	
 
   
			if(read_temperature()>=290)
			wo_74_hc595(0x07);//继电器闭合
	    else
		  wo_74_hc595(0x00);//继电器打开
	 
		}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值