久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
我設(shè)計的基于51單片機的智能晾衣系統(tǒng) 含源碼、電路原理圖和實物照片
[打印本頁]
作者:
peiyonghao
時間:
2019-2-23 15:10
標題:
我設(shè)計的基于51單片機的智能晾衣系統(tǒng) 含源碼、電路原理圖和實物照片
本次設(shè)計利用
Keil
軟件對程序進行編譯仿真并成功實現(xiàn)衣物自動出室晾曬和收回室內(nèi)的功能。系統(tǒng)的實物硬件核心是51單片機,檢測器件是溫濕度傳感器和光強傳感器,執(zhí)行器件是步進電機。系統(tǒng)功能實現(xiàn)的過程是:溫濕度傳感器和光敏元件采集外界環(huán)境的物理量并將信息傳送給單片機,單片機對信號分析處理后控制步進電機旋轉(zhuǎn),步進電機帶動晾衣架的伸縮。當天氣狀況是有雨或傍晚時,晾衣桿主動收回衣物;當天氣狀況是晴朗且無雨時,晾衣桿自動伸出室外。
設(shè)計包含電路設(shè)計原理圖、C程序代碼以及相關(guān)照片。請大家多指教。
0.png
(104.73 KB, 下載次數(shù): 50)
下載附件
2019-2-23 15:58 上傳
單片機源程序如下:
#include <reg52.h> //調(diào)用單片機頭文件
#define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
#define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
#include <intrins.h>
//數(shù)碼管段選定義 0 1 2 3 4 5 6 7 8 9
uchar smg_du[]={0xFC,0x30,0xD4,0xB5,0x79,0xAD,0xE8,0x34,0xF1,0xBD
}; //斷碼
uchar dis_smg[8] ={0};
sbit smg_we1 = P2^7; //數(shù)碼管位選定義
sbit smg_we2 = P2^6;
unsigned char code zheng[4]={0xf8,0xf4,0xf2,0xf1};//正轉(zhuǎn)表格
unsigned char code fan[4]={0xf1,0xf2,0xf4,0xf8};//反轉(zhuǎn)表格
uchar flag_z_f; //正反標志位 0為順時鐘 1為逆時史上轉(zhuǎn)
bit flag_300ms;
sbit GX=P2^2; //光敏
sbit dht11=P2^4; //溫度傳感器IO口定義
uchar table_dht11[5]={1,2,3,4,5};
uchar menu_1 ;
sbit red = P2^5; //紅色發(fā)光二極管定義
sbit green = P2^3; //綠色發(fā)光二極管定義
sbit yellow = P2^0; //黃色發(fā)光二極管定義
bit flag_moshi = 0;
uint quanshu; //圈數(shù)
uchar s_high = 80; //濕度報警參數(shù)
uchar a_a;
long bjdj_value; //步進電機的量
/***************************************************************
* 名稱 : delay_1ms()
* 功能 : 延時1ms函數(shù)
* 輸入 : q
* 輸出 : 無
****************************************************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
/********************************************************************
* 名稱 : delay_uint()
* 功能 : 小延時。
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void delay_uint(uint q)
{
while(q--);
}
/***********************數(shù)碼位選函數(shù)*****************************/
void smg_we_switch(uchar i)
{
switch(i)
{
case 0: smg_we1 = 0; smg_we2 = 1; break;
case 1: smg_we1 = 1; smg_we2 = 0; break;
}
}
/***********************數(shù)碼顯示函數(shù)*****************************/
void display()
{
static uchar i;
i++;
if(i >= 2)
i = 0;
P0 = 0x00; //段選
smg_we_switch(i); //位選
P0 = dis_smg[i]; //段選
}
/*****************讀溫濕度傳感器程序****************/
void dst11()
{
uchar i,j; //讀溫濕度時不能打開中斷
dht11 = 0;
delay_1ms(10);
dht11 = 1;
delay_uint(2);
if(dht11 == 0) //判斷是否響應(yīng) 0 為響應(yīng)
{
while(dht11 == 0);
while(dht11 == 1); //等待響應(yīng)時間過完
for(i=0;i<5;i++)
{
for(j=0;j<8;j++)
{
table_dht11[i] <<= 1;
while(dht11 == 0);
if(dht11 == 1)
{
table_dht11[i] |= 0x01;
while(dht11 == 1); //等待響應(yīng)時間過完
}
}
}
}
dht11 = 1;
}
/********************獨立按鍵程序*****************/
uchar key_can; //按鍵值
void key() //獨立按鍵程序
{
static uchar key_new;
P1 |= 0xf0;
if((P1 & 0xf0) != 0xf0) //按鍵按下
{
delay_1ms(1); //按鍵消抖動
if(((P1 & 0xf0) != 0xf0) && (key_new == 1))
{ //確認是按鍵按下
key_new = 0;
switch(P1 & 0xf0)
{
case 0xe0: key_can = 4; break; //得到k1鍵值
case 0xd0: key_can = 3; break; //得到k2鍵值
case 0xb0: key_can = 2; break; //得到k3鍵值
case 0x70: key_can = 1; break; //得到k4鍵值
}
}
}
else //按鍵松開
key_new = 1;
}
/****************按鍵處理數(shù)碼管顯示函數(shù)***************/
void key_with()
{
if(key_can == 1) //設(shè)置鍵
{
menu_1 ++;
if(menu_1 >= 3)
{
menu_1 = 0;
}
}
if(menu_1 == 0)
{
if(key_can == 4) //手動 自動模式的切換
{
flag_moshi = ~flag_moshi;
red = ~red;
}
if(flag_moshi == 1)
{
if(key_can == 2)
{
flag_z_f = 1; //開
}
if(key_can == 3)
{
flag_z_f = 2; //關(guān)
}
}
}
if(menu_1 == 1) //設(shè)置濕度上限
{
if(key_can == 2)
{
s_high ++ ; //濕度上限值加1
if(s_high > 99)
s_high = 99;
}
if(key_can == 3)
{
s_high -- ; //濕度上限值減1
if(s_high <= 1)
s_high = 1 ;
}
dis_smg[0] = smg_du[s_high % 10] | 0x02; //取個位顯示
dis_smg[1] = smg_du[s_high / 10 % 10]; //取十位顯示
}
if(menu_1 == 2) //設(shè)置
{
if(key_can == 2)
{
quanshu ++ ; //電機轉(zhuǎn)的圈數(shù) 加1
if(quanshu > 99)
quanshu = 99;
}
if(key_can == 3)
{
quanshu -- ; //電機轉(zhuǎn)的圈數(shù) 減1
if(quanshu <= 1)
quanshu = 1 ;
}
dis_smg[0] = smg_du[quanshu % 10] ; //取個位顯示
dis_smg[1] = smg_du[quanshu / 10 % 10] | 0x02; //取十位顯示
}
key_can = 0;
}
void bujindj() //步進電機函數(shù)
{
static uchar i;
if(flag_z_f != 0)
{
if(flag_z_f == 1) //開
{
if(bjdj_value >= 512*4*quanshu)
{
flag_z_f = 0;
}else
bjdj_value ++;
green = 1; yellow = 0;
}
if(flag_z_f == 2) //關(guān)
{
if(bjdj_value <= 1)
{
flag_z_f = 0;
bjdj_value = 1;
}else
{
bjdj_value --;
}
green = 0; yellow = 1;
}
i++;
if(i >= 4)
i = 0;
{
if(flag_z_f == 1) //開
P1=zheng[i];//
else if(flag_z_f == 2)//關(guān)
P1=fan[i];//
}
}
}
static uint v1alue;
/***************主函數(shù)*****************/
void main()
{
while(1)
{
key(); //獨立按鍵程序
key_with(); //按鍵按下要執(zhí)行的程序
v1alue ++;
if(v1alue >= 200)
{
v1alue = 0;
dst11(); //濕度采集
if(flag_moshi == 0) //自動模式
{
if((GX == 0) || (table_dht11[0] >= s_high))
{
flag_z_f = 2; //自動收
}
else
flag_z_f = 1; //自動曬
red = 0; //紅色發(fā)光二極管
}else
red = 1;
}
dis_smg[0] = smg_du[table_dht11[0] % 10]; //取濕度的個位顯示
dis_smg[1] = smg_du[table_dht11[0] / 10 % 10] ; //取濕度的十位顯示
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
Auto_yijia_C代碼.rar
(31.36 KB, 下載次數(shù): 79)
2019-2-23 15:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
PDF格式 晾衣架設(shè)計.pdf
(94.1 KB, 下載次數(shù): 76)
2019-2-23 15:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2019-2-23 16:02
實物圖呢?
作者:
sunny_liam
時間:
2020-4-24 19:46
請問有設(shè)置限位開關(guān)嗎
作者:
aktuan007
時間:
2020-4-25 22:59
用濕度檢測應(yīng)該是不準確的,濕度大不一定下雨啊,還是可以晾衣服的
作者:
BrianWaring
時間:
2020-5-4 01:35
感謝分享,學習了!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人不卡
|
日韩欧美中文
|
亚洲成人午夜电影
|
久久久久久久久蜜桃
|
国产一级影片
|
欧美精品国产精品
|
亚洲不卡在线观看
|
日本天堂视频
|
一区二区三区四区在线
|
国产精品久久久久久久久久
|
精品一二三区
|
免费v片
|
亚洲精品小视频在线观看
|
高清一区二区三区
|
午夜丁香视频在线观看
|
国产农村一级片
|
男女羞羞免费网站
|
亚洲国产成人久久久
|
亚洲高清视频在线观看
|
亚洲天堂999
|
中文字幕久久精品
|
国产精品一区二区久久精品爱微奶
|
黄色高清视频
|
国产特级毛片aaaaaa喷潮
|
国产视频精品在线观看
|
久久9视频
|
日本公妇乱淫xxxⅹ 国产在线不卡
|
欧美一级视频免费看
|
久久精品国产免费高清
|
欧美日韩精品一区二区三区视频
|
日韩精品一区二区三区在线播放
|
亚洲av毛片
|
国产色网
|
综合久久99
|
天天综合干
|
狠狠操狠狠干
|
欧美日韩综合一区
|
日本精品视频
|
国产精品一区二区三区四区五区
|
91免费在线
|
天天躁日日躁狠狠的躁天龙影院
|