📄 wendu.lst
字号:
C51 COMPILER V7.20 WENDU 08/17/2007 16:25:17 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE WENDU
OBJECT MODULE PLACED IN wendu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wendu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*---------------------------------------------------------------------------------------------------
2 功能:实现对DS18B20的读取
3 原理:单总线协议
4 注意:单总线协议对延时要求比较严格,此程序中采用的是11.0592M的晶振,如果使用其他的晶振请跟据DS18B20的资料
-修改延时参数
5 版本:1.4b
6 最后修改时间:2004年11月8号
7
8 版权:哈尔滨众邦龙开发有限公司 www.hitzbl.com 单片机坐标网:www.mcuzb.com
9 ====================================================================================================*/
10
11 #include "reg52.h"
12 #include "CharLCD.h"
13
14 sbit DQ =P3^0; //定义通信端口
15 unsigned int t;
16 //延时函数
17
18 void delay(unsigned int i)
19 {
20 1 while(i--);
21 1 }
22
23 //初始化函数
24 Init_DS18B20(void)
25 {
26 1 unsigned char x=0;
27 1 DQ = 1; //DQ复位
28 1 delay(8); //稍做延时
29 1 DQ = 0; //单片机将DQ拉低
30 1 delay(80); //精确延时 大于 480us
31 1 DQ = 1; //拉高总线
32 1 delay(14);
33 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
34 1 delay(20);
35 1 }
36
37 //读一个字节
38 ReadOneChar(void)
39 {
40 1 unsigned char i=0;
41 1 unsigned char dat = 0;
42 1 for (i=8;i>0;i--)
43 1 {
44 2 DQ = 0; // 给脉冲信号
45 2 dat>>=1;
46 2 DQ = 1; // 给脉冲信号
47 2 if(DQ)
48 2 dat|=0x80;
49 2 delay(4);
50 2 }
51 1 return(dat);
52 1 }
53
54 //写一个字节
C51 COMPILER V7.20 WENDU 08/17/2007 16:25:17 PAGE 2
55 WriteOneChar(unsigned char dat)
56 {
57 1 unsigned char i=0;
58 1 for (i=8; i>0; i--)
59 1 {
60 2 DQ = 0;
61 2 DQ = dat&0x01;
62 2 delay(5);
63 2 DQ = 1;
64 2 dat>>=1;
65 2 }
66 1 delay(4);
67 1 }
68
69 //读取温度
70 ReadTemperature(void)
71 {
72 1 unsigned char a=0;
73 1 unsigned char b=0;
74 1 float tt;
75 1 Init_DS18B20();
76 1 WriteOneChar(0xCC); // 跳过读序号列号的操作
77 1 WriteOneChar(0x44); // 启动温度转换
78 1 Init_DS18B20();
79 1 WriteOneChar(0xCC); //跳过读序号列号的操作
80 1 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
81 1 a=ReadOneChar();
82 1 b=ReadOneChar();
83 1 t=b;
84 1 t<<=8;
85 1 t=t|a;
86 1 tt=t*0.0625;
87 1 t=tt*10+0.5; //放大10倍输出并四舍五入---此行没用
88 1 return(t);
89 1 }
90
91
92
93 void main()
94 {
95 1 unsigned int i;
96 1 unsigned char n;
97 1 unsigned char m;
98 1 unsigned char o;
99 1 while(1)
100 1 {
101 2
102 2
103 2 i= ReadTemperature();//读温度
104 2 LCDInit();
105 2 delay(200);
106 2
107 2 n=i%100;
108 2 n/=10;
109 2 DisplayOneChar (6,1, n+0x30);
110 2 o=i%100;
111 2 o%=10;
112 2 DisplayOneChar (8,1, o+0x30);
113 2 m =i/100;
114 2 DisplayOneChar (5,1, m+0x30);
115 2 DisplayOneChar (7,1, '.' );
116 2 DisplayOneChar (9 ,1, 0xdf);
C51 COMPILER V7.20 WENDU 08/17/2007 16:25:17 PAGE 3
117 2 DisplayOneChar (10,1, 'C');
118 2 DisplayString (2,0,"WEN @_@ DU");
119 2 delay(2000);
120 2
121 2 }
122 1 }
123
124
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 383 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 9
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 + -