📄 main.c
字号:
#include "os_cfg.h" //Easy51RTOS操作系统头文件
#include "51board.h" //51板硬件接口定义头文件
#include "ds18b20.h" //51板标配温度传感器头文件
#include "51bdlcd.h" //51板LCD函数
#include "51bdkey.h" //51板4X4矩阵键盘函数
#include "functns.h" //常用一些功能函数
#include "24CxxWR.h" //串行存储读写头文件
#define Taskturn P16 = ~P16
uchar Temp_Str[16]=" ";
uchar Key_Str[16]=" "; //16位空格是必须的
bit key_flag;
uchar counter1;
//任务0:测温度送显
void task0(void)
{
uint tmp;
tmp=ReadTemperature();
Int_to_Str(tmp,Temp_Str);
Add_Dot(3,5, Temp_Str);
LCD_w_data(1,1,"Home Temp:");
LCD_w_data(1,11,Temp_Str);
}
//任务1:键盘扫描,LCD显示
void task1(void)
{
uchar key_num,j;
key_num = Key_Scan();
if ((key_num != 0xff) & key_flag )
{
key_flag=0;
for(j=0;j<16;j++) Key_Str[j]=Key_Str[j+1];
Key_Str[15]=key_num;
Write24C16(0x0, Key_Str,16);//往24C16里写入字符串
//LCD_w_data(2,1,Key_Str);
}
else if (key_num == 0xff) key_flag = 1;
}
//任务2
void task2()
{
uchar Disp_Str[17]=" ";
Read24C16(0x0, Disp_Str,16); //从24C16里读出字符串
Disp_Str[16]='\0';
LCD_w_data(2,1,Disp_Str); //显示读出的字符串,验证是否正确
}
//任务3
void task3()
{
P1=In_P0;
}
//任务4
void task4(void)
{
counter1++;
Out_P0 = counter1;
Out_P1 = counter1;
Out_P2 = counter1;
Out_P3 = counter1;
}
//任务5
void task5(void)
{
}
//任务6
void task6()
{
}
//任务7
void task7()
{
}
//main主函数
void main(void)
{
OS_InitTimer0();
EA=1;
LCD_Init();
LCD_w_data(1,1,Temp_Str);
LCD_w_data(2,1,Key_Str);
while(1)
{
if (OS_Delay[0]==0){task0();OS_Delay[0]=100;} //温度测量,每秒1次
if (OS_Delay[1]==0){task1();OS_Delay[1]=10;} //键盘扫描,键值存储
if (OS_Delay[2]==0){task2();OS_Delay[2]=100;} //读出存储的键值,LCD显示
if (OS_Delay[3]==0){task3();OS_Delay[3]=50;}
if (OS_Delay[4]==0){task4();OS_Delay[4]=100;}
if (OS_Delay[5]==0){task5();OS_Delay[5]=60;}
if (OS_Delay[6]==0){task6();OS_Delay[6]=70;}
if (OS_Delay[7]==0){task7();OS_Delay[7]=80;}
Delay(50);
//Taskturn;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -