-
大小: 114KB文件類型: .zip金幣: 2下載: 2 次發布日期: 2021-10-24
- 語言: 其他
- 標簽: MSP430F5529??DHT11??DS18B20??0.96寸OLED??
資源簡介
MSP430課程設計內容,利用單片機通過DS18B20測量水溫,通過DHT11測量室內的溫度和濕度,并且顯示在OLED顯示屏上。測到的水溫超過臨界值會驅動風扇轉動和蜂鳴器報警,并且有指示燈來只是溫度的大致范圍。風扇轉動有兩種模式:人工控制和水溫控制,通過按鍵切換,在人工控制下還能通過按鍵來改變速度。水溫的臨界值也可以通過按鍵來改變。本人已試驗過,無問題。
代碼片段和文件信息
#include“I2C_OLED.h“
#include“codetab.h“
unsigned?char?OLED_GRAM[128][8]; ?//顯存
void?show_Num(unsigned?char?xunsigned?char?yunsigned?int?Numunsigned?char?Lenunsigned?char?Size)
{
????unsigned?char?Str_tmp[20];
????Num_To_Str(Str_tmpNumLen);
????Str_tmp[Len]?=?‘\0‘;
????if(Size>7)
????????OLED_P8x16Str(xyStr_tmp);
????else
????????OLED_P6x8Str(xyStr_tmp);
}
void?Num_To_Str(unsigned?char?Str[]unsigned?int?numunsigned?char?len)
{
????unsigned?char?i;
????unsigned?int?Num_tmp;
????Num_tmp?=?num;
????for(i=0;i ????{
????????Str[len-i-1]?=?‘0‘?+?Num_tmp%10;
????????Num_tmp?/=?10;
????}
}
void?I2C_start_OLED()
{
????SDA_DIR_OUT_OLED;
????SCK_I2C_OUT_OLED;
????SDA_I2C_H_OLED;
????SCK_I2C_H_OLED;
????delay_us(1);????????????????//延時
????SDA_I2C_L_OLED;
????delay_us(1);????????????????//延時
????SCK_I2C_L_OLED;
}
/**************************************
停止信號
**************************************/
void?I2C_Stop_OLED()
{
????SCK_I2C_OUT_OLED;
????SDA_DIR_OUT_OLED;
????SDA_I2C_L_OLED;
????SCK_I2C_H_OLED;
????delay_us(1);????????????????//延時
????SDA_I2C_H_OLED;
????delay_us(1);????????????????//延時
????SCK_I2C_H_OLED;
????delay_us(5);
}
/**************************************
發送應答信號
入口參數:ack?(0:ACK?1:NAK)
**************************************/
void?I2C_SendACK_OLED(unsigned?char?ack)
{
????SDA_DIR_OUT_OLED;
????SCK_I2C_OUT_OLED;
????if(ack==1)?SDA_I2C_H_OLED;
????else???????SDA_I2C_L_OLED;
????SCK_I2C_H_OLED;
????delay_us(1);????????????????//延時
????SCK_I2C_L_OLED;
????delay_us(1);????????????????//延時
}
/**************************************
接收應答信號
**************************************/
unsigned?char?I2C_RecvACK_OLED()
{
????unsigned?char?temp;
????SDA_DIR_IN_OLED;
????SCK_I2C_H_OLED;?????????????//拉高時鐘線
????delay_us(1);????????????????//延時
????_NOP();
????if(SDA_Value_OLED)?temp=1;
????else?temp=0;
????SCK_I2C_L_OLED;??????????//拉低時鐘線
????delay_us(1);????????????????//延時
????SDA_DIR_OUT_OLED;
????return?temp;
}
/**************************************
向IIC總線發送一個字節數據
**************************************/
void?I2C_SendByte_OLED(unsigned?char?dat)
{
????unsigned?char?i;
????SDA_DIR_OUT_OLED;
????SCK_I2C_OUT_OLED;
????for?(i=0;?i<8;?i++)?????????//8位計數器
????{
????????if(dat&0x80)?SDA_I2C_H_OLED;
????????else?SDA_I2C_L_OLED;
????????dat?<<=?1;??????????????//移出數據的最高位
????????SCK_I2C_H_OLED;
????????delay_us(1);????????????//延時
????????SCK_I2C_L_OLED;
????????delay_us(1);????????????//延時
????}
????I2C_RecvACK_OLED();
}
/**************************************
從IIC總線接收一個字節數據
**************************************/
unsigned?char?I2C_RecvByte_OLED()
{
????unsigned?char?i;
????SDA_DIR_IN_OLED;
????unsigned?char?dat?=?0;
????SDA_I2C_H_OLED;
????for?(i=0;?i<8;?i++)?????????//8位計數器
????{
????????dat?<<=?1;?????????????//拉高時鐘線
????????SCK_I2C_H_OLED;
????????delay_us(1);????????????//延時
????????if(SDA_Value_OLED)?dat?|=?1;????//
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-07-17?12:12??源程序\
?????文件?????????614??2019-07-09?23:29??源程序\.ccsproject
?????文件???????28665??2019-07-09?23:29??源程序\.cproject
?????目錄???????????0??2019-07-17?12:12??源程序\.launches\
?????文件????????4909??2019-07-09?23:30??源程序\.launches\liang.launch
?????文件?????????835??2019-07-09?23:29??源程序\.project
?????目錄???????????0??2019-07-17?12:12??源程序\.settings\
?????文件??????????62??2019-07-09?23:29??源程序\.settings\org.eclipse.cdt.codan.core.prefs
?????文件?????????123??2019-07-09?23:29??源程序\.settings\org.eclipse.cdt.debug.core.prefs
?????文件?????????208??2019-07-09?23:29??源程序\.settings\org.eclipse.core.resources.prefs
?????文件???????19902??2019-07-16?15:06??源程序\codetab.h
?????目錄???????????0??2019-07-17?12:12??源程序\Debug\
?????文件??????????76??2019-07-16?17:06??源程序\Debug\ccsObjs.opt
?????文件?????????847??2019-07-16?16:13??源程序\Debug\I2C_OLED.d
?????文件???????48808??2019-07-16?16:13??源程序\Debug\I2C_OLED.obj
?????文件??????104906??2019-07-16?16:13??源程序\Debug\liang.map
?????文件???????96980??2019-07-16?16:13??源程序\Debug\liang.out
?????文件??????314773??2019-07-16?16:13??源程序\Debug\liang_li
?????文件?????????797??2019-07-16?16:13??源程序\Debug\main.d
?????文件???????40156??2019-07-16?16:13??源程序\Debug\main.obj
?????文件????????4391??2019-07-16?17:06??源程序\Debug\makefile
?????文件?????????260??2019-07-09?23:29??源程序\Debug\ob
?????文件????????2073??2019-07-16?17:06??源程序\Debug\sources.mk
?????文件????????1780??2019-07-16?17:06??源程序\Debug\subdir_rules.mk
?????文件?????????628??2019-07-16?17:06??源程序\Debug\subdir_vars.mk
?????文件?????????180??2019-07-16?14:22??源程序\delay.h
?????文件????????8283??2019-07-16?14:22??源程序\I2C_OLED.c
?????文件????????3510??2019-07-16?14:22??源程序\I2C_OLED.h
?????文件???????14573??2019-07-09?23:29??源程序\lnk_msp430f5529.cmd
?????文件????????9890??2019-07-16?15:47??源程序\main.c
?????目錄???????????0??2019-07-17?12:12??源程序\targetConfigs\
............此處省略3個文件信息
評論
共有 條評論