📄 ds18.lst
字号:
C51 COMPILER V8.02 DS18 07/23/2012 18:02:19 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS18
OBJECT MODULE PLACED IN ds18.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds18.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 sbit beep=P3^3;
5 sbit ds=P3^4;
6 sbit lcdrs=P3^6;
7 sbit lcden=P3^7;
8 sbit led0=P1^0;
9 sbit led1=P1^1;
10 sbit led2=P1^2;
11 sbit led3=P1^3;
12 uint temp,qian,bai,shi,ge;
13 float f_temp;
14 uchar flag;
15 int warn_l1=20;
16 int warn_l2=50;
17 int warn_h1=320;
18 int warn_h2=350;
19 uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
20 uchar code table1[]="Voltage:";
21 void delay(uint z)
22 {
23 1 uint i,j;
24 1 for(i=z;i>0;i--)
25 1 for(j=110;j>0;j--);
26 1 }
27 void delayus(uint i)
28 { while(i--); }
29 void write_com(uchar com)
30 {
31 1 lcdrs=0;
32 1 P0=com;
33 1 delay(5);
34 1 lcden=1;
35 1 lcden=0;
36 1 }
37 void write_data(uchar date)
38 {
39 1 lcdrs=1;
40 1 P0=date;
41 1 delay(5);
42 1 lcden=1;
43 1 lcden=0;
44 1 }
45 void reset()
46 {
47 1 ds=1;
48 1 delayus(4);
49 1 ds=0;
50 1 delayus(100);
51 1 ds=1;
52 1 delayus(40);
53 1
54 1 }
55
C51 COMPILER V8.02 DS18 07/23/2012 18:02:19 PAGE 2
56 uchar read()
57 {
58 1 uchar i=0;
59 1 uchar dat=0;
60 1 for (i=8;i>0;i--)
61 1 {
62 2 ds=0; //给脉冲信号
63 2 dat>>=1;
64 2 ds=1; //给脉冲信号
65 2 if(ds)
66 2 dat|=0x80;
67 2 delayus(10);
68 2 }
69 1 return(dat);
70 1 }
71 void write(uchar dat)
72 {
73 1 uchar i=0;
74 1 for(i=8;i>0;i--)
75 1 {
76 2 ds=0;
77 2 ds=dat&0x01;
78 2 delayus(10);
79 2 ds=1;
80 2 dat>>=1;
81 2 }
82 1
83 1 }
84 void tempchange()
85 {
86 1 reset();
87 1 delay(1);
88 1 write(0xcc);
89 1 write(0x44);
90 1 delay(750);
91 1
92 1 }
93 uint get_temp()
94 {
95 1 int a,b;
96 1 reset();
97 1 delay(1);
98 1 write(0xcc);
99 1 write(0xbe);
100 1 a=read();
101 1 b=read();
102 1 flag=0;
103 1 b=b&0x0f;
104 1 if(b>8)
105 1 {
106 2 flag=1;
107 2 b=b&0x07;
108 2 b=(b*256+a);
109 2 temp=2047-b+1;
110 2 }
111 1 else
112 1 {
113 2 b=b&0x07;
114 2 temp=(b*256+a);
115 2 }
116 1 f_temp=temp*0.0625;
117 1 temp=f_temp*10+0.5;
C51 COMPILER V8.02 DS18 07/23/2012 18:02:19 PAGE 3
118 1 return(temp);
119 1 }
120 void display()
121 {
122 1 uint num;
123 1 write_com(0x84);
124 1 for(num=0;num<8;num++)
125 1 {
126 2 write_data(table1[num]);
127 2 delay(5);
128 2
129 2 }
130 1 write_com(0x80+0x40+8);
131 1 write_data('.');
132 1 write_com(0x80+0x40+11);
133 1 write_data('V');
134 1 write_com(0x80+0x40+5);
135 1 write_data(0x30+qian);
136 1 write_com(0x80+0x40+6);
137 1 write_data(0x30+bai);
138 1 write_com(0x80+0x40+7);
139 1 write_data(0x30+shi);
140 1 write_com(0x80+0x40+9);
141 1 write_data(0x30+ge);
142 1 if(flag==1)
143 1 {
144 2 write_com(0x80+0x40+4);
145 2 write_data('-');
146 2 }
147 1 }
148 void dis_temp(uint t)
149 {
150 1 qian=t/1000;
151 1 bai=t%1000/100;
152 1 shi=t%1000%100/10;
153 1 ge=t%1000%100%10;
154 1 display();
155 1 }
156 void warn(uint s,uchar led)
157 {
158 1 uchar i;
159 1 i=s;
160 1 beep=1;
161 1
162 1 P1=~(led);
163 1 delay(i);
164 1 beep=0;
165 1 P1=0xff;
166 1
167 1 }
168 void deal(uint t)
169 {
170 1 if(flag==1)warn(40,0x01);
171 1 else if((t>warn_l1)&&(t<=warn_l2))
172 1 {
173 2 warn(10,0x02);
174 2 }
175 1 else if(t<=warn_l1)
176 1 {
177 2 warn(40,0x01);
178 2 }
179 1 else if((t<warn_h2)&&(t>=warn_h1))
C51 COMPILER V8.02 DS18 07/23/2012 18:02:19 PAGE 4
180 1 {
181 2 warn(10,0x04);
182 2 }
183 1 else if(t>=warn_h2)
184 1 {
185 2 warn(40,0x08);
186 2 }
187 1
188 1 }
189 void init()
190 {
191 1 beep=0;
192 1 flag=0;
193 1 lcden=0;
194 1 write_com(0x38);
195 1 write_com(0x0c);
196 1 write_com(0x06);
197 1 write_com(0x01);
198 1
199 1 }
200 void main()
201 {
202 1
203 1 init();
204 1 while(1)
205 1 {
206 2 tempchange();
207 2 dis_temp(get_temp());
208 2 deal(temp);
209 2 }
210 1
211 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 714 ----
CONSTANT SIZE = 19 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 2
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 + -