【TB作品】msp430f5529单片机,读取DHT11温湿度,读取adc,oled显示

功能

msp430f5529单片机,读取DHT11温湿度,读取adc,oled显示

硬件

//OLED引脚分配 绿色板子

//DO(SCLK)------P4.3

//D1(DATA)------P4.0

//RES-----------P3.7

//DC------------P8.2

//CS------------P8.1

//mq135 P6.5

//DHT11 P4.1

部分代码

cpp 复制代码
unsigned int adcsignal;
unsigned char   disp[15];
unsigned char   count = 0;
void main( void )
{
    unsigned char t = 0;

    WDTCTL = WDTPW + WDTHOLD;                                       /* Stop WDT */
    initClock();

    OLED_Init();


    OLED_ShowString( 0, 0, "DHT11:" );
    OLED_ShowString( 0, 4, "mq135:" );

    while ( 1 )
    {
        delay_ms( 10 );
        t = (t + 1) % 30;
        if ( t == 1 ) /* 30 个10ms执行一次 */
        {
            if ( receive_init() == 1 )
            {
                /* 存入数组 */
                count       = 0;
                disp[count++]   = ' ';
                disp[count++]   = ' ';
                disp[count++]   = humdh % 100 / 10 + '0';
                disp[count++]   = humdh % 10 / 1 + '0';
                disp[count++]   = '%';
                disp[count++]   = 'R';
                disp[count++]   = 'H';
                disp[count++]   = ' ';
                disp[count++]   = ' ';
                disp[count++]   = temph % 100 / 10 + '0';
                disp[count++]   = temph % 10 / 1 + '0';
                disp[count++]   = 'C';
                disp[count++]   = 0;

                /* 显示屏上显示温湿度字符串 */
                OLED_ShowString( 0, 2, disp );

                ADC12CTL0 |= ADC12SC;                                                           /* Start sampling/conversion */
                while ( (ADC12IFG & BIT5) == 0 )
                    ;                                                                       /* MEM5触发IFG5  意味着有了新的转换结果 */
                adcsignal   = ADC12MEM5;
                adcsignal   = (unsigned int ) ( ( (float) adcsignal) * 3.3 * 100 / 4096);   /* 换算到伏特 并乘以100 */
                count       = 0;
                disp[count++]   = adcsignal % 1000 / 100 + '0';
                disp[count++]   = '.';
                disp[count++]   = adcsignal % 100 / 10 + '0';
                disp[count++]   = adcsignal % 10 / 1 + '0';
                disp[count++]   = 'V';
                disp[count++]   = 0;
                OLED_ShowString( 0, 6, disp );
            }
        }
    }
}

全部代码

cpp 复制代码
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
相关推荐
leo03089 小时前
图像硬解码和软解码
单片机·嵌入式硬件
Wythzhfrey9 小时前
单片机总复习
单片机·嵌入式硬件
源远流长jerry9 小时前
STM32F103ZET6按键中断控制灯
stm32·单片机·嵌入式硬件
搬砖的小码农_Sky10 小时前
单片机STM32F103:DMA的原理以及应用
stm32·单片机
不想学习\??!12 小时前
STM32-待机唤醒实验
stm32·单片机·嵌入式硬件
不想学习\??!12 小时前
STM32-中断
单片机·嵌入式硬件
TianYaKe-天涯客13 小时前
嵌入式调试LOG日志输出(以STM32为例)
stm32·单片机·嵌入式硬件
芯岭技术13 小时前
MS32C001-C单片机,32位ARM M0+内核,宽电压、低功耗、小封装。
c语言·arm开发·单片机
is081516 小时前
在STM32 FreeRTOS环境中使用mutex和ringbuffer实现多任务的UART同步通信
stm32·单片机·嵌入式硬件
景彡先生16 小时前
STM32中I2C协议详解
stm32·单片机·嵌入式硬件