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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

一種智能糧倉安全監控系統的設計(下位機單片機部分)

[復制鏈接]
跳轉到指定樓層
樓主
  硬件設計包括如下模塊:
n      最小系統模塊: STC89C52RC正常工作的最小系統;
n      模擬輸入模塊:一路光照、一路電壓;
n      數字輸入模塊:兩路溫度、一路濕度、多個按鍵;
n      模擬輸出模塊:一路光照;
n      數字輸出模塊:一路PWM波控制直流電機、蜂鳴器、多個工作狀態指示燈;
n      液晶顯示模塊:一塊12864LCD顯示輸出;
n      串口通信模塊:CH340T模塊電路
  軟件設計包括如下模塊:

n      C代碼:AD采集、數字傳感器驅動、DA輸出、按鍵與液晶控制、串口收發處理等

  1. #include<reg52.h>
  2. #include<stdio.h>
  3.        
  4. #define uchar unsigned char
  5. #define uint  unsigned int

  6. #include"12864.c"
  7. #include"PCF8591ADDA.c"
  8. #include"DS18B20.C"
  9. #include"DTH11.C"

  10.         sbit led0=P1^0;//通信測試燈
  11.         sbit led1=P1^1;
  12.         sbit led2=P1^2;
  13.         sbit led3=P1^3;
  14.         sbit MOTOR=P1^4;
  15.         uchar ren_flag,ren_buff;
  16.         uchar buff[8];
  17.         char *get="Get it.";
  18.         char *sendflag="sendflag";
  19.         unsigned char num;                   //DA數模輸出變量
  20.         unsigned char ADtemp;      //定義中間變量

  21. void serial_init(void)        //串口初始化函數
  22. {
  23.         TMOD=0x20;//00100000
  24.         PCON=0x00;//波特率不加倍
  25.         SCON=0x50;//01010000 方式1,允許接收
  26.         TH1=0xfd;          //波特率9600
  27.         TL1=0xfd;
  28.         EA=1;
  29.     ES=1;
  30.         TR1=1;
  31.         ET1=0;
  32.        
  33. }
  34. void serial_send(char*parr)   //串口數據發送函數
  35. {
  36.         do
  37.         {
  38.                 SBUF=*parr++;  //發送數據
  39.                 while(!TI);  //等待發送完成標志為1
  40.                 TI=0;                 //標志清0  
  41.         }while(*parr);   //保持循環直到字符為‘\0’

  42. }

  43. void DAQ_display_sender()
  44. {
  45. //DS18B20
  46.                
  47.                 show_char(0,0,"Data acquisition");
  48.                 tempchange();              //溫度轉換函數
  49.                 get_temp();
  50.                 show_char(1,2,"              ");       
  51.                 show_char(1,0,"TEM:");
  52.                
  53.                 sprintf(buff,"%.8s",sendflag);
  54.                 serial_send(buff);                       
  55.                 sprintf(buff,"%.3f",f_temp);//將浮點型溫度格式化為字符型               
  56.                 show_char(1,2,buff);   //獲取溫度并顯示
  57.                 show_char(1,5,"℃");

  58.                 f_temp+=0x64;
  59.                 sprintf(buff,"%.3f",f_temp);                                                                  
  60.                 serial_send(buff);                  //串口發送數據
  61.              
  62.                   /*DA
  63.            DAC(num);       //DA輸出,可以用LED模擬電壓變化
  64.                    num++;          //累加,到256后溢出變為0,往復循環。顯示在LED上亮度逐漸變化
  65.                   */
  66.                   
  67.                   //DTH11
  68.                         RH();
  69.                         sprintf(buff,"%.1f",f_temp_T);//將浮點型溫度格式化為字符型                  
  70.                     show_char(2,0,"T:    ℃");
  71.                         show_char(2,1,buff);   
  72.                         serial_send(buff);

  73.                         sprintf(buff,"%.1f",f_temp_RH);//將浮點型溫度格式化為字符型                  
  74.                     show_char(2,4,"R:    %");
  75.                         show_char(2,5,buff);   
  76.                         serial_send(buff);

  77.                   //AD
  78.                    if(ADFlag)      //定時采集輸入模擬量
  79.            {
  80.                            ADFlag=0;

  81.                            ADtemp=ReadADC(0);
  82.                         TempData[0]=(ReadADC(0))/50;//處理0通道電壓顯示
  83.                           TempData[1]=((ReadADC(0))%50)/10;
  84.                          
  85.                         ADtemp=ReadADC(2);
  86.                         TempData[4]=(ReadADC(2))/50;//處理1通道電壓顯示 此通道暫時屏蔽,可以自行添加
  87.                           TempData[5]=((ReadADC(2))%50)/10;
  88.                        
  89.                         /* ADC通道2、通道4采集
  90.                         ADtemp=ReadADC(1);
  91.                         TempData[2]=(ReadADC(1))/50;//處理1通道電壓顯示 此通道暫時屏蔽,可以自行添加
  92.                           TempData[3]=((ReadADC(1))%50)/10;                           
  93.                     
  94.                  
  95.                       ADtemp=ReadADC(3);
  96.                         TempData[6]=(ReadADC(3))/50;//處理1通道電壓顯示 此通道暫時屏蔽,可以自行添加
  97.                           TempData[7]=((ReadADC(4))%50)/10;
  98.                     */                     
  99.                         }
  100.                         ADFlag=1;
  101.                        
  102.                         f_temp=TempData[4]+TempData[5]*0.1;//通道3光敏電阻電壓值
  103.                         sprintf(buff,"%.1f",f_temp);//                  
  104.                         show_char(3,0,"O:     V");
  105.                         show_char(3,1,buff);
  106.                         serial_send(buff);              

  107.                                                                                                                  
  108.                         f_temp=TempData[0]+TempData[1]*0.1;
  109.                         sprintf(buff,"%.1f",f_temp);//將浮點型溫度格式化為字符型                  
  110.                         show_char(3,4,"V:     V");
  111.                         show_char(3,5,buff);      
  112.                         serial_send(buff);//串口發送數據
  113.                        
  114.                 /*  ADC通道3、通道4處理顯示信息                      
  115.                         f_temp=TempData[4]+TempData[5]*0.1;
  116.                         sprintf(buff,"%.1f",f_temp);//將浮點型溫度格式化為字符型                  
  117.                     show_char(3,0,"3:   V");
  118.                         show_char(3,1,buff);                          
  119.                         serial_send(buff);                  //串口發送數據
  120.                        
  121.                         f_temp=TempData[6]+TempData[7]*0.1;
  122.                         sprintf(buff,"%.1f",f_temp);//將浮點型溫度格式化為字符型                  
  123.                     show_char(3,4,"4:   V");
  124.                         show_char(3,5,buff);   
  125.                         serial_send(buff);                  //串口發送數據
  126.                 */
  127.                   

  128.                
  129. }

  130. void main()                 //主函數
  131. {
  132.        
  133.        
  134.         cmg();//  數碼管鎖存函數                   關時鐘DS1302   
  135.     wela=0;
  136.         dula=0;
  137.     lcd_init();                //初始化LCD         
  138.         serial_init();
  139.         MOTOR=0;
  140.         while(1)
  141.         {
  142.           if(ren_flag==0)
  143.           {
  144.                   led0=1;
  145.                 MOTOR=0;            
  146.                   show_char(0,0,"Wait for command");
  147.                   show_char(1,0,"                ");
  148.                   show_char(2,0,"                ");
  149.                   show_char(3,0,"                ");
  150.           }
  151.       if(ren_flag==1) //測試通信
  152.           {                  
  153.                   led0=0;
  154.                   delay_ms(10);
  155.                   led0=1;
  156.                   MOTOR=0;
  157.                   show_char(0,0,"Connection Succe");
  158.                   show_char(1,0,"ssful!          ");
  159.                   show_char(2,0,"                ");
  160.                   show_char(3,0,"                ");
  161.                   sprintf(buff,"%.8s",get);
  162.                   serial_send(buff);                  
  163.            }       
  164.           if(ren_flag==2)//
  165.                 {
  166.                   MOTOR=0;
  167.              DAQ_display_sender();
  168.                 }        
  169.        
  170.           if(ren_flag==3)
  171.            {
  172.             MOTOR=1;
  173.                 DAQ_display_sender();
  174.                 }

  175.            if(ren_flag==4)
  176.            {
  177.             MOTOR=0;
  178.                 DAQ_display_sender();

  179.             }
  180.        
  181.          if(ren_flag==5)
  182.           {
  183.            show_char(0,0,"Stop DAQ and sen");
  184.            show_char(1,0,"ding!          ");
  185.            show_char(2,0,"                ");
  186.            show_char(3,0,"                ");
  187.            MOTOR=0;
  188.            led0=1;
  189.           }
  190.           }
  191.         }

  192. void ser() interrupt 4
  193. {

  194. if(TI)
  195.    ;
  196.   else
  197.   {       
  198.     if(RI)
  199.     lcd_clean();
  200.           ES=0;       
  201.     RI=0;       

  202.         ren_buff=SBUF;
  203.         switch(ren_buff)
  204.            {
  205.       case 0x31: ren_flag=1; break;  //接受到1,第一個LED亮         
  206.       case 0x32: ren_flag=2; break;  //接受到2,第二個LED亮        
  207.       case 0x33: ren_flag=3; break;  //接受到3,第三個LED亮        
  208.       case 0x34: ren_flag=4;break;  //接受到4,第四個LED亮      
  209.       case 0x35: ren_flag=5;break;  //接受到5,第五個LED亮            
  210.       case 0x36: ren_flag=6;break;  //接受到5,第六個LED亮                  
  211.       case 0x37: ren_flag=7;break;  //接受到5,第七個LED亮
  212.           case 0x38: ren_flag=8;break;  //接受到5,第八個LED亮
  213.           default:   ren_flag=0;break;  //接受到其它數據,蜂鳴器響         
  214.       led1=~led1;
  215.            }

  216.         ES=1;
  217.         }
  218. }                  
復制代碼




C源碼.rar

59.77 KB, 下載次數: 13, 下載積分: 黑幣 -5

下位機源代碼

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 看a网站| 午夜小视频在线观看 | 久久99精品久久久97夜夜嗨 | www四虎影视 | 久久久精品网站 | 久草中文在线观看 | 日韩一区精品 | 男女羞羞视频大全 | 亚洲精品乱码久久久久v最新版 | 特黄毛片视频 | 最新免费av网站 | 日日操日日干 | 亚洲第一天堂 | 久久伊人操 | 欧美激情区 | 国产精品视频在线播放 | 午夜久久久| 国产色网站 | 欧美精品久久久久 | 成人福利网 | 成人国产网站 | 国产资源在线播放 | 国产一区二区三区在线 | 热re99久久精品国产99热 | 毛片av免费在线观看 | 午夜影院在线观看 | 亚洲一区中文字幕 | 视频一区二区中文字幕 | 视频在线观看亚洲 | 欧美精品一区二区三区四区五区 | 在线观看精品 | 国产一区二区三区免费 | 国产黄色大片 | 久久精品亚洲成在人线av网址 | 亚洲国产免费 | 日韩三级精品 | 国产丝袜一区二区三区免费视频 | 一区二区视频在线观看 | 91av在线免费 | 欧美精品一区在线 | 狠狠操网站 |