标题:
基于stm32单片机设计,智能控制与检测项目
[打印本页]
作者:
君不媚儿
时间:
2020-6-8 19:14
标题:
基于stm32单片机设计,智能控制与检测项目
智能控制与检测
1591614658(1).jpg
(118.18 KB, 下载次数: 39)
下载附件
2020-6-8 19:11 上传
单片机源程序如下:
#include "led.h"
#include "sys.h"
#include "delay.h"
#include "beep.h"
#include "key.h"
#include "exti.h"
#include "usart.h"
#include "stdio.h"
#include "usart1_cmd.h"
#include "iwdg.h"
#include "wwdg.h"
#include "timer.h"
#include "tpad.h"
#include "lcd.h"
#include "adc.h"
#include "tsensor.h"
#include "calendar.h"
#include "rtc.h"
u8 KEYSCAN ; //获取KEY_Scan的值
u8 l=0; //震动计时3s结束
u16 DO_flag; //震动响起的标志
void temp()
{
short temp;
POINT_COLOR=BLUE;//设置字体为蓝色
temp=Get_Temprate(); //得到温度值
if(temp<0)
{
temp=-temp;
LCD_ShowString(60+10*8,150,16,16,16,(u8*)"-"); //显示负号(一个英文字符占8个像素)
}else LCD_ShowString(60+10*8,150,16,16,16,(u8*)" "); //无符号
LCD_ShowxNum(60+11*8,150,temp/100,2,16,0); //显示整数部分
LCD_ShowxNum(60+14*8,150,temp%100,2,16, 0X80); //显示小数部分
LED0=!LED0;
delay_ms(250);
}
int main(void)
{
u8 a[]=" - - ";
u8 b[]=" : : ";
u8 t=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
LCD_Init(); //LCD端口初始化
RTC_Init(); //RTC初始化
LCD_Display_Dir(1); //横屏
T_Adc_Init(); //温度初始化
BEEP_Init(); //蜂鸣器初始化
TIM4_PWM_Init(899,0); //PWM初始化
KEY_Init(); //按键初始化
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(60,30,200,16,16,(u8*)"LiuChuang_,num 36");
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,150,200,16,16,(u8*)"TEMPERATE: 00.00C");
//显示时间
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,60,200,16,16,a);
LCD_ShowString(60,100,200,16,16,b);
printf("LiuChuang_,num 39,frame_head is LC_36");
while(1)
{
temp();
if(t!=calendar.sec)
{
t=calendar.sec;
LCD_ShowxNum(60,60,calendar.w_year,4,16,0X80);
LCD_ShowxNum(100,60,calendar.w_month,2,16,0X80);
LCD_ShowxNum(124,60,calendar.w_date,2,16,0X80);
switch(calendar.week)
{
case 0:
LCD_ShowString(60,80,200,16,16,(u8*)"Sunday ");
break;
case 1:
LCD_ShowString(60,80,200,16,16,(u8*)"Monday ");
break;
case 2:
LCD_ShowString(60,80,200,16,16,(u8*)"Tuesday ");
break;
case 3:
LCD_ShowString(60,80,200,16,16,(u8*)"Wednesday");
break;
case 4:
LCD_ShowString(60,80,200,16,16,(u8*)"Thursday ");
break;
case 5:
LCD_ShowString(60,80,200,16,16,(u8*)"Friday ");
break;
case 6:
LCD_ShowString(60,80,200,16,16,(u8*)"Saturday ");
break;
}
LCD_ShowxNum(60,100,calendar.hour,2,16,0X80);
LCD_ShowxNum(84,100,calendar.min,2,16,0X80);
LCD_ShowxNum(108,100,calendar.sec,2,16,0X80);
LED0=!LED0;
//模拟振动传感器
if(DO==0)//开始震动
{
DO_flag=1; //标志位
}
if(l<3&&DO_flag==1) //
{
l++;
LCD_ShowString (60,170,200,16,16,(u8 *)"Shock ");//显示震动
}else{
if(DO==1)//停止震动
{
l=0;
}
DO_flag=0;
LCD_ShowString (60,170,200,16,16,(u8 *)" ");//显示
}
}
usart1_cmd(); //通信协议
if(BEEP_ONOFF ==1){
LCD_ShowString(60,120,200,16,16,(u8*)"Alarm: ON ");
}
else{
LCD_ShowString(60,120,200,16,16,(u8*)"Alarm: OFF");
}
KEYSCAN=KEY_Scan(0);//不连按
if(KEYSCAN == KEY2_PRESS)
{
PWM_Flag++; //变暗速度变快
printf(" PWM变暗\r\n");
}
if(KEYSCAN == KEY3_PRESS)
{
if(PWM_Flag>1)
{
PWM_Flag--; //变亮速度变快
printf("PWM变亮\r\n");
}
else
{
printf("亮度最大\r\n");
}
}
TIM_SetCompare3(TIM4,899/PWM_Flag);//重装载值/标志位=CCR3的值
delay_ms(10);
}
}
复制代码
所有资料51hei提供下载:
刘闯代码.7z
(201.75 KB, 下载次数: 17)
2020-6-8 22:44 上传
点击文件名下载附件
下载积分: 黑币 -5
智能检测与控制 综合项目.pdf
(129.74 KB, 下载次数: 19)
2020-6-8 19:09 上传
点击文件名下载附件
下载积分: 黑币 -5
串口码.zip
(289 Bytes, 下载次数: 16)
2020-6-8 19:14 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1