stm32F4+lcd1602实现采集两路adc并显示

发布者:Serene123最新更新时间:2020-07-22 来源: 51hei关键字:stm32F4  lcd1602  采集两路adc 手机看文章 扫描二维码
随时随地手机看文章

以STM32F403为控制核心,设计一种基于STM32的智能照明控制系统,使用光敏电阻作为光照信息来源,使用GP2D12作为人物信息来源,当光照强度改变时,光敏电阻的阻值改变,从而改变STM32的采样电压。当人物移动时,红外传感器的电压改变从而改变采样电压。当光照强度小于一定值,且感应到有人时,LED亮。


通过光敏电阻和GP2D12传感器获取光照和红外信息,作为模拟量,传入STM32F4的采集端口。STM32F4进行模数转换后,在LCD1602上进行显示。


采用了HAL库进行配置STM32F4,一直有个问题就是proteus仿真DS18B20和DHT11这种带有时序要求的传感器,同STM32通信时出现时序错误,有经验的师兄可以告知一下怎么操作。


int main(void)

{

        uint16_t time=0;

    HAL_Init();


    SystemClock_Config();


    MX_GPIO_Init();

    MX_ADC1_Init();

    MX_USART1_UART_Init();


    while (1)

    {


                Get_Adc();

               

                if(adc1_in1_voltage<0.5)                                // 表示 没人

                {

                        printf("no peoplern");

                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);

                }

                else                                                                        // 表示 有人

                {

                        printf("people herern");

                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);

                        if(adc1_in0_voltage<1)

                        {

                                for(time=0; time<5; time++)

                                {

                                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);

                                        HAL_Delay(100);

                                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);

                                        HAL_Delay(900);

                                }

                        }

                        else if(adc1_in0_voltage>=1 && adc1_in0_voltage<2)

                        {

                                for(time=0; time<5; time++)

                                {

                                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);

                                        HAL_Delay(500);

                                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);

                                        HAL_Delay(500);

                                }

                        }

                        else if(adc1_in0_voltage>=2)

                        {

                                for(time=0; time<5; time++)

                                {

                                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);

                                        HAL_Delay(900);

                                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);

                                        HAL_Delay(100);

                                }

                        }

                }

    }


}

当感应到人的时候

当感应到人的时候


关键字:stm32F4  lcd1602  采集两路adc 引用地址:stm32F4+lcd1602实现采集两路adc并显示

上一篇:STM32控制4个LED灯循环点亮源程序
下一篇:基于stm32f103ze+mpu9250通过官方DMP库串口输出角度

推荐阅读最新更新时间:2024-11-17 16:29

AVR单片机教程——LCD1602
显示屏 开发板套件里有两块屏幕,大的是LCD(液晶显示),小的是OLED(有机发光二极管)。正与你所想的相反,短小精悍的比较贵,而本讲的主题——LCD1602——功能较少,使用起来也简单很多。 这块屏幕的显示是以字符为单位的。每个字符都是8像素高,5像素宽。1602这个名字,来源于显示字符的数量,共2行,每行16个字符。出售1602的商家提供了一份文档:提取码8c1u。 硬件 一个典型的1602显示屏有16个引脚(还有些模块是用串行总线驱动的): 名称 功能 连接 VSS 电源地 GND VDD 正电源 VCC(5V) VO 对比度调整 左侧的电位器,其左端接GND,右端接VCC RS 数据/指令选择 PB0
[单片机]
AVR单片机教程——<font color='red'>LCD1602</font>
ACM32F403对比STM32F405的差异说明
一、整体功能对比 分别选择两款芯片(LQFP100)最大配置资源的型号(STM32F405VG、ACM32F403VE)进行比对,两者比对如下: 举例如下: 二、管脚差异说明 举例如下: 举例如下:LQFP64
[单片机]
STM32F407_HAL_TIM_DMA驱动WS2812
初始化函数可以通过CubeMX配置,这里直接通过原码记录: 注意点: STM32F407配置时钟频率为168MHz,TIM3挂载再APB1总线上时钟频率为84MHz,WS2812B需要的时钟频率为800K则定时器预装载寄存器的初值应配置为84M/800K = 105 0码和1码的配置需要根据预装载寄存器设定的初值来配置以符合WS2812手册中的0码和1码的时序。可参考:https://blog.csdn.net/xiaoyuanwuhui/article/details/99639068 芯片外设层驱动 tim.h #ifndef __TIM_H #define __TIM_H #include stm32f4xx.h
[单片机]
如何使用STM32F4中的CCM内存
我们知道STM32F4当中有个CCM内存,如图所示,这个内存是挂在D总线上直接和内核相连,因此除了内核之外谁都不能访问,那么我们怎么将其利用起来呢? 首先,我们可以使用Keil的设置选项,将IRAM2打勾,让编译器选择什么时候使用这个内存。显然,我们还可以将这两个地址修改一下,将IRAM1改为0x10000000,这样,编译器就会优先分配CCM内存。 我们来看看结果,在MAP文件中,表明确实使用了这段内存,但是因为我们使用的内存较少, 还没有用到CCM。 这种自动分配的方式有什么问题呢?这段内存是内核专有的,除了内核任何其它总线都不能访问,这就意味着,一旦编译器将数据分配到CCM中,而同时使用了DMA访问,显然会出问题
[单片机]
如何使用<font color='red'>STM32F4</font>中的CCM内存
51单片机—LCD1602显示模块
- 什么是LCD1602 LCD:Liquid Crystal Display—液晶显示器,简称LCD,其主要显示原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面,通常把各种液晶显示器都直接叫做液晶。 1602:液晶的命名通常都是按照显示字符的行数或液晶点阵的行、列数来的。1602的意思是每行可以显示16个字符,一共可以显示俩行,类似还有0801、1601等。 注意:此类液晶都是字符液晶,即只能显示ASCII码字符,如数字、大小写字母、各种符号等。 LCD1602显示如图: - 如何操作LCD1602 在操作之前先要了解LCD1602的几个重要知识点: RS:数据/命令选择端,它控制着指令操作和数据操作
[单片机]
51单片机—<font color='red'>LCD1602</font>显示模块
STM32F429学习笔记(一)触屏工程Keil建立
由于原来的STM32F103ZET6的flash坏掉了,所以又买了一块STM32F429DISCOVERY,这块板子非常不错,基于Cortex-M4内核,自带一块2.4寸TFT触屏,主频为180M,且内置了ST-Link下载器,使用非常的方便。 近期参加校赛,用它的触屏写了个上位机,当时我是在实验室的电脑和我的平板电脑之间相互拷贝工程,由于ST官方的工程都是公用库文件,所以独立性不强,想要拷贝就得拷贝整个目录,为了解决这个问题,我仔细学习了官方工程的组成与调用,并成功的将所有文件分离出来,建立了一个独立的工程文件夹,以后再拷贝时,只需要将这单个工程拷贝出来,即可方便的移植,其间有不少小插曲,下面就对具体步骤进行详述。
[单片机]
<font color='red'>STM32F4</font>29学习笔记(一)触屏工程Keil建立
stm32f407】窗口看门狗 wwdog
一.窗口看门狗 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位(WWDG- CR的第六位)变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口配置寄存器(WWDG- CFR)数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。如图: T 就是WWDG_CR的低七位,W 即是WWDG- CFR的低七位。T 就是窗口看门狗的计数器,而W 则是窗口看门狗的上窗口,下窗口值是固定的(0X40)。当窗口看门狗
[单片机]
【<font color='red'>stm32f4</font>07】窗口看门狗 wwdog
跟我学51单片机(七)——LCD1602液晶显示模块
  本刊上期介绍单片机捕获红外遥控器解码方法电路原路和程序设计方法,并给出了实例。这一讲将介绍单片机驱动LCD1602 液晶显示模块。通过该讲,读者可以掌握LCD1602 液晶的工作原理和如何通过单片机来驱动LCD1602 液晶。   一、原理简介   液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在嵌入式应用系统中得到越来越广泛的应用,这讲中向大家介绍的LCD1602 液晶显示模块(其内部控制器为HD44780 芯片),它可以显示两行,每行16 个字符,因此可相当于32 个LED 数码管,而且比数码管显示的信息还多。采用单+5V 电源供电,外围电路配置简单,价格便宜,具有很高的性价比。   LCD1602 外
[单片机]
跟我学51单片机(七)——<font color='red'>LCD1602</font>液晶显示模块
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved