?? 測(cè)距程序.lst
字號(hào):
185 1 for(i=0;i<32;i++)
186 1 {
187 2 Write_char(0,0x80+i);
188 2 Write_char(0,0x80);
189 2 for(j=0;j<16;j++)
190 2 {
191 3 Write_char(1,img[k++]);
192 3 }
193 2 }
194 1
195 1 for(i=0;i<32;i++)
196 1 {
197 2 Write_char(0,0x80+i);
198 2 Write_char(0,0x88);
199 2 for(j=0;j<16;j++)
200 2 {
201 3 Write_char(1,img[k++]);
202 3 }
203 2 }
204 1 }
205
206 /******************************************************************************/
207 void Clr_Scr(void)//清屏函數(shù)
208 {
209 1 Write_char(0,0x01);
210 1 }
211
212 /******************************************************************************/
213 void LCD_set_xy( unsigned char x, unsigned char y )
214 { //設(shè)置LCD顯示的起始位置,X為行,Y為列
215 1 unsigned char address;
216 1 switch(x)
217 1 {
218 2 case 0: address = 0x80 + y; break;
219 2 case 1: address = 0x80 + y; break;
220 2 case 2: address = 0x90 + y; break;
221 2 case 3: address = 0x88 + y; break;
222 2 case 4: address = 0x98 + y; break;
223 2 default:address = 0x80 + y; break;
224 2 }
225 1 Write_char(0, address);
226 1 }
227
228 /******************************************************************************/
229 void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
230 { // 中英文字符串顯示函數(shù)
231 1 LCD_set_xy( X, Y );
232 1
233 1 while (*s)
234 1 {
235 2 Write_char( 1, *s );
236 2 s ++;
237 2 Delaynms(1);
238 2 }
239 1 }
240
241 /******************************************************************************/
C51 COMPILER V8.08 瞋距程序 05/01/2010 20:54:00 PAGE 5
242 void LCD_Write_number(unsigned char s)// 數(shù)字顯示函數(shù)
243 {
244 1 Write_char(1,num[s]);
245 1 Delaynms(1);
246 1 }
247 /******************************************************************************/
248 void Lcd_Mark2(void)
249 {
250 1 Clr_Scr();//清屏
251 1 LCD_Write_string(1,0,znwk);//
252 1 LCD_Write_string(2,0,waves);//
253 1 LCD_Write_string(3,7,CM);//
254 1 }
255
256 /********************************************************/
257 void Conut(void)
258 {
259 1 time=TH0*256+TL0;
260 1 TH0=0;
261 1 TL0=0;
262 1 S=time*1.87/100; //算出來是CM 11。0592M晶振
263 1 if(flag==1) //超出測(cè)量
264 1 {
265 2 flag=0;
266 2 LCD_set_xy( 3, 4 );
267 2 LCD_Write_number(13);
268 2 LCD_Write_number(12);
269 2 LCD_set_xy( 3, 5 );
270 2 LCD_Write_number(13);
271 2 LCD_Write_number(13);
272 2
273 2 }
274 1 else
275 1 {
276 2 disbuff[1]=S%1000/100;
277 2 disbuff[2]=S%1000%100/10;
278 2 disbuff[3]=S%1000%10 %10;
279 2 LCD_set_xy( 3, 4 );
280 2 LCD_Write_number(disbuff[1]);
281 2 LCD_Write_number(12);
282 2 LCD_set_xy( 3, 5 );
283 2 LCD_Write_number(disbuff[2]);
284 2 LCD_Write_number(disbuff[3]);
285 2 }
286 1 }
287 /********************************************************/
288 void delayms(unsigned int ms)
289 {
290 1 unsigned char i=100,j;
291 1 for(;ms;ms--)
292 1 {
293 2 while(--i)
294 2 {
295 3 j=10;
296 3 while(--j);
297 3 }
298 2 }
299 1 }
300 /********************************************************/
301 void zd0() interrupt 1 //T0中斷用來計(jì)數(shù)器溢出,超過測(cè)距范圍
302 {
303 1 flag=1; //中斷溢出標(biāo)志
C51 COMPILER V8.08 瞋距程序 05/01/2010 20:54:00 PAGE 6
304 1 }
305 /********************************************************/
306 void StartModule() //T1中斷用來掃描數(shù)碼管和計(jì)800MS啟動(dòng)模塊
307 {
308 1 TX=1; //800MS 啟動(dòng)一次模塊
309 1 _nop_();
310 1 _nop_();
311 1 _nop_();
312 1 _nop_();
313 1 _nop_();
314 1 _nop_();
315 1 _nop_();
316 1 _nop_();
317 1 _nop_();
318 1 _nop_();
319 1 _nop_();
320 1 _nop_();
321 1 _nop_();
322 1 _nop_();
323 1 _nop_();
324 1 _nop_();
325 1 _nop_();
326 1 _nop_();
327 1 _nop_();
328 1 _nop_();
329 1 _nop_();
330 1 TX=0;
331 1 }
332 /********************************************************/
333 void main(void)
334 {
335 1 TMOD=0x01; //設(shè)T0為方式1,GATE=1
336 1 TH0=0;
337 1 TL0=0;
338 1 TR0=1;
339 1
340 1 Lcd_init(); //設(shè)置液晶顯示器
341 1 Clr_Scr(); //清屏
342 1 Disp_img(logo); //顯示歡迎使用本產(chǎn)品LOGO
343 1 Delaynms(1000);
344 1 Lcd_init(); //從圖形顯示狀態(tài)下返回
345 1 Lcd_Mark2();
346 1
347 1
348 1 while(1)
349 1 {
350 2 StartModule();
351 2 //計(jì)算
352 2 while(!RX); //當(dāng)RX為零時(shí)等待
353 2 TR0=1; //開啟計(jì)數(shù)
354 2 while(RX); //當(dāng)RX為1計(jì)數(shù)并等待
355 2 TR0=0; //關(guān)閉計(jì)數(shù)
356 2 Conut();
357 2 delayms(80); //80MS
358 2
359 2 }
360 1
361 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 872 ----
C51 COMPILER V8.08 瞋距程序 05/01/2010 20:54:00 PAGE 7
CONSTANT SIZE = 1071 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 15
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -