可编程作息时间控制器代码#c

这个程序使用C语言编写,用于控制可编程的作息时间控制器。它通过I2C接口读取并设置存储在24C02芯片中的上下课时间,并在LCD1602上显示时间。用户可以通过按键设定不同时间段,程序会根据设定时间进行蜂鸣器和LED的控制,模拟打铃。此外,程序还包括了定时器中断服务函数,以每0.5秒为单位更新时间并检测是否到打铃时刻。
摘要由CSDN通过智能技术生成

#include "reg51.h"

#include "lcd1602.h"

#include"i2c.h"

#define uchar unsigned char

#define uint unsigned int

sbit beep=P2^7;//蜂鸣器

sbit led=P3^4;//led

uchar time=0,mode=0;//系统变量

uchar sec=0,miao=0,fen=0,shi=0;//计时

uchar fen1[]={0,0,0,0,0,0};//上下课

uchar shi1[]={0,0,0,0,0,0};

uchar flag=0;//打铃标志

uchar disp[]="00:00:00";

 

uchar key=0;

uchar key_scan()//按键检测

{

uchar i,j;

i=0;

j=0;

P1=0x0f;

if(P1!=0x0f) //检测有无按下

{

 delay_uint(1000);

 if(P1!=0x0f) //检测有无按下

{

 switch(P1)//检测行

 {

  case 0x0e:i=3;break;

  case 0x0d:i=2;break;

  case 0x0b:i=1;break;

  case 0x07:i=0;

 }

 P1=0xf0;

 switch(P1)//检测列

 {

  case 0xe0:j=13;break;

  case 0xd0:j=9;break;

  case 0xb0:j=5;break;

  case 0x70:j=1;

 }

}

}

if(key!=i+j)

{

 key=i+j;

 return key;

}

else

 return 0;

}

 

void main()//主函数

{

 uchar i=0;

 //初始化存储

 fen1[0]=At24c02Read(0);//分钟

 if(fen1[0]>59)

 {

  fen1[0]=1;

  At24c02Write(0,fen1[0]);

 }

 fen1[1]=At24c02Read(1);

 if(fen1[1]>59)

 {

  fen1[1]=2;

  At24c02Write(1,fen1[1]);

 }

 fen1[2]=At24c02Read(2);

 if(fen1[2]>59)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值