|
糧庫溫度巡檢系統(tǒng)仿真原理圖如下,1602液晶屏顯示(proteus仿真工程文件可到本帖附件中下載)
1-4.JPG (232.55 KB, 下載次數(shù): 34)
下載附件
8路溫度采集,可以實現(xiàn)溫度巡檢
2018-6-9 23:58 上傳
5-8.JPG (242.15 KB, 下載次數(shù): 22)
下載附件
2018-6-10 00:00 上傳
0.png (44.08 KB, 下載次數(shù): 35)
下載附件
2018-6-10 00:25 上傳
單片機(jī)源程序如下:
- #include"LCD1602.h"
- #include "ds18b20.h"
- #include "eepom52.h"
- sbit buzzer = P1^3; //蜂鳴器
- sbit Reduc = P3^4; //減
- sbit Add = P3^5; //加
- sbit Mode = P3^6; //設(shè)置
- ///************************************************
- //** 函數(shù)名稱 : void InitUART(void)
- //** 函數(shù)功能 : 串口初始化函數(shù)
- //** 輸 入 : 無
- //** 輸 出 : 無
- //** 說 明 : 定時器1方式2波特率發(fā)生模式,波特率9600bps,晶振11.0592MHZ,誤差0%
- //************************************************/
- //void InitUART(void)
- //{
- // TMOD |= 0x20;
- // SCON = 0x50;
- // TH1 = 0xFD;
- // TL1 = 0xFD;
- // PCON = 0x00;
- // ES = 0;
- // TR1 = 1;
- // EA = 1;
- //}
- ///*********************************************
- //**名稱:void TxChar(uchar ch)
- //**功能:串口發(fā)送函數(shù)
- //**輸入:uchar ch>當(dāng)前發(fā)送數(shù)據(jù)
- //**輸出:無
- //*********************************************/
- //void TxChar(unsigned char ch)
- //{
- // SBUF=ch;
- // while(!TI);
- // TI=0;
- //}
- /************************************************
- ** 函數(shù)名稱 : void main(void)
- ** 函數(shù)功能 : 主函數(shù)
- ** 輸 入 : 無
- ** 輸 出 : 無
- ** 說 明 :
- ************************************************/
- void main(void)
- {
- uint buzzer_count=0,buzzer_flag=0,buzzer_time=40;//蜂鳴器報警變量
- uint as=0;
- uint wendu1=2000,wendu2=2000,wendu3=2000,wendu4=2000;//溫度變量
- uint wendu5=2000,wendu6=2000,wendu7=2000,wendu8=2000;//溫度變量
- uchar disp_count=0;//顯示計時變量
- uint data_l=10,data_h=30; //上下限報警值
- uchar Mode_project=1,Mode_flag=1,Mode_count=0;//設(shè)置變量
- uchar disp1[16]={"1:00.0C 2:00.0C"};
- uchar disp2[16]={"3:00.0C 4:00.0C"};
- uchar disp3[16]={"5:00.0C 6:00.0C"};
- uchar disp4[16]={"7:00.0C 8:00.0C"};
-
- LCD_Init();
- // InitUART();
- /****讀出每個傳感器的序列號****/
- // while(1)
- // {
- // uchar i;
- // uchar *ds18b20_rom;
- // ds18b20_rom=read_rom(); //讀序列號
- // for(i=0;i<8;i++)
- // {
- // disp1[i]=*ds18b20_rom;
- // TxChar(disp1[i]);
- // ds18b20_rom++;
- // }
- // WriteCOMDATA(0x80,0);
- // for(i=0;i<8;i++) //顯示序列號
- // {
- // print_char(disp1[i]/16);
- // print_char(disp1[i]%16);
- // }
- // }
- /***開機(jī)把數(shù)據(jù)從單片機(jī)內(nèi)部eepom中讀出來***/
- if(byte_read(0x2050)!=1)
- {
- SectorErase(0x2000);
- byte_write(0x2000,data_l);
- byte_write(0x2001,data_h);
- byte_write(0x2050,1);
- }
- if(byte_read(0x2050)==1)
- {
- data_l=byte_read(0x2000);
- data_h=byte_read(0x2001);
- }
-
- while(1)
- {
- if(disp_count>80)disp_count=0;
- if(++disp_count==10)
- {
- wendu1=read_temp(1);
- disp1[2]=wendu1/1000+0x30; //溫度十位
- disp1[3]=wendu1/100%10+0x30;//溫度個位
- disp1[5]=wendu1/10%10+0x30;//溫度小數(shù)第一位
- }
- else if(disp_count==20)
- {
- wendu2=read_temp(2);
- disp1[11]=wendu2/1000+0x30; //溫度十位
- disp1[12]=wendu2/100%10+0x30;//溫度個位
- disp1[14]=wendu2/10%10+0x30;//溫度小數(shù)第一位
- }
- else if(disp_count==30)
- {
- wendu3=read_temp(3);
- disp2[2]=wendu3/1000+0x30; //溫度十位
- disp2[3]=wendu3/100%10+0x30;//溫度個位
- disp2[5]=wendu3/10%10+0x30;//溫度小數(shù)第一位
-
- }
- else if(disp_count==40)
- {
- wendu4=read_temp(4);
- disp2[11]=wendu4/1000+0x30; //溫度十位
- disp2[12]=wendu4/100%10+0x30;//溫度個位
- disp2[14]=wendu4/10%10+0x30;//溫度小數(shù)第一位
- }
- else if(disp_count==50)
- {
- wendu5=read_temp(5);
- disp3[2]=wendu5/1000+0x30; //溫度十位
- disp3[3]=wendu5/100%10+0x30;//溫度個位
- disp3[5]=wendu5/10%10+0x30;//溫度小數(shù)第一位
- }
- else if(disp_count==60)
- {
- wendu6=read_temp(6);
- disp3[11]=wendu6/1000+0x30; //溫度十位
- disp3[12]=wendu6/100%10+0x30;//溫度個位
- disp3[14]=wendu6/10%10+0x30;//溫度小數(shù)第一位
- }
- else if(disp_count==70)
- {
- wendu7=read_temp(7);
- disp4[2]=wendu7/1000+0x30; //溫度十位
- disp4[3]=wendu7/100%10+0x30;//溫度個位
- disp4[5]=wendu7/10%10+0x30;//溫度小數(shù)第一位
- }
- else if(disp_count==80)
- {
- wendu8=read_temp(8);
- disp4[11]=wendu8/1000+0x30; //溫度十位
- disp4[12]=wendu8/100%10+0x30;//溫度個位
- disp4[14]=wendu8/10%10+0x30;//溫度小數(shù)第一位
- }
- //溫度值與報警值比較
- if(wendu1/10>data_l*10 &&
- wendu1/10<data_h*10 &&
- wendu2/10>data_l*10 &&
- wendu2/10<data_h*10 &&
- wendu3/10>data_l*10 &&
- wendu3/10<data_h*10 &&
- wendu4/10>data_l*10 &&
- wendu4/10<data_h*10 &&
- wendu5/10>data_l*10 &&
- wendu5/10<data_h*10 &&
- wendu6/10>data_l*10 &&
- wendu6/10<data_h*10 &&
- wendu7/10>data_l*10 &&
- wendu7/10<data_h*10 &&
- wendu8/10>data_l*10 &&
- wendu8/10<data_h*10)
- {
- buzzer_flag=0;
- buzzer=1;
- }
- else
- {
- buzzer_flag=1;
- }
- /****蜂鳴器報警****/
- if(buzzer_flag)
- {
- buzzer_count++;if(buzzer_count>buzzer_time*10)buzzer_count=buzzer_time+1;
- if(buzzer_count%buzzer_time==0)
- {
- buzzer=~buzzer;
- }
- }
- //按下設(shè)置鍵,進(jìn)入設(shè)置頁面
- if(Mode==0 && Mode_flag)
- {
- buzzer=1;
- as=0;
- WriteCOMDATA(0x0F,0);
- delayms(100);
- if(Mode==0)
- {
- while(Mode==0);
- Mode_flag=0;
- Mode_project=1;
- //設(shè)置頁面顯示內(nèi)容
- WriteChar(1,0,16," T SET ");
- WriteChar(2,0,16,"T-L:00c T-H:000c");
- WriteCOMDATA(0xC4,0);
- WriteCOMDATA(data_l/10+0x30,1);
- WriteCOMDATA(data_l%10+0x30,1);
- WriteCOMDATA(0xCC,0);
- WriteCOMDATA(data_h/100+0x30,1);
- WriteCOMDATA(data_h/10%10+0x30,1);
- WriteCOMDATA(data_h%10+0x30,1);
- while(Mode==0);
- while(1)
- {
- switch(Mode_project)
- {
- case 1:
- WriteCOMDATA(0xC4,0);
- WriteCOMDATA(data_l/10+0x30,1);
- WriteCOMDATA(data_l%10+0x30,1);
- WriteCOMDATA(0xC5,0);
- break;
- case 2:
- WriteCOMDATA(0xCC,0);
- WriteCOMDATA(data_h/100+0x30,1);
- WriteCOMDATA(data_h/10%10+0x30,1);
- WriteCOMDATA(data_h%10+0x30,1);
- WriteCOMDATA(0xCE,0);
- break;
-
- }
- delayms(400);
- //按下加鍵,對設(shè)定目標(biāo)加
- if(Add==0)
- {
- delayms(400);
- switch(Mode_project)
- {
- case 1:data_l+=1;break;
- case 2:data_h+=1;break;
- }
- }
- //按下減鍵,對設(shè)定目標(biāo)減
- if(Reduc==0)
- {
- delayms(400);
- switch(Mode_project)
- {
- case 1:data_l-=1;break;
- case 2:data_h-=1;break;
- }
- }
- //短按設(shè)置鍵,切換設(shè)定目標(biāo),長按設(shè)置鍵2S,則退出設(shè)置頁面
- if(Mode==0)
- {
- delayms(600);
- while(Mode==0)
- {
- delayms(600);
- Mode_count++;
- if(Mode_count>6)
- {
- WriteCOMDATA(0x0C,0);
- delayms(100);
- WriteChar(1,0,16,disp1); //第一行顯示內(nèi)容
- WriteChar(2,0,16,disp2); //第二行顯示內(nèi)容
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
這個程序是網(wǎng)上下載的,里面的hex可以運行,但是用keil編譯后的程序不行 屏幕不顯示,求大神指導(dǎo)如何修改:
糧倉糧庫8點溫度采集系統(tǒng).rar
(92.51 KB, 下載次數(shù): 122)
2018-6-10 00:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
這里有一個可用的版本,大家可以參考http://www.zg4o1577.cn/bbs/dpj-55028-1.html
|
評分
-
查看全部評分
|