基于�片机的超声波测�系统设计实验报� - �- 百度文库

loading ·ÖÏí 2026-11-1 ÏÂÔØÎĵµ

/*******************°´¼ü´¦ÀíÊýº¯Êý***************************/ void key_with() { if(key_can == 1) //µÃµ½k2¼üÖµ£¨É趨¼ü£© { menu_1 ++; if(menu_1 >= 2) { menu_1 = 0; } if(menu_1 == 0) //Í˳öÉ趨½çÃæ { menu_ljsd = 10; //Á¬¼ÓËÙ¶È¿ØÖƱäÁ¿£¨¸´Î»Îª500ms£© dis_smg[0] = smg_duan[distance % 10]; //²âÁ¿ÖµÏÔʾÓà dis_smg[1] = smg_duan[distance / 10 % 10] ; dis_smg[2] = smg_duan[distance / 100 % 10] & 0x7f; smg_i = 3; } if(menu_1 == 1) //ÉèÖýçÃæ { menu_ljsd = 1; //Á¬¼ÓËٶȱäÁ¿£¨50ms£© dis_smg[0] = smg_duan[set_d % 10]; //É趨ֵÏÔʾÓà dis_smg[1] = smg_duan[set_d / 10 % 10]; dis_smg[2] = smg_duan[set_d / 100 % 10] & 0x7f ; dis_smg[3] = 0x88; smg_i = 4; //A£¬É趨ֵÐ޸ıêʶ·û } } if(menu_1 == 1) //ÉèÖñ¨¾¯Öµ { if(flag_lj_3_en == 0) //Èý´ÎÁ¬¼ÓÖ®ºóËٶȼӿì menu_ljsd = 10 ; //500ms ¼Ó¼õÒ»´Î else menu_ljsd = 1; //50ms ¼Ó¼õÒ»´Î if(key_can == 2) //µÃµ½k3¼üÖµ£¨¼Ó£© { set_d ++ ; if(set_d > 350) set_d = 350; dis_smg[0] = smg_duan[set_d % 10]; //É趨ֵÏÔʾ dis_smg[1] = smg_duan[set_d / 10 % 10] ; dis_smg[2] = smg_duan[set_d / 100 % 10] & 0x7f; dis_smg[3] = 0x88;

22

} if(key_can == 3) //µÃµ½k4¼üÖµ£¨¼õ£© { set_d -- ; if(set_d <= 1) set_d = 1; dis_smg[0] = smg_duan[set_d % 10]; //É趨ֵÏÔʾ dis_smg[1] = smg_duan[set_d / 10 % 10] ; dis_smg[2] = smg_duan[set_d / 100 % 10] & 0x7f ; dis_smg[3] = 0x88; //a } } }

/*********************¶¨Ê±Æ÷0¡¢¶¨Ê±Æ÷1³õʼ»¯******************/ void time_init() { EA = 1; //¿ª×ÜÖÐ¶Ï TMOD = 0X11; //¶¨Ê±Æ÷0¡¢¶¨Ê±Æ÷1¹¤×÷·½Ê½1 ET0 = 1; //¿ª¶¨Ê±Æ÷0ÖÐ¶Ï TR0 = 1; //ÔÊÐí¶¨Ê±Æ÷0¶¨Ê± ET1 = 1; //¿ª¶¨Ê±Æ÷1ÖÐ¶Ï TR1 = 1; //ÔÊÐí¶¨Ê±Æ÷1¶¨Ê± }

/****************ÑÓ³Ùº¯Êý£¨10us£¬³¬Éù²¨·¢ÉäÐèÒª£©********************/ void delay() {

int i=10; for(i;i>=0;i--) {

_nop_(); //Ö´ÐÐÒ»Ìõ_nop_()Ö¸Áî¾ÍÊÇ1us } }

/*********************³¬Éù²¨²â¾à³ÌÐò*****************************/ void send_wave() { long temp = 888; c_send = 1; //10usµÄ¸ßµçƽ´¥·¢ delay(); c_send = 0; TH0 = 0; //¸ø¶¨Ê±Æ÷0ÇåÁã TL0 = 0;

23

TR0 = 0; //¹Ø¶¨Ê±Æ÷0¶¨Ê± flag_hc_value = 0; while(!c_recive); //µ±c_reciveΪÁãʱµÈ´ý TR0=1; while(c_recive) //µ±c_reciveΪ1¼ÆÊý²¢µÈ´ý { flag_time0 = TH0 * 256 + TL0; if((flag_hc_value > 1) || (flag_time0 > 21000)) //µ±³¬Éù²¨³¬¹ý²âÁ¿·¶Î§Ê±£¬ÏÔʾ3¸ö888 { TR0 = 0; flag_csb_juli = 2; temp = 888; flag_hc_value = 0; break ; } else { flag_csb_juli = 1; } } if(flag_csb_juli == 1) //¾àÀë´¦Àí { TR0=0; //¹Ø¶¨Ê±Æ÷0¶¨Ê± EA = 0; temp = TH0; //¶Á³ö¶¨Ê±Æ÷0µÄʱ¼ä temp = temp * 256 + TL0; temp /= 59; //HC-SR04³¬Éù²¨Ä£¿é ¾àÀ루ÀåÃ×£©=T*uS/58.823 EA = 1; if(temp > 380) //Èç¹û´óÓÚ3.8m¾Í³¬³ö³¬Éù²¨µÄÁ¿³Ì { temp = 888; } } EA = 0; distance = temp; //¾àÀë EA = 1; }

/****************ðÅÝÅÅÐò£¨×î´óÖµ³Áµ×£©**************************/ int iBuff[5];

void choise(int *a,int n) //Ñ¡Ôñ·¨ÅÅÐò {

24

int i,j,k,temp; for(i=0;ia[j]) k=j; //ÊÇk×ÜÊÇÖ¸Ïò×îÐ¡ÔªËØ*/ if(i!=k) { //µ±k!=iÊDzŽ»»»£¬·ñÔòa[i]¼´Îª×îС temp=a[i]; a[i]=a[k]; a[k]=temp; } } }

/*******************²âÁ¿¾àÀë´¦Àí¼°ÏÔʾº¯Êý**********************/ void smg_display() { int Buff[5]; char i; if(distance == 95)return; //95È¥µô iBuff[4] = iBuff[3]; iBuff[3] = iBuff[2]; iBuff[2] = iBuff[1]; iBuff[1] = iBuff[0]; iBuff[0] = (int)distance; for(i = 0; i<5; i++) Buff[i] = iBuff[i]; choise(Buff,5); //µ÷ÓÃchoiseº¯Êý£¬Ã°ÅÝÅÅÐò distance = (long)Buff[2]; //È¡µÃÅÅÐòºó5ÖµµÄÖмäÖµ£¬ÒÔÏûÈõÎó´¥£¬Îȶ¨²âÁ¿½á¹û EA = 0; //¹ØÖÐ¶Ï dis_smg[0] = smg_duan[distance % 10]; //È¡°Ù·Ö루ÀåÃ×¼¶£© dis_smg[1] = smg_duan[distance / 10 % 10]; //ȡʮ·Ö루·ÖÃ×¼¶£© dis_smg[2] = smg_duan[distance / 100 % 10] & 0x7f; //È¡¸ö 루Ã×¼¶£© EA = 1; //¿ªÖÐ¶Ï }

/*********************±¨¾¯º¯Êý****************************************/ void clock_h_l() { static uchar value; if(distance <= set_d) { value ++; //¶à´Î¼ì²â£¬Ïû³ýʵ¼Ê¾àÀëÔÚÉ趨¾àÀë×óÓұ仯ʱµÄ¸ÉÈÅ

25


基于å�•片机的超声波测è·�系统设计实验报å‘? - é‡?- 百度文库.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ
ËÑË÷¸ü¶à¹ØÓÚ£º 基于å�•片机的超声波测è·�系统设计实验报å‘? µÄÎĵµ
Ïà¹ØÍÆ¼ö
Ïà¹ØÔĶÁ