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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4504|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

怎么用lcd1602設(shè)定一個值 就是倒車雷達那樣 設(shè)置一個危險距離 還能用按鍵調(diào)整的

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:150257 發(fā)表于 2017-3-12 00:46 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
就是倒車雷達那樣 設(shè)置一個危險距離 還能用按鍵調(diào)整的
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:165046 發(fā)表于 2017-3-12 20:01 | 只看該作者
這個關(guān)鍵要看你選擇什么樣的測距傳感器了,比如選擇紅外發(fā)送、接收模塊,然后通過軟件調(diào)節(jié)靈敏度!
回復(fù)

使用道具 舉報

板凳
ID:151348 發(fā)表于 2017-3-12 22:17 | 只看該作者
把以前的程序改了改,你看看能不能用
#include<reg52.h>
#include <intrins.h>
sbit RS=P2^0;
sbit RW=P2^1;
sbit E =P2^2;
sbit BF=P0^7;
sbit k1=P2^3;
sbit k2=P2^4;
sbit beep = P2^5;
unsigned char code digit[ ]={"0123456789"}; //定義字符數(shù)組顯示數(shù)字

/*****************************************************
函數(shù)功能:延時若干毫秒
入口參數(shù):n
***************************************************/
void delay(unsigned char n)
{
   unsigned char i;
        for(i=0;i<n;i++)
          ;
}
/*****************************************************
函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
unsigned char BusyTest(void)
  {
    bit result;
         RS=0;       //根據(jù)規(guī)定,RS為低電平,RW為高電平時,可以讀狀態(tài)
    RW=1;
    E=1;        //E=1,才允許讀寫
    _nop_();   //空操作
    _nop_();
    _nop_();
    _nop_();   //空操作四個機器周期,給硬件反應(yīng)時間       
    result=BF;  //將忙碌標志電平賦給result
    E=0;         //將E恢復(fù)低電平
   return result;
  }
/*****************************************************
函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊
入口參數(shù):dictate
***************************************************/
void Write_LCD_command (unsigned char dictate)
{   
    while(BusyTest()==1); //如果忙就等待
         RS=0;                  //根據(jù)規(guī)定,RS和R/W同時為低電平時,可以寫入指令
         RW=0;   
         E=0;                   //E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖,
                          // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"
         _nop_();
         _nop_();             //空操作兩個機器周期,給硬件反應(yīng)時間
         P0=dictate;            //將數(shù)據(jù)送入P0口,即寫入指令或地址
         _nop_();
         _nop_();
         _nop_();
         _nop_();               //空操作四個機器周期,給硬件反應(yīng)時間
         E=1;                   //E置高電平
         _nop_();
         _nop_();
         _nop_();
         _nop_();               //空操作四個機器周期,給硬件反應(yīng)時間
          E=0;                  //當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令
}
/*****************************************************
函數(shù)功能:將數(shù)據(jù)(字符的標準ASCII碼)寫入液晶模塊
入口參數(shù):y(為字符常量)
***************************************************/
void Write_LCD_data(unsigned char value)
{
    while(BusyTest()==1);  
          RS=1;           //RS為高電平,RW為低電平時,可以寫入數(shù)據(jù)
          RW=0;
          E=0;            //E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖,
                       // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"
          P0=value;           //將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊
          _nop_();
          _nop_();
          _nop_();
     _nop_();       //空操作四個機器周期,給硬件反應(yīng)時間
          E=1;          //E置高電平
          _nop_();
          _nop_();
          _nop_();
         _nop_();        //空操作四個機器周期,給硬件反應(yīng)時間
         E=0;            //當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令
}
/*****************************************************
函數(shù)功能:對LCD的顯示模式進行初始化設(shè)置
***************************************************/
void LcdInitiate(void)
{
    delay(15);             //延時15ms,首次寫指令時應(yīng)給LCD一段較長的反應(yīng)時間
    Write_LCD_command(0x38);  //顯示模式設(shè)置:16×2顯示,5×7點陣,8位數(shù)據(jù)接口
        delay(5);               //延時5ms ,給硬件一點反應(yīng)時間
    Write_LCD_command(0x38);
        delay(5);
        Write_LCD_command(0x38); //連續(xù)三次,確保初始化成功
        delay(5);
        Write_LCD_command(0x0c);  //顯示模式設(shè)置:顯示開,無光標,光標不閃爍
        delay(5);
        Write_LCD_command(0x06);  //顯示模式設(shè)置:光標右移,字符不移
        delay(5);
        Write_LCD_command(0x01);  //清屏幕指令,將以前的顯示內(nèi)容清除
        delay(5);
}


/***********************************************************
           顯示數(shù)字                 
*************************************************************/
void display(unsigned char add,unsigned int x)
{
    unsigned char i,j,m;
    i=x/100;
    j=x/10%10;
        m=x%10;
        Write_LCD_command(add);
        Write_LCD_command(add);
        Write_LCD_data(digit[i]);
        Write_LCD_data(digit[j]);
        Write_LCD_data(digit[m]);
}

/***********************************************************
           顯示字符               
*************************************************************/
void displayWorningChars(unsigned char add)
{
        Write_LCD_command(add);
        Write_LCD_command(add);
        Write_LCD_data('D');
        Write_LCD_data('e');
        Write_LCD_data('n');
        Write_LCD_data('g');
        Write_LCD_data('e');
        Write_LCD_data('r');
        Write_LCD_data('!');
        Write_LCD_data('!');
        Write_LCD_data('!');
}
void erase(unsigned char add)
{
        Write_LCD_command(add);
        Write_LCD_command(add);
        Write_LCD_data(' ');
        Write_LCD_data(' ');
        Write_LCD_data(' ');
        Write_LCD_data(' ');
        Write_LCD_data(' ');
        Write_LCD_data(' ');
        Write_LCD_data(' ');
        Write_LCD_data(' ');
        Write_LCD_data(' ');
}
void displayChars(unsigned char add)
{
        Write_LCD_command(add);
        Write_LCD_command(add);
        Write_LCD_data('s');
        Write_LCD_data('e');
        Write_LCD_data('t');
        Write_LCD_data(':');
}

void main()
{
  unsigned int set_distance=2,num=1;
  unsigned char denger_flag=0;
  beep =0;
  LcdInitiate();
  displayChars(0x80);
  display(0x84,num);

        while(1)
      {
                if (!k1)
                {
                        delay(1);
                        if(!k1)
                        {
                                while(!k1);
                                if(num<1) num=1;
                                num--;
                                display(0x84,num);
                                if(num>set_distance)
                                {
                                        denger_flag=1;
                                }
                                else
                                {
                                        denger_flag=0;
                                        erase(0xc0);
                                }
                        }
                }
                if (!k2)
                {
                        delay(1);
                        if(!k2)
                        {
                                while(!k2);
                                num++;
                                display(0x84,num);
                                if(num>set_distance)
                                {
                                        denger_flag=1;
                                }
                                else
                                {
                                        denger_flag=0;
                                        erase(0xc0);
                                }
                        }
                }
                if(denger_flag==1)
                {       
                        Write_LCD_command(0xc6);
                        Write_LCD_data(' ');
                        Write_LCD_data(' ');
                        Write_LCD_data(' ');
                        displayWorningChars(0xc0);
                        beep =1;
                }
       }
}

tp.png (29.03 KB, 下載次數(shù): 72)

tp.png

LCD1602 按鍵設(shè)置.zip

33.19 KB, 下載次數(shù): 12

回復(fù)

使用道具 舉報

地板
ID:150257 發(fā)表于 2017-3-13 20:19 | 只看該作者

#include<reg51.h>
#include<intrins.h>       
#include"lcd.h"

sbit Trig = P2^1;
sbit Echo = P2^0;
sbit beep = P1^5;

unsigned char PuZh[]=" 00-00-00 ";
unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.','-','M'};

static unsigned char DisNum = 0; //ÏÔê¾óÃÖ¸Õë                                  
       unsigned int  time=0;
           unsigned long S=0;
           bit      flag =0;
           unsigned char disbuff[4]           ={ 0,0,0,0,};
/*******************************************************************************
* oˉ êy Ãû         : main
* oˉêy1|Äü                   : Ö÷oˉêy
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
void Conut(void)
        {
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
       
         S=(time*1.7)/100;     //Ëã3öà′êÇCM
         if((S>=700)||flag==1) //3¬3ö2aá¿·¶Î§ÏÔ꾡°-¡±
         {         
          flag=0;
         
          DisplayOneChar(0, 1, ASCII[11]);
          DisplayOneChar(1, 1, ASCII[10]);        //ÏÔê¾μã
          DisplayOneChar(2, 1, ASCII[11]);
          DisplayOneChar(3, 1, ASCII[11]);
          DisplayOneChar(4, 1, ASCII[12]);        //ÏÔê¾M
         }
         else
         {
          disbuff[0]=S%1000/100;
          disbuff[1]=S%1000%100/10;
          disbuff[2]=S%1000%10 %10;
          DisplayOneChar(0, 1, ASCII[disbuff[0]]);
          DisplayOneChar(1, 1, ASCII[10]);        //ÏÔê¾μã
          DisplayOneChar(2, 1, ASCII[disbuff[1]]);
          DisplayOneChar(3, 1, ASCII[disbuff[2]]);
          DisplayOneChar(4, 1, ASCII[12]);        //ÏÔê¾M
         }
        }

       
void zd0() interrupt 1                  //T0ÖD¶ÏóÃà′¼ÆêyÆ÷òç3ö,3¬1y2a¾à·¶Î§
  {
    flag=1;                                                         //ÖD¶Ïòç3ö±êÖ¾
  }

void  StartModule()                          //Æô¶ˉÄ£¿é
  {
          Trig=1;                                             //Æô¶ˉò»′ÎÄ£¿é
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          Trig=0;
  }



void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}

void Delay10Us_24M(unsigned int n)
{
unsigned int i=0;
char j=0;
for(i=0;i<n;i++)
  for(j=0;j<2;j++);
}
void fengmingqi()
{
   uint i,j,y;

           
               
               for(i=0;i<2000;i++)
               {beep=~beep;for(j=0;j<24;j++);}
               for(y=0;y<2000;y++)
               {beep=~beep;for(j=0;j<25;j++);}
      for(i=0;i<2000;i++)
               {beep=~beep;for(j=0;j<26;j++);}
    for(i=0;i<2000;i++)
               {beep=~beep;for(j=0;j<27;j++);}
            
         
                                                         
                               
         
}

void main(void)
{

         TMOD=0x01;                   //éèT0Îa·½ê½1£¬GATE=1£»
         TH0=0;
         TL0=0;         
         ET0=1;             //ÔêDíT0ÖD¶Ï
         EA=1;                           //¿aÆô×üÖD¶Ï       
  
        InitLcd1602();
        LcdShowStr(0,0,PuZh);
       
        while(1)
        {
                 StartModule();
             while(!Echo);                //μ±RXÎaáãê±μè′y
             TR0=1;                            //¿aÆô¼Æêy
             while(Echo);                        //μ±RXÎa1¼Æêy2¢μè′y

    TR0=0;                                //1رռÆêy
         Conut();                        //¼ÆËã
                         delayms(80);
                if(S<=50)
                {
                fengmingqi();
                }
                else
                        beep=1;
               
              
        }
       
       
                       
}
回復(fù)

使用道具 舉報

5#
ID:150257 發(fā)表于 2017-3-13 20:19 | 只看該作者
虛榮心像惡鬼 發(fā)表于 2017-3-13 20:19
#include
#include       
#include"lcd.h"

我用的是超聲波模塊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 性网站免费| 国产精品成人久久久久 | 日韩av在线中文字幕 | 国产精品福利在线 | 精品视频在线播放 | 国产免费福利在线 | 国产一级视频在线 | 亚洲欧美国产精品久久 | 日本视频免费 | 欧美日韩在线综合 | 欧美在线视频不卡 | 国产日韩欧美精品一区二区 | 一级免费毛片 | 欧美精品一区二区三区在线播放 | 天堂一区二区三区 | 中文字幕在线视频免费观看 | 二区三区视频 | 一级黄色片一级黄色片 | 综合伊人 | 精品国产久 | 午夜国产 | 日本一二区视频 | 91视频网 | 国产成人99久久亚洲综合精品 | 成人精品国产免费网站 | 久久高清 | 久久成人精品视频 | 国产欧美一区二区三区日本久久久 | 日韩精品免费在线观看 | 日韩中文字幕 | 久久久久久久久久久久久久国产 | 成人免费在线观看视频 | a视频在线 | 国产精品 欧美精品 | 久久成人久久 | 成人福利在线观看 | 久久久久久久久久毛片 | 免费v片| 99精品免费久久久久久久久日本 | 亚洲另类视频 | 成人精品一区 |