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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)檢測(cè)溫度,光照,測(cè)距,串口上傳程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:222500 發(fā)表于 2019-8-3 11:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /*------------------------------------------------
  2.                 包含頭文件
  3. ------------------------------------------------*/
  4. #include<reg52.h>
  5. #include"uart.h"
  6. #include"lcd.h"
  7. #include"ds1302.h"
  8. #include"18b20.h"
  9. #include"xpt2046.h"
  10. #include"hcsr04.h"
  11. #include"delay.h"
  12. #include<stdio.h>
  13. #include"hcsr04.h"
  14. #include"key.h"

  15. char CMER [10] = "厘米--";
  16. char TIER[10] = "攝氏度--";
  17. char TIMER[6] = "時(shí)間\n";
  18. char LIGHTH[10] = "光照強(qiáng)度--";






  19. bit      flag =0;
  20. unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.',':','-','M','S'};


  21. void UsartConfiguration()
  22. {
  23.         SCON=0X50;                        //設(shè)置為工作方式1
  24.         TMOD=0X20;                        //設(shè)置計(jì)數(shù)器工作方式2
  25.         PCON=0X80;                        //波特率加倍
  26.         TH1=0XF3;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
  27.         TL1=0XF3;
  28. //        ES=1;                                                //打開接收中斷
  29. //        EA=1;                                                //打開總中斷
  30.         TR1=1;                                        //打開計(jì)數(shù)器
  31. }


  32. void zd0() interrupt 1                  //T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍
  33.   {
  34.     flag=1;                                                         //中斷溢出標(biāo)志
  35. }



  36. /*------------------------------------------------
  37.                    S級(jí)延時(shí)
  38. ------------------------------------------------*/
  39. void DelayS(unsigned char u)
  40. {
  41. while(u--)
  42.       {
  43.           DelayMs(250);
  44.           DelayMs(250);
  45.           DelayMs(250);
  46.           DelayMs(250);
  47.           }
  48. }

  49. /*------------------------------------------------
  50.                    主函數(shù)
  51. ------------------------------------------------*/
  52. main()
  53. {
  54.    unsigned char DisNum = 0; //顯示用指針                                 
  55.    unsigned int  time=0;
  56.    unsigned long S=0;
  57.    unsigned char i, disbuff[2]           ={0,0,};
  58.   unsigned char disp[3];
  59.   unsigned char datas[] = {0, 0, 0, 0};
  60.   int temp,light;                 //溫度值
  61.    float tp;


  62. Int0Configuration();
  63. InitUART ();     //初始化串口
  64. LCD_Init();      //初始化LCD1602
  65. Ds1302Init();
  66. DelayMs(30);     //穩(wěn)定
  67. zhongduan()        ;
  68. UsartConfiguration();
  69. LCD_Write_String(0,0,"Welcome to me!");//液晶顯示測(cè)試
  70. LCD_Write_String(0,1,"tengjianhao");
  71. DelayS(2);
  72. LCD_Clear();
  73. while(1)
  74.      {         
  75.              key();
  76.                  LCD_Write_String(0,0,"Time:");//液晶顯示測(cè)試
  77.                  LCD_Write_Com(0x85);
  78.                  LCD_Write_Data('0'+TIME[2]/16) ;
  79.                  LCD_Write_Data('0'+(TIME[2]&0x0f));
  80.                  SBUF = '0'+TIME[2]/16;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  81.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  82.               TI = 0;
  83.                   SBUF = '1'+TIME[2]/16;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  84.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  85.               TI = 0;
  86.                    SBUF = '.';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  87.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  88.               TI = 0;
  89.                  LCD_Write_Data('-');
  90.                  LCD_Write_Data('0'+TIME[1]/16) ;
  91.                  LCD_Write_Data('0'+(TIME[1]&0x0f));
  92.                  SBUF = '0'+TIME[1]/16;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  93.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  94.               TI = 0;
  95.                   SBUF = '1'+TIME[1]/16;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  96.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  97.               TI = 0;
  98.                    SBUF = '.';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  99.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  100.               TI = 0;
  101.                  LCD_Write_Data('-');
  102.                  LCD_Write_Data('0'+TIME[0]/16) ;
  103.                  LCD_Write_Data('0'+(TIME[0]&0x0f));
  104.                  SBUF = '0'+TIME[0]/16;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  105.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  106.               TI = 0;
  107.                   SBUF = '1'+TIME[0]/16;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  108.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  109.               TI = 0;
  110.          for(i=0; i<8; i++)
  111.                {
  112.                       SBUF = TIMER[i];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  113.                        while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  114.                     TI = 0;
  115.                  }
  116.                  
  117.                  

  118.                 LCD_Write_String(0,1,"T:");
  119.                  temp=ReadTemperature();//讀取溫度
  120.          DelayS(1);
  121.          temp=ReadTemperature();
  122.                  tp=temp;
  123.                  temp=tp*0.0625*100+0.5;
  124.              datas[0] = temp % 10000 / 1000;
  125.              datas[1] = temp % 1000 / 100;
  126.                  LCD_Write_Com(0x80+0x42);
  127.                  LCD_Write_Data('0'+datas[0])  ;
  128.                  LCD_Write_Data('0'+datas[0]&0x0f)  ;
  129.                 SBUF = '0'+datas[0];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  130.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  131.               TI = 0;
  132.                  LCD_Write_Com(0x80+0x43);
  133.                  LCD_Write_Data('0'+datas[1]);
  134.                  LCD_Write_Data('0'+datas[1]&0x0f) ;
  135.                  SBUF = '0'+datas[1];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  136.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  137.               TI = 0;
  138.                   for(i=0; i<10; i++)
  139.                {
  140.                       SBUF = TIER[i];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  141.                        while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  142.                     TI = 0;
  143.                  }
  144.                  LCD_Write_Com(0x80+0x44);
  145.                  LCD_Write_Data('C') ;


  146.                  LCD_Write_String(6,1,"L:");
  147.                  light = Read_AD_Data(0xA4)/10;
  148.              disp[0]=light%1000/100;//百位
  149.              disp[1]=light%1000%100/10;//個(gè)位
  150.              disp[2]=light%1000%100%10;
  151.                  LCD_Write_Com(0x80+0x48);
  152.                  LCD_Write_Data('0'+disp[1])  ;
  153.                  LCD_Write_Data('0'+disp[1]&0x0f)  ;
  154.                  SBUF = '0'+disp[1];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  155.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  156.               TI = 0;
  157.                  LCD_Write_Com(0x80+0x49);
  158.                  LCD_Write_Data('0'+disp[2])  ;
  159.                  LCD_Write_Data('0'+disp[2]&0x0f)  ;
  160.                  SBUF = '0'+disp[2];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  161.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  162.               TI = 0;
  163.                    for(i=0; i<10; i++)
  164.                {
  165.                       SBUF = LIGHTH[i];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  166.                        while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  167.                     TI = 0;
  168.                  }
  169.                  LCD_Write_Com(0x80+0x4A);
  170.                  LCD_Write_Data('%') ;
  171.                


  172.                  LCD_Write_String(12,1,"S:");
  173.                  chaosheng() ;
  174.              time=TH0*256+TL0;
  175.              TH0=0;
  176.              TL0=0;
  177.              S=(time*1.7)/1000;     //算出來(lái)是CM
  178.              if((S>=100)||flag==1) //超出測(cè)量范圍顯示“-”
  179.              {         
  180.                flag=0;
  181.                SBUF='0';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  182.                while(!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  183.                TI=0;
  184.                    SBUF='0';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  185.                while(!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  186.                TI=0;
  187.                          for(i=0; i<10; i++)
  188.                {
  189.                       SBUF = CMER [i];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  190.                        while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  191.                     TI = 0;
  192.                  }
  193.                    LCD_Write_Com(0x80+0x4E);
  194.                    LCD_Write_Data(ASCII[12]) ;
  195.                    LCD_Write_Com(0x80+0x4F);
  196.                    LCD_Write_Data(ASCII[12]) ;        

  197.               }
  198.               else
  199.               {
  200.          
  201.               disbuff[0]=S%1000%100/10;
  202.               SBUF = '0'+disbuff[0];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  203.           while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  204.               TI = 0;
  205.               disbuff[1]=S%1000%10 %10;
  206.               SBUF = '0'+disbuff[1];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  207.               while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  208.               TI = 0;
  209.               for(i=0; i<10; i++)
  210.                {
  211.                       SBUF = CMER [i];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  212.                        while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  213.                     TI = 0;
  214.                  }
  215.                    LCD_Write_Com(0x80+0x4E);
  216.                    LCD_Write_Data(ASCII[disbuff[0]]) ;
  217.                    LCD_Write_Com(0x80+0x4F);
  218.                    LCD_Write_Data(ASCII[disbuff[1]]);
  219.                }

  220. }
  221. }
復(fù)制代碼

多功能測(cè)量(功能).rar

107.86 KB, 下載次數(shù): 13, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-8-3 15:22 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 97在线播放 | 2021天天躁夜夜看 | 欧美偷偷 | 天天视频成人 | 国产精品美女久久久久aⅴ国产馆 | 国产毛片久久久久久久久春天 | 日一区二区 | 久久精品色欧美aⅴ一区二区 | 亚洲激情一区二区 | 久久国产一区二区 | 一区 | 国产美女在线免费观看 | xx视频在线观看 | 国产激情免费视频 | 九九久久国产 | 欧美久久久久 | 黄色av网站在线免费观看 | 日韩区 | 国产一区二区在线免费播放 | 玖玖玖在线 | 成人在线免费网站 | 久久黄网 | 亚洲一区视频 | 成人免费看电影 | 亚洲精品v | 在线国产一区二区 | 亚洲一二三在线 | 成人在线免费视频观看 | 欧美不卡一区 | 亚洲欧美bt | 1级毛片 | 亚洲福利网 | 精品久久久久久久久久久久久 | 欧美专区在线视频 | 女同久久| 大香网伊人 | 国产午夜精品久久 | 日韩成人一区 | 91视频在线 | 国产精品一区三区 | 中文字幕在线视频免费观看 |