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

📄 co.c

📁 温湿度传感器 sht11 仿真程序下载
💻 C
字号:
//proteus仿真论坛:http://proteus.5d6d.com
#define	uchar	unsigned char
#define uint	unsigned int
#define ulong 	unsigned long
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳

#include<REG51.h>
 #include <intrins.h>
 #include <stdio.h> //
#include <math.h>    //Keil library  

 sbit	out =P3^0;	//加热口
 //sbit	input =P1^1;//检测口
 //sbit	speek =P2^0;//报警

 sbit	clo =P3^7;//时钟
 sbit	ST =P3^5;//开始
 sbit	EOC =P3^6;//成功信号

 sbit	gwei =P3^4;//个位
 sbit	swei =P3^3;//十位
sbit	bwei =P3^2;//百位
sbit	qwei =P3^1;//千位

sbit	speak =P0^0;//报警音
sbit	bjled =P0^1;//报警灯
sbit	zcled =P0^2;//正常LED


 int count;
 uchar xianzhi;//取转换结果
uchar seth;//高时间
uchar setl;//低时间
uchar seth_mi;//高时间
uchar setl_mi;//低时间

 bit  hlbz;//高低标志
 bit  clbz;
 bit  spbz;

 






///定时中断程序///
void t0 (void) interrupt 1 using 0
{
   	TH0=(65536-200)/256;//5ms*200=1000ms=1s
 	TL0=(65536-200)%256;
	clo=!clo;//产生时钟
     if(count>5000)
	 {
	   if(hlbz) 
           {
		    if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;}
			else seth_mi--;
		    }
	   if(!hlbz) 
           {
		    if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;}
			else setl_mi--;
		    }
	 count=0;
	 }
     else count++;

        

}
/////////////
///////延时///////
delay(int i)
{
   while(--i);     
     
}     

///////显示处理///////
xianshi()
{
    

	int   abcd=0;
    int i;
  
  for (i=0;i<5;i++)

{  
 abcd=xianzhi;
 gwei=1;
 swei=1;
 bwei=1;
 qwei=1;
 P1=dispcode[abcd/1000];
  qwei=0;
 delay(70);
  qwei=1;
 abcd=abcd%1000;
 P1=dispcode[abcd/100];
 bwei=0;
 delay(70);
 bwei=1;  
 abcd=abcd%100;
 P1=dispcode[abcd/10]; 
 swei=0;
 delay(70);
 swei=1;
 abcd=abcd%10;
 P1=dispcode[abcd]; 
 gwei=0;
 delay(70);
 gwei=1;
 }
}

  doing()
  {
    if(xianzhi>100) 
	   {bjled=0;speak=1;zcled=1;}
	else {bjled=1;speak=0;zcled=0;}
  }




void	main(void)
	{
	seth=60;//h60秒
	setl=90;//l90秒
	seth_mi=60;//h60秒
	setl_mi=90;//l90秒


	TMOD=0X01;//定时0 16位工作模式
 	TH0=(65536-200)/256;
 	TL0=(65536-200)%256;
	
	TR0=1;	//开始计时
	ET0=1;   //开定时0中断
	EA=1;    //开全中断
	while(1)
	{
 	   ST=0;
   _nop_();
	   ST=1;
   _nop_();
	   ST=0;
	//   EOC=0;
	        xianshi();
    
		while(!EOC)
		{
        xianshi();
		 }
       xianzhi=P2;
	           xianshi();
	   doing();


	}
	}


⌨️ 快捷键说明

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