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

📄 lm75a.txt

📁 基于51单片机的温度和电压采集与循环显示的控制程序
💻 TXT
字号:
#include <REG51.H>      //"D:\Keil\C51
#include <ABSACC.H>

#include <ADC_TEMP.H>

extern uchar DispBuf[8]; 
extern bit I2C_Gets(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat);

int LM75A_GetTemp();
void DispTemp(int t);

/*
函数:LM75A_GetTemp
功能:读出LM75A的温度值
返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)
*/
int LM75A_GetTemp()
{
	unsigned char buf[2];
	int t;
	I2C_Gets(0x90,0x00,2,buf);
	t = buf[0];
	t <<= 8;
	t += buf[1];
	t >>= 5;	//去掉无关位
	return t;
}

/*
函数:DispTemp()
功能:在数码管上显示出温度值
参数:
	t:补码,除以8以后才是真正温度值
*/
void DispTemp(int t)
{
	code unsigned char Tab[8][3] =
	{
		0,0,0,
		1,2,5,
		2,5,0,
		3,7,5,
		5,0,0,
		6,2,5,
		7,5,0,
		8,7,5
	};
        
        bit s;   //符号位
        unsigned char i; //整数部分
        unsigned char d; //小数部分
        unsigned char x100,x10,x; 
        
        s=0;  //分离出符号
        DispBuf[7]=0x0A;  //最高位灭
        if(t<0)
          { s=1;
            t=-t;
            DispBuf[7]=0x0C;//最高显示“-”
          }
        i=t/8;  //分离出整数和小数部分
        d=t%8;
        
        x100=i/100;
        DispBuf[6]=x100;
        x10=(i-x100*100)/10;
        DispBuf[5]=x10;
        x=(i-x100*100)%10;
        DispBuf[4]=x;
        
        DispBuf[4]=x|0x80;//显示小数点

        DispBuf[3]=Tab[d][0];
        DispBuf[2]=Tab[d][1];
        DispBuf[1]=Tab[d][2];

        DispBuf[0]=14;  //disp_seg的第14个字型 C

}      


⌨️ 快捷键说明

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