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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機控制智能風(fēng)扇proteus仿真與源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:242952 發(fā)表于 2018-1-11 11:46 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
里面有程序和仿真,按鍵充當(dāng)人體紅外模塊,其他的很簡單,大家能看懂!
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

單片機源程序如下:
  1. #include "reg51.h"
  2. #include "motor.h"
  3. #include "fengmingqi.h"
  4. #include "LCD1602.h"
  5. #include "intrins.h"
  6. #include "wendu.h"

  7. #define uchar unsigned char
  8. #define uint unsigned int

  9. uint temp1=0,a=0;
  10. uchar CNCHAR[6] = "攝氏度";

  11. void delay2s(void)   //誤差 0us
  12. {
  13.     unsigned char a,b,c;
  14.     for(c=127;c>0;c--)
  15.         for(b=235;b>0;b--)
  16.             for(a=32;a>0;a--);
  17.     _nop_();  //if Keil,require use intrins.h
  18. }

  19. void welcome(void)
  20. {                                                                  
  21.         LcdWriteCom(0x80+0x01);
  22.     LcdWriteData('W');
  23.         LcdWriteData('e');
  24.         LcdWriteData('l');
  25.         LcdWriteData('c');
  26.         LcdWriteData('o');
  27.         LcdWriteData('m');
  28.         LcdWriteData('e');
  29.         LcdWriteData(' ');
  30.         LcdWriteData('t');
  31.         LcdWriteData('o');
  32.         LcdWriteData(' ');
  33.         LcdWriteData('u');
  34.     LcdWriteData('s');
  35.         LcdWriteData('e');
  36.           
  37.         LcdWriteCom(0x80+0x40);
  38.     LcdWriteData('S');
  39.         LcdWriteData('m');
  40.         LcdWriteData('i');
  41.         LcdWriteData('l');
  42.         LcdWriteData('e');
  43.         LcdWriteData(' ');
  44.         LcdWriteData('2');
  45.         LcdWriteData(' ');
  46.         LcdWriteData('o');
  47.         LcdWriteData('u');
  48.     LcdWriteData('r');
  49.         LcdWriteData(' ');
  50.         LcdWriteData('l');
  51.         LcdWriteData('i');
  52.     LcdWriteData('f');
  53.         LcdWriteData('e');        
  54. }

  55. uint wenduchuli()
  56. {
  57.         float tp;
  58.     Ds18b20ReadTemp();          
  59.         if(temp< 0)                                //當(dāng)溫度值為負(fù)數(shù)
  60.           {
  61.                   LcdWriteCom(0x80);                //寫地址 80表示初始地址
  62.                 SBUF='-';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  63.                 while(!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  64.                 TI=0;                                                 //清除發(fā)送完成標(biāo)志位
  65.             LcdWriteData('-');                  //顯示負(fù)
  66.                 //因為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼
  67.                 temp=temp-1;
  68.                 temp=~temp;
  69.                 tp=temp;
  70.                 temp1=tp*0.0625*100+0.5;       
  71.                 //留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉(zhuǎn)換為整型的時候把小數(shù)點
  72.                 //后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
  73.                 //算由?.5,還是在小數(shù)點后面。

  74.           }
  75.         else
  76.           {                       
  77.                   LcdWriteCom(0x84);                //寫地址 80表示初始地址
  78.             LcdWriteData('+');                 //顯示正
  79.                 SBUF='+';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  80.                 while(!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  81.                 TI=0;                                                 //清除發(fā)送完成標(biāo)志位
  82.                 tp=temp;//因為數(shù)據(jù)處理有小數(shù)點所以將溫度賦給一個浮點型變量
  83.                 //如果溫度是正的那么,那么正數(shù)的原碼就是補碼它本身
  84.                 temp1=tp*0.0625*100+0.5;       
  85.                 //留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉(zhuǎn)換為整型的時候把小數(shù)點
  86.                 //后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
  87.                 //算加上0.5,還是在小數(shù)點后面。
  88.         }
  89.         return temp1;
  90. }
  91. /*******************************************************************************
  92. * 函數(shù)名         : LcdDisplay()
  93. * 函數(shù)功能                   : 顯示函數(shù)
  94. * 輸入           : 無
  95. * 輸出                  : 無
  96. *******************************************************************************/

  97. void LcdDisplay(int temp2)
  98. {
  99.        
  100.           unsigned char i, datas[] = {0, 0, 0, 0, 0}; //定義數(shù)組
  101.         datas[0] = temp2 % 10000 / 1000;
  102.         datas[1] = temp2 % 1000 / 100;
  103.         datas[2] = temp2 % 100 / 10;
  104.        
  105.         LcdWriteCom(0x86);                 //寫地址 80表示初始地址
  106.         LcdWriteData('0'+datas[0]); //十位
  107.         SBUF = '0'+datas[0];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  108.         while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  109.         TI = 0;

  110.         LcdWriteCom(0x87);                //寫地址 80表示初始地址
  111.         LcdWriteData('0'+datas[1]); //個位
  112.         SBUF = '0'+datas[1];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  113.         while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  114.         TI = 0;

  115.         LcdWriteCom(0x88);                //寫地址 80表示初始地址
  116.         LcdWriteData('.');                 //顯示 ‘.’
  117.         SBUF = '.';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  118.         while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  119.         TI = 0;

  120.         LcdWriteCom(0x89);                 //寫地址 80表示初始地址
  121.         LcdWriteData('0'+datas[2]); //顯示后一位  
  122.         SBUF = '0'+datas[2];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  123.         while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  124.         TI = 0;

  125.         for(i=0; i<6; i++)
  126.         {
  127.                  SBUF = CNCHAR[i];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  128.                 while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  129.                 TI = 0;
  130.         }                 
  131. }

  132. void main()
  133. {
  134.     jidian=0;
  135.         LcdInit();
  136.         welcome();//顯示歡迎
  137.         delay2s();
  138.         LcdWriteCom(0x01);  //清屏
  139.         LcdWriteCom(0x8a);        //寫地址 溫度圓圈
  140.         LcdWriteData(0xdf);
  141.     LcdWriteCom(0x8b);        //寫地址 C
  142.         LcdWriteData('C');
  143.         kaishi();
  144.         beep=0;
  145.         LED=0;
  146.         LED1=0;
  147.   while(1)
  148.   {
  149.    wenduchuli();
  150.    LcdDisplay(temp1);
  151.    kongzhi(); //假設(shè)是人體紅外模塊
  152.    if(jidian==1)//有人
  153.    {
  154.          if(temp1>=3000)//3000=30攝氏度
  155.     {
  156.      while(a==0)
  157.          {
  158.      fengmingqi();
  159.          LcdWriteCom(0x88+0x40);        //電機運動圖標(biāo)  高溫開風(fēng)扇
  160.          LcdWriteData(0xe0);
  161.          a=1;
  162.          break;
  163.          }
  164.          gaowen();
  165.          zhuan();         
  166.     }
  167.            if((temp1>2000)&&(temp1<3000))
  168.    {
  169.     ting();
  170.         LED=0;
  171.         LED1=0;
  172.     LcdWriteCom(0x88+0x40);        //電機停止圖標(biāo)
  173.         LcdWriteData(0x10);
  174.         a=0;
  175. ……………………

  176. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
19 王祿松 智能風(fēng)扇.rar (153.03 KB, 下載次數(shù): 160)


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

使用道具 舉報

來自 2#
ID:328014 發(fā)表于 2021-6-24 20:51 | 只看該作者
由于樓主的temp變量用了無符號的所以無法顯示負(fù)溫度,我閑桌沒事給大家修改了一下

51hei.png (39.83 KB, 下載次數(shù): 176)

51hei.png

可顯示負(fù)溫度的.7z

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

回復(fù)

使用道具 舉報

板凳
ID:89286 發(fā)表于 2018-1-11 22:49 | 只看該作者
thanks for sharing
回復(fù)

使用道具 舉報

地板
ID:396194 發(fā)表于 2018-9-15 17:35 | 只看該作者
為什么這個原理圖要用Proteus仿真7.5才能打開
回復(fù)

使用道具 舉報

5#
ID:410721 發(fā)表于 2018-11-14 01:52 | 只看該作者
做到板子上怎么lcd1602A不顯示了,如何排查問題所在?
回復(fù)

使用道具 舉報

6#
ID:317629 發(fā)表于 2021-10-10 09:44 | 只看該作者
有啟發(fā),我來看看
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色综合 | 久久一| 一二三四在线视频观看社区 | 蜜臀网 | 亚洲一区二区精品视频 | 亚洲综合色网 | 国产免费一区二区 | 亚洲福利 | 国产精品资源在线 | 欧美a在线 | 欧美日韩一 | 国产一区日韩在线 | 四虎永久影院 | 国产一级影片 | 色888www视频在线观看 | 黄网站免费观看 | 99精品视频在线 | 中文字幕久久久 | 在线观看日本网站 | 精品福利av导航 | 国产传媒在线播放 | 欧美日韩中文在线 | 亚洲二区在线观看 | 色资源在线 | 天堂一区二区三区 | 国产精品自拍啪啪 | 国产精品毛片一区二区在线看 | 黄色精品| 国产成人一区二区 | 91国内精精品久久久久久婷婷 | 成人av电影天堂 | 成人a在线| 久久久精 | 在线观看亚洲 | 青草久久免费视频 | 中文久久| 成人在线观看免费 | 五月槐花香 | 91精品久久久久久久久久入口 | 亚洲网站在线观看 | 亚洲一区在线观看视频 |