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

📄 main.c

📁 小型便携式温度计的源代码第三版
💻 C
字号:

#include <MAIN.H>
#include <RTX51TNY.H>

/*******************变量定义**********************/
uchar DispLED[4];//数码管显示缓冲区
uchar 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
uchar code DispCon[4]={0xFB,0xF7,0xEF,0xDF};//段位控制码
uchar code DayStr[]=__DATE__;
uchar code TimeStr[]=__TIME__;
uchar Temp[2];//原始温度数据
uchar flag_LED;//数码管显示段位标志
uchar flag;

/****************外部函数声明*************************/
extern void Temperature_change(void);
extern void init_1820(void);
extern void mDelay(uint num);

/********************常量定义*************************/
#define start 0
#define DS18B20 2
#define LED 3
#define Conter 1

/********************程序开始*************************/
void START(void) _task_ start
{
	os_create_task(DS18B20);
	os_create_task(LED);
	os_create_task(Conter);
	os_delete_task(start);
}

void DS1820(void) _task_ DS18B20
{
    while(1)
    {
		Temperature_change();
		init_1820();
		os_send_signal(Conter);
		os_wait(K_TMO,10,0);
	}
}

void DISP(void) _task_ LED
{
	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(2);
    }
}

void stop(void) _task_ Conter
{
	static uchar stop_num;//停止计数器
	while(1)
	{
		stop_num++;
		if(stop_num>=12)
		{
			P3=0XFF;
			PCON=STOP_;
		}
		os_wait(K_SIG,0,0);
	}
}

⌨️ 快捷键说明

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