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

📄 temp.c

📁 单片机温度控制系统源代码
💻 C
字号:
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
#include <reg52.h>
#include <stdio.h>
#include <lcd.h>

//通过ADC0832采样模拟数据
sbit SCS=P3^6;
sbit SCLK=P3^5;
sbit SDOUT=P3^3;
sbit SDIN=P3^4;

sbit led1 = P1^6;
sbit led2 = P1^7;


//sbit EPIN = P1^2;	   //LCM1602使能信号
uchar buf[3];
uchar bdata DATAIN;
sbit BITIN=DATAIN^0;
sbit buzzer=P3^7;
uint get_data;


void buzz(uchar b)	  //蜂鸣器发音
{
	uchar i;
	uint j;
	for(j=0;j<b*256;j++)
	{
		for(i=100;i>0;i--);//i的大小决定输出频率
		buzzer=~buzzer;
	}
}


uchar get_ad(bit channel)
{ 
	uchar i;

	SCLK=0;	
	SCS=1;//选通允许 
	SCS=0;	
	SDIN=1;	//启动位
	SCLK=1;
	SDIN=1;//SGL
	SCLK=0;
	SCLK=1;
	SDIN=channel;//ODD=1; 选CH0。
	SCLK=0;
	SCLK=1;
	SCLK=0;
	SCLK=1;
	SCLK=0;
	for(i=0;i<8;i++)
	{
		DATAIN=DATAIN<<1; //移位8次取到采样的值
		BITIN=SDOUT;
		SCLK=1;
		SCLK=0;
	}
	SCS=1;
	return(DATAIN);	
}

void convert()
{
   uint temp=0;
   temp=get_ad(0);
   get_data = (uint)temp*100/255 ;
     
	 if( get_data < 30)
    {
      led1 = 1;
      led2 = 0;
	  buzz(5);
    }
  else if( get_data > 60)
    {
     led1 = 0;
     led2 = 1;
	 buzz(20);
    }
  else
   {
     led1 = 0;
     led2 = 0;
   }
 
   
}

void main()
{


  EPIN=0;
  lcdreset();
  lcdwda(0,0,"THE temprure IS");
  lcdwda(0,1,"measrued:        ");	
  while(1)  
  {	
     convert();
	 
	 buf[0]=get_data%1000/100;
     buf[1]=get_data%100/10;
     buf[2]=get_data%10;

   	lcdchar (9,1,buf[0]+0x30);
    lcdchar (10,1,buf[1]+0x30);
   	lcdchar (11,1,buf[2]+0x30); 
  }
  
}









⌨️ 快捷键说明

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