资源简介
总体要求:基于51设计一个定时开关用于定时控制四个回路的电源通断。
基本要求:
1、主要应用于定时控制四个回路的电源通断。
2、以当前时间为基准,以24小时为周期,可以任意设定哪个回路于某时刻开,到某时刻关。如可以设置第一个回路在8:30-11:30开,14:30-18:00开,其他时间段为关。
3、能通过按键任意设置某回路某时间段的开关状态,利用数码管显示要直接明了。
4、请辅以操作说明书给于说明操作步骤,请同学们以产品研发的思路制作,面向用户设计人机交互,力求做到功能强大,操作简单。
备注说明:
硬件制作时,可以用一个回路接继电器控制,其他用发光二极管代替。为了人身安全,试验和演示时,只需听到继电器吸合声音即可,无需接入220V电源。
代码片段和文件信息
#include
#include
#define WEI P2
#define DATA P0
#define delaystime 2 //延时
#define ON 1 //led状态
#define OFF 0
#define MAX_SETTING_TIME 1440 //24小时就是1440分钟 不能超过这个界限
#define DEC_QU 10 //取余取整用的 不动
sbit KEY_ENTER = P3 ^ 0;
sbit KEY_INC = P3 ^ 1;
sbit KEY_DEC = P3 ^ 2;
sbit LED1 = P3 ^ 4;
sbit LED2 = P3 ^ 5;
sbit LED3 = P3 ^ 6;
sbit LED4 = P3 ^ 7;
unsigned int tcount = 0; //20ms增加1
unsigned int rtc_sec = 2 etc_min = 29 rtc_hour = 12; //时间
unsigned int LED1_LOWR_ = 123; //按分钟换后的下限值 比如123代表 02:03
unsigned int LED1_HIGH_ = 127; //按分钟换后的下限值 比如123代表 02:03
unsigned int LED2_LOWR_ = 241; //按分钟换后的下限值 比如123代表 02:03
unsigned int LED2_HIGH_ = 246; //按分钟换后的下限值 比如123代表 02:03
unsigned int LED3_LOWR_ = 364; //按分钟换后的下限值 比如123代表 02:03
unsigned int LED3_HIGH_ = 369; //按分钟换后的下限值 比如123代表 02:03
unsigned int LED4_LOWR_ = 483; //按分钟换后的下限值 比如123代表 02:03
unsigned int LED4_HIGH_ = 489; //按分钟换后的下限值 比如123代表 02:03
unsigned int RTC_TIME; //用于控制LED 讲实时时钟转化成分钟进行比较
unsigned int MODE_ENTER = 0; //enter切换模式 0代表实时时间 1 2 3 4 5 6 7 8 代表八个时间设置模式 控制显示
char code table[]=
{ 0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830xc60xa10x860x8e};
char code wei[]=
{ 0x800x400x200x100x080x040x020x01};
//***********************************************************************
// //演示1ms时间
//***********************************************************************
void delay(unsigned int aa)
{
unsigned int dsa;
while (aa--)
{
for (dsa = 125; dsa > 0; dsa--)
;
}
}
//***********************************************************************
// //定时器设置 设置为外部计数器 和定时器
//***********************************************************************
void init()
{
// // 定时器初始化
TMOD = 0x10;
TH1 = (65536 - 50000) / 256; //计数初值重装载
TL1 = (65536 - 50000) % 256;
TR1 = 1;
TF1 = 0;
EA = 1;
ET1 = 1;
// // IO口初始化
LED1 = OFF;
LED1 = OFF;
LED1 = OFF;
LED1 = OFF;
}
//***********************************************************************
// // 定时器定时50ms中断
//***********************************************************************
void jishi()
interrupt 3
{
TH1=(65536-50000)/256; //计数初值重装载
TL1=(65536-50000)%256;
TF1=0;
///////////////////实时时间生成
tcount++;
if(tcount==20)//1s达到
{
tcount=0;
rtc_sec++;
if(rtc_sec==60)
{
rtc_sec=0;
etc_min++;
if(etc_min==60)
{
etc_min=0;
rtc_hour++;
if(rtc_hour==24)
{
rtc_hour=0;
}
}
}
}
/////////////////////
}
//***********************************************************************
// //刷新数码管显示
//*****************************
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-24 16:17 025 四路定时开关\
文件 17422 2018-06-23 15:28 025 四路定时开关\单片机课程设计题目要求(共四个题目)(1).docx
目录 0 2018-11-18 11:07 025 四路定时开关\时钟显示在数码管上\
文件 22952 2018-06-24 02:45 025 四路定时开关\时钟显示在数码管上\AAAA.pdsprj
文件 2196 2019-04-24 16:17 025 四路定时开关\时钟显示在数码管上\AAAA.pdsprj.ANOOP.PC1.workspace
文件 22954 2018-06-24 02:34 025 四路定时开关\时钟显示在数码管上\Backup Of AAAA.pdsbak
文件 23023 2018-06-24 02:33 025 四路定时开关\时钟显示在数码管上\Last Loaded AAAA.pdsbak
文件 3740 2018-06-01 13:56 025 四路定时开关\时钟显示在数码管上\LCD1602.LST
文件 4749 2018-06-01 13:56 025 四路定时开关\时钟显示在数码管上\LCD1602.OBJ
文件 25703 2018-06-24 12:33 025 四路定时开关\时钟显示在数码管上\main.c
文件 43035 2018-06-24 12:30 025 四路定时开关\时钟显示在数码管上\main.LST
文件 41328 2018-06-24 12:30 025 四路定时开关\时钟显示在数码管上\main.OBJ
文件 35773 2018-06-12 21:23 025 四路定时开关\时钟显示在数码管上\main.SRC
文件 34083 2018-06-24 12:30 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS
文件 11483 2018-06-24 12:30 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS.hex
文件 45 2018-06-24 12:30 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS.lnp
文件 37016 2018-06-24 12:30 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS.M51
文件 205 2018-07-03 17:06 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS.plg
文件 55635 2018-06-24 17:24 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS.uvopt
文件 13231 2018-06-05 00:22 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS.uvproj
文件 55643 2018-06-24 17:23 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS_uvopt.bak
文件 13571 2018-06-01 02:01 025 四路定时开关\时钟显示在数码管上\PWM_MOTOS_uvproj.bak
文件 3759 2018-06-01 13:56 025 四路定时开关\时钟显示在数码管上\STCEEPROM.LST
文件 3718 2018-06-01 13:56 025 四路定时开关\时钟显示在数码管上\STCEEPROM.OBJ
文件 2547 2018-06-24 01:06 025 四路定时开关\时钟显示在数码管上\实时时钟显示在数码管.c
文件 274617 2018-11-21 20:51 如何运行仿真.docx
文件 691 2019-04-24 15:13 说明书.txt
评论
共有 条评论