📄 temp.c
字号:
#include<reg52.h>
/*************************************************
引用外部函数
**************************************************/
extern WRBYTES(unsigned masteraddr,unsigned char Ramaddr,char buf[],unsigned char num,bit wr);
sbit LED_DIG = P1^3;
sbit LED_COM = P1^2;
unsigned char counter = 0;
unsigned int Temp;
unsigned char Disbuf[] = {0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a}; //显示初始化,全部消隐
unsigned char code DisCode[] = {0x0C0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0xFF};
//共阳极数码管码表,定位在ROM中
/********************************
显示延时
*********************************/
void Delay(void)
{
unsigned char i = 200;
while(i--);
}
/********************************
带参数传递的显示程序
*********************************/
void Display(unsigned char Dat[8])
{
static unsigned char i = 0;
unsigned LED_Posit = 0x01;
for(i = 0;i<8;i++)
{
if(i==1)
P0 = DisCode[Dat[i]]&0x7f; //送段选
else
P0 = DisCode[Dat[i]]; //送段选
LED_DIG = 1;
LED_DIG = 0;
P0 = LED_Posit; //选通一个数码管
LED_COM = 1;
LED_COM = 0;
Delay();
P0 = 0; //消隐
LED_COM = 1;
LED_COM = 0;
LED_Posit<<=1;
}
}
/******************************
读温度植
********************************/
void GetTemp()
{
WRBYTES(0x90,0x00,Disbuf,2,1);
Temp = Disbuf[0];
Temp<<=8;
Temp+=Disbuf[1];
Temp>>=7;
Temp*=10;
Temp /= 2;
Disbuf[2] = Temp/100;
Disbuf[1] = (Temp%100)/10;
Disbuf[0] = Temp%10;
}
/*************************************
主函数
**************************************/
main()
{unsigned char i;
/*TMOD = 0x01;
TR0 = 1;
ET0=EA=1;*/
while(1)
{
for(i=0;i<250;i++)
Display(Disbuf); //必须等待一段时间再读,否则会打断转换
GetTemp();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -