久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3220|回復: 0
打印 上一主題 下一主題
收起左側

STM32+UCOSII+DHT11+DS1302源碼

[復制鏈接]
跳轉到指定樓層
樓主
    μC/OS-II由Micrium公司提供,是一個可移植、可固化的、可裁剪的、占先式多任務實時內核,它適用于多種微處理器,微控制器和數字處理芯片。


單片機源程序如下:

  1. #include "includes.h"
  2. #include "stdio.h"
  3. #include  "led.h"
  4. #include "pwm.h"
  5. #include "adc.h"
  6. #include "ds1302.h"
  7. #include "lcd.h"
  8. #include "lunar.h"
  9. #include "dht11.h"
  10. #include "delay.h"

  11. /////////////////////////UCOSII任務堆棧設置///////////////////////////////////
  12. //START 任務
  13. //設置任務優先級
  14. #define START_TASK_PRIO                              15 //開始任務的優先級設置為最低
  15. //設置任務堆棧大小
  16. #define START_STK_SIZE                                  64
  17. //創建任務堆棧空間        
  18. OS_STK START_TASK_STK[START_STK_SIZE];
  19. //任務函數接口
  20. void start_task(void *pdata);        
  21.                            

  22. #define LED_TASK_PRIO                              10
  23. OS_STK  LED_TASK_STK[64];
  24. void led_task(void * pdata);

  25. OS_STK  ALARM_TASK_STK[64];
  26. void alarm_task(void * pdata);

  27. OS_STK  TIME_TASK_STK[64];
  28. void time_task(void * pdata);

  29. OS_STK  TEMP_TASK_STK[64];
  30. void temp_task(void * pdata);

  31. OS_STK  ADC_TASK_STK[64];
  32. void adc_task(void * pdata);

  33. OS_EVENT *sem_led;
  34. OS_EVENT *sem_key;

  35. u16 light,sign;
  36. u8 temp=0,humi=0;
  37.         
  38. int main(void)
  39. {         
  40.         delay_init();
  41.         led_init();
  42.         adc_init();
  43.         pwm_init();
  44.         LCD_Init();
  45.         dht11_init();
  46.         ds1302_init();
  47.          
  48.         OSInit();   
  49.          OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//創建起始任務
  50.         OSStart();
  51. }


  52.          
  53. //開始任務
  54. void start_task(void *pdata)
  55. {
  56.   OS_CPU_SR cpu_sr=0;
  57.         pdata = pdata;
  58. //        sem_led=OSSemCreate(0);
  59. //        sem_key=OSMboxCreate(0);
  60.         
  61.         OSStatInit();                                        //初始化統計任務.這里會延時1秒鐘左右        
  62.          OS_ENTER_CRITICAL();                        //進入臨界區(無法被中斷打斷)   
  63.                                                    
  64.          OSTaskCreate(time_task,(void *)0,(OS_STK*)&TIME_TASK_STK[63],5);
  65.         OSTaskCreate(adc_task,(void *)0,(OS_STK*)&ADC_TASK_STK[63],6);
  66.         OSTaskCreate(temp_task,(void *)0,(OS_STK*)&TEMP_TASK_STK[63],7);
  67.         
  68.         OSTaskCreate(alarm_task,(void *)0,(OS_STK*)&ALARM_TASK_STK[63],9);
  69.         OSTaskCreate(led_task,(void *)0,(OS_STK*)&LED_TASK_STK[63],LED_TASK_PRIO);
  70.         
  71.         OSTaskSuspend(START_TASK_PRIO);        //掛起起始任務.
  72.         OSTaskSuspend(LED_TASK_PRIO);        
  73.         OS_EXIT_CRITICAL();                                //退出臨界區(可以被中斷打斷)
  74. }


  75. //LED2任務
  76. void time_task(void *pdata)
  77. {         
  78.         pdata=pdata;
  79.         while(1)
  80.         {
  81.                         POINT_COLOR=BLACK;
  82.                         display();                                                
  83.                         display_lunar();
  84.                         delay_ms(100);
  85.         };
  86. }

  87. void adc_task(void *pdata)
  88. {
  89.         while(1)
  90.         {
  91.                 POINT_COLOR=BLACK;
  92.                 LCD_ShowChinese(20,172,0,24,0);                                
  93.                 LCD_ShowChinese(44,172,1,24,0);
  94.                 light=Get_AD_Light(ADC_Channel_6,10);                                
  95.                 LCD_ShowNum(68,172,light,3,24);
  96.                
  97.                 delay_ms(100);
  98.         }
  99. }

  100. void temp_task(void * pdata )
  101. {
  102.         while(1)
  103.         {
  104.                         POINT_COLOR=BLACK;
  105.                         dht11_read_data(&temp,&humi);
  106.                         LCD_ShowChinese(20,196,23,24,0);                                
  107.                         LCD_ShowChinese(44,196,25,24,0);
  108.                         LCD_ShowNum(68,196,temp,2,24);
  109.                         LCD_ShowChar(96,196,'C',24,0);
  110.                         
  111.                         LCD_ShowChinese(120,196,24,24,0);                                
  112.                         LCD_ShowChinese(144,196,25,24,0);
  113.                         LCD_ShowNum(172,196,humi,2,24);
  114.                         
  115.                         delay_ms(100);
  116.         }        
  117. }

  118. void alarm_task(void * pdata)
  119. {
  120.                 while(1)
  121.                 {
  122.                                 if(((time_buf[3]<=7)&&(time_buf[3]>=0))||((time_buf[3]<24)&&(time_buf[3]>=20)))                        
  123.                                 {
  124.                                         sign = 1;
  125.                                 }
  126.                                 else
  127.                                         sign = 0;
  128.                                 if((sign==1)||(Sensor==1))                                       
  129.                                 {
  130.                                         TIM_SetCompare2(TIM3, (100-light)*20);                                
  131.                                         if(Sensor==1)
  132.                                         {
  133.                                                                 LCD_Fill(20,220,20,172,BACK_COLOR);
  134.                                                 //                POINT_COLOR=RED;
  135.                                                                 LCD_ShowChinese(20,220,5,24,0);
  136.                                                                 LCD_ShowChinese(44,220,6,24,0);
  137.                                         }                                
  138.                                 }
  139.                                 else if((Sensor==0)||(sign==0))
  140.                                 {
  141.                                                 TIM_SetCompare2(TIM3, 0);
  142.                                                 if(Sensor==0)
  143.                                                 {
  144.                                                                 LCD_Fill(20,220,20,172,BACK_COLOR);
  145.                                                 //                POINT_COLOR=GREEN;
  146.                                                                 LCD_ShowChinese(20,220,4,24,0);
  147.                                                                 LCD_ShowChinese(44,220,6,24,0);
  148.                                                 }                                       
  149.                                 }
  150.                         if((time_buf[2]==0)&&(time_buf[1]==0))                                                                                       
  151.                                                 OSTaskResume(LED_TASK_PRIO);
  152. ……………………

  153. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
ucosii源碼.rar (567.22 KB, 下載次數: 109)




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级黄色夫妻生活 | 国产成人免费视频网站高清观看视频 | 九九九久久国产免费 | 最近日韩中文字幕 | 日韩欧美一区二区三区 | 天天干夜夜操 | 黄色一级毛片 | 久久91精品国产一区二区三区 | 久久久久久免费毛片精品 | 日本天堂一区 | 日韩电影免费在线观看中文字幕 | 91精品久久久久久久久久 | 自拍偷拍欧美 | 亚洲国产精品99久久久久久久久 | 99精品电影| 欧美日韩中文字幕 | 成人精品网 | 日韩精品一区二 | 污污免费网站 | 亚洲精视频 | 99精品视频一区二区三区 | 欧美最猛黑人 | 国产专区在线 | 黄网站免费在线看 | 亚洲日日| 久久久久亚洲精品 | 久久精品欧美一区二区三区不卡 | 狠狠干av| 免费人成激情视频在线观看冫 | 99热热| 一区二区三区不卡视频 | 国产美女在线播放 | 91黄色免费看 | 日韩毛片中文字幕 | 狠狠天天| 久久精品国产一区二区电影 | 国产精品免费在线 | 国产成人99久久亚洲综合精品 | 亚洲精品视频免费 | 观看毛片| 中文字幕视频在线看5 |