基于stm32溫濕度 LCD可顯示學號姓名
111.png (50.27 KB, 下載次數: 61)
下載附件
溫濕度
2018-11-16 16:18 上傳
單片機源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "key.h"
- #include "usmart.h"
- #include "malloc.h"
- #include "sdio_sdcard.h"
- #include "w25qxx.h"
- #include "ff.h"
- #include "exfuns.h"
- #include "text.h"
- #include "rtc.h"
- #include "beep.h"
- #include "dht11.h"
- int main(void)
- {
- // u32 fontcnt;
- // u8 i,j;
- // u8 fontx[2];//gbk碼
- u8 key1;
- u8 t=0;
- u8 t1=0;
- u8 j=30;
- u8 temperature;
- u8 humidity;
- BEEP_Init();
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為115200
- usmart_dev.init(72); //初始化USMART
- LED_Init(); //初始化與LED連接的硬件接口
- KEY_Init(); //初始化按鍵
- LCD_Init(); //初始化LCD
- RTC_Init();
- DHT11_Init();
- W25QXX_Init(); //初始化W25Q128
- my_mem_init(SRAMIN); //初始化內部內存池
- exfuns_init(); //為fatfs相關變量申請內存
- f_mount(fs[0],"0:",1); //掛載SD卡
- f_mount(fs[1],"1:",1); //掛載FLASH.
- while(font_init()) //檢查字庫
- {
- //UPD:
- LCD_Clear(WHITE); //清屏
- POINT_COLOR=RED; //設置字體為紅色
- LCD_ShowString(30,50,200,16,16,"WarShip STM32");
- while(SD_Init()) //檢測SD卡
- {
- LCD_ShowString(30,70,200,16,16,"SD Card Failed!");
- delay_ms(200);
- LCD_Fill(30,70,200+30,70+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(30,70,200,16,16,"SD Card OK");
- LCD_ShowString(30,90,200,16,16,"Font Updating...");
- key1=update_font(20,110,16,"0:");//更新字庫
- while(key1)//更新失敗
- {
- LCD_ShowString(30,110,200,16,16,"Font Update Failed!");
- delay_ms(200);
- LCD_Fill(20,110,200+20,110+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(30,110,200,16,16,"Font Update Success! ");
- delay_ms(1500);
- LCD_Clear(WHITE);//清屏
- }
- POINT_COLOR=RED;
- Show_Str(150,50,200,24,"溫濕度檢測系統",24,0);
- POINT_COLOR=BLUE;
- Show_Str(60,350,240,24,"學號:",24,0);
- Show_Str(60,310,200,24,"姓名\",24,0);
- LCD_ShowString(60,240,200,24,24,"Temp: C");
- LCD_ShowString(60,270,200,24,24,"Humi: %");
- while(1)
- {
- if(t!=calendar.sec)
- {
- t=calendar.sec;
- LCD_ShowNum(60,130,calendar.w_year,4,24);
- LCD_ShowNum(120,130,calendar.w_month,2,24);
- LCD_ShowNum(150,130,calendar.w_date,2,24);
- switch(calendar.week)
- {
- case 0:
- Show_Str(60,210,200,24,"星期天 ",24,0);
- break;
- case 1:
- Show_Str(60,210,200,24,"星期一 ",24,0);
-
- break;
- case 2:
- Show_Str(60,210,200,24,"星期二 ",24,0);
- // LCD_ShowString(60,210,200,24,24,"星期二 ");
- break;
- case 3:
- Show_Str(60,210,200,24,"星期三 ",24,0);
- // LCD_ShowString(60,210,200,24,24,"星期三 ");
- break;
- case 4:
- Show_Str(60,210,200,24,"星期四 ",24,0);
- // LCD_ShowString(60,210,200,24,24,"星期四 ");
- break;
- case 5:
- Show_Str(60,210,200,24,"星期五 ",24,0);
- // LCD_ShowString(60,210,200,24,24,"星期五 ");
- break;
- case 6:
- Show_Str(60,210,200,24,"星期六 ",24,0);
- // LCD_ShowString(60,210,200,24,24,"Saturday ");
- break;
- }
- LCD_ShowNum(60,170,calendar.hour,2,24);
- LCD_ShowNum(90,170,calendar.min,2,24);
- LCD_ShowNum(120,170,calendar.sec,2,24);
- LED0=!LED0;
- }
- delay_ms(10);
- LED0=!LED0;
- if(t1%10==0) //每100ms讀取一次
- {
- DHT11_Read_Data(&temperature,&humidity); //讀取溫濕度值
- LCD_ShowNum(60+60,240,temperature,2,24); //顯示溫度
- LCD_ShowNum(60+60,270,humidity,2,24); //顯示濕度
- if(temperature>=j)
- {
- BEEP=~BEEP;
- delay_ms(20);
- }
- }
- delay_ms(10);
- t1++;
- if(t1==20)
- {
- t1=0;
- LED0=!LED0;
- }
- }
- }
復制代碼
所有資料51hei提供下載:
溫濕度.rar
(1.69 MB, 下載次數: 176)
2018-11-17 01:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|