资源简介

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_linkInfo.xml
     文件         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\objects.mk
     文件        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个文件信息

评论

共有 条评论