日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 1 /*----------------------------------- 2 多功能下位機(jī) 3 STC89C52RC 11.0592MHz 4 5 -----------------------------------*/ 6 #include 7 #include 8 9 char code huanhang[3]={0x0d,0x0a,0}; // "\\r

1 /*-----------------------------------

2 多功能下位機(jī)

3 STC89C52RC 11.0592MHz

4

5 -----------------------------------*/

6 #include

7 #include

8

9 char code huanhang[3]={0x0d,0x0a,0}; // "rn"

10 //-----------------普通輸出端口---------------//

11 sbit LED0=P1^0;

12 sbit LED1=P1^1;

13 sbit LED2=P1^2;

14 sbit jdq_00=P1^3;

15 sbit fmq_00=P2^5;

16

17 /**********DS18B20***********/

18 bit Temp_Symbol=0;

19 //溫度傳感_0---------

20 sbit DQ=P2^6;

21 //------------------串口通信協(xié)議-----------------//

22 /*

23 客戶端數(shù)據(jù)包格式解釋(長度恒為15):

24 例如:A01_fmq_01Off___#

25 A--------數(shù)據(jù)包的開始標(biāo)記(可以為A到Z)

26 01-----設(shè)備代號

27 fmq_01Off___--------指令(長度恒為10),指令的前4個人字符是指令頭部,指令的后6個字符是指令尾部

28 #---------數(shù)據(jù)包的結(jié)束標(biāo)記

29

30 服務(wù)器端數(shù)據(jù)包格式解釋(長度恒為15):

31 例如:A02_SenT010250#

32 A--------數(shù)據(jù)包的開始標(biāo)記(可以為A到Z)

33 02-----設(shè)備代號

34 SenT010250--------指令(長度恒為10),指令的前4個人字符是指令頭部,指令的后6個字符是指令尾部

35 #---------數(shù)據(jù)包的結(jié)束標(biāo)記

36 */

37 char buf_string[16]; //定義數(shù)據(jù)包長度為15個字符

38 #define deviceID_1Bit '0' //用于串口通信時,定義本地設(shè)備ID的第1位

39 #define deviceID_2Bit '2' //用于串口通信時,定義本地設(shè)備ID的第2位

40 #define datapackage_headflag 'A' //用于串口通信時,定義數(shù)據(jù)包頭部的驗證標(biāo)記

41

42 char DataPackage_DS18B20[16]={datapackage_headflag,deviceID_1Bit,deviceID_2Bit,'_','S','e','n','T','_','_','_','_','_','_','#'};

43 char HeartBeat[16]={datapackage_headflag,deviceID_1Bit,deviceID_2Bit,'_','B','e','a','t','_','_','_','_','_','_','#'};

44 //----------------------------------------------//

45

46 /**************************

47 輔助函數(shù)

48 ***************************/

49 //改變要發(fā)送的DS18B20數(shù)據(jù)包

50 void Change_DataPackage_DS18B20(int DS18B20_Value)

51 {

52 if(Temp_Symbol)

53 {

54 DataPackage_DS18B20[10] = '-';

55 }

56 else

57 {

58 DataPackage_DS18B20[10] = '0';

59 }

60 DataPackage_DS18B20[11] = 0x30+DS18B20_Value % 10000 / 1000;

61 DataPackage_DS18B20[12] = 0x30+DS18B20_Value % 1000 / 100;

62 DataPackage_DS18B20[13] = 0x30+DS18B20_Value % 100 / 10;

63 }

64 /********************************

65 DS18B20

66 若沒有效果,意味著延時可能有問題

67 測溫范圍 -55℃~+125℃

68

69 單線通信接口

70 1)邊沿=觸發(fā)

71 2)電平持續(xù)時間=信息

72 3)一字節(jié)的電平組合=指令

73 ********************************/

74 //延時------

75 void delay_DS18B20(unsigned int t)

76 {

77 for (;t>0;t--);

78 }

79 //復(fù)位,使得從設(shè)備可以接收指令-----------

80 void Reset_DS18B20()

81 {

82 char presence=1;

83 while(presence)

84 {

85 while(presence)

86 {

87 DQ=1;_nop_();_nop_();//從高拉倒低

88 DQ=0;

89 delay_DS18B20(50); //550 us

90 DQ=1;

91 delay_DS18B20(6); //66 us

92 presence=DQ; //presence=0 復(fù)位成功,繼續(xù)下一步

93 }

94 delay_DS18B20(45); //延時500 us

95 presence=~DQ;

96 }

97 DQ=1; //拉高電平

98 }

99 //寫DS一個字節(jié)數(shù)據(jù)----------

100 void WriteByte_DS18B20(unsigned char val)

101 {

102 unsigned char i;

103 for(i=8;i>0;i--)

104 {

105 DQ=1;_nop_();_nop_(); //從高拉倒低

106 DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 us

107 DQ=val&0x01; //最低位移出

108 delay_DS18B20(6); //66 us

109 val=val/2; //右移1位

110 }

111 DQ=1;

112 delay_DS18B20(1);

113 }

114 //讀DS一個字節(jié)數(shù)據(jù)---------

115 unsigned char ReadByte_DS18B20()

116 {

117 unsigned char i;

118 unsigned char byte=0;

119 for(i=8;i>0;i--)

120 {

121 DQ=1;_nop_();_nop_();

122 byte>>=1;

123 DQ=0;_nop_();_nop_();_nop_();_nop_(); //4 us

124 DQ=1;_nop_();_nop_();_nop_();_nop_(); //4 us

125 if(DQ)byte|=0x80;

126 delay_DS18B20(6); //66 us

127 }

128 DQ=1;

129 return(byte);

130 }

131 //讓DS18B20測量一次溫度,并將測量結(jié)果存放在其內(nèi)部RAM----------

132 void MeasureTemp_DS18B20()

133 {

134 Reset_DS18B20();

135 delay_DS18B20(200);

136 WriteByte_DS18B20(0xcc); //發(fā)送無條件選中命令,選中總線上僅有的DS18B20從設(shè)備

137 WriteByte_DS18B20(0x44); //溫度轉(zhuǎn)換命令

138

139 }

140 //向DS18B20請求讀取溫度值--------------

141 void ReadTemperature_DS18B20()

142 {

143 Reset_DS18B20();

144 delay_DS18B20(1);

145 WriteByte_DS18B20(0xcc); //發(fā)送無條件選中命令,選中總線上僅有的DS18B20從設(shè)備

146 WriteByte_DS18B20(0xbe); //發(fā)送讀取溫度命令

147 }

148 //獲取并返回DS18B20內(nèi)部溫度測量值--------

149 int GetTemperature_DS18B20()

150 {

151 int temp=0;

152 unsigned char temperature_H,temperature_L; //需要連續(xù)讀取2個字節(jié)數(shù)據(jù)并進(jìn)行處理,才能得出一次溫度值

153 MeasureTemp_DS18B20(); //先寫入轉(zhuǎn)換命令

154 ReadTemperature_DS18B20(); //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令

155 temperature_L=ReadByte_DS18B20(); //讀取溫度值共16位,先讀低字節(jié)

156 temperature_H=ReadByte_DS18B20(); //再讀高字節(jié)

157 temp=temperature_H;

158 temp<<=8;

159 temp|=temperature_L;

160 if(temp<0) //當(dāng)溫度值為負(fù)數(shù)(高5位為符號位)

161 {

162 temp=~temp;

163 temp=temp+1;

164 temp=0.0625*temp*100+0.5; //temp*100 意味著取2位小數(shù), +0.5 意味著四舍五入

165 Temp_Symbol=1;

166 }

167 else //當(dāng)溫度值為正數(shù)

168 {

169 temp=0.0625*temp*100

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

8位單片機(jī)在嵌入式設(shè)計領(lǐng)域已經(jīng)成為半個多世紀(jì)以來的主流選擇。盡管嵌入式系統(tǒng)市場日益復(fù)雜,8位單片機(jī)依然不斷發(fā)展,積極應(yīng)對新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機(jī)系列,配備了先進(jìn)的獨(dú)立...

關(guān)鍵字: 單片機(jī) 嵌入式 CPU

在嵌入式系統(tǒng)開發(fā)中,程序燒錄是連接軟件設(shè)計與硬件實現(xiàn)的關(guān)鍵環(huán)節(jié)。當(dāng)前主流的單片機(jī)燒錄技術(shù)已形成ICP(在電路編程)、ISP(在系統(tǒng)編程)、IAP(在應(yīng)用編程)三大技術(shù)體系,分別對應(yīng)開發(fā)調(diào)試、量產(chǎn)燒錄、遠(yuǎn)程升級等不同場景。...

關(guān)鍵字: 單片機(jī) ISP ICP IAP 嵌入式系統(tǒng)開發(fā)

在嵌入式系統(tǒng)開發(fā)中,看門狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時機(jī)的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個維度,系統(tǒng)分析看門狗初始化的最佳實踐...

關(guān)鍵字: 單片機(jī) 看門狗 嵌入式系統(tǒng)

本文中,小編將對單片機(jī)予以介紹,如果你想對它的詳細(xì)情況有所認(rèn)識,或者想要增進(jìn)對它的了解程度,不妨請看以下內(nèi)容哦。

關(guān)鍵字: 單片機(jī) 開發(fā)板 Keil

隨著單片機(jī)系統(tǒng)越來越廣泛地應(yīng)用于消費(fèi)類電子、醫(yī)療、工業(yè)自動化、智能化儀器儀表、航空航天等各領(lǐng)域,單片機(jī)系統(tǒng)面臨著電磁干擾(EMI)日益嚴(yán)重的威脅。電磁兼容性(EMC)包含系統(tǒng)的發(fā)射和敏感度兩方面的問題。

關(guān)鍵字: 單片機(jī) 電磁兼容

以下內(nèi)容中,小編將對單片機(jī)的相關(guān)內(nèi)容進(jìn)行著重介紹和闡述,希望本文能幫您增進(jìn)對單片機(jī)的了解,和小編一起來看看吧。

關(guān)鍵字: 單片機(jī) 復(fù)位電路

在這篇文章中,小編將為大家?guī)韱纹瑱C(jī)的相關(guān)報道。如果你對本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: 單片機(jī) 異常復(fù)位

今天,小編將在這篇文章中為大家?guī)韱纹瑱C(jī)的有關(guān)報道,通過閱讀這篇文章,大家可以對它具備清晰的認(rèn)識,主要內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 仿真器

單片機(jī)將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對它的相關(guān)情況以及信息有所認(rèn)識和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 中斷 boot

一直以來,單片機(jī)都是大家的關(guān)注焦點(diǎn)之一。因此針對大家的興趣點(diǎn)所在,小編將為大家?guī)韱纹瑱C(jī)的相關(guān)介紹,詳細(xì)內(nèi)容請看下文。

關(guān)鍵字: 單片機(jī) 數(shù)字信號 模擬信號
關(guān)閉