久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1666|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

想設(shè)計(jì)一個(gè)1602顯示時(shí)間,溫濕度(DHT11器件),還可以通過串口助手輸入0和1實(shí)現(xiàn)開關(guān)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include <reg52.h>
#include <stdio.h>

// 定義液晶顯示屏引腳連接
sbit RS = P2^5; // 液晶顯示屏的RS引腳
sbit RW = P2^6; // 液晶顯示屏的RW引腳
sbit E = P2^7;  // 液晶顯示屏的E引腳

// 定義液晶顯示屏的數(shù)據(jù)線引腳
sbit D0 = P0^0;
sbit D1 = P0^1;
sbit D2 = P0^2;
sbit D3 = P0^3;
sbit D4 = P0^4;
sbit D5 = P0^5;
sbit D6 = P0^6;
sbit D7 = P0^7;

// 定義溫濕度傳感器的引腳
sbit DHT11_IO = P3^7;
sbit switch2 = P3^3;
sbit switch10 =P1^3;
sbit switch9=  P1^4;
sbit switch8 = P1^5;
sbit switch7 = P1^6;


// 定義液晶顯示屏的命令碼
#define CMD_CLEAR 0x01
#define CMD_DISPLAY_ON 0x0C
#define CMD_CURSOR_HOME 0x02
#define CMD_SET_CURSOR 0x80

// 定義溫濕度傳感器和時(shí)鐘模塊的相關(guān)函數(shù)和變量
// 請(qǐng)根據(jù)具體的傳感器和時(shí)鐘模塊進(jìn)行相應(yīng)的實(shí)現(xiàn)

unsigned char temperature = 0; // 溫度值
unsigned char humidity = 0;    // 濕度值


// 延時(shí)函數(shù)
void delay(unsigned int ms) {
    unsigned int i, j;
    for (i = ms; i > 0; i--)
        for (j = 110; j > 0; j--);
}


void LCD_WriteCmd(unsigned char cmd) {
    RS = 0; // 設(shè)置為命令模式
    RW = 0; // 設(shè)置為寫入模式
    E = 1;
    P0 = (P0 & 0xF0) | (cmd >> 4); // 寫入高4位命令
    E = 0;
    delay(1);
    E = 1;
    P0 = (P0 & 0xF0) | (cmd & 0x0F); // 寫入低4位命令
    E = 0;
    delay(1);
}

// 初始化液晶顯示屏
void LCD_Init() {
    delay(15);     // 延時(shí)等待液晶顯示屏上電穩(wěn)定
    LCD_WriteCmd(0x28); // 設(shè)置為4位數(shù)據(jù)總線、2行顯示、5×7點(diǎn)陣字符
    LCD_WriteCmd(0x0C); // 顯示開,光標(biāo)關(guān)閉
    LCD_WriteCmd(0x06); // 寫入字符后地址指針加1,不移動(dòng)顯示
    LCD_WriteCmd(0x01); // 清除顯示
}



// 向液晶顯示屏寫入數(shù)據(jù)
void LCD_WriteData(unsigned char dat) {
    RS = 1; // 設(shè)置為數(shù)據(jù)模式
    RW = 0; // 設(shè)置為寫入模式
    E = 1;
    P0 = (P0 & 0xF0) | (dat >> 4); // 寫入高4位數(shù)據(jù)
    E = 0;
    delay(1);
    E = 1;
    P0 = (P0 & 0xF0) | (dat & 0x0F); // 寫入低4位數(shù)據(jù)
    E = 0;
    delay(1);
}

// 設(shè)置液晶顯示屏的光標(biāo)位置
void LCD_SetCursor(unsigned char row, unsigned char col) {
    unsigned char addr;
    if (row == 0) {
        addr = 0x80 + col; // 第1行
    } else {
        addr = 0xC0 + col; // 第2行
    }
    LCD_WriteCmd(addr);
}

// 在液晶顯示屏上顯示字符串
void LCD_DisplayString(unsigned char row, unsigned char col, unsigned char *str) {
    LCD_SetCursor(row, col);
    while (*str != '\0') {
        LCD_WriteData(*str++);
    }
}
void DHT11_Start(void)
{
DHT11_IO =1;
DHT11_IO =0;
delay(20);
DHT11_IO =1;
delay(50);
}
char GetTemperature(void){       
        char i,flag,byteRead =0;
        for(i = 8;i<16;i++)
        {
         while(!DHT11_IO)
         delay(33);
         if(DHT11_IO ==1)
          {
                  flag=1;
                  while(DHT11_IO);
          }
          else
          {
           flag =0;
          }
        }
        byteRead<<=1;
        byteRead|=flag;
        return byteRead;
}
char GetHumidity(void){       
        char i,flag,byteRead =0;
        for(i = 0;i<8;i++)
        {
         while(!DHT11_IO)
         delay(33);
         if(DHT11_IO ==1)
          {
                  flag=1;
                  while(DHT11_IO);
          }
          else
          {
           flag =0;
          }
        }
        byteRead<<=1;
        byteRead|=flag;
        return byteRead;
}


// 獲取溫濕度值
void GetTemperatureHumidity() {
        delay(500);delay(500);delay(500);
        DHT11_Start();

    // 請(qǐng)根據(jù)具體的溫濕度傳感器進(jìn)行相應(yīng)的實(shí)現(xiàn)
    // 這里僅作為示例,假設(shè)獲取溫濕度的函數(shù)為GetTemperatureHumidity()
    temperature = GetTemperature();
        DHT11_Start();
    humidity = GetHumidity();
}







// 發(fā)送溫濕度值到串口助手
void SendTemperatureHumidityToSerial() {
    // 將溫濕度值轉(zhuǎn)換為字符串
    char tempStr[4];
    char humiStr[4];
    sprintf(tempStr, "%d", temperature);

    sprintf(humiStr, "%d", humidity);

    // 發(fā)送溫濕度值到串口助手
    UART_SendString("Temperature: ");
    UART_SendString(tempStr);
    UART_SendString("C, Humidity: ");
    UART_SendString(humiStr);
    UART_SendString("%\r\n");
}










// 主函數(shù)
void main() {
    // 初始化液晶顯示屏
    LCD_Init();

    while (1) {
        // 獲取溫濕度值
        GetTemperatureHumidity();

        // 在液晶顯示屏上顯示溫濕度
        LCD_DisplayString(0, 0, "Temp: ");
        LCD_WriteData(temperature);
        LCD_DisplayString(0, 8, "C");
        LCD_DisplayString(1, 0, "Humid: ");
        LCD_WriteData(humidity);
        LCD_DisplayString(1, 8, "%");

        // 檢查串口接收到的命令
        if (receivedData) {
            switch (receivedData) {
                case '0':
                    // 關(guān)閉液晶顯示屏
                    LCD_WriteCmd(CMD_DISPLAY_ON);
                    break;
                case '1':
                    // 打開液晶顯示屏
                    LCD_WriteCmd(CMD_DISPLAY_ON | 0x04);
                    break;
                default:
                    break;
            }
            receivedData = 0; // 清空接收數(shù)據(jù)緩存
        }

        // 檢查開關(guān)狀態(tài)
        if (switch2) {
            // 發(fā)送實(shí)時(shí)溫濕度到串口助手
            SendTemperatureHumidityToSerial();
        }

        if (switch10) {
            // 時(shí)間加1
            IncreaseTime();
        }

        if (switch9) {
            // 時(shí)間減1
            DecreaseTime();
        }

        if (switch8) {
            // 切換時(shí)間位(秒、分、時(shí))
            SwitchTimeUnit();
        }

        if (switch9) {
            // 暫停時(shí)間
            PauseTime();
        }

        // 延時(shí)一段時(shí)間,避免過于頻繁地刷新液晶顯示屏
        delay(1000);
    }
}

屏幕截圖 2023-06-26 144543.png (345.48 KB, 下載次數(shù): 69)

屏幕截圖 2023-06-26 144543.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品国产欧美 | av网站免费在线观看 | 一级一级一级毛片 | 日日操av| 久久99精品久久久 | 成人性视频在线 | 日本精品久久 | 天堂亚洲网 | 青青艹在线视频 | 国产高潮好爽受不了了夜夜做 | 精品久久久久一区二区国产 | 久久精品av | 国产美女在线观看 | 综合色影院| 日韩在线中文字幕 | 国产欧美日韩一区二区三区在线 | 精品在线一区 | 国产一级片 | 特一级毛片 | 欧美在线成人影院 | 日韩在线综合 | 黄色男女网站 | 久草新在线| 91精品国产乱码久久蜜臀 | 国产小视频在线看 | 久久久精品网站 | 午夜亚洲| 一级黄色毛片免费 | 91高清视频在线观看 | 欧美视频二区 | 久久久精品一区二区三区 | 2023亚洲天堂| 在线播放第一页 | 欧美爱爱视频 | 国产剧情一区二区三区 | 欧美激情综合 | 成人精品一区二区三区中文字幕 | 亚洲日本免费 | 在线一区观看 | 国产精品视频久久 | 久久综合一区 |