基于单片机基础的超声波测距 - 图文(7)

2018-12-29 22:17

扬州市职业大学毕业设计(论文)第 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;


基于单片机基础的超声波测距 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:国家职业资格考试-高级焊工模拟试题2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: