📄 16021602.lst
字号:
175 2 Delay(4) ;
176 2 }
177 1
178 1 return (dat) ;
179 1 }
C51 COMPILER V8.18 16021602 12/09/2009 22:02:05 PAGE 4
180
181 /* 写一个字节 */
182 /*******************************************************************/
183 WriteOneChar(unsigned char dat)
184 {
185 1 unsigned char i = 0 ;
186 1 for (i = 8 ; i > 0 ; i--)
187 1 {
188 2 DQ = 0 ;
189 2 DQ = dat&0x01 ;
190 2 Delay(5) ;
191 2
192 2 DQ = 1 ;
193 2 dat>>=1 ;
194 2 }
195 1 }
196
197 /* 读取温度 */
198 /*******************************************************************/
199 Read_Temperature(void)
200 {
201 1 Init_DS18B20() ;
202 1
203 1 WriteOneChar(0xCC) ; // 跳过读序号列号的操作
204 1 WriteOneChar(0x44) ; // 启动温度转换
205 1
206 1 Init_DS18B20() ;
207 1 WriteOneChar(0xCC) ; //跳过读序号列号的操作
208 1 WriteOneChar(0xBE) ; //读取温度寄存器
209 1
210 1 temp_data[0] = ReadOneChar() ; //温度低8位
211 1 temp_data[1] = ReadOneChar() ; //温度高8位
212 1 }
213
214 /* 数据转换与温度显示 */
215 /*******************************************************************/
216 Disp_Temperature()
217 {
218 1 display[4]=temp_data[0]&0x0f ;
219 1 display[0]=ditab[display[4]]+0x30 ;//查表得小数位的值
220 1
221 1 display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4) ;
222 1 display[3]=display[4]/100+0x30 ;
223 1 display[1]=display[4]%100 ;
224 1 display[2]=display[1]/10+0x30 ;
225 1 display[1]=display[1]%10+0x30 ;
226 1
227 1 if(display[3]==0x30) //高位为0,不显示
228 1 {
229 2 display[3]=0x20 ;
230 2 if(display[2]==0x30) //次高位为0,不显示
231 2 display[2]=0x20 ;
232 2 }
233 1
234 1 lcd_pos(0x48) ;
235 1 lcd_wdat(display[3]) ; //百位数显示
236 1 lcd_pos(0x49) ;
237 1 lcd_wdat(display[2]) ; //十位数显示
238 1 lcd_pos(0x4a) ;
239 1 lcd_wdat(display[1]) ; //个位数显示
240 1 lcd_pos(0x4c) ;
241 1 lcd_wdat(display[0]) ; //小数位数显示
C51 COMPILER V8.18 16021602 12/09/2009 22:02:05 PAGE 5
242 1 }
243
244 /*******************************************************************/
245 /* 蜂鸣器响一声 */
246 /*******************************************************************/
247 void beep()
248 {
249 1 unsigned char y ;
250 1 for (y=0 ;y<100 ;y++)
251 1 {
252 2 Delay(60) ;
253 2 BEEP=!BEEP ; //BEEP取反
254 2 }
255 1 BEEP=1 ; //关闭蜂鸣器
256 1 Delay(40000) ;
257 1 }
258
259 /* DS18B20 OK 显示菜单 */
260 /*******************************************************************/
261 void Ok_Menu ()
262 {
263 1 uchar m ;
264 1 lcd_init() ; //初始化LCD
265 1
266 1 lcd_pos(0) ; //设置显示位置为第一行的第1个字符
267 1 m = 0 ;
268 1 while(cdis1[m] != '\0')
269 1 { //显示字符
270 2 lcd_wdat(cdis1[m]) ;
271 2 m++ ;
272 2 }
273 1
274 1 lcd_pos(0x40) ; //设置显示位置为第二行第1个字符
275 1 m = 0 ;
276 1 while(cdis2[m] != '\0')
277 1 {
278 2 lcd_wdat(cdis2[m]) ; //显示字符
279 2 m++ ;
280 2 }
281 1
282 1 writetab() ; //自定义字符写入CGRAM
283 1 delay1(5) ;
284 1 lcd_pos(0x4d) ;
285 1 lcd_wdat(0x00) ; //显示自定义字符
286 1 }
287
288
289 /* DS18B20 ERROR 显示菜单 */
290 /*******************************************************************/
291 void Error_Menu ()
292 {
293 1 uchar m ;
294 1 lcd_init() ; //初始化LCD
295 1
296 1 lcd_pos(0) ; //设置显示位置为第一行的第1个字符
297 1 m = 0 ;
298 1 while(cdis3[m] != '\0')
299 1 { //显示字符
300 2 lcd_wdat(cdis3[m]) ;
301 2 m++ ;
302 2 }
303 1
C51 COMPILER V8.18 16021602 12/09/2009 22:02:05 PAGE 6
304 1 lcd_pos(0x40) ; //设置显示位置为第二行第1个字符
305 1 m = 0 ;
306 1 while(cdis4[m] != '\0')
307 1 {
308 2 lcd_wdat(cdis4[m]) ; //显示字符
309 2 m++ ;
310 2 }
311 1 }
312
313
314 /* 主函数 */
315 /************************************/
316 void main()
317 {
318 1 Ok_Menu () ;
319 1
320 1 do
321 1 {
322 2 Read_Temperature() ; //读取温度
323 2 Disp_Temperature() ; //显示温度
324 2 }
325 1 while(!presence) ;
326 1
327 1 Error_Menu () ;
328 1
329 1 do
330 1 {
331 2 Init_DS18B20() ;
332 2 beep() ;
333 2 }
334 1 while(presence) ;
335 1 }
336
*** WARNING C290 IN LINE 195 OF 16021602.C: missing return value
*** WARNING C290 IN LINE 212 OF 16021602.C: missing return value
*** WARNING C290 IN LINE 242 OF 16021602.C: missing return value
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 622 ----
CONSTANT SIZE = 93 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -