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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4153|回復(fù): 4
收起左側(cè)

基于51單片機的超聲波倒車報警系統(tǒng)Proteus仿真程序

  [復(fù)制鏈接]
ID:766955 發(fā)表于 2020-6-1 22:01 | 顯示全部樓層 |閱讀模式
stc89c52單片機+lcd1602+srf04超聲波傳感器+DS18B20溫度傳感器+無源蜂鳴器
51hei.png

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<math.h>
  4. #include"lcd.h"
  5. #include"temp.h"
  6. /*??????*/
  7. sbit Trig = P2^1;//??????????
  8. sbit Echo = P2^0;
  9. sbit DQ=P3^7;        //?????
  10. sbit beep=P1^5;        //???
  11. sbit key_up=P3^2;//????0?????
  12. sbit key_down=P3^3;//????1?????
  13. /*????????*/
  14. /*?????????*/
  15. unsigned char mes_temp[]="T:";//lcd???????
  16. unsigned char mes_dis[]="S:";
  17. unsigned char mes_alarmDis[]="aS:";
  18. unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'};
  19. /*??????*/
  20. float  time=0;//??
  21. float  temp;//??
  22. uint  S=0;//??
  23. uint alarm_distance = 10;//????
  24. bit    flag =0;//???????
  25. bit    flag_temp =0;//??????  0???,1???
  26. uchar disbuff[4]= { 0,0,0,0};//???????
  27. uchar temps[] = { 0, 0, 0, 0};//????
  28. uchar alarm_distances[] = { 0, 0};//??????
  29. /*****????****/
  30. void delay(uchar n){//10us
  31.     while(n--);
  32. }
  33. void delayms(unsigned int ms){//1ms
  34.     unsigned char i=100,j;
  35.     for(; ms; ms--){
  36.         while(--i){
  37.             j=10;
  38.             while(--j);
  39.         }
  40.     }
  41. }
  42. /****????*****/
  43.     void Conut(void)
  44.     {
  45.     uint i=0;//????,????????????
  46.     float v;//?????
  47.     /*****????*****/
  48.     time=TH0*256+TL0;//??,us
  49.     TL0=0;//??????,???????
  50.     TH0=0;
  51.     if(flag_temp == 1)//????(??0)
  52.         v=332+temp*0.6;//???????????? m/s
  53.     else//?????
  54.         v=332-temp*0.6;//???????????? m/s
  55.     /*  ????m/s???cm/us
  56.     v:m/s     ---->  ????0.5  0.5*v*100cm/1000 000us  ---->   v/20 000 cm/us
  57.     S=time*v  ---->  ???????
  58.     time/100  v/200  ???????????*/
  59.     time=time/100;
  60.     v=v/200;
  61.     S=time*v;//????
  62.     /*****??????*****/
  63.     /*****????,??????*****/
  64.     //?????????
  65.     LcdWriteCom(0x80+0x42);//???????2???  ????????0x80+0x40
  66.     if((S>=700)||flag==1) {//???????? ??????700cm ??????
  67.         flag=0;//?????????
  68.         while(i<1200){//????
  69.                 beep = ~beep;
  70.                 delay(100);
  71.                 i++;
  72.             }//???????????
  73.            i=0;//???????
  74.            beep = 0;
  75.         //LCD?????   -.--M
  76.         LcdWriteData(ASCII[11]);//-
  77.         LcdWriteData(ASCII[10]);//.
  78.         LcdWriteData(ASCII[11]);//-
  79.         LcdWriteData(ASCII[11]);//-
  80.         LcdWriteData( ASCII[12]);//M
  81.     }
  82.     else //?????? ? 68cm -->  0.68M
  83.     {
  84.         if(S<alarm_distance){
  85.             while(i<1200){//????
  86.                 beep = ~beep;
  87.                 delay(100);
  88.                 i++;
  89.             }//???????????
  90.            i=0;//???????
  91.            beep = 0;
  92.         }
  93.         beep = 0;//??????
  94.         disbuff[0]=S/100;         //??
  95.         disbuff[1]=S%100/10;      //??
  96.         disbuff[2]=S%10 %10;      //??
  97.         LcdWriteData(ASCII[disbuff[0]]);//0
  98.         LcdWriteData(ASCII[10]);            //.
  99.         LcdWriteData(ASCII[disbuff[1]]);//6
  100.         LcdWriteData(ASCII[disbuff[2]]);//8
  101.         LcdWriteData(ASCII[12]);            //M
  102.     }
  103.     LcdWriteCom(0x80+0x48);//??????
  104.     for(i = 0 ; i < 3; i++)
  105.         LcdWriteData(mes_alarmDis[i]);//aS:
  106.     alarm_distances[0]=alarm_distance%100/10;      //??
  107.     alarm_distances[1]=alarm_distance%10 %10;      //??
  108.     for(i = 0 ; i < 2; i++){
  109.         LcdWriteData(ASCII[alarm_distances[i]]);
  110.         if(i == 1){
  111.             LcdWriteData('c');
  112.             LcdWriteData('m');
  113.         }
  114.     }
  115. }
  116. /****??????***/
  117. void T0_OVERFLOW() interrupt 1 //T0?????????,??????
  118. {
  119.     flag=1;
  120. }
  121. void alarm_distance_up() interrupt 0  {//0?????0????
  122.     alarm_distance +=5;
  123. }
  124. void alarm_distance_down() interrupt 2        {//2?????1????
  125.     if(alarm_distance > 5)
  126.         alarm_distance -=5;
  127. }
  128. /****???????****/
  129. void  StartModule(){
  130.     uchar i;//????
  131.     Trig=1;//??????
  132.     for(i=10; i>0; i--)
  133.         _nop_(); //??10????,??
  134.     Trig=0;
  135. }
  136. /***??????*/
  137. void temp_deal(int t){
  138.     uchar i;//????
  139.     float tp;//??????????
  140.     uint  ttp;
  141.         if(t< 0){//?????
  142.         flag_temp = 0;
  143.         LcdWriteCom(0x82);//2???????
  144.         LcdWriteData('-');
  145.         //?????????????,????
  146.         //?????
  147.         t=t-1;
  148.         t=~t;
  149.         tp=t;
  150.         //? 27.123 ---> 2712.3+0.5 --->2712
  151.         ttp=tp*0.0625*100+0.5;
  152.         temp = ttp/100;
  153.     }
  154.     else{
  155.         flag_temp = 1;
  156.         if(t > 0){
  157.             LcdWriteCom(0x82);
  158.             LcdWriteData('+');
  159.         }
  160.         tp=t;//?????????
  161.         ttp=tp*0.0625*100+0.5;
  162.         temp = ttp/100;
  163.     }
  164.     //2712/1000 -> 2
  165.     temps[0] = ttp / 1000;
  166.     //2712%1000 -->712  712/100-->7
  167.     temps[1] = ttp % 1000 / 100;
  168.     //2712%100 --> 12  12/10 -->1
  169.     temps[2] = ttp % 100 / 10;
  170.     temps[3] = ttp % 10;//2712%10 --> 2
  171.     LcdWriteCom(0x83);
  172.     for(i =0; i < 4;i++){
  173.         if(i==2)
  174.             LcdWriteData(ASCII[10]);
  175.         LcdWriteData(ASCII[temps[i]]);
  176.     }
  177.     LcdWriteData(' ');
  178.     LcdWriteData('C');
  179. }
  180. /*???*/
  181. void main(void){
  182.     uchar i;      //for?????
  183.     TMOD=0x01;    //??????
  184.     TH0=0;  TL0=0;//???0??
  185.     IT0=1;  IT1=1;//????0,1?????
  186.     ET0=1;        //??T0??
  187.     EX0=1;  EX1=1;//??????0,1
  188.     EA=1;         //????
  189.     LcdInit();    //???1602
  190.     LcdWriteCom(0x80);//???????
  191.     for(i=0; i<2; i++)
  192.        LcdWriteData(mes_temp[i]);//T:
  193.     LcdWriteCom(0x80+0x40);//??????????
  194.     for(i=0; i<2; i++)
  195.         LcdWriteData(mes_dis[i]);//S:
  196.     while(1){
  197.         //?????????
  198.         temp_deal(Ds18b20ReadTemp());
  199.         StartModule();//???????
  200.         while(!Echo);                //echo=1???
  201.         TR0=1;                         //????
  202.         while(Echo);        //echo=0???
  203.         TR0=0;                                    //????
  204.         Conut();                          //???????
  205.         delayms(80);       //??80ms
  206.     }
  207. }

復(fù)制代碼
51hei.png
所有資料51hei提供下載:
UltrasonicDistanceMeasurementSystem-master.zip (148.28 KB, 下載次數(shù): 172)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:829126 發(fā)表于 2020-10-13 09:13 | 顯示全部樓層
請問是51單片機還是stm32單片機
回復(fù)

使用道具 舉報

ID:833603 發(fā)表于 2020-10-23 15:31 | 顯示全部樓層
1feng1 發(fā)表于 2020-10-13 09:13
請問是51單片機還是stm32單片機

51的
回復(fù)

使用道具 舉報

ID:787976 發(fā)表于 2020-11-1 10:42 | 顯示全部樓層
怎么顯示成功的結(jié)果
回復(fù)

使用道具 舉報

ID:986539 發(fā)表于 2021-12-26 17:09 | 顯示全部樓層
我想要注釋
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费中文字幕日韩欧美 | 久久99国产精一区二区三区 | 人操人免费视频 | 亚洲精品久久久一区二区三区 | 一级毛片视频 | 嫩草视频网 | 亚洲国产福利视频 | 亚洲另类视频 | 在线播放国产一区二区三区 | 国产精品久久午夜夜伦鲁鲁 | 日朝毛片| 精品欧美乱码久久久久久1区2区 | 免费一区二区三区 | 一区二区三区高清在线观看 | 最新国产精品 | 精品一二区 | 日韩欧美精品 | 99热在这里只有精品 | 欧美一区二区三区视频 | 91夜色在线观看 | 欧美区在线 | 一区二区三区四区视频 | 日韩电影免费在线观看中文字幕 | 日本激情视频网 | 九九热re | 日韩中文字幕2019 | 日韩av黄色 | 日韩在线不卡视频 | 欧美日韩黄 | 少妇黄色 | 一片毛片 | 国产精品久久久久久久久久 | 欧美日在线 | 九色在线观看 | 国内精品久久久久久影视8 最新黄色在线观看 | 国产一级毛片视频 | 免费的色网站 | 狠狠干美女| 天堂一区二区三区 | 成人美女免费网站视频 | 国产高清精品在线 |