久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4070|回復: 3
打印 上一主題 下一主題
收起左側(cè)

哪位大神幫我看下這個超聲波仿真

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:201181 發(fā)表于 2017-5-16 00:43 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
2黑幣

求問:超聲波上的數(shù)值為什么和LCD顯示屏上的NOW值不能同步顯示?總是相差點


程序在這:#include<reg52.h>#include <intrins.h>
#include "LCD1602.h"
//#include "STCEEPROM.h"
sbit  RX = P1^6;  //定義超聲波端口
sbit  TX = P1^7;

sbit LED = P2^3;  //LED
sbit SPEAK = P2^4; //蜂鳴器
sbit Motor = P2^5; //水泵

sbit KEY1 = P1^2;  //設置按鍵
sbit KEY2 = P1^3;  //加按鍵
sbit KEY3 = P1^4;  //減按鍵

unsigned int  time=0;//計時變量
unsigned int  timer=0;//計時變量
unsigned int S=0;//當前值
unsigned int SET_H=100,SET_L=10;//最高值和最低值
bit  flag =0; //測量標志位
unsigned char Table[3],Table1[5];//顯示數(shù)組
unsigned char KEY_flag=0; //按鍵選擇標志
//延時函數(shù)
void Delay_ms(int jj)  //延時函數(shù)
{
        int ii;        //延時變量
        while(jj--)//延時n毫秒
                for(ii=0;ii<116;ii++);//延時1毫秒
}
void Conut(void)         //測量函數(shù)
        {
         time=TH0*256+TL0;         //距離計數(shù)
         TH0=0;         //定時器清零
         TL0=0;         //定時器清零
       
         S=(time*1.87)/10;     //算出來是CM、轉(zhuǎn)換
         if((S>=700)||flag==1) //超出測量范圍顯示“-”
         {         
          flag=0; //數(shù)據(jù)無效標志
         }
         else
         {
          Table1[0]= S/1000+0X30;        //顯示當前值
          Table1[1]= S/100%10+0X30;        //顯示當前值
          Table1[2]= S/10/10+0X30;        //顯示當前值
          Table1[3]= '.';                        //顯示當前值
          Table1[4]= S%10+0X30;           //顯示當前值
          LCD1602_Disp_ZF(0x88,Table1,5); //顯示當前值
        }
}
void main(void)        //主函數(shù)
{
    LCD1602_init();//液晶初始化
        //////////////////////0123456789ABCDEF
    LCD1602_Disp_ZF(0x80,"  Now S:     CM ",16);
                                                     //0123456789ABCDEF
    LCD1602_Disp_ZF(0x80+0X40,"Set H:    L:    ",16);
        TMOD=0x11;                   //設T0為方式1,GATE=1;
        TH0=0;                           //定時器清零
        TL0=0;             //定時器清零
        TH1=0xf8;                   //2MS定時
        TL1=0x30;                   //2MS定時
        ET0=1;             //允許T0中斷
        ET1=1;                           //允許T1中斷
        TR1=1;                           //開啟定時器
        EA=1;                           //開啟總中斷
        EA=0;//關閉中斷
//SET_H = ISP_READ(0x2c00)*256+ISP_READ(0x2c01);//讀取存儲的最大值
//SET_L = ISP_READ(0x2c02)*256+ISP_READ(0x2c03);//讀取存儲的最小值
        EA=1; //開啟總中斷
        while(1)//函數(shù)循環(huán)
        {
                while(!RX);                    //當RX為零時等待
                TR0=1;                            //開啟計數(shù)
                while(RX);                        //當RX為1計數(shù)并等待
                TR0=0;                                //關閉計數(shù)
                Conut();  //計算顯示距離函數(shù)
                /////////////////////////////////////
                if((S/10>SET_H)||(S/10<SET_L)) //水位過低過高報警,
                {
                        LED=0;SPEAK=0; //報警
                }
                else
                {
                        LED=1;SPEAK=1; //不報警
                }
                ////////////////////////////////
                if((S/10>SET_H)) //水位過低打開水泵
                {
                        Motor=0; //打開
                }
                else
                {
                        Motor=1; //關閉
                }       
                if(!KEY1) //切換設置最大值和最小值
                {
                        Delay_ms(10);//延時去抖動
                        if(!KEY1)//切換設置最大值和最小值
                        {
                                KEY_flag++;        //模式選擇
                                //ISP_ERASE(0x2c00);                //注意:字節(jié)編程時必須要先要擦除整個扇區(qū)       
                                //ISP_PROGRAM(0x2c00, SET_H/256);        //記憶存儲
                                //ISP_PROGRAM(0x2c01, SET_H);//記憶存儲
                                //ISP_PROGRAM(0x2c02, SET_L/256);//記憶存儲
                                //ISP_PROGRAM(0x2c03, SET_L);        //記憶存儲
                        }
                        while(!KEY1);//等待按鍵抬起
                }
                if(!KEY2)//設置加
                {
                        Delay_ms(10);//延時去抖動
                        if(!KEY2) //設置加
                        {
                                if(KEY_flag%2==0)SET_H++; //設置加
                                if(KEY_flag%2==1)SET_L++; //設置加
                        }
                }
                if(!KEY3) //設置減
                {
                        Delay_ms(10);//延時去抖動
                        if(!KEY3) //設置減
                        {
                                if(KEY_flag%2==0)SET_H--; //設置減
                                if(KEY_flag%2==1)SET_L--;//設置減
                        }
                }
          Table[0]= SET_H/100+0X30;//顯示最大值
          Table[1]= SET_H%100/10+0X30;
          Table[2]= SET_H%10+0X30;
          LCD1602_Disp_ZF(0x86+0x40,Table,3);
          Table[0]= SET_L/100+0X30;         //顯示最小值
          Table[1]= SET_L%100/10+0X30;
          Table[2]= SET_L%10+0X30;
          LCD1602_Disp_ZF(0x8C+0x40,Table,3);
        }
}

/********************************************************/
     void zd0() interrupt 1                  //T0中斷用來計數(shù)器溢出,超過測距范圍
  {
    flag=1;                                                         //中斷溢出標志
  }
/********************************************************/
   void  zd3()  interrupt 3        
  {
         TH1=0xf8;//2毫秒定時初始化
         TL1=0x30;//2毫秒定時初始化
         timer++;//計數(shù)
         if(timer>=100)//計數(shù)100次,200毫秒
         {
          timer=0;
          TX=1;                                        //200MS  啟動一次模塊
          _nop_(); _nop_(); _nop_();
          _nop_(); _nop_(); _nop_();
          _nop_(); _nop_(); _nop_();
          _nop_(); _nop_(); _nop_();
          _nop_(); _nop_(); _nop_();
          _nop_(); _nop_();_nop_();
          _nop_(); _nop_(); _nop_();
          TX=0;
         }
  }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:201181 發(fā)表于 2017-5-16 08:58 | 只看該作者
有大神幫忙解決下問題嗎?小費大大的有
回復

使用道具 舉報

板凳
ID:201220 發(fā)表于 2017-5-16 10:05 | 只看該作者
能不能把 程序和 仿真發(fā)上來,在調(diào)試的情況下更容易找到原因呢。
回復

使用道具 舉報

地板
ID:82765 發(fā)表于 2017-5-16 16:11 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级黄色毛片免费 | 午夜久久久久久久久久一区二区 | 在线观看av网站永久 | 亚洲视频在线观看 | 黑人巨大精品欧美黑白配亚洲 | 欧美精品久久久 | 日韩一区二区三区四区五区六区 | 亚洲人人| 日韩久久久久 | 欧美一二三四成人免费视频 | 亚洲免费在线观看 | 在线观看涩涩视频 | 福利视频日韩 | 欧美精品一二区 | 中文字幕日韩一区 | 麻豆久久久久久久 | 久久久精品综合 | 日日夜夜精品视频 | 亚洲a在线视频 | 亚洲五码在线 | 久久精品欧美一区二区三区不卡 | 欧美jizzhd精品欧美巨大免费 | 手机看黄av免费网址 | 欧美极品视频在线观看 | 国家aaa的一级看片 h片在线看 | 国产精品国产三级国产aⅴ中文 | 成人网视频 | 午夜影院在线视频 | 欧美日韩精品一区二区天天拍 | 综合网在线 | 超碰人人做 | 在线免费看黄 | 亚洲啊v | 一区二区小视频 | 日本精品裸体写真集在线观看 | 亚洲成人精品 | 中文字幕91| 久久成人精品 | 夜操| 蜜桃视频在线观看免费视频网站www | 黄色一级电影免费观看 |