|
分享一下零基礎(chǔ)菜雞一個(gè)寒假的作品
制作出來(lái)的實(shí)物圖如下:
10842394093948627.jpg (1.14 MB, 下載次數(shù): 58)
下載附件
2023-2-14 14:00 上傳
由于手邊沒(méi)有攝像頭,就用電腦前置代替了,哈哈哈
15710864827163455.jpg (5.04 MB, 下載次數(shù): 58)
下載附件
2023-2-14 14:00 上傳
51,面包板,繼電器
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (145.74 KB, 下載次數(shù): 54)
下載附件
2023-3-1 19:34 上傳
663245863562994948.png (94.53 KB, 下載次數(shù): 48)
下載附件
proteus
2023-2-14 14:00 上傳
圖片1.png (506.72 KB, 下載次數(shù): 51)
下載附件
2023-2-14 14:00 上傳
labview軟件
單片機(jī)源程序如下:
- #include <reg52.h>
- #include "1602.h"
- #include "uart.h"
- #include "AM2301.h"
- #include "adc0832.h"
- #define RUN_CNT_MAX 2
- #define MENU_NUM_LIMIT 3
- uchar menu = 0;
- uchar Dat1,Dat2;
- uint Dat3;
- void Get_Dat();
- void SendData(void);//串口發(fā)送函數(shù)聲明
- void LCD_display(void);//LCD1602顯示函數(shù)聲明
- void delay_ms(int xms)//延時(shí)演示,1ms
- {
- unsigned char i;
- for( ; xms > 0; xms--)
- for(i = 110; i > 0; i--);
- }
- unsigned int Humidity = 0;//定義濕度變量
- unsigned int Temperature = 0;//定義溫度變量
- void main()
- {
-
- RY1 = 0; RY2 = 0; RY3 = 0; RY4 = 0; RY5 = 0; RY6 = 0; RY7 = 0; //繼電器初始狀態(tài)為關(guān)閉
-
- LCD1602_Init();//LCD1602初始化
- uart_init(); //串口初始化
-
- //LCD1602左側(cè)顯示溫濕度對(duì)應(yīng)字母
- LCD1602_Write_String(0, 0, "SD:");
- LCD1602_Write_String(0, 1, "WD:");
- LCD1602_Write_String(8, 0, "CO2:");
- LCD1602_Write_String(8, 1, "GZ:");
- while(1)
- {
- Read_Sensor();//讀取溫濕度
-
- if(Sensor_Data[2]&0x80)//如果溫度為負(fù)值
- {
- DHT_Negative_Flag = 1;//負(fù)值標(biāo)志位為1
- Sensor_Data[2]&=0x7F;//將不正宗的負(fù)數(shù)變?yōu)橐粋(gè)正常的正數(shù),后續(xù)通過(guò)標(biāo)志位來(lái)判斷
- }
- else
- {
- DHT_Negative_Flag = 0;
- }
-
- //將傳感器數(shù)據(jù)數(shù)組中的數(shù)據(jù)重新組合得到溫濕度的值,參見(jiàn)數(shù)據(jù)手冊(cè)
- Humidity = Sensor_Data[0]*256 + Sensor_Data[1];
- Temperature = Sensor_Data[2]*256 + Sensor_Data[3];
- Get_Dat();
- SendData();//從串口發(fā)送數(shù)據(jù)
- LCD_display();//LCD顯示
-
- delay_ms(2000);//延時(shí)2s,數(shù)據(jù)手冊(cè)規(guī)定2秒查詢(xún)一次
- }
- }
- void Get_Dat()
- {
- static uint Run_Get_Cnt = RUN_CNT_MAX;
- if(Run_Get_Cnt++ > RUN_CNT_MAX)
- {
- Run_Get_Cnt = 0;
- Dat1 = adc0832(0);
- Dat2 = adc0832(1);
-
- Dat1 = Parse_Dat(Dat1,Adc_Pares_Percentage);
-
- Dat2 = Parse_Dat(Dat2,Adc_Pares_Percentage);
-
- LCD_display();
- }
- }
- //串口發(fā)送數(shù)據(jù)函數(shù)
- void SendData(void)
- {
- unsigned char i;
-
- SendByte(0xFF);//發(fā)送幀頭
-
- SendByte(DHT_Negative_Flag);//發(fā)送負(fù)數(shù)標(biāo)志
- for(i = 0; i < 4; i++)//發(fā)送傳感器數(shù)據(jù)
- {
- SendByte(Sensor_Data[i]);
- }
- SendByte(Dat1);
- SendByte(Dat2);
- SendByte(0xEE);//發(fā)送幀尾
- }
- //LCD1602顯示函數(shù)
- void LCD_display(void)
- {
- //顯示濕度
- lcd_pos(3,0);//定位到第1行左數(shù)第7個(gè)位置
- LCD1602_Write_Dat(Humidity/100 + 0x30);//顯示xx百位
- LCD1602_Write_Dat(Humidity%100/10 + 0x30);//顯示xx十位
- LCD1602_Write_Dat('.');//顯示小數(shù)點(diǎn)
- LCD1602_Write_Dat(Humidity%10+ 0x30);//顯示xx個(gè)位
-
- lcd_pos(12,0);
- LCD1602_Write_Dat(Dat1/10 + 0x30);//顯示xx百位
- LCD1602_Write_Dat(Dat1%10 + 0x30);//顯示xx十位
- LCD1602_Write_Dat('%');//顯示小數(shù)點(diǎn)
-
- lcd_pos(12,1);
- LCD1602_Write_Dat(Dat2/10 + 0x30);//顯示xx百位
- LCD1602_Write_Dat(Dat2%10 + 0x30);//顯示xx十位
- LCD1602_Write_Dat('%');//顯示小數(shù)點(diǎn)
-
- if(DHT_Negative_Flag == 1)
- {
- if(Temperature/100 == 0) //判斷是否為三位數(shù),不是則不顯示百位
- {
- lcd_pos(3,1);//定位到第2行左數(shù)第7個(gè)位置
- LCD1602_Write_Dat(Temperature%100/10 + 0x30);
- LCD1602_Write_Dat('.');
- LCD1602_Write_Dat(Temperature%10+ 0x30);
- }
- else
- {
- lcd_pos(2,1);//定位到第2行左數(shù)第6個(gè)位置
-
- LCD1602_Write_Dat(Temperature/100 + 0x30);
- LCD1602_Write_Dat(Temperature%100/10 + 0x30);
- LCD1602_Write_Dat('.');
- LCD1602_Write_Dat(Temperature%10+ 0x30);
- }
- }
- else
- {
- if(Temperature/100 == 0)
- {
- lcd_pos(4,1);//定位到第2行左數(shù)第8個(gè)位置
- LCD1602_Write_Dat(Temperature%100/10 + 0x30);
- LCD1602_Write_Dat('.');
- LCD1602_Write_Dat(Temperature%10+ 0x30);
- }
- else
- {
- lcd_pos(3,1);//定位到第2行左數(shù)第7個(gè)位置
- LCD1602_Write_Dat(Temperature/100 + 0x30);
- LCD1602_Write_Dat(Temperature%100/10 + 0x30);
- LCD1602_Write_Dat('.');
- LCD1602_Write_Dat(Temperature%10+ 0x30);
- }
- }
- }
復(fù)制代碼
Keil代碼與Proteus8.13仿真下載:
stc89c52.zip
(118.11 KB, 下載次數(shù): 26)
2023-2-14 14:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
LabVIEW:
labveiw.rar
(1.94 MB, 下載次數(shù): 27)
2023-2-14 14:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|