当前位置:首页 > (完整版)基于AT89C51单片机的超声波测距仪的毕业设计论文
_nop_(); }
*********************超声波测距程序***************************** void send_wave() {
c_send = 1; delay(); c_send = 0; TH0 = 0; TL0 = 0; TR0 = 0; flag_ == 1) {
menu_1 ++; if(menu_1 >= 2) { }
if(menu_1 == 0) {
menu_shudu = 20;
dis_smg[0] = smg_du[distance % 10];
menu_1 = 0;
关定时器0定时
给定时器0清零
10us的高电平触发
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; smg_i = 4;
if(menu_1 == 1) { 显示
设置高温报警
if(flag_lj_3_en == 0) 三次连加之后速度加快
menu_shudu = 10 ; 500ms 加减一次
else
menu_shudu = 1; 250ms 加减一次
if(key_can == 2) {
set_d ++ ;
按键按下未松开自动加三次
if(set_d > 350)
set_d = 350;
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; a
if(key_can == 3) {
set_d -- ;
按键按下未松开自动加三次
if(set_d <= 1)
set_d = 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 ; 取十
位显示
}
write_eepom();
dis_smg[3] = 0x88; a
} }
****************报警函数*************** void clock_ == 1) && (flag_key_set_en == 1)) {
beep = 0; 打开蜂鸣器
value ++; if(value > 800) { }
value = 0;
flag_key_b_en = 0; beep = 1;关闭蜂鸣器
} }
void main() {
send_wave(); 测距离函数 smg_display(); time_init();
init_eepom(); 读eepom数据 while(1) {
if(flag_300ms == 1) {
flag_300ms = 0;
clock_ == 1) 自动退出设置界面程序 {
zd_break_value ++; 每300ms加一次
if(zd_break_value > 100) 30秒后自动退出设置界面 {
处理距离显示函数
共分享92篇相关文档