智能控制與檢測
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
|