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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍(lán)僑杯單片機(jī)超聲波模塊程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:841799 發(fā)表于 2021-5-27 17:24 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include <stc15f2k60s2.h>
  2. #include "intrins.h"

  3. #define uchar unsigned char
  4. #define uint unsigned int
  5.         
  6. sbit TX = P1^0;  //發(fā)射引腳
  7. sbit RX = P1^1;  //接收引腳
  8. uchar tab[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff,0x8e};
  9. uchar code weixuan[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  10. uchar dspbuf[] = {10,10,10,10,10,10,10,10};
  11. uint distance,time = 0,intr=0;
  12. uchar s_flag = 0,du=0,moshi;
  13. void display();
  14. void moshi0();
  15. void moshi1();
  16. void xian();
  17. void Delay12us();
  18. void send_wave();
  19. void all_chushihua();
  20. void all_chushihua()
  21. {
  22.         P0 = 0xff;
  23.         P2 = (P2 & 0x1f) | 0x80;
  24.         P2 = 0x1f;
  25.         P0 = 0x00;
  26.         P2 = (P2 & 0x1f) | 0xa0;
  27.         P2 = 0x1f;
  28.         P0=0XFF;
  29.         P2=(P2&0X1F)|0XC0;
  30.         P2=P2&0X1F;
  31.         P0=0XFF;
  32.         P2=(P2&0X1F)|0XE0;
  33.         P2=P2&0X1F;
  34. }
  35. void main(void)
  36. {
  37.   all_chushihua();
  38.         //AUXR = 0x80;
  39.   TMOD = 0x11;  //配置定時(shí)器工作模式
  40.   TH0 = (65535-2000)/256;
  41.   TL0 = (65535-2000)/256;  
  42.   TH1 = 0;
  43.   TL1 = 0;  
  44.   TR0 = 1;  //啟動定時(shí)器
  45.   EA = 1;
  46.   ET0 = 1;  //打開定時(shí)器0中斷
  47.   while(1)
  48.   {
  49.         /** 200毫秒更新一次數(shù)據(jù) */
  50.                 if(s_flag)
  51.     {
  52.       s_flag = 0;
  53.             /** 關(guān)閉定時(shí)器0中斷:計(jì)算超聲波發(fā)送到返回的時(shí)間 */
  54. //                         ET0 = 0;
  55.       send_wave();  //發(fā)送方波信號
  56.       TR1 = 1;  //啟動計(jì)時(shí)
  57.                         while((RX == 1) && (TF1 == 0));  //等待收到脈沖,沒有計(jì)滿溢出
  58.                         TR1 = 0;  //關(guān)閉計(jì)時(shí)

  59.                         //發(fā)生溢出
  60.                         if(TF1 == 1)
  61.                         {
  62.                                 TF1 = 0;
  63.                                 distance = 9999;  //無返回
  64.                                 moshi=0;
  65.                         }
  66.                         else
  67.                         {
  68.                                 /**  計(jì)算時(shí)間  */
  69.                                 time=TH1*256+TL1;
  70.                                 distance = (unsigned int)(time*0.017);  //計(jì)算距離        340 00 /1000 000/2=0.017
  71.         if(distance<10)  distance=10;  //在這規(guī)范那個(gè)范圍內(nèi),
  72.         if(distance>50)  distance=50;                                
  73.         moshi=1;                                
  74.                         }
  75.                         TH1 = 0;
  76.                         TL1 = 0;
  77.     }
  78.         }
  79. }

  80. //定時(shí)器0中斷服務(wù)函數(shù)
  81. void time0()  interrupt 1  //默認(rèn)中斷優(yōu)先級 1
  82. {
  83.         TH0 = (65535-2000)/256;
  84.   TL0 = (65535-2000)/256;
  85.         if(++intr == 100){
  86.    
  87.    s_flag = 1;intr = 0;}
  88.         
  89.         display();
  90. }
  91. void Delay12us()//@11.0592MHz
  92. {
  93.         unsigned char i;

  94.         _nop_();
  95.         _nop_();
  96.         _nop_();
  97.         i = 30;
  98.         while (--i);
  99. }

  100. void send_wave()//發(fā)送八段脈沖波(40Khz)
  101. {
  102.         unsigned char i = 8;
  103.         
  104.         while(i --)
  105.         {
  106.                 TX = 1;
  107.                 Delay12us();
  108.                 TX = 0;
  109.                 Delay12us();
  110.         }
  111. }
  112. void xianshi0()
  113. {
  114.         switch(du)
  115.         {
  116.                 case 0:P0=tab[11];break;
  117.                 case 1:P0=tab[10];break;
  118.                 case 2:P0=tab[10];break;
  119.                 case 3:P0=tab[10];break;
  120.                 case 4:P0=tab[10];break;
  121.                 case 5:P0=tab[10];break;
  122.                 case 6:P0=tab[10];break;
  123.                 case 7:P0=tab[10];break;
  124.         }
  125. }
  126. void xianshi1()
  127. {
  128.         switch(du)
  129.         {
  130.                 case 0:P0=tab[10];break;
  131.                 case 1:P0=tab[10];break;
  132.                 case 2:P0=tab[10];break;
  133.                 case 3:P0=tab[10];break;
  134.                 case 4:P0=tab[10];break;
  135.                 case 5:P0=tab[distance/100%10];break;
  136.                 case 6:P0=tab[distance/10%10];break;
  137.                 case 7:P0=tab[distance%10]; break;
  138.         }
  139. }
  140. void xian()
  141. {
  142.         switch(moshi)
  143.         {
  144.                 case 0:xianshi0();break;
  145.                 case 1:xianshi1();break;
  146.         }
  147. }
  148. void display()
  149. {
  150.         P0=weixuan[du];
  151.         P2=(P2&0X1F)|0XC0;
  152.         P2=P2&0X1F;
  153.         xian();
  154.         P2=(P2&0X1F)|0XE0;
  155.         P2=P2&0X1F;
  156.   if(++du>7) du=0;
  157. }
復(fù)制代碼

超聲波_DYH.rar (100.26 KB, 下載次數(shù): 11)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av一区二区三区四区 | 国产精品久久久久免费 | 91九色视频 | 日韩欧美一区二区三区四区 | 亚洲精品欧美 | 国产精品视频网 | 国产精品一区二区三区在线播放 | 亚洲一级黄色 | 亚洲欧美第一视频 | 日韩三区 | 欧美色综合一区二区三区 | 日韩在线观看网站 | 户外露出一区二区三区 | 久久国产精品一区二区 | 成人午夜 | 免费爱爱视频 | 欧美在线国产精品 | 成人免费视频网站在线观看 | 精品二区| 国产精品久久久久一区二区三区 | 秋霞国产 | 日韩三级| 91九色婷婷 | 欧美日韩综合一区 | 成人国产综合 | 国产精品1区2区 | 一区二区中文字幕 | 亚洲另类视频 | 国产成人精品一区二区 | 欧美男人天堂 | 91 在线| 日本不卡一区二区 | 成人免费影院 | xx视频在线观看 | 免费久久久久久 | 在线国产小视频 | 久久这里只有精品首页 | 亚洲成人免费av | 欧美性生交大片免费 | 亚洲91视频 | 日韩在线视频一区二区三区 |