扬州市职业大学毕业设计(论文)第 27 页 共36页
bit flag_lj_en; bit flag_lj_3_en;
uchar key_time,flag_value; uchar menu_1; uchar a_a;
void delay_1ms(uint q) {
uint i,j;
for(i=0;i for(j=0;j<120;j++); } void smg_display() { dis_smg[0] = smg_du[distance % 10]; dis_smg[1] = smg_du[distance / 10 % 10]; dis_smg[2] = smg_du[distance / 100 % 10] & 0x7f; } void write_eepom() { SectorErase(0x2000); byte_write(0x2000, set_d % 256); byte_write(0x2001, set_d / 256); byte_write(0x2058, a_a); } void read_eepom() { set_d = byte_read(0x2001); set_d <<= 8; set_d |= byte_read(0x2000); a_a = byte_read(0x2058); } void init_eepom() { read_eepom(); if(a_a != 1) { set_d = 100; 扬州市职业大学毕业设计(论文)第 28 页 共36页 a_a = 1; write_eepom(); } } void key() { static uchar key_new = 0,key_old = 0,key_value = 0; if(key_new == 0) { if((P2 & 0x07) == 0x07) key_value ++; else key_value = 0; if(key_value >= 5) { key_value = 0; key_new = 1; flag_lj_en = 0; flag_lj_3_en = 0; flag_value = 0; key_time = 0; write_eepom(); } } else { if((P2 & 0x07) != 0x07) key_value ++; else key_value = 0; if(key_value >= 5) { key_value = 0; key_new = 0; flag_lj_en = 1; zd_break_en = 1; zd_break_value = 0; flag_key_b_en = 1; } } key_can = 20; if(key_500ms == 1) { key_500ms = 0; 扬州市职业大学毕业设计(论文)第 29 页 共36页 key_new = 0; key_old = 1; zd_break_value = 0; } if((key_new == 0) && (key_old == 1)) { switch(P2 & 0x07) { case 0x06: key_can = 3; break; case 0x05: key_can = 2; break; case 0x03: key_can = 1; break; } // dis_smg[3] = smg_du[key_can % 10]; } key_old = key_new; } void smg_we_switch(uchar i) { switch(i) { case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 } } void display() { static uchar i; i++; if(i >= smg_i) i = 0; // P1 = 0xff; // P3 = 0xf0 | (P3 & 0x0f); // P3 = smg_we[i] | (P3 & 0x0f); smg_we_switch(i); P1 = dis_smg[i]; } = 1; break; = 1; break; = 1; break; = 0; break; 扬州市职业大学毕业设计(论文)第 30 页 共36页 void delay() { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } void send_wave() { c_send = 1; delay(); c_send = 0; TH0 = 0; TL0 = 0; TR0 = 0; flag_hc_value = 0; while(!c_recive); TR0=1; while(c_recive) { flag_time0 = TH0 * 256 + TL0; if((flag_hc_value > 1) || (flag_time0 > 65000)) { TR0 = 0; flag_csb_juli = 2; distance = 888; flag_hc_value = 0; break ; } else { flag_csb_juli = 1; } } if(flag_csb_juli == 1) { TR0=0; distance = TH0; distance = distance * 256 + TL0; 扬州市职业大学毕业设计(论文)第 31 页 共36页 distance +=( flag_hc_value * 65536); distance *= 0.017; if(distance > 350) { distance = 888; } } } void time_init() { EA = 1; TMOD = 0X11; ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 1; } void key_with() { if(key_can == 1) { menu_1 ++; if(menu_1 >= 2) { menu_1 = 0; } if(menu_1 == 0) { menu_shudu = 20; dis_smg[0] = smg_du[distance % 10]; dis_smg[1] = smg_du[distance / 10 % 10] ; dis_smg[2] = smg_du[distance / 100 % 10] & 0x7f; smg_i = 3; } if(menu_1 == 1) { menu_shudu = 1; dis_smg[0] = smg_du[set_d % 10]; dis_smg[1] = smg_du[set_d / 10 % 10]; dis_smg[2] = smg_du[set_d / 100 % 10] & 0x7f ; dis_smg[3] = 0x88;