?? text1.lst
字號:
C51 COMPILER V7.50 TEXT1 11/19/2004 12:49:40 PAGE 1
C51 COMPILER V7.50, 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<xuanze.h>
3
4
5 unsigned int shu[]={0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39};
6 unsigned long t;
7
8
9
10
11 void flcd_1602() //當(dāng)為負(fù)溫度時(shí),液晶顯示可以高位為0屏蔽.
12 { init(0x80);write_data(0x4e);//NO
13 1 init(0x81);write_data(0x4f);
14 1 init(0x82);write_data(0x80);
15 1
16 1
17 1 init(0x85);write_data(0x74);//temperature
18 1 init(0x86);write_data(0x65);
19 1 init(0x87);write_data(0x6d);
20 1 init(0x88);write_data(0x70);
21 1 init(0x89);write_data(0x65);
22 1 init(0x8a);write_data(0x72);
23 1 init(0x8b);write_data(0x61);
24 1 init(0x8c);write_data(0x74);
25 1 init(0x8d);write_data(0x75);
26 1 init(0x8e);write_data(0x72);
27 1 init(0x8f);write_data(0x65);
28 1
29 1 init(0xc0);write_data(0x80);
30 1 init(0xc1);write_data(0x80);
31 1 init(0xc2);write_data(0x69); //is:
32 1 init(0xc3);write_data(0x73);
33 1 init(0xc4);write_data(0x3a);
34 1
35 1 if((t/1000%10)!=0)
36 1 {init(0xc5);write_data(0x2d);
37 2 init(0xc6);write_data(shu[t/1000%10]);
38 2 init(0xc7);write_data(shu[t/100%10]);
39 2 }
40 1 else
41 1 {init(0xc5);write_data(0xfe);
42 2 init(0xc6);write_data(0x2d);
43 2 init(0xc7);write_data(shu[t/100%10]);
44 2 }
45 1 init(0xc8);write_data(0x2e);
46 1 init(0xc9);write_data(shu[(t%100)/10]);
47 1 init(0xca);write_data(shu[t%10]);
48 1 init(0xcb);write_data(0x27);
49 1 init(0xcc);write_data(0x43);
50 1 init(0xcd);write_data(0x80);
51 1 init(0xce);write_data(0x80);
52 1 init(0xcf);write_data(0x80);
53 1 }
54
55 void lcd_1602() //當(dāng)為正溫度時(shí),液晶顯示可以高位為0屏蔽.
C51 COMPILER V7.50 TEXT1 11/19/2004 12:49:40 PAGE 2
56 { init(0x80);write_data(0x4e);//NO
57 1 init(0x81);write_data(0x4f);
58 1 init(0x82);write_data(0x80);
59 1
60 1 init(0x84);write_data(0x80);
61 1 init(0x85);write_data(0x74); //temperature
62 1 init(0x86);write_data(0x65);
63 1 init(0x87);write_data(0x6d);
64 1 init(0x88);write_data(0x70);
65 1 init(0x89);write_data(0x65);
66 1 init(0x8a);write_data(0x72);
67 1 init(0x8b);write_data(0x61);
68 1 init(0x8c);write_data(0x74);
69 1 init(0x8d);write_data(0x75);
70 1 init(0x8e);write_data(0x72);
71 1 init(0x8f);write_data(0x65);
72 1
73 1 init(0xc0);write_data(0x80);
74 1 init(0xc1);write_data(0x80);
75 1 init(0xc2);write_data(0x69); //is:
76 1 init(0xc3);write_data(0x73);
77 1 init(0xc4);write_data(0x3a);
78 1 if(t/10000!=0)
79 1 {init(0xc5);write_data(shu[t/10000]);
80 2 init(0xc6);write_data(shu[t/1000%10]);
81 2 init(0xc7);write_data(shu[t/100%10]);
82 2 }
83 1 else
84 1 {if((t/1000%10)!=0)
85 2 {init(0xc5);write_data(0xfe);
86 3 init(0xc6);write_data(shu[t/1000%10]);
87 3 init(0xc7);write_data(shu[t/100%10]);
88 3 }
89 2 else
90 2 {init(0xc5);write_data(0xfe);
91 3 init(0xc6);write_data(0xfe);
92 3 init(0xc7);write_data(shu[t/100%10]);}
93 2 }
94 1
95 1
96 1 init(0xc8);write_data(0x2e);
97 1 init(0xc9);write_data(shu[(t%100)/10]);
98 1 init(0xca);write_data(shu[t%10]);
99 1 init(0xcb);write_data(0x27);
100 1 init(0xcc);write_data(0x43);
101 1 init(0xcd);write_data(0x80);
102 1 init(0xce);write_data(0x80);
103 1 init(0xcf);write_data(0x80);
104 1
105 1 }
106 void jiance() //初始化,即檢測是否存在DS18B20.
107 {unsigned char k=0;
108 1 loop:DS=1;
109 1 DS=0; //主機(jī)將總線從高電平拉到低電平
110 1 del(100); //持續(xù)400us~960us
111 1 DS=1; //然后釋放總線
112 1
113 1 del(10); //DS18B20檢測到總線上升沿后,等待15us~60u后發(fā)低電平。
114 1 k=DS;
115 1 del(20); //低電平至少要持續(xù)60~240us
116 1 if(k==1) // 60~240us內(nèi) 若為高電平則要重新檢測。
117 1 goto loop;
C51 COMPILER V7.50 TEXT1 11/19/2004 12:49:40 PAGE 3
118 1
119 1 }
120
121
122 read() //從DS18B20中讀出數(shù)據(jù)
123 { unsigned char i;
124 1 unsigned long date=0;
125 1 for(i=0;i<16;i++)
126 1 { DS=0; //主機(jī)在某一時(shí)刻將總線從高電平拉到低電平.
127 2 date>>=1;
128 2
129 2
130 2 DS=1;
131 2 del(3); //保持15us將總線拉到高電平,產(chǎn)生讀時(shí)間隙
132 2 if(DS)
133 2 date|=0x8000;
134 2 del(8); //讀數(shù)據(jù)需要持續(xù)35us~60us.
135 2
136 2
137 2 }
138 1 return(date);
139 1 }
140 void main()
141 { unsigned long flag=0;
142 1 EA=0;
143 1 SP=0X60;
144 1 init(0x01); //對液晶屏初始化
145 1 init(0x38);
146 1 init(0x0c);
147 1 init(0x06);
148 1
149 1 while(1)
150 1 {
151 2 jiance(); //對DS18B20初始化
152 2 matchrom();
153 2 write(0x44); //啟動溫度變換
154 2 del(100);
155 2 jiance();
156 2 matchrom();
157 2 if(f==1)
158 2 {f=0;}
159 2 else
160 2 { write(0xbe); // 讀暫存存儲器
161 3 t=read();
162 3 flag=t&0x8000; //對讀取的數(shù)據(jù)進(jìn)行處理
163 3 if(flag==0x8000)
164 3 {t=~t;
165 4 t=t+1;
166 4 t=t*25;
167 4 t>>=2;
168 4 flcd_1602();
169 4 }
170 3 else
171 3 { t=t*25;
172 4 t>>=2;
173 4 lcd_1602();
174 4 }
175 3 }
176 2 }
177 1 }
C51 COMPILER V7.50 TEXT1 11/19/2004 12:49:40 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2377 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -