用stm32F103ZET6精英版,溫度傳感器是DS18B20,1602液晶顯示屏,利用溫度來控制轉速,液晶顯示屏顯示實時轉速,也可手動調節轉速。(采用pi控制)
電路原理圖如下:
QQ截圖20181210091145.png (180.04 KB, 下載次數: 111)
下載附件
電路原理圖
2018-12-10 09:12 上傳
單片機源程序如下:
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "timer.h"
- #include "lcd1602.h"
- #include "encoder.h"
- #include "control.h"
- #include "usart.h"
- #include "usart3.h"
- #include "hc05.h"
- #include "string.h"
- #include "usmart.h"
- #include "ds18b20.h"
- u8 w=0;
- int k=0;
- extern int real;
- vu8 key=0;
- u8 reclen=0;
- extern int temperature;
- int main(void)
- {
- delay_init();
- LCD_GPIO_Configuration();
- LCD1602_Init();
- KEY_Init();//按鍵初始化;
- ENCODER_Init();
- TIM2_Int_Init(19999,35);
- TIM3_PWM_Init(7199,0); //不分頻。PWM頻率=72000000/900=80Khz
- DS18B20_Init();
- //usmart_dev.init(72); //初始化USMART
- delay_ms(5000); //等待藍牙模塊上電穩定
- LCDshowNum(0,0,"EV:",SpeedSet);
- LCDshowNum(0,1,"RV:", real);
- LCDshowTNum(9,1,"T:",temperature);
- // while(HC05_Init()) //初始化ATK-HC05模塊
- //{
- // delay_ms(500);
- // }
- // delay_ms(100);
- // USART3_RX_STA=0;
-
- while(1)
- {
- delay_ms(200);
- temperature=(int)DS18B20_Get_Temp();
- LCDshowNum(0,0,"EV:",SpeedSet);
- LCDshowNum(0,1,"RV:", real);
- LCDshowTNum(9,1,"T:",temperature);
- key=KEY_Scan(0);
- switch(key)
- {
- case KEY0_PRES:
- SpeedSet+=100;
- k++;
- LCDshowNum(0,0,"EV:",SpeedSet);
- break;
- case KEY1_PRES:
- SpeedSet-=100;
- k++;
- LCDshowNum(0,0,"EV:",SpeedSet);
- break;
- default:break;
- }
- if(k==0&&temperature>270)
- {
- SpeedSet=2200;
- LCDshowNum(0,0,"EV:",SpeedSet);
- }
- if(k==0&&temperature<270&&temperature>250)
- {
- SpeedSet=2100;
-
- LCDshowNum(0,0,"EV:",SpeedSet);
-
- }
- if(k==0&&temperature<250&&temperature>200&&temperature==200&&temperature==250)
- {
- SpeedSet=2000;
- LCDshowNum(0,0,"EV:",SpeedSet);
- }
- if(k==0&&temperature<200)
- {
- SpeedSet=1800;
- LCDshowNum(0,0,"EV:",SpeedSet);
- }
-
- }
-
- }
復制代碼
所有資料51hei提供下載:
test1 - 1602正常 1x4鍵盤 加減調速 加溫控.rar
(368.76 KB, 下載次數: 198)
2018-12-10 15:56 上傳
點擊文件名下載附件
源代碼 下載積分: 黑幣 -5
|