📄 ds18b20.lst
字号:
184 *****************************************************************************/
185 void Led7Scan()
186 {
187 1 static unsigned char a=0;
188 1
189 1 switch(a)/*判断数码管动态扫描值*/
190 1 {
191 2 case 0:/*处理数码管第一位*/
192 2 LED7D_STATUS=1;/*设置数码管第四位为无效*/
193 2 LED7A_STATUS=0;/*设置数码管第一位位有效*/
194 2 break;
195 2
196 2 case 1:/*处理数码管第二位*/
197 2 LED7A_STATUS=1;/*设置数码管第一位为无效*/
198 2 LED7B_STATUS=0;/*设置数码管第二位位有效*/
199 2 break;
200 2
201 2 case 2:/*处理数码管第三位*/
202 2 LED7B_STATUS=1;/*设置数码管第二位为无效*/
203 2 LED7C_STATUS=0;/*设置数码管第三位位有效*/
204 2 break;
205 2
206 2 case 3:/*处理数码管第四位*/
207 2 LED7C_STATUS=1;/*设置数码管第三位为无效*/
208 2 LED7D_STATUS=0;/*设置数码管第四位位有效*/
209 2 break;
210 2 }
211 1
212 1 LED7_STATUS=m_ucLedTab[m_ucLedBuf[a]];/*将显示码送数码管状态引脚*/
213 1
214 1 a++;/*数码管动态扫描值加1,若该值4则置为0*/
215 1 if(a>3)
216 1 a=0;
217 1 }
218
219 /****************************************************************************
220 名称:DS18B20Delay
221 说明:DS18B20延时
222 参数:unsigned int uiDelay 时间延时
223 返回: 无
224 ****************************************************************************/
225 void DS18B20Delay(unsigned char ucDelay)
226 {
227 1 unsigned char a;
228 1
229 1 for(a=0;a<ucDelay;a++);
230 1 }
231
232 /****************************************************************************
233 名称:DS18B20Init
234 说明:DS18B20初始化
235 参数:无
236 返回: 无
237 ****************************************************************************/
238 unsigned char DS18B20Init()
239 {
240 1 DS18B20_IO=0;
241 1 DS18B20Delay(30);
C51 COMPILER V7.20 DS18B20 03/24/2007 02:38:50 PAGE 5
242 1 DS18B20_IO=1;
243 1 DS18B20Delay(30);
244 1 return DS18B20_IO;
245 1 }
246
247 /****************************************************************************
248 名称:DS18B20WriteChar
249 说明:DS18B20写字节操作
250 参数:unsigned char ucData 写字节
251 返回: 无
252 ****************************************************************************/
253 void DS18B20WriteChar(unsigned char ucData)
254 {
255 1 unsigned char a,b;
256 1
257 1 EA=0;
258 1 for(a=0;a<8;a++)
259 1 {
260 2 b=ucData>>a;
261 2 b&=0x01;
262 2 DS18B20WriteBit(b);
263 2 }
264 1 EA=1;
265 1
266 1 DS18B20Delay(5);
267 1 }
268
269 /****************************************************************************
270 名称:DS18B20WriteBit
271 说明:DS18B20写位操作
272 参数:unsigned char ucData 写位
273 ****************************************************************************/
274 void DS18B20WriteBit(unsigned char ucData)
275 {
276 1 DS18B20_IO=0;
277 1
278 1 if(ucData==1)
279 1 DS18B20_IO=1;
280 1
281 1 DS18B20Delay(5);
282 1 DS18B20_IO=1;
283 1 }
284
285 /****************************************************************************
286 名称:DS18B20ReadChar
287 说明:DS18B20读字节操作
288 参数:无
289 返回: unsigned char ucData 读字节
290 ****************************************************************************/
291 unsigned char DS18B20ReadChar()
292 {
293 1 unsigned char a,b=0;
294 1
295 1 for(a=0;a<8;a++)
296 1 {
297 2 EA=0;
298 2 if(DS18B20ReadBit())
299 2 b|=0x01<<a;
300 2 EA=1;
301 2
302 2 DS18B20Delay(6);
303 2 }
C51 COMPILER V7.20 DS18B20 03/24/2007 02:38:50 PAGE 6
304 1
305 1 return b;
306 1 }
307
308 /****************************************************************************
309 名称:DS18B20ReadBit
310 说明:DS18B20读位操作
311 参数:无
312 返回: unsigned char ucData 读位
313 ****************************************************************************/
314 unsigned char DS18B20ReadBit()
315 {
316 1 unsigned char a;
317 1
318 1 DS18B20_IO=0;
319 1
320 1 DS18B20_IO=1;
321 1
322 1 for(a=0;a<3;a++);
323 1
324 1 return(DS18B20_IO);
325 1 }
326
327
328 /****************************************************************************
329 名称:DS18B20ReadTemp
330 说明:DS18B20读取当前温度
331 参数:无
332 返回: unsigned char 温度值
333 ****************************************************************************/
334 unsigned char DS18B20ReadTemp()
335 {
336 1 unsigned char ucTempL,ucTempM;
337 1 unsigned char ucTemp;
338 1
339 1 DS18B20Init();
340 1 DS18B20WriteChar(DS18B20_ORDER_JMPROM);
341 1 DS18B20WriteChar(DS18B20_ORDER_START);
342 1 DS18B20Delay(5);
343 1
344 1 DS18B20Init();
345 1 DS18B20WriteChar(DS18B20_ORDER_JMPROM);
346 1 DS18B20WriteChar(DS18B20_ORDER_READREG);
347 1 ucTempL=DS18B20ReadChar();
348 1 ucTempM=DS18B20ReadChar();
349 1
350 1 ucTempL=ucTempL>>4;
351 1 ucTemp=(ucTempM&0x3)<<4;
352 1 ucTemp=ucTempL|ucTemp;
353 1
354 1 return ucTemp;
355 1 }
356
357
358
359
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 408 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
C51 COMPILER V7.20 DS18B20 03/24/2007 02:38:50 PAGE 7
PDATA SIZE = ---- ----
DATA SIZE = 5 7
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -