📄 main.c
字号:
/********************************************************************
;便携式温度计
;数码管引脚连接:a=P1.3 b=P1.2 c=P1.1 d=P1.0 e=P1.6 f=P1.4 g=P1.5 h=nc共阳;
;编写人:芦庆
;时间:2008年7月27日
;主控芯片:AT89C2051-24PU
;温度传感器:DS18B20
;占用资源:定时器0,P1口,P3.2,P3.3,P3.4,P3.5,P3.7
;晶振速度:6MHz
;
;ROM指令 代码
;Read ROM(读ROM) [33H]
;Match ROM(匹配ROM) [55H]
;Skip ROM(跳过ROM] [CCH]
;Search ROM(搜索ROM) [F0H]
;Alarm search(告警搜索) [ECH]
;
;存储器操作指令 代码
;Write Scratchpad(写暂存存储器) [4EH]
;Read Scratchpad(读暂存存储器) [BEH]
;Copy Scratchpad(复制暂存存储器) [48H]
;Convert Temperature(温度变换) [44H]
;Recall EPROM(重新调出) [B8H]
;Read Power supply(读电源) [B4H]
************************************************************/
#include "config.h"
uint8 DispLED[4];//数码管显示缓冲区
uint8 code DispDB[15]={//字形码
0xA0,0xF9,0x92,0xD0,0xC9,0xC4,0x84,0xF1,//0,1,2,3,4,5,6,7
0x80,0xC0,0xDF,0xD9,0x87,0x81,0xAE};//8,9,-,-1,F,A,L
uint8 code DispCon[4]={0xFB,0xF7,0xEF,0xDF};//段位控制码
uint8 code DayStr[]=__DATE__;
uint8 code TimeStr[]=__TIME__;
uint8 Temp[2];//原始温度数据
uint8 flag_LED;//数码管显示段位标志
uint8 flag;
void main(void)
{
TMOD = (TMOD & 0X0F) | 0X10;
TL1 = 0x00;
TH1 = 0x00;
TR1 = 1;
ET1 = 1;
TT0();
OSStart();
}
void DS18B20(void)
{
while (1)
{
Temperature_all();
init_1820();
OSWait(K_TMO,4);
}
}
void LED(void)
{
while (1)
{
P3|=0x3C;//关闭显示
P1=DispDB[DispLED[flag_LED]];
switch(flag_LED)
{
case 0:
if(DispLED[0]==0)//首位0消隐
{
P3&=0xFF;//关闭显示
}
else
{
P3&=0xFB;
}
flag_LED+=1;
break;
case 1:
if((DispLED[0]==0) && (DispLED[1]==0))//次位0消隐
{
P3&=0xFF;//关闭显示
}
else
{
P3&=0xF7;
}
flag_LED+=1;
break;
case 2:
P3&=0xEF;
flag_LED+=1;
break;
case 3:
P3&=0xDF;
flag_LED=0;
break;
}
mDelay(1);
}
}
void UserTickTimer()
{
static uint8 stop_num=0;//系统停止计数器
stop_num++;
if(stop_num>=39)
{
P3=0XFF;
PCON=STOP_;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -