📄 main.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 + -