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

📄 main.c

📁 单个18B20的测温程序,其单片机接口可以改为适合的即可将其嵌入系统程序中.
💻 C
字号:
#include "AT89x51.h"
#include "1820.h"
#include"at89x51.h"
unsigned char code leddata[]={  
                0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,
                0xA1,0x86,0x8E,0x89,0xC7,0xC8,0xC1,0x8C,0xA3,0xBF, 0xff}; // "1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,H,L,n,u,P,O,-"字符表

uchar U6,U7;
uchar a,b;
uchar DispBuf[4];
extern uint Temperature;


void int1() interrupt 3    //T1中断,时间是1ms
{
	static uchar i=0;
	static uchar SegBit=0x08;
	TR1=0;                     //关中断
	TH1=0xEE;                  //装定时器初值
	TL1=0x00; 
	ET1=1;                    //开中断                 
	TR1=1; 
	P0 = 0xff;               //关数据
	P1 = 0xff;               //关数码管
	P0 = leddata[DispBuf[i++]];  //送缓冲区数据到P0口
	P1=~SegBit;                  //选位
	SegBit >>= 1;                //位值右移一位
	if( i==4 )                  //如果右了三次,就归零
		i=0;
	if(SegBit==0x00)            //选通了第四位数码管,位值返回初值
		SegBit=0x08;
}

void main( void )
{ 
      
          unsigned int m;
	       TMOD=0x10;              //设置为T1定时器
	       TH1=0xEE;              //装定时器初值
	       TL1=0x00;
		   TemperatuerResult();  //测温
	       Temperature%=100;     //处理测得的数据
		   a = Temperature/10;
		   b = Temperature%10;
		   DispBuf[2] = b;       //送值到显示缓冲区
		   DispBuf[3] = a;
		   TR1=1;                //开中断
	       ET1=1; 
	       EA=1; 
		DispBuf[0] = 23;   //第四位不显示
		DispBuf[1] = 23;   //第三位不显示
       while(1) 
		  {
			m++;
			if(m==60000)
					{
					m=0;
					TR1=0;
					TemperatuerResult();
					TR1=1;
					Temperature%=100;
					a = Temperature/10;
					b = Temperature%10;
				    DispBuf[2] = b;
		            DispBuf[3] = a;
					}
	      }			

}

⌨️ 快捷键说明

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