欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機自習室監控系統程序(包括原理圖)
[打印本頁]
作者:
嶼浪大魔王
時間:
2019-8-18 07:31
標題:
單片機自習室監控系統程序(包括原理圖)
自習室監控系統用紅外傳感器來檢查,通過12864液晶顯示屏來顯示
電路原理圖如下:
0.png
(39.84 KB, 下載次數: 45)
下載附件
2019-8-18 15:35 上傳
Comment Designator LibRef
電解電容 C1 10uF
瓷片電容 C2, C3 30pF
USB5V DC 1 Header 2
紅外開關 P1, P2 MHDR1X3
發光二極管 POWER1 LED0
電阻 R1 10k
電阻 R2 10K
電阻 R3 2k
電位器 RV1 R
觸點開關 S1 SW-PB
電源開關 SW1 SW-SPDT
藍牙模塊 LANYA HC-05
單片機 U1 STC89C52
液晶屏 U2 LCD12864
溫濕度傳感器 U3 DTT11
晶振 Y1 12MHz
萬能板 9x15cm
單片機源程序如下:
#include <reg52.h>
#define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
#define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
#include "LCD12864.h"
#include<intrins.h>
#include "dht11.h"
sbit jin_1 = P2^0; //進來傳感器1
sbit chu_1 = P2^1; //出去傳感器1
uint zong_rs; //總人數
uint tongd1_jl; //通道1進來的人數
uint tongd1_cq; //通道1出去的人數
uchar t1_value; //通道1用做判斷是進來還是出去的變量
uchar t1_zk; //通道1人走開
uchar t1_j_xd; //通道1進消抖
uchar t1_c_xd; //通道1出消抖
uchar t1_qans_qx; //通道1延時取消
uint t1_qans_value; //通道1延時取消
uchar Rx_buf[4],Rxnum=0;
uchar table_dht11[5]={1,2,3,4,5};
void InitUART(void) //這是串口的基本配置,配置他的波特率是9600.這些參數都是標準的。
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
/*
* UART 發送一字節
*/
void UART_send_byte(char dat)
{
SBUF = dat;
while (TI == 0);
TI = 0;
}
/*
* UART 發送字符串
*/
void UART_send_string(unsigned char *buf)
{
while (*buf != '\0')
{
UART_send_byte(*buf++);
}
}
void Delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
void dst11()
{
RH();//讀出溫濕度
table_dht11[2] = U8T_data_H;
table_dht11[0] = U8RH_data_H;
}
void tongd1_display()
{
/*******************通道1處理********************/
if(t1_value == 0)
{
if(jin_1 == 0)
{
t1_j_xd ++;
if(t1_j_xd >= 3)
{
t1_j_xd = 0;
t1_value = 1;
t1_zk = 0;
t1_qans_qx = 1;
t1_qans_value = 0;
}
}
else
t1_j_xd = 0;
if(chu_1 == 0)
{
t1_c_xd ++;
if(t1_c_xd >= 3)
{
t1_c_xd = 0;
t1_value = 2;
t1_zk = 0;
t1_qans_qx = 1;
t1_qans_value = 0;
}
}
else
t1_c_xd = 0;
}
else
{
if(t1_qans_qx == 1)
{
t1_qans_value ++; //5ms
if(t1_qans_value > 400) //2s
t1_value = 0;
}
if(t1_value == 1)
{
if((chu_1 == 0) && (t1_zk == 0))
{
tongd1_jl ++; //通道1進來的人數加1
zong_rs = tongd1_jl - tongd1_cq;
t1_zk = 1;
t1_qans_value = 0;
t1_qans_qx = 0;
}
if(t1_zk == 1) //人走開
{
if(chu_1 == 1)
{
t1_value = 0;
t1_zk = 0;
}
}
}
if(t1_value == 2)
{
if((jin_1 == 0) && (t1_zk == 0))
{
if(tongd1_jl > tongd1_cq )
tongd1_cq ++; //通道1出去的人數加1
zong_rs = tongd1_jl - tongd1_cq; //計算總人數
t1_zk = 1;
t1_qans_value = 0;
t1_qans_qx = 0;
}
if(t1_zk == 1) //人走開
{
if(jin_1 == 1)
{
t1_value = 0;
t1_zk = 0;
}
}
}
}
}
void main(void)
{
uchar Tx_Buf[15];
InitUART(); //初始化串口
LCD12864_Reset(); //初始化液晶
LCD12864_HAIZI_SET(); //設置為普通模式
LCD12864_NoWaitIdle_COM_Write(0x80); //指針設置
LCD12864_write_word("座位:50 人員: ");
LCD12864_NoWaitIdle_COM_Write(0x90); //指針設置
LCD12864_write_word("余座: ");
LCD12864_NoWaitIdle_COM_Write(0x88); //指針設置
LCD12864_write_word("溫度: ℃ ");
LCD12864_NoWaitIdle_COM_Write(0x98); //指針設置
LCD12864_write_word("濕度: % ");
dst11(); //先讀出溫濕度的值
while(1)
{
tongd1_display();
dst11(); //先讀出溫濕度的值
LCD12864_NoWaitIdle_COM_Write(0x8b); //指針設置
LCD12864_Data_Write(0x30+table_dht11[2]%100/10);
LCD12864_Data_Write(0x30+table_dht11[2]%10);
Delay_ms(1);
LCD12864_NoWaitIdle_COM_Write(0x9b);
LCD12864_Data_Write(0x30+table_dht11[0]%100/10);
LCD12864_Data_Write(0x30+table_dht11[0]%10);
Delay_ms(1);
LCD12864_NoWaitIdle_COM_Write(0x87);
LCD12864_Data_Write(0x30+zong_rs/10);
LCD12864_Data_Write(0x30+zong_rs%10);
Delay_ms(1);
LCD12864_NoWaitIdle_COM_Write(0x93);
LCD12864_Data_Write(0x30+(50-zong_rs)/10);
LCD12864_Data_Write(0x30+(50-zong_rs)%10);
Tx_Buf[0]='T'; //幀頭
Tx_Buf[1]=5+0x30; //將濕度數據送往發送數組,送給藍牙模塊讓手機APP顯示
Tx_Buf[2]=0+0x30;
Tx_Buf[3]=zong_rs/10+0x30;
Tx_Buf[4]=zong_rs%10+0x30;
Tx_Buf[5]=(50-zong_rs)/10+0x30;
Tx_Buf[6]=(50-zong_rs)%10+0x30;
Tx_Buf[7]=table_dht11[2]/10+0x30;
Tx_Buf[8]=table_dht11[2]%10+0x30;
Tx_Buf[9]=table_dht11[0]/10+0x30;
Tx_Buf[10]=table_dht11[0]%10+0x30;
Tx_Buf[11]=0;//結束符
UART_send_string(Tx_Buf); //串口發送溫濕度數據出去
}
}
/*****************串口接收中斷函數,接收藍牙模塊的數據*********************/
void UARTInterrupt(void) interrupt 4
{
ES=0; //關閉中斷
if(RI) //接收到數據
{
Rx_buf[Rxnum]=SBUF; //接收數據進數組
if(Rx_buf[Rxnum]==0x08)
Rxnum=0;
else
Rxnum++;
// if(Rx_buf[0]==0x01)//LED1燈
// {
// if(Rx_buf[1]==0x01)//開燈
// LED1=0;//開燈
// else
// LED1=1; //關燈
// }
// if(Rx_buf[0]==0x02)//LED2燈
// {
// if(Rx_buf[1]==0x01)//開燈
// LED2=0;//開燈
// else
// LED2=1; //關燈
// }
}
RI=0;
ES=1; //關閉中斷
}
復制代碼
所有資料51hei提供下載:
自習室藍牙監控系統.7z
(224.9 KB, 下載次數: 42)
2019-8-18 15:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1