资源简介

用51单片机STC89C52、时钟芯片DS1302、液晶屏LCD1602、光敏电阻、红外对管,设计了一个教室智能照明控制系统。 附件为源代码。

资源截图

代码片段和文件信息

#include 
#include 
#define uchar unsigned char
#define uint unsigned int

uchar time_data[7];
uchar code write_add[7]={0x8c0x8a0x880x860x840x820x80};       //数据的地址
uchar code read_add[7]={0x8d0x8b0x890x870x850x830x81};

uchar code table1[]=“C: 00|2000/00/00“;
uchar code table2[]=“T: 00|00:00:00 0“;
uchar code table3[]=“                “;  //清屏内容
uchar code table4[]=“  Set Real Time “;
uchar code table5[]=“  Set Open Time “;
uchar code table6[]=“   Start Time:  “;
uchar code table7[]=“    00:00:00    “;
uchar code table8[]=“    End Time:   “;
uchar code table9[]=“Date: 2000/00/00“;
uchar code table0[]=“Time: 00:00:00 0“;

bit Adjust;   //调节标志位,=1表示进入调节模式,=0是正常模式
bit Auto_flg;   //自动模式标志位,=1表示手动模式,=0是自动模式
sbit rs=P1^0;   //LCD1602
sbit rw=P1^1;    //LCD1602
sbit e=P1^2;   //LCD1602
sbit sck=P2^5;   //时钟端口
sbit io=P2^6;   //时钟端口
sbit rst=P2^7;   //时钟端口
sbit SELT =P1^6;   //选择键
sbit ENTER=P1^7;   //确认键
sbit UP   =P3^0;   //加键
sbit DOWN =P3^1;   //减键
sbit MODE =P3^2;   //切换按键接口
sbit SWITCH=P3^3;   //手动开关
sbit AUTO_LED=P1^3;   //自动模式灯接口
sbit HAND_LED=P1^4;   //手动灯接口
sbit LAMP1=P3^4;   //灯接口
sbit LAMP2=P3^5;   //灯接口
sbit LAMP3=P3^6;   //灯接口
sbit LAMP4=P3^7;   //灯接口
sbit LIGHT1=P2^0;   //光线检测端口
sbit IN1=P2^2;
sbit OUT1=P2^1;
sbit DQ=P1^5;   //温度数据口
uchar Select_num;   //选择按键按下次数
uchar Enter_num;   //确认按键按下次数
uchar Switch_num;   //手动开关按键按下次数
float YearMonthDayHourMinuteSecond; //时间设置值
uchar Week;
float Hour_HMinute_HSecond_H;   //设置开始时间
float Hour_LMinute_LSecond_L;   //设置结束时间
int Value1; //人数
uchar IN1_flag=0;
uchar OUT1_flag=0;
uint Count;           //T0定时器中断计数次数
uchar Miao;

int temperature; //全局变量 温度

void read_rtc();

/**************************************************LCD1602显示*******************************************************************/
void delay1(uint z)   //延时函数
{
uint xy;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}

void write_com(uchar com)  //写指令函数
{
rw=0;
delay1(5);
rs=0;
delay1(5);
e=1;
delay1(5);
P0=com;
delay1(5);
e=0;
delay1(5);
}

void write_date(uchar date) //写数据函数
{
rw=0;
delay1(5);
rs=1;
delay1(5);
e=1;
delay1(5);
P0=date;
delay1(5);
e=0;
delay1(5);
}

void init()     //初始化函数
{
uchar num;
Year=17;
Month=1;
Day=1;
Hour=15;
Minute=30;
Second=50;
Week=1;
Hour_H=22;
Minute_H=0;
Second_H=0;
Hour_L=18;
Minute_L=0;
Second_L=0;
e=0;     // 时序表e初始为0
write_com(0x38);         //设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c); //设置光标
write_com(0x06); //光标自动加1光标输入方式
write_com(0x01); //清屏
write_com(0x80); //设置初始显示位置
for(num=0;num<16;num++)
{
write_date(table1[num]);
delay1(5);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_date(table2[num]);
delay1(5);
}   
}

void SetTime_dispaly(uchar adduchar dat)  //第一个:参数的地址,第二个:参数的内容
{
uch

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-04-02 09:41  2-程序\
     文件       46366  2017-03-15 19:49  2-程序\DS1302
     文件       69670  2017-03-15 19:49  2-程序\DS1302.LST
     文件       59850  2017-03-15 19:49  2-程序\DS1302.M51
     文件       57710  2017-03-15 19:49  2-程序\DS1302.OBJ
     文件         935  2013-10-15 22:27  2-程序\DS1302.PWI
     文件       24049  2017-03-15 19:49  2-程序\DS1302.c
     文件       18410  2017-03-15 19:49  2-程序\DS1302.hex
     文件          60  2017-03-15 19:49  2-程序\DS1302.lnp
     文件         691  2017-03-15 19:49  2-程序\DS1302.plg
     文件       56260  2017-03-15 19:50  2-程序\DS1302.uvopt
     文件       13403  2014-12-03 23:19  2-程序\DS1302.uvproj
     文件       56260  2016-04-09 02:54  2-程序\DS1302_uvopt.bak
     文件       13403  2014-12-03 14:11  2-程序\DS1302_uvproj.bak
     文件       91895  2011-08-28 12:44  2-程序\Last Loaded DS1302.DBK
     文件        6376  2009-05-07 14:37  2-程序\STARTUP.A51
     文件       14054  2017-03-15 19:49  2-程序\STARTUP.LST
     文件         749  2017-03-15 19:49  2-程序\STARTUP.OBJ

评论

共有 条评论