- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "key.h"
- #include "usmart.h"
- #include "malloc.h"
- #include "sdio_sdcard.h"
- #include "w25qxx.h"
- #include "ff.h"
- #include "exfuns.h"
- #include "text.h"
- #include "touch.h"
- #include "usart3.h"
- #include "common.h"
- #include "driver.h"
- #include "beep.h"
- void display(int i,int f_data);
- void StepControl(u8 f_data);
- void ClockStepControl(u8 f_data);
- void ZeroStepControl(u8 f_data);
- void clock_display(int f_data);
- extern u16 SpeechData;
- int main(void)
- {
- u8 timex=0;
- u8 constate=0; //連接狀態(tài)
- u8 r_data[2];
- u8 s_data[2];
- u8 data[10]={0};
- u16 t=999; //加速第一次獲取鏈接狀態(tài)
- u8 i=0;
- u8 j=0;
- u8 k=0;
- u8 Speech=0;
- //u8 m_data[1]={0};
-
-
- delay_init(); //延時函數(shù)初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
- uart_init(9600); //串口初始化為115200
- usmart_dev.init(72); //初始化USMART
- LED_Init(); //初始化與LED連接的硬件接口
- KEY_Init(); //初始化按鍵
- LCD_Init(); //初始化LCD
- BEEP_Init(); //初始化蜂鳴器
- W25QXX_Init(); //初始化W25Q128
- tp_dev.init(); //初始化觸摸屏
- usart3_init(115200); //初始化串口3
- TIM8_OPM_RCR_Init(999,72-1); //1MHz計數(shù)頻率 單脈沖+重復計數(shù)模式
- Driver_Init(); //驅動器初始化
- my_mem_init(SRAMIN); //初始化內(nèi)部內(nèi)存池
- exfuns_init(); //為fatfs相關變量申請內(nèi)存
- f_mount(fs[1],"1:",1); //掛載FLASH.
-
-
- set_lcd();//配置LCD屏幕
- atk_8266_test(); //進入ATK_ESP8266測試
- POINT_COLOR=RED;
- Show_Str(15,160,100,12,"1號分區(qū):",12,0);
- Show_Str(15,180,100,12,"2號分區(qū):",12,0);
- Show_Str(15,200,100,12,"3號分區(qū):",12,0);
- Show_Str(15,220,100,12,"4號分區(qū):",12,0);
- Show_Str(15,240,100,12,"5號分區(qū):",12,0);
- Show_Str(15,260,100,12,"6號分區(qū):",12,0);
- Show_Str(15,280,100,12,"7號分區(qū):",12,0);
- Show_Str(15,300,100,12,"8號分區(qū):",12,0);
- Show_Str(15,340,100,12,"定時狀態(tài):",12,0);
- Show_Str(15,360,100,12,"物品選擇:",12,0);
- Show_Str(15,380,100,12,"是否提醒:",12,0);
- POINT_COLOR=BLUE;
- for(j=1;j<9;j++)
- {
- display(j,0);
- }
- //主循環(huán)
- while(1)
- {
- delay_ms(5);
- //Show_Str(90,350,100,12,m_data,12,0);
- if(USART_RX_STA==1&&Speech==0)
- {
- if(SpeechData==1)
- {
- LCD_Fill(90,160+0*20,190,160+0*20+20,WHITE);
- Show_Str(90,160+0*20,100,12,"鑰匙",12,0);
- Control(1);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
-
-
-
- }
- else if(SpeechData==2)
- {
- LCD_Fill(90,160+0*20,190,160+0*20+20,WHITE);
- Show_Str(90,160+0*20,100,12,"無",12,0);
-
- Control(1);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
-
- }
-
- if(SpeechData==3)
- {
- //m_data[0]=SpeechData+0x30;
- LCD_Fill(90,160+1*20,190,160+1*20+20,WHITE);
- Show_Str(90,160+1*20,100,12,"藥品",12,0);
- Control(2);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- }
- else if(SpeechData==4)
- {
- LCD_Fill(90,160+1*20,190,160+1*20+20,WHITE);
- Show_Str(90,160+1*20,100,12,"無",12,0);
-
- Control(2);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
-
- }
- else if(SpeechData==5)
- {
- LCD_Fill(90,160+2*20,190,160+2*20+20,WHITE);
- Show_Str(90,160+2*20,100,12,"充電寶",12,0);
- Control(3);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- }
- else if(SpeechData==6)
- {
- LCD_Fill(90,160+2*20,190,160+1*20+20,WHITE);
- Show_Str(90,160+2*20,100,12,"無",12,0);
-
- Control(3);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- }
- else if(SpeechData==7)
- {
- LCD_Fill(90,160+3*20,190,160+3*20+20,WHITE);
- Show_Str(90,160+3*20,100,12,"手機",12,0);
- Control(4);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- }
- else if(SpeechData==8)
- {
- LCD_Fill(90,160+3*20,190,160+3*20+20,WHITE);
- Show_Str(90,160+3*20,100,12,"無",12,0);
-
- Control(4);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- }
- else if(SpeechData==9)
- {
- LCD_Fill(90,160+4*20,190,160+4*20+20,WHITE);
- Show_Str(90,160+4*20,100,12,"筆",12,0);
- Control(5);
- delay_ms(1000);
- delay_ms(1000);
- Control(9);
- }
- else if(SpeechData==10)
- {
- LCD_Fill(90,160+4*20,190,160+4*20+20,WHITE);
- Show_Str(90,160+4*20,100,12,"無",12,0);
-
- Control(5);
- delay_ms(1000);
- delay_ms(1000);
- Control(9);
- }
-
- // if(SpeechData%2==0)
- // {
- // StepControl(SpeechData/2);
- // delay_ms(50);
- // display(SpeechData/2,0);
- // }
- // else
- // {
- // StepControl(SpeechData/2+1);
- // delay_ms(50);
- // display(SpeechData/2+1,SpeechData/2+1);
- // }
-
- USART_RX_STA=0;
- }
- if(USART3_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
- {
- Speech=1;
- r_data[0]=USART3_RX_BUF[13];
- r_data[1]=USART3_RX_BUF[14];
- //將狀態(tài)賦值給data數(shù)組
- switch(r_data[0])
- {
- case 1 :
- data[0]=r_data[1];
- break;
- case 2 :
- data[1]=r_data[1];
- break;
- case 3 :
- data[2]=r_data[1];
- break;
- case 4 :
- data[3]=r_data[1];
- break;
- case 5 :
- data[4]=r_data[1];
- break;
- case 6 :
- data[5]=r_data[1];
- break;
- case 7 :
- data[6]=r_data[1];
- break;
- case 8 :
- data[7]=r_data[1];
- break;
- case 9 :
- data[8]=r_data[1];
- break;
- }
-
- //顯示
- if(r_data[0]==0x09)//定時服務
- {
- clock_display(data[8]);
- }
- else//非定時服務
- {
- switch(r_data[0])
- {
- case 1 :
- display(r_data[0],r_data[1]);
- break;
- case 2 :
- display(r_data[0],r_data[1]);
- break;
- case 3 :
- display(r_data[0],r_data[1]);
- break;
- case 4 :
- display(r_data[0],r_data[1]);
- break;
- case 5 :
- display(r_data[0],r_data[1]);
- break;
- case 6 :
- display(r_data[0],r_data[1]);
- break;
- case 7 :
- display(r_data[0],r_data[1]);
- break;
- case 8 :
- display(r_data[0],r_data[1]);
- break;
- case 9 :
- break;
- }
- }
-
- //控制
- if(r_data[0]!=0x09)//沒有選擇定時服務
- {
- if(r_data[1]!=0x00)//存
- {
- StepControl(r_data[0]);
- }
- else if(r_data[1]==0x00)//取
- {
- StepControl(r_data[0]);
- }
- }
-
- else if(r_data[0]==0x09)//選擇定時服務
- {
- if((r_data[1]!=0x09)&&(r_data[1]!=0x00))
- {
- for(k=0;k<8;k++)//尋找空盒子
- {
- if(data[k]==0)
- break;
- }
- StepControl(k+1);//k+1就是選擇的盒子
- }
- else if( r_data[1]==0x09)
- {
- ClockStepControl(k+1);//定時到
- BEEP=1; //蜂鳴器提醒
- delay_ms(300);//延時300ms
- BEEP=0;
- delay_ms(300);//延時300ms
- }
- else if(r_data[1]==0x00)
- {
- ZeroStepControl(k+1);//回原位置
- k=0;
- }
- }
-
- USART3_RX_STA=0;
-
- if(constate!='+')t=1000; //狀態(tài)為還未連接,立即更新連接狀態(tài)
- else t=0; //狀態(tài)為已經(jīng)連接了,10秒后再檢查
- }
- if(t==1000)//連續(xù)10秒鐘沒有收到任何數(shù)據(jù),檢查連接是不是還存在.
- {
- constate=atk_8266_consta_check();//得到連接狀態(tài)
- if(constate=='+')Show_Str(30+40,95,200,12,"連接成功",12,0); //連接狀態(tài)
- else Show_Str(30+40,95,200,12,"連接失敗",12,0);
- t=0;
- }
- atk_8266_at_response(1);
- }
- }
- void display(int i,int f_data)
- {
- i=i-1;
- switch(f_data)
- {
- case 0 :
- LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
- Show_Str(90,160+i*20,100,12,"無",12,0);
- break;
-
- case 1 :
- LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
- Show_Str(90,160+i*20,100,12,"鑰匙",12,0);
- break;
-
- case 2 :
- LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
- Show_Str(90,160+i*20,100,12,"藥品",12,0);
- break;
-
- case 3 :
- LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
- Show_Str(90,160+i*20,100,12,"充電寶",12,0);
- break;
-
- case 4 :
- LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
- Show_Str(90,160+i*20,100,12,"手機",12,0);
- break;
-
- case 5 :
- LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
- Show_Str(90,160+i*20,100,12,"筆",12,0);
- break;
-
- case 6 :
-
- break;
-
- case 7 :
-
- break;
-
- case 8 :
-
- break;
- case 9 :
- //Show_Str(90,340,100,12,"到時",12,0);
- break;
- }
- }
- void clock_display(int f_data)
- {
- Show_Str(90,340,100,12,"開",12,0);
- switch(f_data)
- {
- case 0 :
- LCD_Fill(90,360,190,380,WHITE);
- LCD_Fill(90,340,190,360,WHITE);
- Show_Str(90,360,100,12,"無",12,0);
- LCD_Fill(90,380,190,400,WHITE);
- break;
-
- case 1 :
- LCD_Fill(90,360,190,380,WHITE);
- Show_Str(90,360,100,12,"鑰匙",12,0);
- break;
-
- case 2 :
- LCD_Fill(90,360,190,380,WHITE);
- Show_Str(90,360,100,12,"藥品",12,0);
- break;
-
- case 3 :
- LCD_Fill(90,360,190,380,WHITE);
- Show_Str(90,360,100,12,"充電寶",12,0);
- break;
-
- case 4 :
- LCD_Fill(90,360,190,380,WHITE);
- Show_Str(90,360,100,12,"手機",12,0);
- break;
-
- case 5 :
- LCD_Fill(90,360,190,380,WHITE);
- Show_Str(90,360,100,12,"筆",12,0);
- break;
-
- case 6 :
-
- break;
-
- case 7 :
-
- break;
-
- case 8 :
-
- break;
- case 9 :
- Show_Str(90,380,100,12,"提醒",12,0);
- break;
- }
-
-
-
- }
- //控制電機轉動
- void StepControl(u8 f_data)
- {
- switch(f_data)
- {
- case 1 :
- Control(1);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- break;
- case 2 :
- Control(2);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- break;
- case 3 :
- Control(3);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- break;
- case 4 :
- Control(4);
- delay_ms(1000);
- delay_ms(1000);
- Control(0);
- break;
- case 5 :
- Control(5);
- delay_ms(1000);
- delay_ms(1000);
- Control(9);
- break;
- case 6 :
- Control(6);
- delay_ms(1000);
- delay_ms(1000);
- Control(9);
- break;
- case 7 :
- Control(7);
- delay_ms(1000);
- delay_ms(1000);
- Control(9);
- break;
- case 8 :
- Control(8);
- delay_ms(1000);
- delay_ms(1000);
- Control(9);
- break;
- case 9 :
- break;
- }
- }
- //控制電機轉動,定時時間到
- void ClockStepControl(u8 f_data)
- {
- switch(f_data)//k+1就是選擇的盒子
- {
- case 1 :
- Control(1);
- break;
- case 2 :
- Control(2);
- break;
- case 3 :
- Control(3);
- break;
- case 4 :
- Control(4);
- break;
- case 5 :
- Control(5);
- break;
- case 6 :
- Control(6);
- break;
- case 7 :
- Control(7);
- break;
- case 8 :
- Control(8);
- break;
- case 9 :
- break;
- }
- }
- //控制電機轉動,定時時間到
- void ZeroStepControl(u8 f_data)
- {
- switch(f_data)//k+1就是選擇的盒子
- {
- case 1 :
- Control(0);
- break;
- case 2 :
- Control(0);
- break;
- case 3 :
- Control(0);
- break;
- case 4 :
- Control(0);
- break;
- case 5 :
- Control(9);
- break;
- case 6 :
- Control(9);
- break;
- case 7 :
- Control(9);
- break;
- case 8 :
- Control(9);
- break;
- case 9 :
- break;
- }
- }
復制代碼
最終程序.7z
(1.3 MB, 下載次數(shù): 42)
2019-7-30 23:23 上傳
點擊文件名下載附件
|