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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于NTC熱敏電阻和nRF24L01的無線溫度計設計

  [復制鏈接]
跳轉到指定樓層
樓主
本作品部分靈感和啟發來自以下貼子,在此表示感謝:
http://www.zg4o1577.cn/bbs/dpj-57255-1.html

本作品使用NTC熱敏電阻和nRF24L01實現無線測溫功能。使用前請仔細閱讀說明文字。

【測量部分】
平臺:STC15W408AS,頻率:22.1184MHz

測量部分使用NTC-MF52-103/3435熱敏電阻進行溫度采集,通過讀取單片機內部BandGap電壓得到準確的電源電壓和外部電壓,進而使用查表方法得到對應的最靠近的溫度值,處理并顯示。無線部分采用2.4G載波的nRF24L01模塊進行數據傳輸。

誤差分析:
設此采集過程中,影響采集精度的唯一因素為ADC對電壓的分辨率,若排除高精度分壓電阻的誤差,則在5V穩定電壓供電條件下,可得到能識別的NTC電阻變化跨度為97.7517106549(十倍歐姆),由于NTC電阻阻值是隨溫度非線性變化的,則固定分辨率下,不同溫度值附近精度不同,本次設計使用的單片機具有10位ADC,最小分辨率為4.8828mV,計算得到20℃定點溫度下的理論跨度誤差約為1.521190476%。

【接收顯示部分】

平臺:STM8S103F2P6,HSI:16MHz,CPUDIV:8
顯示使用雙數碼管顯示,分別使用一個595進行段選控制(別問我為什么用兩個595,設計的時候沒想太多...),位選使用一個138譯碼器解決。
可以顯示正負溫度,自動消零。


程序部分說明:
1.發送和接收部分的nRF24L01驅動函數均進行了精簡,發送部分僅有發送相關函數,接收部分只有接收部分的函數,移植需要注意。

2.無線報文數據格式見數據采集的程序,一共有14個字節,都是數字的形式,接收到之后直接判斷送顯即可。


【實物圖片】
數據采集部分


接收部分的實際效果1


接收部分的實際效果2


接收部分數碼管段選電路連接

數據采集部分重點電路

接收顯示部分單片機引腳定義(典型連接)


【程序概要】
測量部分
  1. #include"STC15.H"        //單片機寄存器定義
  2. #include"Binary.H"        //提供二進制輸入
  3. #include<intrins.h>        //提供_nop_函數
  4. #include<math.h>        //提供fabs浮點數絕對值轉換函數
  5. #include"NTC3435.c"        //提供NTC查詢表
  6. #include"nRF24L01.C"//提供nRF24L01驅動

  7. //初始化變量
  8. unsigned int code Voltage_BandGap_ROM _at_ 0x1ff7;        //8K程序空間的MCU
  9. //unsigned int code Voltage_BandGap_ROM _at_ 0xe7f7;//58K程序空間的MCU

  10. //運行變量
  11. unsigned int ADC_DATA;                        //讀取到的ADC轉換值
  12. unsigned int ADC_BandGap;                //讀取的BandGap轉換值
  13. float VCC_Voltage;                                //計算得到的VCC電壓值,單位mV
  14. float NTC_Voltage;                                //計算得到的NTC分壓電壓值,單位mV
  15. float NTC_Temperature;                        //查表計算得到的NTC對應溫度值,單位℃
  16. unsigned long NTC_R_Comp=0;                //待對比的電阻值,單位十倍歐姆

  17. //運行計數
  18. unsigned int T0_Cnt=0;                        //定時器0周期計數

  19. //運行標志位
  20. bit En_ADC_Value=0;                                //ADC轉換值標志 0:無效 1:有效
  21. bit Do_VCC_Voltage_Flash=0;                //電源電壓值刷新動作標志位 1:執行一次更新

  22. /************************************************************
  23. 名稱:基于NTC熱敏電阻和nRF24L01的無線溫度計(測量部分)
  24. 平臺:STC15W408AS,頻率:22.1184MHz
  25. 測試:IAP15W4K58S4,頻率:22.1184MHz
  26. 簡介:測量部分使用NTC-MF52-103/3435熱敏電阻進行溫度采集,
  27.         通過讀取單片機內部BandGap電壓得到準確的電源電壓和外部電壓,
  28.         使用查表方法得到對應的最靠近的溫度值,處理并顯示。
  29.         無線部分采用2.4G載波的nRF24L01模塊進行數據傳輸。

  30. 精度說明:設此采集過程中,影響采集精度的唯一因素為ADC對電壓的分辨率,
  31.         若排除高精度分壓電阻的誤差,則在5V穩定電壓供電條件下,可得到
  32.         能識別的NTC電阻變化跨度為97.7517106549(十倍歐姆),由于NTC電阻
  33.         阻值是隨溫度非線性變化的,則固定分辨率下,不同溫度值附近精度不同,
  34.         本次設計使用的單片機具有10位ADC,最小分辨率為4.8828mV,
  35.         計算得到20℃定點溫度下的理論跨度誤差約為1.521190476%。

  36. 注意:程序下載時請選中:在程序區的結束處添加重要測試參數

  37. 程序編寫:凌凈清河
  38. 硬件制作:凌凈欣羽
  39. 文稿排版:凌凈欣羽

  40. 日期:2019年2月18日
  41. 聲明:相關程序參考宏晶科技例程
  42. 所屬:新礦城學習基地#2019
  43. ************************************************************/
  44. void delay(unsigned long i)                                        //延時函數,調用此函數進行一段時間的非精準延時
  45. {
  46.         while(i--);
  47. }

  48. void VCC_Voltage_Read()                                                //調用此函數更新電源電壓值,存儲在VCC_Voltage變量中,該函數改變ADC的設置
  49. {
  50.         P1ASF=B00000000;                                                //不設置P1ASF,以便上電讀取BandGap電壓的ADC轉換值
  51.         ADC_CONTR=B10000000;                                        //開啟ADC電源,設置轉換速度540時鐘周期,清空轉換標志位,停止轉換,模擬通道選擇P1^0
  52.         ADC_RES=0;                                                                //清除結果寄存器
  53.         ADC_RESL=0;                                                                //清除結果寄存器
  54.         CLK_DIV&=B11011111;                                                //ADC_RES[7:0]存放高8位ADC結果,ADC_RES[1:0]存放低2位ADC結果
  55.         //PADC=1;                                                                //設置A/D轉換中斷優先級為最高
  56.         
  57.         ADC_CONTR|=0x08;                                                //開始轉換
  58.         _nop_();
  59.         _nop_();
  60.         _nop_();
  61.         _nop_();                                                                //按照例程延時4個周期
  62.         while(!En_ADC_Value);                                        //等待轉換結束
  63.         En_ADC_Value=0;                                                        //清除標志位
  64.         ADC_BandGap=ADC_DATA;                                        //保存BandGap的ADC轉換值
  65.         VCC_Voltage=Voltage_BandGap_ROM*1023.0/(float)ADC_BandGap;//電源電壓值計算
  66. }

  67. void NTC_Voltage_Read()                                                //調用此函數更新NTC電壓值,存儲在NTC_Voltage變量中,該函數改變ADC的設置
  68. {
  69.         P1ASF=B00100000;                                                //NTC接在P15
  70.         ADC_CONTR=B11100101;                                        //開啟ADC電源,設置轉換速度90時鐘周期,清空轉換標志位,停止轉換,模擬通道選擇P1^5
  71.         ADC_RES=0;                                                                //清除結果寄存器
  72.         ADC_RESL=0;                                                                //清除結果寄存器
  73.         CLK_DIV&=B11011111;                                                //ADC_RES[7:0]存放高8位ADC結果,ADC_RES[1:0]存放低2位ADC結果
  74.         //PADC=1;                                                                //設置A/D轉換中斷優先級為最高
  75.         
  76.         ADC_CONTR|=0x08;                                                //開始轉換
  77.         _nop_();
  78.         _nop_();
  79.         _nop_();
  80.         _nop_();                                                                //按照例程延時4個周期
  81.         while(!En_ADC_Value);                                        //等待轉換結束
  82.         En_ADC_Value=0;                                                        //清除標志位
  83.         NTC_Voltage=Voltage_BandGap_ROM*(float)ADC_DATA/(float)ADC_BandGap;//NTC分壓電壓計算
  84. }

  85. void Timer0Init(void)                                                //2毫秒@22.1184MHz
  86. {
  87.         AUXR |= 0x80;                                                        //定時器時鐘1T模式
  88.         TMOD &= 0xF0;                                                        //設置定時器模式
  89.         TL0 = 0x33;                                                                //設置定時初值
  90.         TH0 = 0x53;                                                                //設置定時初值
  91.         TF0 = 0;                                                                //清除TF0標志
  92.         TR0 = 1;                                                                //定時器0開始計時
  93. }

  94. void sys_init()                                                                //系統初始化函數
  95. {
  96.         P0M1=0x00;P0M0=0x00;
  97.         P1M1=0x00;P1M0=0x00;
  98.         P2M1=0x00;P2M0=0x00;
  99.         P3M1=0x00;P3M0=0x00;
  100.         P4M1=0x00;P4M0=0x00;
  101.         P5M0=0x00;P5M1=0x00;
  102.         
  103.         Timer0Init();                                                        //定時器0初始化
  104.         nRF24L01_IO_init();                                                //nRF24L01通信線電平初始化
  105.         nRF24L01_SetMode_Tx();                                        //nRF24L01發送模式初始化
  106.         EA=1;                                                                        //開總中斷
  107.         ET0=1;                                                                        //開定時器0中斷
  108.         EADC=1;                                                                        //開ADC轉換中斷
  109.         
  110.         VCC_Voltage_Read();                                                //讀取電源電壓
  111. }

  112. void main()                                                                        //主函數
  113. {
  114.         sys_init();                                                                //系統初始化
  115.         while(1)                                                                //主函數大循環
  116.         {
  117.                 NTC_Voltage_Read();                                        //讀取NTC的分壓值(P15上的模擬電壓)
  118.                 NTC_R_Comp=100000*NTC_Voltage/(VCC_Voltage-NTC_Voltage);//計算待對比的NTC阻值,單位十倍歐姆
  119.                 NTC_Temperature=NTC_103_3435_Compare(NTC_R_Comp);//查表計算NTC對應的溫度值
  120.                
  121.                 //無線發送
  122.                 if(NTC_Temperature>0)
  123.                 {
  124.                         Transmit_Buff[0]=1;//數據為正標志
  125.                 }
  126.                 else
  127.                 {
  128.                         NTC_Temperature=(float)fabs((double)NTC_Temperature);                                        //取溫度絕對值
  129.                         Transmit_Buff[0]=0;//數據為負標志
  130.                 }
  131.                         Transmit_Buff[1]=((unsigned int)NTC_Temperature)/100;                                        //溫度值百位
  132.                         Transmit_Buff[2]=((unsigned int)(NTC_Temperature)%100)/10;                                //溫度值十位
  133.                         Transmit_Buff[3]=((unsigned int)NTC_Temperature)%10;                                        //溫度值個位
  134.                         Transmit_Buff[4]=((unsigned long)(NTC_Temperature*10000)%10000)/1000;        //溫度值小數1位
  135.                         Transmit_Buff[5]=((unsigned long)(NTC_Temperature*10000)%1000)/100;                //溫度值小數2位
  136.                         Transmit_Buff[6]=((unsigned long)(NTC_Temperature*10000)%100)/10;                //溫度值小數3位
  137.                         Transmit_Buff[7]=((unsigned long)(NTC_Temperature*10000))%10;                        //溫度值小數4位
  138.                         Transmit_Buff[8]=((unsigned int)VCC_Voltage)/1000;                                                //電壓值千位
  139.                         Transmit_Buff[9]=((unsigned int)(VCC_Voltage)%1000)/100;                                //電壓值百位
  140.                         Transmit_Buff[10]=((unsigned int)(VCC_Voltage)%100)/10;                                        //電壓值十位
  141.                         Transmit_Buff[11]=((unsigned int)VCC_Voltage)%10;                                                //電壓值個位
  142.                         Transmit_Buff[12]=((unsigned long)(VCC_Voltage*100)%100)/10;                        //電壓值小數1位
  143.                         Transmit_Buff[13]=(unsigned long)(VCC_Voltage*100)%10;                                        //電壓值小數2位
  144.                
  145.                 nRF24L01_SendData(Transmit_Buff);        //使用nRF24L01發送溫度數據
  146.                
  147.                 if(Do_VCC_Voltage_Flash)
  148.                 {
  149.                         Do_VCC_Voltage_Flash=0;                        //條件動作清零
  150.                         VCC_Voltage_Read();                                //讀取電源電壓
  151.                 }
  152.                
  153.                 delay(100000);                                                //周期循環延時
  154.         }
  155. }

  156. void T0() interrupt 1                                                //定時器0中斷服務函數
  157. {
  158.         T0_Cnt++;                                                                //周期增加
  159.         if(T0_Cnt==1000)                                                //定時2秒
  160.         {
  161.                 T0_Cnt=0;                                                        //清空計數器
  162.                 Do_VCC_Voltage_Flash=1;                                //條件動作執行
  163.         }
  164. }

  165. void ADC() interrupt 5                                                //AD中斷服務函數
  166. {
  167.         ADC_CONTR&=!0x10;                                                //清除ADC中斷標志,例程
  168.         ADC_DATA=(ADC_RES<<2)|ADC_RESL;                        //10位ADC結果拼接
  169.         En_ADC_Value=1;                                                        //ADC轉換值有效標志
  170. }
復制代碼
接收部分主函數
  1. #include"iostm8s103f2.h"
  2. #include"Init.c"        //系統初始化函數
  3. #include"nRF24L01.C"//提供nRF24L01驅動

  4. //運行數組
  5. unsigned char Display[8]={10,10,10,10,10,10,10,10};//用于顯示的每一位數值,對應段選數組中的相應位
  6. unsigned char duan[11]={0xeb,0x09,0xe5,0xad,0x0f,0xae,0xee,0x89,0xef,0xaf,0x04};//數碼管段選數組 數字0~9和符號"-"
  7. /*
  8. 段碼對應表,僅適用本電路
  9. 8        4        2        1        8        4        2        1
  10. 7        6        5        4        3        2        1        0
  11. A        E        D        H        C        G        F        B

  12. 1        1        1        0        1        0        1        1        0
  13. 0        0        0        0        1        0        0        1        1
  14. 1        1        1        0        0        1        0        1        2
  15. 1        0        1        0        1        1        0        1        3

  16. 0        0        0        0        1        1        1        1        4
  17. 1        0        1        0        1        1        1        0        5
  18. 1        1        1        0        1        1        1        0        6
  19. 1        0        0        0        1        0        0        1        7

  20. 1        1        1        0        1        1        1        1        8
  21. 1        0        1        0        1        1        1        1        9
  22. 0        0        0        0        0        1        0        0        -

  23. */
  24. //運行變量
  25. unsigned char pointpositionA=3;//溫度顯示的小數點位置,從0到3
  26. unsigned char pointpositionB=4;//電壓顯示的小數點位置,從4到7

  27. //運行計數
  28. unsigned int TIM4_cnt=0;//TIM4定時器周期計數
  29. /************************************************************
  30. 名稱:基于NTC熱敏電阻和nRF24L01的無線溫度計(接收顯示部分)
  31. 平臺:STM8S103F2P6,HSI:16MHz,CPUDIV:8
  32. 資源:Flash:4K RAM:1K
  33. 簡介:測量部分使用NTC-MF52-103/3435熱敏電阻進行溫度采集,
  34.         通過讀取單片機內部BandGap電壓得到準確的電源電壓和外部電壓,
  35.         使用查表方法得到對應的最靠近的溫度值,處理并顯示。
  36.         無線部分采用2.4G載波的nRF24L01模塊進行數據傳輸。

  37. 程序編寫:凌凈清河
  38. 硬件制作:凌凈欣羽
  39. 文稿排版:凌凈欣羽

  40. 日期:2019年2月25日
  41. 聲明:制作參考龍順宇《深入淺出STM8單片機入門、進階與應用實例》
  42. 所屬:新礦城學習基地#2019


  43. 編寫中臨時記錄:
  44.         本程序欠缺段選數組,數碼管顯示函數
  45.         數碼管計劃使用138和雙595級聯的方式驅動2個4位數碼管
  46.         一個顯示溫度,一個顯示采集部分的供電電壓
  47.         還有配套的數據處理語句待編寫。

  48. ************************************************************/

  49. void delay(unsigned char i)                                                //延時函數,調用此函數進行一段時間的非精準延時
  50. {
  51.         while(i--);
  52. }

  53. void SPIsendB(unsigned char dat)//給級聯的第一個595寫字節
  54. {
  55.         unsigned char a;
  56.         unsigned int tmp=0;
  57.         tmp=dat<<8;
  58.         SN74HC595_SRCLK=0;
  59.         SN74HC595_RCLK=0;
  60.         for(a=0;a<16;a++)
  61.         {
  62.                 if(tmp&0x8000)
  63.                 {
  64.                         SN74HC595_SER=1;
  65.                 }
  66.                 else
  67.                 {
  68.                         SN74HC595_SER=0;
  69.                 }
  70.                 tmp<<=1;
  71.                 SN74HC595_SRCLK=1;
  72.                 asm("nop");
  73.                 asm("nop");
  74.                 asm("nop");
  75.                 asm("nop");
  76.                 SN74HC595_SRCLK=0;
  77.         }
  78.         SN74HC595_RCLK=1;
  79.         asm("nop");
  80.         asm("nop");
  81.         SN74HC595_RCLK=0;
  82. }

  83. void SPIsendA(unsigned char dat)//給級聯的第二個595寫字節
  84. {
  85.         unsigned char a;
  86.         unsigned int tmp=0;
  87.         tmp=tmp|dat;
  88.         SN74HC595_SRCLK=0;
  89.         SN74HC595_RCLK=0;
  90.         for(a=0;a<16;a++)
  91.         {
  92.                 if(tmp&0x8000)
  93.                 {
  94.                         SN74HC595_SER=1;
  95.                 }
  96.                 else
  97.                 {
  98.                         SN74HC595_SER=0;
  99.                 }
  100.                 tmp<<=1;
  101.                 SN74HC595_SRCLK=1;
  102.                 asm("nop");
  103.                 asm("nop");
  104.                 asm("nop");
  105.                 asm("nop");
  106.                 SN74HC595_SRCLK=0;
  107.         }
  108.         SN74HC595_RCLK=1;
  109.         asm("nop");
  110.         asm("nop");
  111.         SN74HC595_RCLK=0;
  112. }

  113. void smgNum(unsigned char num)//位選函數,配合顯示函數使用,選擇138譯碼輸出的位
  114. {
  115.         switch(num)
  116.         {
  117.                 case 0:SN74HC138_S3=1;SN74HC138_S2=1;SN74HC138_S1=1;break;
  118.                 case 1:SN74HC138_S3=1;SN74HC138_S2=1;SN74HC138_S1=0;break;
  119.                 case 2:SN74HC138_S3=1;SN74HC138_S2=0;SN74HC138_S1=1;break;
  120.                 case 3:SN74HC138_S3=1;SN74HC138_S2=0;SN74HC138_S1=0;break;
  121.                 case 4:SN74HC138_S3=0;SN74HC138_S2=1;SN74HC138_S1=1;break;
  122.                 case 5:SN74HC138_S3=0;SN74HC138_S2=1;SN74HC138_S1=0;break;
  123.                 case 6:SN74HC138_S3=0;SN74HC138_S2=0;SN74HC138_S1=1;break;
  124.                 case 7:SN74HC138_S3=0;SN74HC138_S2=0;SN74HC138_S1=0;break;
  125.                 default:SN74HC138_S3=0;SN74HC138_S2=0;SN74HC138_S1=0;break;
  126.         }
  127. }

  128. /*
  129. 編者按:
  130. 在設計連接時,用于顯示溫度的74HC595的SN74HC595_SER端
  131. 接在用于顯示電壓的595 Q7'端,兩個74HC595級聯,
  132. 我也不知道當時怎么想的,選擇如此焊接,
  133. 但是既然電路這么做出來了,程序只好照著編了。
  134. */
  135. void smgdisplay()
  136. {
  137.         unsigned char i;
  138.         for(i=0;i<4;i++)//溫度數據顯示
  139.         {
  140.                 if(pointpositionA==i)
  141.                 {
  142.                         SPIsendA((duan[Display[i]])|0x10);
  143.                 }
  144.                 else
  145.                 {
  146.                         SPIsendA(duan[Display[i]]);
  147.                 }
  148.                 smgNum(i);//選擇相應位
  149.                 delay(100);
  150.                 SPIsendA(0x00);//消隱
  151.                 delay(50);
  152.         }
  153.         for(i=4;i<8;i++)//電壓數據顯示
  154.         {
  155.                 if(pointpositionB==i)
  156.                 {
  157.                         SPIsendB((duan[Display[i]])|0x10);
  158.                 }
  159.                 else
  160.                 {
  161.                         SPIsendB(duan[Display[i]]);
  162.                 }
  163.                 smgNum(i);//選擇相應位
  164.                 delay(100);
  165.                 SPIsendB(0x00);//消隱
  166.                 delay(50);
  167.         }
  168. }

  169. void sys_init()//系統初始化
  170. {
  171.         asm("sim");
  172.         CLK_init();                                                                //HSI初始化,更改分頻系數為1
  173.         TIM4_init();                                                        //TIM4初始化,定時1ms
  174.         asm("rim");
  175.         SN74HC595_IO_Define();                                        //SN74HC595接線定義
  176.         SN74HC138_IO_Define();                                        //SN74HC138接線定義
  177.         nRF24L01_IO_Define();                                        //nRF24L01接線定義
  178.         nRF24L01_IO_init();                                                //nRF24L01通信線初始化
  179.         nRF24L01_SetMode_Rx();                                        //nRF24L01功能初始化:接收模式
  180. }

  181. void main(void)
  182. {
  183.         sys_init();                                                                //系統初始化
  184.         while(1)
  185.         {
  186.                 if(nRF24L01_ReceiveData())                        //如果接收到數據
  187.                 {
  188.                         TIM4_cnt=0;
  189.                         if(Received_Buff[0])//溫度為正
  190.                         {
  191.                                 if(Received_Buff[1]==0)//如果百位為0
  192.                                 {
  193.                                         if(Received_Buff[2]==0)//如果十位為0
  194.                                         {
  195.                                                 Display[0]=Received_Buff[3];
  196.                                                 Display[1]=Received_Buff[4];
  197.                                                 Display[2]=Received_Buff[5];
  198.                                                 Display[3]=Received_Buff[6];
  199.                                                 pointpositionA=0;
  200.                                         }
  201.                                         else
  202.                                         {
  203.                                                 Display[0]=Received_Buff[2];
  204.                                                 Display[1]=Received_Buff[3];
  205.                                                 Display[2]=Received_Buff[4];
  206.                                                 Display[3]=Received_Buff[5];
  207.                                                 pointpositionA=1;
  208.                                         }
  209.                                 }
  210.                                 else
  211.                                 {
  212.                                         Display[0]=Received_Buff[1];
  213.                                         Display[1]=Received_Buff[2];
  214.                                         Display[2]=Received_Buff[3];
  215.                                         Display[3]=Received_Buff[4];
  216.                                         pointpositionA=2;
  217.                                 }
  218.                         }
  219.                         else
  220.                         {
  221.                                 Display[0]=11;//負號
  222.                                 if(Received_Buff[1]==0)//如果百位為0
  223.                                 {
  224.                                         if(Received_Buff[2]==0)//如果十位為0
  225.                                         {
  226.                                                 Display[1]=Received_Buff[3];
  227.                                                 Display[2]=Received_Buff[4];
  228.                                                 Display[3]=Received_Buff[5];
  229.                                                 pointpositionA=1;
  230.                                         }
  231.                                         else
  232.                                         {
  233.                                                 Display[1]=Received_Buff[2];
  234.                                                 Display[2]=Received_Buff[3];
  235.                                                 Display[3]=Received_Buff[4];
  236.                                                 pointpositionA=2;
  237.                                         }
  238.                                 }
  239.                                 else
  240.                                 {
  241.                                         Display[1]=Received_Buff[1];
  242.                                         Display[2]=Received_Buff[2];
  243.                                         Display[3]=Received_Buff[3];
  244.                                         pointpositionA=3;
  245.                                 }
  246.                         }
  247.                         Display[4]=Received_Buff[8];
  248.                         Display[5]=Received_Buff[9];
  249.                         Display[6]=Received_Buff[10];
  250.                         Display[7]=Received_Buff[11];
  251.                 }
  252.                 smgdisplay();
  253.         }
  254. }

  255. #pragma vector=0x19//定時器4中斷服務函數
  256. __interrupt void TIM4_UPD_OVF_IRQHandler(void)
  257. {
  258.         TIM4_cnt++;
  259.         TIM4_SR=0;
  260.         if(TIM4_cnt==500)
  261.         {
  262.                 unsigned char i;
  263.                 TIM4_cnt=0;
  264.                 for(i=0;i<8;i++)
  265.                 {
  266.                         Display[i]=10;
  267.                 }
  268.         }
  269. }
復制代碼

歡迎進群:873434536,雖人數暫時較少,但群內氛圍很好,有任何關于51學習中的問題,來一起討論吧~!

程序源碼:
基于NTC熱敏電阻和nRF24L01的無線溫度計 發布版 凌凈清河.zip (409.08 KB, 下載次數: 258)

請注意,為了方便黑幣較少的人也能夠下載附件,回復本帖,任何時候我看到,均會給出最高評分作為黑布補貼!


評分

參與人數 3黑幣 +142 收起 理由
cheng95 + 30
YJGG + 12 贊一個!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:390650 發表于 2019-3-12 17:08 | 只看該作者
好,不錯 可以下載下來看看  努力學習

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

板凳
ID:488469 發表于 2019-3-13 19:05 | 只看該作者
代碼很不錯,非常值得借鑒

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

地板
ID:490149 發表于 2019-3-13 22:44 | 只看該作者
感覺好復雜啊

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

5#
ID:284488 發表于 2019-3-14 08:52 | 只看該作者
不錯啊!下載下來努力學習。樓主照顧黑幣較少的人讓其能夠下載的仁心更曷我們多加學習的典范。

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

6#
ID:23606 發表于 2019-3-14 09:05 | 只看該作者
感謝分享!!!!!

評分

參與人數 1黑幣 +12 收起 理由
NPC-1024 + 12 黑幣補貼

查看全部評分

回復

使用道具 舉報

7#
ID:240034 發表于 2019-3-14 13:55 | 只看該作者
樓主無私,感謝分享

評分

參與人數 1黑幣 +12 收起 理由
NPC-1024 + 12 黑幣補貼(樓主小號)

查看全部評分

回復

使用道具 舉報

8#
ID:475092 發表于 2019-3-14 15:39 | 只看該作者
非常感謝,下載學習了。

評分

參與人數 1黑幣 +12 收起 理由
NPC-1024 + 12 黑幣補貼(樓主小號)

查看全部評分

回復

使用道具 舉報

9#
ID:499770 發表于 2019-3-29 21:37 | 只看該作者
謝謝分享!!!

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

10#
ID:495778 發表于 2019-4-2 11:25 | 只看該作者
好,不錯 可以下載下來看看  努力學習

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

11#
ID:399179 發表于 2019-4-2 20:03 來自手機 | 只看該作者
非常感謝!收藏了

評分

參與人數 1黑幣 +12 收起 理由
NPC-1024 + 12 黑幣補貼(小號)

查看全部評分

回復

使用道具 舉報

12#
ID:409674 發表于 2019-4-2 21:54 | 只看該作者
非常感謝,NTC接地我還不會,可以參考了,謝謝.

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

13#
ID:468672 發表于 2019-4-3 09:13 | 只看該作者
果斷收藏

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

14#
ID:248276 發表于 2019-4-3 09:30 | 只看該作者
果斷收藏

評分

參與人數 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

15#
ID:446398 發表于 2019-4-30 01:04 | 只看該作者
一直想搞個無線來試試,萬事開頭難,希望有所幫助···········
回復

使用道具 舉報

16#
ID:115740 發表于 2019-6-2 14:00 | 只看該作者
謝謝分享,最近也想弄一個來玩玩,謝謝啦
回復

使用道具 舉報

17#
ID:305511 發表于 2019-6-3 13:28 | 只看該作者
真的非常感謝分享,值得學習!
回復

使用道具 舉報

18#
ID:563963 發表于 2019-6-17 20:36 | 只看該作者
感謝樓主
回復

使用道具 舉報

19#
ID:565872 發表于 2019-6-18 16:22 | 只看該作者
這個寫得非常好
回復

使用道具 舉報

20#
ID:245031 發表于 2019-7-28 17:31 | 只看該作者
師傅的例程很有參考價值,謝謝。
回復

使用道具 舉報

21#
ID:158886 發表于 2020-2-14 11:06 | 只看該作者
不錯,謝謝分享
回復

使用道具 舉報

22#
ID:249808 發表于 2020-2-21 23:29 | 只看該作者
先收藏著,后面再慢慢研究!
回復

使用道具 舉報

23#
ID:611568 發表于 2020-2-22 21:49 | 只看該作者
思路清晰,非常的棒
回復

使用道具 舉報

24#
ID:429375 發表于 2020-3-18 08:28 | 只看該作者
代碼結構清晰,層次分明,膜拜大牛
回復

使用道具 舉報

25#
ID:429375 發表于 2020-3-18 08:29 | 只看該作者
思路清晰,代碼結構好
回復

使用道具 舉報

26#
ID:377382 發表于 2020-4-5 12:07 | 只看該作者
必須贊一個!
回復

使用道具 舉報

27#
ID:702292 發表于 2020-10-21 14:15 | 只看該作者
如果可以控制自動加熱功能最好
回復

使用道具 舉報

28#
ID:892327 發表于 2021-3-15 20:40 | 只看該作者
這個是把全部代碼都發出來了嗎,還需要下載源碼嗎
回復

使用道具 舉報

29#
ID:892327 發表于 2021-3-16 20:29 | 只看該作者
我看接收部分有兩個電阻,請問還記得這兩個電阻的阻值嗎
回復

使用道具 舉報

30#
ID:892327 發表于 2021-3-16 20:31 | 只看該作者
那個接收部分我看到還有兩個電阻,請問還記得是接在哪的嗎,可以的話阻值是多少呢
回復

使用道具 舉報

31#
ID:857072 發表于 2021-4-4 21:38 | 只看該作者
有用的東西,現在看還有點難。
回復

使用道具 舉報

32#
ID:440637 發表于 2021-4-16 10:36 | 只看該作者

代碼很不錯,非常值得借鑒
回復

使用道具 舉報

33#
ID:381627 發表于 2021-5-22 17:29 | 只看該作者
很不錯的資料,愛了愛了。
回復

使用道具 舉報

34#
ID:40169 發表于 2021-8-31 22:07 | 只看該作者
不錯啊!下載下來努力學習。
回復

使用道具 舉報

35#
ID:712493 發表于 2021-9-1 11:26 | 只看該作者
代碼很不錯層次分明,膜拜大牛
回復

使用道具 舉報

36#
ID:1019604 發表于 2022-4-18 23:38 | 只看該作者
代碼很不錯,非常值得借鑒
回復

使用道具 舉報

37#
ID:13282 發表于 2023-3-27 04:42 | 只看該作者
溫度采樣部分處理的不賴,學習啦!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产日韩91久久久久久 | 97超在线视频 | 亚洲激情一区二区 | 99久久婷婷国产综合精品 | 人人草人人干 | 综合网视频 | 国产精品视频免费看 | 91av导航| 精品亚洲一区二区三区 | 日日天天| 91精品中文字幕一区二区三区 | 免费v片 | 91在线精品一区二区 | 91麻豆精品国产91久久久久久 | 欧美四虎 | 日韩视频二区 | 草草视频在线观看 | 久草热线 | 亚洲欧美视频一区 | 日韩视频在线播放 | 欧美高清视频一区 | 蜜桃特黄a∨片免费观看 | 欧美区在线观看 | 一区中文字幕 | 日本午夜在线视频 | 免费污视频| xx性欧美肥妇精品久久久久久 | 日韩综合在线播放 | 国产福利视频导航 | 国产日韩精品在线 | 久久精品99国产精品日本 | 日日天天 | 欧美日韩一区精品 | 日韩伦理一区二区 | 久久精品视频在线免费观看 | 黄页网址在线观看 | 国产午夜精品理论片a大结局 | 国产精品一区二区三区久久久 | 超碰97在线免费 | 国产精品91视频 | 国产女人与拘做受免费视频 |