基于AT89C52的DS18B20温度采集通过四位数码管显示温度整数值
时间: 2023-10-11 17:09:35 浏览: 175
char *path) {
// find the parent directory of the new directory
char *parent_path = dirname(path);
struct directory *parent_dir = find_directory(fs, parent_path);
if (!parent_dir) {
return -1;
}
// check if好的,我来回答你的问题。
首先,基于AT89C52的DS18B20温度采集 the directory already exists
if (find_directory(fs, path)) {
return -1;
}
// create the new directory需要连接相应的硬件电路,包括AT89C52单片机、DS18B20温度传感器
struct directory new_dir;
strcpy(new_dir.name, basename(path));
new_dir.file_count = 0;
new_dir.sub、四位数码管等。可以参考相关的电路图进行连接。
接下来,需要编写相应的dir_count = 0;
// add the directory to the parent directory
parent_dir->subdirs[parent_dir->subdir_count++]程序,采集DS18B20传感器的温度数据,并将整数值显示在四位数码管上。
= new_dir;
return 0;
}
```
6. 删除目录
```c
int delete_directory(struct file_system *fs以下是基于AT89C52的DS18B20温度采集通过四位数码管显示温度整数值, char *path) {
// find the parent directory of the directory
char *parent_path = dirname(path);
struct directory的代码示例:
```
#include <reg52.h> // 引入AT89C52单片机头文件
#define DQ *parent_dir = find_directory(fs, parent_path);
if (!parent_dir) {
return -1;
}
// find the P1_0 // DS18B20数据线连接到P1.0
sbit D1 = P2^2; directory to be deleted
struct directory *dir = find_directory(fs, path);
if (!dir) {
return -1;
// 数码管第1位连接到P2.2
sbit D2 = P2^3; // 数码 }
// remove the directory from the parent directory
int i;
for (i = 0; i < parent_dir->sub管第2位连接到P2.3
sbit D3 = P2^4; // 数码管第3位dir_count; i++) {
if (strcmp(parent_dir->subdirs[i].name, basename(path)) == 0) {
parent_dir->subdir_count--;
parent_dir->subdirs[i] = parent_dir->subdirs[parent_dir->subdir_count];
break连接到P2.4
sbit D4 = P2^5; // 数码管第4位连接到P2.5
unsigned char code table[] = { // 数码管显示0~9的编码表
0xc0,;
}
}
// delete all files and subdirectories in the directory
for (i = 0; i < dir-> 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0xfile_count; i++) {
delete_file(fs, path_join(path, dir->files[i].name));
}
for (i =82, 0xf8, 0x80, 0x90
};
void delay(unsigned int i) // 延时函数
0; i < dir->subdir_count; i++) {
delete_directory(fs, path_join(path, dir->subdirs[i].name));
}
return 0;
}
```
7. 查找文件
```c
struct file *find_file(struct directory *{
while(i--);
}
void init_ds18b20() // 初始化DS18B20传感器
{
DQ =dir, char *name) {
int i;
for (i = 0; i < dir->file_count; i++) {
1; // 先将总线拉高
delay(10);
DQ = 0; // 拉低总线
if (strcmp(dir->files[i].name, name) == 0) {
return &dir->files[i];
}
delay(500); // 延时480us~960us
DQ = 1; // 释放总线
}
return NULL;
}
```
8. 查找目录
```c
struct directory *find_directory(struct file_system *fs, delay(10);
}
void write_ds18b20(unsigned char dat) // 写入数据到DS18B20传感器
{
char *path) {
if (strcmp(path, "/") == 0) {
return &fs->root_dir;
}
char *parent_path = dirname(path);
char *name = basename(path);
struct directory *parent_dir = find_directory(fs, parent unsigned char i;
for(i=0; i<8; i++)
{
DQ = 0; // 拉低_path);
if (!parent_dir) {
return NULL;
}
int i;
for (i = 0; i <总线
DQ = dat & 0x01; // 写入数据
delay(5); // 延时60us parent_dir->subdir_count; i++) {
if (strcmp(parent_dir->subdirs[i].name, name) == 0)~120us
DQ = 1; // 释放总线
dat >>= 1;
}
}
unsigned char {
return &parent_dir->subdirs[i];
}
}
return NULL;
}
```
阅读全文