lcd_task.c 23 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024
  1. #include "lcd_task.h"
  2. #include "HT16C22.h"
  3. #include "SHT2x.h"
  4. #include "pwm.h"
  5. #include "key.h"
  6. #include "led.h"
  7. #include "All_define.h"
  8. #include "MB_RTU_deal_task.h"
  9. #include "mcu_api.h"
  10. #include "protocol.h"
  11. #include "mcu_api.h"
  12. #include "system.h"
  13. float Temp = 25;
  14. float Humi = 60;
  15. Dis_page_num dis_page_num;
  16. Dis_page_param dis_page_param;
  17. void display_device_open(void)
  18. {
  19. Animation();
  20. ht16c22_clear();
  21. }
  22. void display_air_Conditioning_close(void)
  23. {
  24. ZE_ON;
  25. DU_OFF;
  26. }
  27. void display_air_Conditioning_open(void)
  28. {
  29. u16 temp1 = 0;
  30. ZE_ON;
  31. if (dis_page_param.face_plate_param.Air_condition_mode == 0)
  32. {
  33. ZR_OFF;
  34. CS_OFF;
  35. ZL_ON;
  36. FS_OFF;
  37. }
  38. else if (dis_page_param.face_plate_param.Air_condition_mode == 1)
  39. {
  40. ZL_OFF;
  41. CS_OFF;
  42. ZR_ON;
  43. FS_OFF;
  44. }
  45. else if (dis_page_param.face_plate_param.Air_condition_mode == 2)
  46. {
  47. ZL_OFF;
  48. CS_ON;
  49. ZR_OFF;
  50. FS_OFF;
  51. }
  52. else if (dis_page_param.face_plate_param.Air_condition_mode == 3)
  53. {
  54. ZL_OFF;
  55. CS_OFF;
  56. ZR_OFF;
  57. FS_ON;
  58. }
  59. if (dis_page_param.face_plate_param.Air_wind_speed == 0x0001)
  60. {
  61. LW_ON;
  62. MW_OFF;
  63. HW_OFF;
  64. AUTO_OFF;
  65. }
  66. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0002)
  67. {
  68. LW_ON;
  69. MW_ON;
  70. HW_OFF;
  71. AUTO_OFF;
  72. }
  73. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0003)
  74. {
  75. LW_ON;
  76. MW_ON;
  77. HW_ON;
  78. AUTO_OFF;
  79. }
  80. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0100)
  81. {
  82. LW_ON;
  83. MW_ON;
  84. HW_ON;
  85. AUTO_ON;
  86. }
  87. // FS_ON;
  88. // if(dis_page_param.face_plate_param.Air_condition_mode == 2)
  89. //{
  90. // temp1 = 230;
  91. //}
  92. // else
  93. //{
  94. temp1 = (u16)(dis_page_param.face_plate_param.Air_set_temp * 10);
  95. //}
  96. Display_temp(temp1, 0);
  97. DU_ON;
  98. }
  99. void display_air_Conditioning_sleep(void)
  100. {
  101. if (dis_page_param.face_plate_param.Air_condition_mode == 0)
  102. {
  103. ZR_OFF;
  104. CS_OFF;
  105. ZL_ON;
  106. FS_OFF;
  107. }
  108. else if (dis_page_param.face_plate_param.Air_condition_mode == 1)
  109. {
  110. ZL_OFF;
  111. CS_OFF;
  112. ZR_ON;
  113. FS_OFF;
  114. }
  115. else if (dis_page_param.face_plate_param.Air_condition_mode == 2)
  116. {
  117. ZL_OFF;
  118. CS_ON;
  119. ZR_OFF;
  120. FS_OFF;
  121. }
  122. else if (dis_page_param.face_plate_param.Air_condition_mode == 3)
  123. {
  124. ZL_OFF;
  125. CS_OFF;
  126. ZR_OFF;
  127. FS_ON;
  128. }
  129. if (dis_page_param.face_plate_param.Air_wind_speed == 0x0001)
  130. {
  131. LW_ON;
  132. MW_OFF;
  133. HW_OFF;
  134. AUTO_OFF;
  135. }
  136. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0002)
  137. {
  138. LW_ON;
  139. MW_ON;
  140. HW_OFF;
  141. AUTO_OFF;
  142. }
  143. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0003)
  144. {
  145. LW_ON;
  146. MW_ON;
  147. HW_ON;
  148. AUTO_OFF;
  149. }
  150. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0100)
  151. {
  152. LW_ON;
  153. MW_ON;
  154. HW_ON;
  155. AUTO_ON;
  156. }
  157. // FS_ON;
  158. int16_t temp1 = (int16_t)(dis_page_param.face_plate_param.Real_time_Temp);
  159. Display_temp(temp1, 1);
  160. static u16 delay_time = 0;
  161. static u8 delay_flag = 0;
  162. if (delay_time++ >= 50)
  163. {
  164. delay_flag = ~delay_flag;
  165. delay_time = 0;
  166. }
  167. if (delay_flag)
  168. {
  169. DU_ON;
  170. }
  171. else if (!delay_flag)
  172. {
  173. // DU_OFF;
  174. }
  175. }
  176. void display_floor_heating_close(void)
  177. {
  178. ZS_ON;
  179. }
  180. void display_floor_heating_open(void)
  181. {
  182. ZS_ON;
  183. u16 temp1 = (u16)(dis_page_param.face_plate_param.Floor_heating_set_temp * 10);
  184. Display_temp(temp1, 0);
  185. DU_ON;
  186. }
  187. void display_floor_heating_sleep(void)
  188. {
  189. ZS_ON;
  190. int16_t temp1 = (int16_t)(dis_page_param.face_plate_param.Real_time_Temp);
  191. Display_temp(temp1, 1);
  192. static u16 delay_time = 0;
  193. static u8 delay_flag = 0;
  194. if (delay_time++ >= 50)
  195. {
  196. delay_flag = ~delay_flag;
  197. delay_time = 0;
  198. }
  199. if (delay_flag)
  200. {
  201. DU_ON;
  202. }
  203. else if (!delay_flag)
  204. {
  205. // DU_OFF;
  206. }
  207. }
  208. void display_fresh_air_close(void)
  209. {
  210. ZY_ON;
  211. }
  212. void display_fresh_air_open(void)
  213. {
  214. ZY_ON;
  215. if (dis_page_param.face_plate_param.Fresh_air_speed == 1)
  216. {
  217. LW_ON;
  218. MW_OFF;
  219. HW_OFF;
  220. // AUTO_OFF;
  221. }
  222. else if (dis_page_param.face_plate_param.Fresh_air_speed == 2)
  223. {
  224. LW_ON;
  225. MW_ON;
  226. HW_OFF;
  227. // AUTO_OFF;
  228. }
  229. else if (dis_page_param.face_plate_param.Fresh_air_speed == 3)
  230. {
  231. LW_ON;
  232. MW_ON;
  233. HW_ON;
  234. // AUTO_OFF;
  235. }
  236. if (fuji_or_shuiji == 1)
  237. {
  238. if (dis_page_param.face_plate_param.Fresh_condition_mode == 0)
  239. {
  240. ZR_OFF;
  241. CS_OFF;
  242. ZL_ON;
  243. FS_OFF;
  244. }
  245. if (dis_page_param.face_plate_param.Fresh_condition_mode == 1)
  246. {
  247. ZL_OFF;
  248. CS_OFF;
  249. ZR_ON;
  250. FS_OFF;
  251. }
  252. Display_temp((u16)(dis_page_param.face_plate_param.Fresh_set_temp * 10), 0);
  253. DU_ON;
  254. }
  255. // FS_ON;
  256. Dis_letter(1, 7);
  257. Dis_letter(2, 7);
  258. Dis_letter(3, 7);
  259. Dis_letter(4, 7);
  260. }
  261. void display_fresh_air_sleep(void)
  262. {
  263. ZY_ON;
  264. if (dis_page_param.face_plate_param.Fresh_air_speed == 1)
  265. {
  266. LW_ON;
  267. MW_OFF;
  268. HW_OFF;
  269. AUTO_OFF;
  270. }
  271. else if (dis_page_param.face_plate_param.Fresh_air_speed == 2)
  272. {
  273. LW_ON;
  274. MW_ON;
  275. HW_OFF;
  276. AUTO_OFF;
  277. }
  278. else if (dis_page_param.face_plate_param.Fresh_air_speed == 3)
  279. {
  280. LW_ON;
  281. MW_ON;
  282. HW_ON;
  283. AUTO_OFF;
  284. }
  285. // FS_ON;
  286. int16_t temp1 = (int16_t)(dis_page_param.face_plate_param.Real_time_Temp);
  287. Display_temp(temp1, 1);
  288. static u16 delay_time = 0;
  289. static u8 delay_flag = 0;
  290. if (delay_time++ >= 50)
  291. {
  292. delay_flag = ~delay_flag;
  293. delay_time = 0;
  294. }
  295. if (delay_flag)
  296. {
  297. DU_ON;
  298. }
  299. else if (!delay_flag)
  300. {
  301. // DU_OFF;
  302. }
  303. }
  304. void display_real_time_temp(void)
  305. {
  306. if (dis_page_param.face_plate_param.Air_condition_switch == 1)
  307. {
  308. printf("dis_page_param.face_plate_param.Air_condition_switch == 1");
  309. ZE_ON;
  310. if (dis_page_param.face_plate_param.Air_condition_mode == 0)
  311. {
  312. ZR_OFF;
  313. CS_OFF;
  314. ZL_ON;
  315. FS_OFF;
  316. }
  317. else if (dis_page_param.face_plate_param.Air_condition_mode == 1)
  318. {
  319. ZL_OFF;
  320. CS_OFF;
  321. ZR_ON;
  322. FS_OFF;
  323. }
  324. else if (dis_page_param.face_plate_param.Air_condition_mode == 2)
  325. {
  326. ZL_OFF;
  327. CS_ON;
  328. ZR_OFF;
  329. FS_OFF;
  330. }
  331. else if (dis_page_param.face_plate_param.Air_condition_mode == 3)
  332. {
  333. ZL_OFF;
  334. CS_OFF;
  335. ZR_OFF;
  336. FS_ON;
  337. }
  338. if (dis_page_param.face_plate_param.Air_wind_speed == 0x0001)
  339. {
  340. LW_ON;
  341. MW_OFF;
  342. HW_OFF;
  343. AUTO_OFF;
  344. }
  345. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0002)
  346. {
  347. LW_ON;
  348. MW_ON;
  349. HW_OFF;
  350. AUTO_OFF;
  351. }
  352. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0003)
  353. {
  354. LW_ON;
  355. MW_ON;
  356. HW_ON;
  357. AUTO_OFF;
  358. }
  359. else if (dis_page_param.face_plate_param.Air_wind_speed == 0x0100)
  360. {
  361. LW_ON;
  362. MW_ON;
  363. HW_ON;
  364. AUTO_ON;
  365. }
  366. }
  367. int16_t temp1 = (int16_t)(dis_page_param.face_plate_param.Real_time_Temp);
  368. Display_temp(temp1, 1);
  369. static u16 delay_time = 0;
  370. static u8 delay_flag = 0;
  371. if (delay_time++ >= 50)
  372. {
  373. delay_flag = ~delay_flag;
  374. delay_time = 0;
  375. }
  376. if (delay_flag)
  377. {
  378. DU_ON;
  379. }
  380. else if (!delay_flag)
  381. {
  382. DU_OFF;
  383. }
  384. }
  385. void display_real_time_humidity(void)
  386. {
  387. Dis_hum(dis_page_param.face_plate_param.Real_time_Humi);
  388. static u16 delay_time = 0;
  389. static u8 delay_flag = 0;
  390. if (delay_time++ >= 50)
  391. {
  392. delay_flag = ~delay_flag;
  393. delay_time = 0;
  394. }
  395. if (delay_flag)
  396. {
  397. RH_ON;
  398. }
  399. else if (!delay_flag)
  400. {
  401. RH_OFF;
  402. }
  403. }
  404. void display_slave_addr(void)
  405. {
  406. u8 EI, EE;
  407. EE = (u8)(dis_page_param.face_plate_param.Device_Slave_addr & 0x0f);
  408. EI = (u8)((dis_page_param.face_plate_param.Device_Slave_addr & 0xf0) >> 4);
  409. Dis_letter(1, 0);
  410. Dis_letter(2, 7);
  411. EI > 9 ? Dis_letter(3, EI - 10) : Display_num(3, EI);
  412. EE > 9 ? Dis_letter(4, EE - 10) : Display_num(4, EE);
  413. }
  414. void display_compensates_temp_set(void)
  415. {
  416. static u16 delay_time = 0;
  417. static u8 delay_flag = 0;
  418. if (delay_time++ >= 50)
  419. {
  420. delay_flag = ~delay_flag;
  421. delay_time = 0;
  422. }
  423. u8 II = 0;
  424. u8 IE = 0;
  425. if (dis_page_param.face_plate_param.Compensates_temp == 0)
  426. {
  427. if (dis_page_param.advanced_param.compensates_temp_character == 1)
  428. {
  429. II = 7;
  430. }
  431. else if (dis_page_param.advanced_param.compensates_temp_character == 0)
  432. {
  433. II = 0;
  434. }
  435. IE = 0;
  436. }
  437. else
  438. {
  439. if (dis_page_param.advanced_param.compensates_temp_character == 1)
  440. {
  441. II = 7;
  442. IE = abs(dis_page_param.face_plate_param.Compensates_temp);
  443. }
  444. else if (dis_page_param.advanced_param.compensates_temp_character == 0)
  445. {
  446. II = 0;
  447. IE = dis_page_param.face_plate_param.Compensates_temp;
  448. }
  449. }
  450. if (dis_page_param.advanced_param.compensates_temp_wei == 0)
  451. {
  452. if (delay_flag)
  453. {
  454. if (II == 0)
  455. Display_num(1, II);
  456. if (II == 7)
  457. Dis_letter(1, II);
  458. Display_num(2, IE);
  459. Display_num(3, 0);
  460. Dis_letter(4, 2);
  461. DH_ON;
  462. DU_ON;
  463. }
  464. if (!delay_flag)
  465. {
  466. Dis_letter(1, 8);
  467. Display_num(2, IE);
  468. Display_num(3, 0);
  469. Dis_letter(4, 2);
  470. DH_ON;
  471. DU_ON;
  472. }
  473. }
  474. if (dis_page_param.advanced_param.compensates_temp_wei == 1)
  475. {
  476. if (delay_flag)
  477. {
  478. if (II == 0)
  479. Display_num(1, II);
  480. if (II == 7)
  481. Dis_letter(1, II);
  482. Display_num(2, IE);
  483. Display_num(3, 0);
  484. Dis_letter(4, 2);
  485. DH_ON;
  486. DU_ON;
  487. }
  488. if (!delay_flag)
  489. {
  490. if (II == 0)
  491. Display_num(1, II);
  492. if (II == 7)
  493. Dis_letter(1, II);
  494. Dis_letter(2, 8);
  495. Display_num(3, 0);
  496. Dis_letter(4, 2);
  497. DH_ON;
  498. DU_ON;
  499. }
  500. }
  501. }
  502. void display_slave_addr_set(void)
  503. {
  504. static u16 delay_time = 0;
  505. static u8 delay_flag = 0;
  506. if (delay_time++ >= 50)
  507. {
  508. delay_flag = ~delay_flag;
  509. delay_time = 0;
  510. }
  511. Dis_letter(1, 0);
  512. Dis_letter(2, 7);
  513. u8 EE = dis_page_param.face_plate_param.Device_Slave_addr & 0x0f;
  514. u8 EI = (dis_page_param.face_plate_param.Device_Slave_addr & 0xf0) >> 4;
  515. if (dis_page_param.advanced_param.slave_addr_wei == 1)
  516. {
  517. if (delay_flag)
  518. {
  519. EI > 9 ? Dis_letter(3, EI - 10) : Display_num(3, EI);
  520. EE > 9 ? Dis_letter(4, EE - 10) : Display_num(4, EE);
  521. }
  522. if (!delay_flag)
  523. {
  524. Dis_letter(3, 8);
  525. EE > 9 ? Dis_letter(4, EE - 10) : Display_num(4, EE);
  526. }
  527. }
  528. else if (dis_page_param.advanced_param.slave_addr_wei == 0)
  529. {
  530. if (delay_flag)
  531. {
  532. EI > 9 ? Dis_letter(3, EI - 10) : Display_num(3, EI);
  533. EE > 9 ? Dis_letter(4, EE - 10) : Display_num(4, EE);
  534. };
  535. if (!delay_flag)
  536. {
  537. EI > 9 ? Dis_letter(3, EI - 10) : Display_num(3, EI);
  538. Dis_letter(4, 8);
  539. }
  540. }
  541. }
  542. void display_led_brightness_set(void)
  543. {
  544. static u16 delay_time = 0;
  545. static u8 delay_flag = 0;
  546. if (delay_time++ >= 50)
  547. {
  548. delay_flag = ~delay_flag;
  549. delay_time = 0;
  550. }
  551. u8 SI = 0, SE = 0;
  552. SE = (dis_page_param.face_plate_param.Led_Brightness & 0x0F00) >> 8;
  553. SI = dis_page_param.face_plate_param.Led_Brightness & 0x000f;
  554. Dis_letter(1, 1);
  555. Dis_letter(2, 7);
  556. if (dis_page_param.advanced_param.led_brightness_wei == 0)
  557. {
  558. if (delay_flag)
  559. {
  560. Display_num(3, SE);
  561. Display_num(4, SI);
  562. }
  563. if (!delay_flag)
  564. {
  565. Dis_letter(3, 8);
  566. Display_num(4, SI);
  567. }
  568. }
  569. else if (dis_page_param.advanced_param.led_brightness_wei == 1)
  570. {
  571. if (delay_flag)
  572. {
  573. Display_num(3, SE);
  574. Display_num(4, SI);
  575. }
  576. if (!delay_flag)
  577. {
  578. Display_num(3, SE);
  579. Dis_letter(4, 8);
  580. }
  581. }
  582. }
  583. void display_sleep_time_set(void)
  584. {
  585. u8 FOUR = dis_page_param.face_plate_param.Sleep_time_addr;
  586. Dis_letter(1, 6);
  587. Dis_letter(2, 7);
  588. Dis_letter(3, 8);
  589. FOUR > 5 ? Dis_letter(4, 5) : Display_num(4, FOUR);
  590. }
  591. void display_dis_LowTempProtect_set(void)
  592. {
  593. u8 FOUR = dis_page_param.face_plate_param.Ltemp_Protection_valve;
  594. Dis_letter(1, 2);
  595. Dis_letter(2, 7);
  596. Dis_letter(3, 8);
  597. FOUR > 5 ? Dis_letter(4, 5) : Display_num(4, FOUR);
  598. }
  599. void display_HeatingProtect_set(void)
  600. {
  601. u8 FOUR = dis_page_param.face_plate_param.Floor_Heating_Protecton_value;
  602. Dis_letter(1, 3);
  603. Dis_letter(2, 7);
  604. Dis_letter(3, 8);
  605. FOUR > 5 ? Dis_letter(4, 5) : Display_num(4, FOUR);
  606. }
  607. void display_lcd_brightness_set(void)
  608. {
  609. u8 FOUR = dis_page_param.face_plate_param.Env_Light;
  610. Dis_letter(1, 4);
  611. Dis_letter(2, 7);
  612. Dis_letter(3, 8);
  613. FOUR > 7 ? Dis_letter(4, 5) : Display_num(4, FOUR);
  614. }
  615. void display_speed_relay_set(void)
  616. {
  617. u8 FOUR = dis_page_param.face_plate_param.Speed_Relay;
  618. Dis_letter(1, 5);
  619. Dis_letter(2, 7);
  620. Dis_letter(3, 8);
  621. Display_num(4, FOUR);
  622. }
  623. uint8_t Need_clear_lcd(Dis_page_num *last_dis_page_num)
  624. {
  625. if (memcmp(last_dis_page_num, &dis_page_num, sizeof(Dis_page_num)) != 0)
  626. {
  627. if (dis_page_num.display_page == dis_air_Conditioning && dis_page_num.Dis_air_Conditioning == dis_air_Conditioning_open &&
  628. last_dis_page_num->Dis_air_Conditioning == dis_air_Conditioning_close)
  629. {
  630. last_dis_page_num->display_page = dis_device_open;
  631. }
  632. else if (dis_page_num.display_page == dis_floor_heating && dis_page_num.Dis_floor_heating == dis_floor_heating_open &&
  633. last_dis_page_num->Dis_floor_heating == dis_floor_heating_close)
  634. {
  635. last_dis_page_num->display_page = dis_device_open;
  636. }
  637. else if (dis_page_num.display_page == dis_fresh_air && dis_page_num.Dis_fresh_air == dis_fresh_air_open &&
  638. last_dis_page_num->Dis_fresh_air == dis_fresh_air_close)
  639. {
  640. last_dis_page_num->display_page = dis_device_open;
  641. }
  642. else if (last_dis_page_num->display_page == dis_air_Conditioning && dis_page_num.display_page == dis_air_Conditioning)
  643. {
  644. if (dis_page_num.Dis_air_Conditioning == dis_air_Conditioning_close)
  645. {
  646. last_dis_page_num->display_page = dis_switch_interface;
  647. }
  648. else
  649. {
  650. memcpy(last_dis_page_num, &dis_page_num, sizeof(Dis_page_num));
  651. }
  652. }
  653. else if (last_dis_page_num->display_page == dis_floor_heating && dis_page_num.display_page == dis_floor_heating)
  654. {
  655. if (dis_page_num.Dis_floor_heating == dis_floor_heating_close)
  656. {
  657. last_dis_page_num->display_page = dis_switch_interface;
  658. }
  659. else
  660. {
  661. memcpy(last_dis_page_num, &dis_page_num, sizeof(Dis_page_num));
  662. }
  663. }
  664. else
  665. {
  666. last_dis_page_num->display_page = dis_switch_interface;
  667. }
  668. return 0;
  669. }
  670. return 1;
  671. }
  672. #define Get_temp_humi_TASK_PRIO 30
  673. #define Get_temp_humi_STK_SIZE 256
  674. TaskHandle_t Get_temp_humi_Handler;
  675. #define TEMP_ADJ_RELAY_ON (-4.5)
  676. #define TEMP_ADJ_RELAY_OF (-2.5)
  677. #define TEMP_ADJ_CHANGE_RATE (0.03)
  678. float temp_adjust_param = (-2.0);
  679. #define Test_Real_Temp_Enable 0
  680. int16_t Test_Real_Temp = 1;
  681. void Get_temp_humi_task(void)
  682. {
  683. int Time_count = 0;
  684. int temp_adj_timer_start_tick = 0;
  685. SHT2x_Init();
  686. for (;;)
  687. {
  688. Time_count++;
  689. uint8_t relay_actived = gpio_output_bit_get(GPIOC, GPIO_PIN_2) + gpio_output_bit_get(GPIOA, GPIO_PIN_1) + gpio_output_bit_get(GPIOC, GPIO_PIN_3) + gpio_output_bit_get(GPIOC, GPIO_PIN_0) + gpio_output_bit_get(GPIOC, GPIO_PIN_1);
  690. float temp_adjust_target = (relay_actived > 0) ? (TEMP_ADJ_RELAY_ON) : (TEMP_ADJ_RELAY_OF);
  691. if (Time_count - temp_adj_timer_start_tick > 50)
  692. {
  693. temp_adj_timer_start_tick = Time_count;
  694. if (temp_adjust_param >= temp_adjust_target)
  695. {
  696. temp_adjust_param = (temp_adjust_param - temp_adjust_target > TEMP_ADJ_CHANGE_RATE) ? (temp_adjust_param - TEMP_ADJ_CHANGE_RATE) : temp_adjust_target;
  697. }
  698. else
  699. {
  700. temp_adjust_param = (temp_adjust_target - temp_adjust_param > TEMP_ADJ_CHANGE_RATE) ? (temp_adjust_param + TEMP_ADJ_CHANGE_RATE) : temp_adjust_target;
  701. }
  702. }
  703. int8_t temperature_offset;
  704. temperature_offset = (int8_t)dis_page_param.face_plate_param.Compensates_temp;
  705. temperature_offset = (temperature_offset > 9) ? (9) : ((temperature_offset < -9) ? (-9) : (temperature_offset));
  706. #if Test_Real_Temp_Enable
  707. float temp = Test_Real_Temp;
  708. #else
  709. float temp = SHT2x_GetTempPoll();
  710. #endif
  711. Temp = (temp + temperature_offset + temp_adjust_param) * 0.1 + Temp * 0.9;
  712. dis_page_param.face_plate_param.Real_time_Temp = (int16_t)(Temp * 10);
  713. // printf("Temp %d",dis_page_param.face_plate_param.Real_time_Temp);
  714. mcu_dp_value_update(DPID_TEMP_CURRENT, dis_page_param.face_plate_param.Real_time_Temp / 10);
  715. Humi = (u8)SHT2x_GetHumiPoll();
  716. dis_page_param.face_plate_param.Real_time_Humi = (u8)Humi;
  717. vTaskDelay(200);
  718. }
  719. }
  720. void lcd_task(void *pvParameters)
  721. {
  722. taskENTER_CRITICAL();
  723. xTaskCreate((TaskFunction_t)Get_temp_humi_task,
  724. (const char *)"Get_temp_humi_task",
  725. (uint16_t)Get_temp_humi_STK_SIZE,
  726. (void *)NULL,
  727. (UBaseType_t)Get_temp_humi_TASK_PRIO,
  728. (TaskHandle_t *)&Get_temp_humi_Handler);
  729. taskEXIT_CRITICAL();
  730. u8 lcd_value = (u8)(dis_page_param.face_plate_param.Env_Light & 0x0f);
  731. Set_LCD_lum(lcd_value);
  732. ht16c22_init();
  733. memset(&dis_page_num, 0, sizeof(Dis_page_num));
  734. dis_page_num.display_page = dis_air_Conditioning;
  735. Dis_page_num last_dis_page_num;
  736. memcpy(&last_dis_page_num, &dis_page_num, sizeof(Dis_page_num));
  737. if (dis_page_param.face_plate_param.Air_condition_switch == 1)
  738. {
  739. dis_page_num.Dis_air_Conditioning = dis_air_Conditioning_open;
  740. }
  741. if (dis_page_param.face_plate_param.Floor_heating_switch == 1)
  742. {
  743. dis_page_num.Dis_floor_heating = dis_floor_heating_open;
  744. }
  745. if (dis_page_param.face_plate_param.Fresh_air_switch == 1)
  746. {
  747. dis_page_num.Dis_fresh_air = dis_fresh_air_open;
  748. }
  749. switch (dis_page_param.face_plate_param.Panel_Shield)
  750. {
  751. case 1:
  752. {
  753. dis_page_num.display_page = dis_fresh_air;
  754. }
  755. break;
  756. case 2:
  757. case 3:
  758. {
  759. dis_page_num.display_page = dis_floor_heating;
  760. }
  761. break;
  762. case 4:
  763. case 5:
  764. case 6:
  765. case 7:
  766. {
  767. dis_page_num.display_page = dis_air_Conditioning;
  768. }
  769. break;
  770. default:
  771. break;
  772. }
  773. int lcd_flag = 0; // 1�յ�2��ů3�·�
  774. TickType_t tstart = xTaskGetTickCount();
  775. while (1)
  776. {
  777. if (Need_clear_lcd(&last_dis_page_num))
  778. {
  779. }
  780. if (zigbee_cmd.Is_zigbee_cmd == 1 && zigbee_cmd.Is_From_485 == 0)
  781. {
  782. if (zigbee_cmd.Is_clear_lcd == 1)
  783. {
  784. display_device_open();
  785. zigbee_cmd.Is_clear_lcd = 0;
  786. }
  787. switch (zigbee_cmd.work_state_cur)
  788. {
  789. case 0:
  790. if (lcd_flag != 1)
  791. {
  792. lcd_flag = 1;
  793. ht16c22_clear();
  794. dis_page_param.sleep_times = 0;
  795. // zigbee_cmd.Is_Wakeup=1;
  796. }
  797. if (zigbee_cmd.work_state_info.air_condition.switch_onoff == 1)
  798. {
  799. dis_page_num.display_page = dis_air_Conditioning;
  800. dis_page_num.Dis_air_Conditioning = dis_air_Conditioning_open;
  801. // dis_page_param.face_plate_param.Air_condition_switch = 0x01;
  802. last_dis_page_num.display_page = dis_air_Conditioning;
  803. last_dis_page_num.Dis_air_Conditioning = dis_air_Conditioning_open;
  804. dis_page_param.face_plate_param.Air_condition_mode = zigbee_cmd.work_state_info.air_condition.mode;
  805. dis_page_param.face_plate_param.Air_wind_speed = zigbee_cmd.work_state_info.air_condition.level;
  806. dis_page_param.face_plate_param.Air_set_temp = zigbee_cmd.work_state_info.air_condition.temp_set;
  807. }
  808. else
  809. {
  810. // dis_page_param.face_plate_param.Air_condition_switch = 0x00;
  811. dis_page_num.display_page = dis_air_Conditioning;
  812. dis_page_num.Dis_air_Conditioning = dis_air_Conditioning_close;
  813. }
  814. break;
  815. case 1:
  816. if (lcd_flag != 2)
  817. {
  818. lcd_flag = 2;
  819. ht16c22_clear();
  820. dis_page_param.sleep_times = 0;
  821. // zigbee_cmd.Is_Wakeup=1;
  822. }
  823. if (zigbee_cmd.work_state_info.floor_condition.switch_onoff == 1)
  824. {
  825. dis_page_num.display_page = dis_floor_heating;
  826. dis_page_num.Dis_floor_heating = dis_floor_heating_open;
  827. // dis_page_param.face_plate_param.Floor_heating_switch = 1;
  828. last_dis_page_num.display_page = dis_floor_heating;
  829. last_dis_page_num.Dis_floor_heating = dis_floor_heating_open;
  830. dis_page_param.face_plate_param.Floor_heating_set_temp = zigbee_cmd.work_state_info.floor_condition.temp_set;
  831. }
  832. else
  833. {
  834. dis_page_num.display_page = dis_floor_heating;
  835. dis_page_num.Dis_floor_heating = dis_floor_heating_close;
  836. }
  837. break;
  838. case 2:
  839. if (lcd_flag != 3)
  840. {
  841. lcd_flag = 3;
  842. ht16c22_clear();
  843. dis_page_param.sleep_times = 0;
  844. // zigbee_cmd.Is_Wakeup=1;
  845. }
  846. if (zigbee_cmd.work_state_info.fresh_air_condition.switch_onoff == 1)
  847. {
  848. dis_page_num.display_page = dis_fresh_air;
  849. dis_page_num.Dis_fresh_air = dis_fresh_air_open;
  850. // dis_page_param.face_plate_param.Fresh_air_switch = 1;
  851. last_dis_page_num.display_page = dis_fresh_air;
  852. last_dis_page_num.Dis_fresh_air = dis_fresh_air_open;
  853. dis_page_param.face_plate_param.Fresh_air_speed = zigbee_cmd.work_state_info.fresh_air_condition.level;
  854. }
  855. else
  856. {
  857. dis_page_num.display_page = dis_fresh_air;
  858. dis_page_num.Dis_fresh_air = dis_fresh_air_close;
  859. }
  860. break;
  861. default:
  862. break;
  863. }
  864. }
  865. switch (last_dis_page_num.display_page)
  866. {
  867. case dis_switch_interface:
  868. ht16c22_clear();
  869. memcpy(&last_dis_page_num, &dis_page_num, sizeof(Dis_page_num));
  870. break;
  871. case dis_device_open:
  872. display_device_open();
  873. memcpy(&last_dis_page_num, &dis_page_num, sizeof(Dis_page_num));
  874. break;
  875. case dis_air_Conditioning:
  876. {
  877. dis_page_param.Message_sleep_times = 0;
  878. dis_page_param.Last_device_page_num = dis_air_Conditioning;
  879. switch (last_dis_page_num.Dis_air_Conditioning)
  880. {
  881. case dis_air_Conditioning_close:
  882. display_air_Conditioning_close();
  883. break;
  884. case dis_air_Conditioning_open:
  885. if (dis_page_param.sleep_times++ >= 3001)
  886. {
  887. // zigbee_cmd.Is_Out_sleep=0;
  888. dis_page_param.sleep_times = 0;
  889. dis_page_num.Dis_air_Conditioning = dis_air_Conditioning_sleep;
  890. }
  891. display_air_Conditioning_open();
  892. break;
  893. case dis_air_Conditioning_sleep:
  894. display_air_Conditioning_sleep();
  895. break;
  896. default:
  897. break;
  898. }
  899. }
  900. break;
  901. case dis_floor_heating:
  902. {
  903. dis_page_param.Message_sleep_times = 0;
  904. dis_page_param.Last_device_page_num = dis_floor_heating;
  905. switch (last_dis_page_num.Dis_floor_heating)
  906. {
  907. case dis_floor_heating_close:
  908. display_floor_heating_close();
  909. break;
  910. case dis_floor_heating_open:
  911. if (dis_page_param.sleep_times++ >= 3001)
  912. {
  913. // zigbee_cmd.Is_Out_sleep=0;
  914. dis_page_param.sleep_times = 0;
  915. dis_page_num.Dis_floor_heating = dis_floor_heating_sleep;
  916. }
  917. display_floor_heating_open();
  918. break;
  919. case dis_floor_heating_sleep:
  920. display_floor_heating_sleep();
  921. break;
  922. default:
  923. break;
  924. }
  925. }
  926. break;
  927. case dis_fresh_air:
  928. {
  929. dis_page_param.Message_sleep_times = 0;
  930. dis_page_param.Last_device_page_num = dis_floor_heating;
  931. switch (last_dis_page_num.Dis_fresh_air)
  932. {
  933. case dis_fresh_air_close:
  934. display_fresh_air_close();
  935. break;
  936. case dis_fresh_air_open:
  937. if (dis_page_param.sleep_times++ >= 3001)
  938. {
  939. // zigbee_cmd.Is_Out_sleep=0;
  940. dis_page_param.sleep_times = 0;
  941. dis_page_num.Dis_fresh_air = dis_fresh_air_sleep;
  942. }
  943. display_fresh_air_open();
  944. break;
  945. case dis_fresh_air_sleep:
  946. display_fresh_air_sleep();
  947. break;
  948. default:
  949. break;
  950. }
  951. }
  952. break;
  953. case dis_message_read:
  954. {
  955. if (dis_page_param.Message_sleep_times++ >= 1001)
  956. {
  957. dis_page_param.Message_sleep_times = 0;
  958. dis_page_num.display_page = (display_page_t)dis_page_param.Last_device_page_num;
  959. }
  960. switch (last_dis_page_num.Dis_message_read)
  961. {
  962. case dis_real_time_temp:
  963. display_real_time_temp();
  964. break;
  965. case dis_real_time_humidity:
  966. display_real_time_humidity();
  967. break;
  968. case dis_slave_addr:
  969. display_slave_addr();
  970. break;
  971. default:
  972. break;
  973. }
  974. }
  975. break;
  976. case dis_advanced_set:
  977. {
  978. if (dis_page_param.advanced_setting_time++ >= 510)
  979. {
  980. dis_page_param.advanced_setting_time = 0;
  981. dis_page_num.display_page = (display_page_t)dis_page_param.Last_device_page_num;
  982. }
  983. switch (last_dis_page_num.Dis_advanced_set)
  984. {
  985. case dis_compensates_temp_set:
  986. display_compensates_temp_set();
  987. break;
  988. case dis_slave_addr_set:
  989. display_slave_addr_set();
  990. break;
  991. case dis_led_brightness_set:
  992. display_led_brightness_set();
  993. break;
  994. case dis_sleep_time_set:
  995. display_sleep_time_set();
  996. break;
  997. case dis_LowTempProtect_set:
  998. display_dis_LowTempProtect_set();
  999. break;
  1000. case dis_HeatingProtect_set:
  1001. display_HeatingProtect_set();
  1002. break;
  1003. case dis_lcd_brightness_set:
  1004. display_lcd_brightness_set();
  1005. break;
  1006. case dis_speed_relay_set:
  1007. display_speed_relay_set();
  1008. break;
  1009. default:
  1010. break;
  1011. }
  1012. }
  1013. break;
  1014. default:
  1015. break;
  1016. }
  1017. vTaskDelayUntil(&tstart, 10);
  1018. }
  1019. }