STM32智能路灯仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
备注:通过ARM内部的ADC采集光敏电阻电压,判断电压值
电压值低于设定的值,表示光强太弱,开路灯
光强合适,显示OK灯不亮
stm32内部ADC采集电压
光敏电阻,调节光强
单片机源程序如下:
- #include "stm32f10x.h"
- #include "bsp-lcd1602.h"
- #include "delay.h"
- #include "sys.h"
- #include "adc.h"
- int main(void)
- {
- int ADC_num;
- float temp;
-
- ADC1_GPIO_Config();
- ADC_Config();
- delay_init(); //延时函数初始化
- LCD1602_Init();
- LCD1602_ShowStr(0,0,"Intelligent LED",15);
- LCD1602_ShowStr(0,1," LED:",8);
-
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- while(1)
- {
- ADC_num=ADC_GetConversionValue(ADC1);
- temp=ADC_num*(3.4/4096)*10;
- //表示光线太弱
- if( temp < 8 )
- {
- LCD1602_ShowStr(8,1,"Low ",4);
- GPIO_ResetBits( GPIOC,GPIO_Pin_0 );
- }
- else
- {
- //光线合适
- LCD1602_ShowStr(8,1,"OK ",4);
- GPIO_SetBits( GPIOC,GPIO_Pin_0 );
- }
- }
- }
复制代码
所有资料51hei提供下载:
仿真图.rar
(150.4 KB, 下载次数: 231)
|