找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2801|回复: 2
打印 上一主题 下一主题
收起左侧

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

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


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

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

  1. int main(void)
  2. {
  3.         uint16_t time=0;
  4.     HAL_Init();

  5.     SystemClock_Config();

  6.     MX_GPIO_Init();
  7.     MX_ADC1_Init();
  8.     MX_USART1_UART_Init();

  9.     while (1)
  10.     {

  11.                 Get_Adc();
  12.                
  13.                 if(adc1_in1_voltage<0.5)                                // 表示 没人
  14.                 {
  15.                         printf("no people\r\n");
  16.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
  17.                 }
  18.                 else                                                                        // 表示 有人
  19.                 {
  20.                         printf("people here\r\n");
  21.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);
  22.                         if(adc1_in0_voltage<1)
  23.                         {
  24.                                 for(time=0; time<5; time++)
  25.                                 {
  26.                                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
  27.                                         HAL_Delay(100);
  28.                                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
  29.                                         HAL_Delay(900);
  30.                                 }
  31.                         }
  32.                         else if(adc1_in0_voltage>=1 && adc1_in0_voltage<2)
  33.                         {
  34.                                 for(time=0; time<5; time++)
  35.                                 {
  36.                                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
  37.                                         HAL_Delay(500);
  38.                                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
  39.                                         HAL_Delay(500);
  40.                                 }
  41.                         }
  42.                         else if(adc1_in0_voltage>=2)
  43.                         {
  44.                                 for(time=0; time<5; time++)
  45.                                 {
  46.                                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
  47.                                         HAL_Delay(900);
  48.                                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
  49.                                         HAL_Delay(100);
  50.                                 }
  51.                         }
  52.                 }
  53.     }

  54. }
复制代码



2020-07-12_161337.png (38.58 KB, 下载次数: 98)

当感应到人的时候

当感应到人的时候
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:96313 发表于 2020-7-20 08:29 | 只看该作者
传感器出来加一个200欧的电阻耦合信号,单片机那头上面加上拉电阻,试试呢!有实物可以用示波器看看
回复

使用道具 举报

板凳
ID:166552 发表于 2023-10-29 21:24 | 只看该作者
源码呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表