?? text1.lst
字號(hào):
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg51.h"
2 #include<lcd.c>
3 #include <absacc.h>
4 #include <intrins.h>
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit rs=P1^6;
9 sbit rw=P1^5;
10 sbit ep=P1^4;
11 sbit DQ=P3^6;
12 unsigned char DS18B20_F=0;
13
14 uchar code table[]={"0123456789"};
15
16 unsigned char x=0;
17
18 void delay(unsigned int i)//延時(shí)函數(shù)
19 {
20 1 while(i--);
21 1 }
22
23
24 void xmjc(void) //閑忙檢測(cè)
25 {
26 1 rs=0;
27 1 rw=1;
28 1 ep=1;
29 1 while(P2&0x80)
30 1 ;
31 1 ep=0;
32 1 }
33
34
35 void xml(unsigned char comm) //寫(xiě)命令
36 {
37 1 xmjc();
38 1 rs=0;
39 1 rw=0;
40 1 ep=1;
41 1 P2=comm;
42 1 ep=0;
43 1 }
44
45 void xsj(unsigned char dat)
46 {
47 1 xmjc();
48 1 rs=1;
49 1 rw=0;
50 1 ep=1;
51 1 P2=dat;
52 1 ep=0;
53 1 }
54 void lcd_init(void) //1602初始化
55 {
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 2
56 1 xml(0x38);
57 1 xml(0x06);//光標(biāo)和顯示模式設(shè)置
58 1 xml(0x0c);
59 1 xml(0x01);
60 1 }
61
62
63 void aa(uchar str,uchar lengch)
64 {
65 1 uchar i;
66 1 for(i=0;i<lengch;i++)
67 1 {
68 2 xsj(str);
69 2 }
70 1 }
71
72
73
74 //unsigned char templ=0;
75 //unsigned char temph=0;
76 //float temperature ;
77 //sbit LED1=P1^3;
78 //sbit LED2=P1^2;
79 /*********************************************************************
80 函數(shù)功能:延時(shí)子程序
81 入口參數(shù):time
82 出口參數(shù):
83 **********************************************************************/
84
85 void wait1(unsigned int j)
86 { while(j--);
87 1 }
88
89 /************************
90 初始化
91 *************************/
92 void Init_DS18B20(void) //復(fù)位成功時(shí)返回1,否則返回0
93 { //unsigned char n=255;
94 1 DQ=1;
95 1 _nop_();
96 1 _nop_();
97 1 DQ=0; //主機(jī)拉低1-Wire總線,延時(shí)540us產(chǎn)生復(fù)位信號(hào)
98 1 wait1(60);
99 1 // wait1(180);
100 1 // wait1(180);
101 1 DQ=1; //主機(jī)釋放1-Wire總線,延時(shí)60us等待DS18B20應(yīng)答
102 1 wait1(2);
103 1
104 1 DS18B20_F=DQ;
105 1 wait1(50);
106 1 }
107 /******************************************************************
108 函數(shù)功能:數(shù)碼管顯示子程序
109 入口參數(shù):
110 出口參數(shù):
111
112
113 void display1(int k)
114 {
115 P1=0xfe;
116 P2=tab[k/1000];
117 wait1(100);
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 3
118 P1=0xfd;
119 P2=tab[k%1000/100];
120 wait1(100);
121 P1=0xfb;
122 P2=tab[k%100/10];
123 wait1(100);
124 P1=0xf7;
125 P2=tab[k%10];
126 wait1(100);
127 }
128 void LedDisp(unsigned char disp)//溫度顯示子程序
129 { unsigned int time=0;
130 while(time<1000)
131 {
132 P2=tab[disp/10];
133 //LED1=1;
134 //LED2=0;
135 P1=0xf8;
136 wait1(30);
137 P2=tab[disp%10];
138 P1=0xf9;
139 //LED1=0;
140 // LED2=1;
141 wait1(30);
142 ++time;
143 }
144 }
145
146 *********************************************************************/
147 /*********************************************************************
148 函數(shù)功能:向ds18b20讀一個(gè)字節(jié)數(shù)據(jù)
149 入口參數(shù):
150 出口參數(shù):dat
151 *********************************************************************/
152
153
154 unsigned char Readonechar(void)
155 { unsigned char i=0,c;
156 1 c=0;
157 1 for(i=8;i>0;i--)
158 1 {
159 2 DQ=1;
160 2 _nop_();_nop_();
161 2 DQ=0;
162 2 _nop_();_nop_(); //主機(jī)拉低1-Wire總線,延時(shí)2us
163 2 //wait1(2);
164 2 c>>=1;
165 2 DQ=1;
166 2 //wait1(2);
167 2 if(DQ)
168 2 c|=0x80;
169 2 wait1(7);
170 2 }
171 1 return(c);
172 1 }
173 /**********************************************************************
174 函數(shù)功能:向ds18b20寫(xiě)一字節(jié)的數(shù)據(jù)
175 入口參數(shù):dat
176 出口參數(shù):
177 **********************************************************************/
178
179 void Writeonechar(unsigned char c)
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 4
180 { unsigned char i;
181 1 for(i=8;i>0;i--)
182 1 {
183 2 DQ=0; //主機(jī)拉低1-Wire總線,延時(shí)2us
184 2
185 2 DQ=c&0x01;
186 2 wait1(6); //延時(shí)60us等待DS18B20采集數(shù)據(jù)
187 2 DQ=1; //主機(jī)釋放總線
188 2
189 2 c>>=1;
190 2 }
191 1 _nop_();_nop_();
192 1 //wait1(7);
193 1 }
194 /***********************************************************************
195 函數(shù)功能:向ds18b20讀溫度值
196 入口參數(shù):
197 出口參數(shù):temperature
198 ************************************************************************/
199 Readtemperature(void)
200 { unsigned char temph=0,templ=0;
201 1 unsigned int temperature=0;
202 1 float temp=0;
203 1 Init_DS18B20();
204 1 if(!DS18B20_F)
205 1 {
206 2 //DS18B20_F=0xff;
207 2 Writeonechar(0xcc);
208 2 Writeonechar(0x44);
209 2 //wait1(50000);
210 2 //wait1(50000);
211 2 Init_DS18B20();
212 2 if(!DS18B20_F)
213 2 {
214 3 Writeonechar(0xcc);
215 3 Writeonechar(0xbe);
216 3 templ=Readonechar();
217 3 temph=Readonechar();
218 3 temperature=temph;
219 3 temperature<<=8;
220 3 temperature=temperature|templ;
221 3 temp=temperature*0.0625;
222 3 temp=temp+0.5;
223 3 //temperature=temp+0.5;
224 3 //temperature=temperature/100;
225 3 //temperature=((temph*256)+templ)*0.0625;
226 3 //return(temperature);
227 3 return(temp);
228 3 }
229 2
230 2 //DS18B20_F=Init_DS18B20();
231 2 //while(DS18B20_F==0xff);
232 2 //DS18B20_F=0xff;
233 2
234 2
235 2
236 2 }
237 1 }
238
239
240 /***********************************************************************
241 函數(shù)功能:主程序
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 5
242 入口參數(shù):
243 出口參數(shù):
244
245 void main()
246 {
247 unsigned char i=0;
248
249 while(1)
250
251 {
252 i=Readtemperature();
253 LedDisp(i);
254 }
255 }
256 ************************************************************************/
257
258
259
260
261 void main()//主程序
262 {
263 1 unsigned char wendu=0,m, n;
264 1
265 1 lcd_init();
266 1 while(1)
267 1 {
268 2 wendu=ReadTemperature();//讀溫度
*** WARNING C206 IN LINE 268 OF TEXT1.C: 'ReadTemperature': missing function-prototype
269 2 m=wendu/10;
270 2 n=wendu%10;
271 2 xml(0x82);
272 2 aa(table[m],1);
273 2 xml(0x83);
274 2 aa(table[n],1); //顯示溫度值
275 2 }
276 1 }
277
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 373 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -