📄 zpfinal.lst
字号:
162 1 U8 tmbuf[2];
163 1 Init1820();
164 1 WR1820(0xcc);
165 1 //delay_ms(2);
166 1 WR1820(0x44);
167 1 // _nop_();
168 1 // SIO=1;
169 1 // delay_ms(250); //多个1820时要延时,单个就不用,数据手册里看
170 1 // delay_ms(250);
171 1 // delay_ms(250);
172 1 Init1820();
173 1 WR1820(0xcc);
174 1 WR1820(0xbe);
175 1 tmbuf[0]=RD1820();
176 1 tmbuf[1]=RD1820();
177 1 Init1820();
178 1 tp=tmbuf[1]*256+tmbuf[0];
179 1 return(tp);
C51 COMPILER V7.10 ZPFINAL 04/06/2008 13:32:56 PAGE 4
180 1 }
181
182 /*******************************************************************************
183 *** 函 数 名: void Show_8LED(U16 dig)
184 *** 功能描述: 把数字转化为5位LED显示
185 *** 全局变量: NO !
186 *** 输 入: 从DB18B20读取的16位原始数据:低11位数据位,高5位为符号位!
187 //0,1,2,3,4,5,6,7,8,9,-
188 U8 code LED_IMG[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
189 P0.0--4依次为符号位,百位,十位,个位,十分为,百分位
190 P1接8段数码管
191 *** 输 出: NO !
192 *** 函数说明:
193 /******************************************************************************/
194 void Show_8LED(int tmv)
195 {
196 1 U8 ge,shi,bai,shifen,baifen,neg=0;
197 1
198 1 if(tmv<0)
199 1 {
200 2 tmv=-tmv;
201 2 neg=1;
202 2 }
203 1 bai=tmv/10000;
204 1 shi=(tmv%10000)/1000;
205 1 ge =(tmv%1000)/100;
206 1 shifen=(tmv%100)/10;
207 1 baifen=tmv%10;
208 1 for(tmv=0;tmv<80;tmv++)
209 1 {
210 2 if(neg)
211 2 {
212 3 P0=0x01; //符号位
213 3 P1=LED_IMG[10];
214 3 DLY_ms(3); //this is the smallest interval
215 3 }
216 2 P0=0x02;
217 2 P1=LED_IMG[bai]|0X80;
218 2 DLY_ms(3);
219 2 P0=0x04;
220 2 P1=LED_IMG[shi]|0X80;
221 2 DLY_ms(3);
222 2 P0=0x08;
223 2 P1=LED_IMG[ge]&0x7f; //dot always.
224 2 DLY_ms(3);
225 2 P0=0x10;
226 2 P1=LED_IMG[shifen]|0X80;
227 2 DLY_ms(3);
228 2 P0=0x20;
229 2 P1=LED_IMG[baifen]|0X80;
230 2 DLY_ms(3);
231 2 P1=0xff;
232 2 }
233 1 }
234 /*******************************************************************************
235 *** 函 数 名: void Beep(U16 cnt)
236 *** 功能描述: 蜂鸣器鸣响
237 *** 全局变量: NO !
238 *** 输 入: CNT-时间长短 !
239 *** 输 出: NO !
240 *** 函数说明:
241 /******************************************************************************/
C51 COMPILER V7.10 ZPFINAL 04/06/2008 13:32:56 PAGE 5
242 void Beep(U16 cnt)
243 {
244 1 while(cnt--)
245 1 {
246 2 BZ=1;
247 2 DLY_us(200); //
248 2 BZ=0;
249 2 DLY_us(50);
250 2 }
251 1 }
252
253 /*******************************************************************************
254 **** main()
255 *******************************************************************************/
256 void main(void)
257 {
258 1 U16 y;
259 1 float x;
260 1 U8 neg_flag=0,i;
261 1 P0=0xff;
262 1 P1=0x00;
263 1 P3=0xff;
264 1 DLY_ms(250);
265 1 P3=0x00; //cancel noise
266 1 for(i=0;i<6;i++) //1.5s
267 1 {
268 2 DLY_ms(250);
269 2 }
270 1 Show_8LED(-12345);
271 1 DLY_ms(250);
272 1 DLY_ms(250);
273 1 Show_8LED(-6789);
274 1 DLY_ms(250);
275 1 DLY_ms(250);
276 1 while(1)
277 1 {
278 2 y=RD_T();
279 2 if(y<2001)
280 2 {
281 3 neg_flag=0;
282 3 y&=0x07ff;
283 3 }
284 2 else
285 2 {
286 3 neg_flag=1;
287 3 y=~y+1;
288 3 }
289 2 x=y*6.25;
290 2 if(neg_flag)
291 2 x=-x;
292 2 Show_8LED((int)x);
293 2 P3|=0x07;
294 2 if(y<480) //30--480
295 2 greenled=0;
296 2 else if(y<615) //40--615
297 2 blueled=0;
298 2 else if(y<2001){ //60--960,
299 3 redled=0;
300 3 Beep(1000);
301 3 }
302 2 else
303 2 greenled=0;
C51 COMPILER V7.10 ZPFINAL 04/06/2008 13:32:56 PAGE 6
304 2 for(i=0;i<8;i++) //2s
305 2 {
306 3 DLY_ms(250);
307 3 }
308 2 }
309 1
310 1 }
311
312 /*******************************************************************************
313 **** End Of File
314 *******************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 662 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
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 + -