|
沒人,燈滅 1-3人,亮3個(gè)燈 4-6人亮6個(gè)燈 大于6人,全亮 液晶顯示屏,顯示人數(shù)
教室照明智能控制系統(tǒng)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)源程序如下:
- #include "stm32f10x.h"
- #include "bsp-lcd1602.h"
- #include "delay.h"
- #include "sys.h"
- #include "adc.h"
- char people_ADD = 0;
- void led( void )
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- }
- void led_one( void )
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0);
- GPIO_ResetBits(GPIOC,GPIO_Pin_1);
- GPIO_SetBits(GPIOC,GPIO_Pin_2);
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
- GPIO_ResetBits(GPIOC,GPIO_Pin_4);
- GPIO_SetBits(GPIOC,GPIO_Pin_5);
- GPIO_SetBits(GPIOC,GPIO_Pin_6);
- GPIO_ResetBits(GPIOC,GPIO_Pin_7);
- GPIO_SetBits(GPIOC,GPIO_Pin_8);
- GPIO_SetBits(GPIOC,GPIO_Pin_9);
- GPIO_SetBits(GPIOC,GPIO_Pin_10);
- GPIO_SetBits(GPIOC,GPIO_Pin_11);
- }
- void led_two(void)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0);
- GPIO_ResetBits(GPIOC,GPIO_Pin_1);
- GPIO_ResetBits(GPIOC,GPIO_Pin_2);
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
- GPIO_ResetBits(GPIOC,GPIO_Pin_4);
- GPIO_ResetBits(GPIOC,GPIO_Pin_5);
- GPIO_SetBits(GPIOC,GPIO_Pin_6);
- GPIO_ResetBits(GPIOC,GPIO_Pin_7);
- GPIO_ResetBits(GPIOC,GPIO_Pin_8);
- GPIO_SetBits(GPIOC,GPIO_Pin_9);
- GPIO_SetBits(GPIOC,GPIO_Pin_10);
- GPIO_SetBits(GPIOC,GPIO_Pin_11);
- }
- void led_three(void)
- {
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- GPIO_ResetBits(GPIOC,GPIO_Pin_1);
- GPIO_ResetBits(GPIOC,GPIO_Pin_2);
- GPIO_ResetBits(GPIOC,GPIO_Pin_3);
- GPIO_ResetBits(GPIOC,GPIO_Pin_4);
- GPIO_ResetBits(GPIOC,GPIO_Pin_5);
- GPIO_ResetBits(GPIOC,GPIO_Pin_6);
- GPIO_ResetBits(GPIOC,GPIO_Pin_7);
- GPIO_ResetBits(GPIOC,GPIO_Pin_8);
- GPIO_ResetBits(GPIOC,GPIO_Pin_9);
- GPIO_ResetBits(GPIOC,GPIO_Pin_10);
- GPIO_ResetBits(GPIOC,GPIO_Pin_11);
- }
- void led_Down(void)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0);
- GPIO_SetBits(GPIOC,GPIO_Pin_1);
- GPIO_SetBits(GPIOC,GPIO_Pin_2);
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
- GPIO_SetBits(GPIOC,GPIO_Pin_4);
- GPIO_SetBits(GPIOC,GPIO_Pin_5);
- GPIO_SetBits(GPIOC,GPIO_Pin_6);
- GPIO_SetBits(GPIOC,GPIO_Pin_7);
- GPIO_SetBits(GPIOC,GPIO_Pin_8);
- GPIO_SetBits(GPIOC,GPIO_Pin_9);
- GPIO_SetBits(GPIOC,GPIO_Pin_10);
- GPIO_SetBits(GPIOC,GPIO_Pin_11);
-
- }
- void Key_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- /*開啟按鍵端口(PA)的時(shí)鐘*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
-
- // IO 口做輸入口時(shí),不用設(shè)置輸出頻率
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
-
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- }
- void KEY_Scan( void )
- {
- if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 1 )
- {
- /*等待按鍵釋放 */
- while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 1);
- people_ADD++;
- if( people_ADD > 50 )
- {
- people_ADD = 50;
- }
- }
-
- if( ADC_GetConversionValue(ADC1) > 1000 )
- {
- while( (ADC_GetConversionValue(ADC1) > 1000 ));
- people_ADD--;
- if( people_ADD <= 0 )
- {
- people_ADD = 0;
- }
- }
- }
- int main(void)
- {
- Key_GPIO_Config();
- ADC1_GPIO_Config();
- ADC_Config();
- LCD1602_Init();
- led();
- LCD1602_ShowStr(0,0," Light ",15);
- LCD1602_ShowStr(0,1,"People:",7);
- led_Down();
-
- while(1)
- {
- LCD1602_WriteCmd( 0x80+0x40+8);
- LCD1602_WriteDat( people_ADD/10+'0' );
- LCD1602_WriteDat( people_ADD%10+'0' );
- KEY_Scan();
-
-
- if(( people_ADD > 0 )&&( people_ADD <= 3 ))
- {
- led_one();
- }
- else
- {
- if(( people_ADD > 3 )&&( people_ADD <= 6 ))
- {
- led_two();
- }
- else
- {
- if( people_ADD > 6 )
- {
- led_three();
- }
- else
- {
- led_Down();
- }
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
proteus仿真圖.rar
(106.25 KB, 下載次數(shù): 240)
2021-3-19 22:17 上傳
點(diǎn)擊文件名下載附件
STM32程序.7z
(186.2 KB, 下載次數(shù): 244)
2021-3-19 23:28 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|