标签:P2 P3 毕设 课设 uchar 单片机 P1 传感器 sbit
基于AT89C51+LCD1602+DS1302+按键+LED组成设计了一个完整的智能控制系统。
P2.0-P2.3 4个LED等代表庭院内的4盏灯
P1.3-P1.7 5个开关,第一个代表光敏电阻传感器,后四个都是热释电红外传感器
P3.2、P3.4、P3.5、P3.6为四个按键开关,可设置万年历时间。
人性化地加入了时间和温度的LCD显示,并可以通过按键去设置时间日期等。
智能灯控制分为自动和手动控制。
逻辑功能:
当P3.0为0,也就是按下的时候为手动控制,反之则为自动控制。
手动:
按下开关P3.1,所有的灯都打开,按下开关P3.2,所有的灯都关闭。
自动:
一个光敏电阻传感器和四个红外热释电传感器,实现逻辑为:
当时间为晚上18点-早上6点之间或者光敏电阻传感器为0时,一旦有人,则点亮灯,一个灯附近安装一个红外热释电传感器,当走进灯时,灯亮。
#include<reg51.h>
#include<intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}
sbit SDA=P1^0; // DS1302数据线
sbit CLK=P1^1; // DS1302时钟线
sbit RST=P1^2; // DS1302复位线
//DS18B20数据端口定义
sbit DQ=P2^4; //DS18B20数据端口
sbit LCD_RS=P2^5; // LCD寄存器选择
sbit LCD_RW=P2^6; // LCD读写/写控制
sbit LCD_EN=P2^7; // LCD启用
sbit K1=P3^2; // 选择
sbit K2=P3^3; // 确定
sbit K3=P3^5; // 加
sbit K4=P3^6; // 减
sbit key_1=P3^0; //自动手动切换
sbit key_2=P3^1; //关灯,按一下,关一个
sbit key_3=P3^4; //开灯,按一下,开一个
uchar code zz[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
uchar code fz[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};
sbit R_LED=P2^0; //红灯
sbit Y_LED=P2^1; //黄灯
sbit G_LED=P2^2; //绿灯
sbit B_LED=P2^3; //蓝灯
sbit guangmin=P1^3; //光敏电阻传感器
sbit ren1=P1^4; //红外热释电传感器1
sbit ren2=P1^5; //红外热释电传感器2
sbit ren3=P1^6; //红外热释电传感器3
sbit ren4=P1^7; //红外热释电传感器4
//温度字符
uchar code Temperature_Char[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};
//温度小数对照表
uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
uchar CurrentT=0; //当前读取温度的整数部分
uchar Temp_Value[]={0x00,0x00}; //从DS18B20读取的温度值
uchar Display_Digit[]={0,0,0,0};//待显示的各温度数位
bit DS18B20_IS_OK=1;//传感器正常标志
标签:P2,P3,毕设,课设,uchar,单片机,P1,传感器,sbit 来源: https://www.cnblogs.com/aiesst/p/14426349.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。