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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1503|回復: 4
打印 上一主題 下一主題
收起左側

單片機超聲波測距下面幾行代碼的意思求解

[復制鏈接]
跳轉到指定樓層
樓主
ID:501937 發表于 2019-4-20 20:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助               
                 bai=s/100;
                 shi=s/10%10;
                 ge=s%10%10;
                 Lcd1602_WriteCom(0x80+0x02);
                 Lcd1602_WriteData(0x30+bai);
                 Lcd1602_WriteData(0x30+shi);
                 Lcd1602_WriteData(0x30+ge);
這些啥意思啊

下面是完整單片機程序:

  1.    #include<reg51.h>
  2.     #include<intrins.h>
  3.     #define uchar unsigned char
  4.     #define uint unsigned int

  5.          uchar shi,ge,bai;
  6.          int jia=0;
  7.          unsigned long  int s=0;

  8.     sbit RS=P2^6;
  9.     sbit RW=P2^5;  
  10.     sbit E=P2^7;  
  11.           sbit trig=P1^1;
  12.         sbit echo=P1^3;


  13.         void start()
  14.         {
  15.          trig=1;
  16.          _nop_();
  17.          _nop_();
  18.          _nop_();
  19.          _nop_();
  20.          _nop_();
  21.          _nop_();
  22.          _nop_();
  23.          _nop_();
  24.          _nop_();
  25.          _nop_();
  26.          _nop_();
  27.          _nop_();
  28.          trig=0;
  29.         }

  30.         
  31.     void delay(uint z)
  32.     {
  33.        uint i,j;
  34.        for(i=z;i>0;i--)
  35.           for(j=110;j>0;j--);
  36.     }



  37.     uchar Lcd1602_ReadBusy()  
  38.     {
  39.        uchar temp;
  40.        RS=0;
  41.        RW=1;
  42.        _nop_();
  43.        P0=0xff;               


  44.        _nop_();
  45.        E=1;
  46.        _nop_();
  47.        temp=P0;   
  48.        _nop_();
  49.        E=0;
  50.        return (temp&0x80);

  51.     }


  52.     void Lcd1602_WriteCom(uchar com)
  53.     {
  54.        while(Lcd1602_ReadBusy());
  55.        RS=0;
  56.        RW=0;  
  57.        _nop_();
  58.        P0=com;  
  59.        _nop_();
  60.        E=1;     
  61.        _nop_();
  62.        _nop_();
  63.        E=0;      
  64.        _nop_();
  65.        _nop_();   
  66.     }

  67.     void Lcd1602_WriteData(uchar dat)
  68.     {
  69.        while(Lcd1602_ReadBusy());   
  70.        RS=1;   
  71.        RW=0;  
  72.        _nop_();
  73.        P0=dat;
  74.        _nop_();
  75.        E=1;
  76.        _nop_();
  77.        _nop_();
  78.        E=0;
  79.        _nop_();
  80.        _nop_();   
  81.     }

  82.     void Lcd1602_init()
  83.     {
  84.        delay(15);
  85.        Lcd1602_WriteCom(0x38);  
  86.        delay(5);
  87.        Lcd1602_WriteCom(0x38);
  88.        delay(5);
  89.        Lcd1602_WriteCom(0x38);
  90.        Lcd1602_WriteCom(0x0c);  
  91.        Lcd1602_WriteCom(0x01);
  92.        Lcd1602_WriteCom(0x06);
  93.     }



  94.          void  main()
  95.          {
  96.                  while(1)
  97.                  {
  98.                  TMOD=0x01;
  99.                  ET0=1;
  100.                  EA=1;
  101.                  TL0=0;
  102.                  TH0=0;
  103.                  start();
  104.                  while(!echo);
  105.                  TR0=1;
  106.                  while(echo);
  107.                  TR0=0;
  108.                  s=TH0*256+TL0+jia;
  109.                  jia=0;
  110.                  s=s*0.017*12/11;
  111.                  Lcd1602_init();
  112.                  bai=s/100;
  113.                  shi=s/10%10;
  114.                  ge=s%10%10;
  115.                  Lcd1602_WriteCom(0x80+0x02);
  116.                  Lcd1602_WriteData(0x30+bai);
  117.                  Lcd1602_WriteData(0x30+shi);
  118.                  Lcd1602_WriteData(0x30+ge);

  119.                  }
  120.          }
  121.          void Time0(void) interrupt 1
  122.          {
  123.          jia=jia+65536;
  124.          TH0=0;
  125.          TL0=0;
  126.          }


復制代碼

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

使用道具 舉報

沙發
ID:164602 發表于 2019-4-21 08:45 | 只看該作者
前三行,是將測量到的距離S,轉換為可顯示的各位數,百位、十位、個位
我個人習慣這樣寫:
bai=s/100;
shi=(s%100)/10;
ge=(s%10)/1;
后四行是對1602的顯示進行操作:
第四行是向1602發命令,是指定顯示位置的意思
最后三行就是顯示內容了,0x30的ASCII碼數字開始的位置,即將顯示值轉換為顯示碼。
回復

使用道具 舉報

板凳
ID:101620 發表于 2019-4-21 14:31 | 只看該作者
取各個位的數值分別儲存為單個字符,在LCD1602上顯示
回復

使用道具 舉報

地板
ID:462827 發表于 2019-4-21 15:38 | 只看該作者
bai=s/100;
shi=s/10%10;
ge=s%10%10;
Lcd1602_WriteCom(0x80+0x02);
Lcd1602_WriteData(0x30+bai);
Lcd1602_WriteData(0x30+shi);
Lcd1602_WriteData(0x30+ge);

分別取得s的百位、十位、個位,然后在1602顯示屏的第一行的第三個字符處開始顯示它們。
回復

使用道具 舉報

5#
ID:501535 發表于 2019-4-22 14:19 | 只看該作者
將數值分成百十個并顯示在1602上
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 2一3sex性hd| 96国产精品久久久久aⅴ四区 | 国产一区二区三区四区五区3d | 99精品免费| 99精品国产一区二区三区 | 国产一区二区不卡 | 国产成人99久久亚洲综合精品 | 狠狠干狠狠操 | 一区二区国产在线观看 | 久久精品亚洲精品 | 在线免费看黄 | 91视频免费 | 视频在线一区二区 | 欧美专区日韩专区 | 国产视频久久久 | 国产午夜精品一区二区三区嫩草 | 美女视频一区 | 国产成人网| 在线成人免费视频 | 成人在线免费电影 | 国产激情在线观看 | 99色视频| 亚洲成人中文字幕 | 精品在线一区二区三区 | 午夜色播 | 日韩电影一区二区三区 | 成人在线看片 | 91文字幕巨乱亚洲香蕉 | 国产免费视频在线 | 久久免费精品视频 | 国产精品成人一区二区三区夜夜夜 | 中文字幕精品一区 | 欧美成人自拍 | 中文字幕亚洲精品在线观看 | 久久久国产精品网站 | 欧美八区| 中文字幕视频在线观看免费 | 欧洲av一区| 久久免费视频在线 | 精品欧美一区二区精品久久久 | 久久久久亚洲 |