基于STC15W408AS的电子钟LCD显示(带闹钟功能)

该博客详细介绍了如何使用STC15W408AS微控制器设计一个带有LCD显示和闹钟功能的电子钟。通过电路图和可能的代码实现,阐述了电子钟的工作原理以及闹钟功能的设置方法。
摘要由CSDN通过智能技术生成

#include <reg51.h>
#include "1602.h"
#include "ds18b20.h"
#include "iic.h"
#include <string.h>
sbit s1=P3^7;
sbit s2=P3^6;
sbit s3=P3^5;
sbit s4=P3^4;
sbit buzz=P3^3;
sfr AUXR=0x8e;
sfr P3M1=0XBE;
sfr P3M0=0XB2;
unsignedchartemp,num,week,keyflag,pwmflag,mode1=1,mode2=0;
unsigned charsaveshi,savefen,savemiao,blinkflag,setcount,blinks,blinkf,blinkm;
unsigned char alarmfalg,clcflag;
unsigned char clcs=00,clcf=00,clcm=10;
unsigned char tab1[]={"  2018-05-29 Mon"};
unsigned char tab2[]={" 23:59:55 00C05"};
unsigned char tab3[]={"Mon"};
unsigned char tab4[]={"  "};
void Delay500us()           //@12.000MHz
{
        unsignedchar i, j;
 
        i= 6;
        j= 211;
        do
        {
                 while(--j);
        }while (--i);
}
 
 
 voidTimer0Init(void)             //0.1ms
{
        AUXR|= 0x80;                 
        TMOD&= 0xF0;               
        TL0= 0x50;              
        TH0= 0xFB;             
        TF0= 0;            
        TR0= 1;
        EA=1;
        ET0=1;     
}
 
 
 voidclosesmg()
 {
        P2|=0XE0;
        P1=0x00;
        P2&=0x1f;  
         
 }
 voidwrite_temp(unsigned char add,unsigned char dat)
 {
                 write_com(0x80+0X40+add);
                 write_date(0x30+dat/10);
                 write_date(0x30+dat%10);
 
 }     
 
 voidwrite_year(unsigned char add,unsigned char dat)
{
        write_com(0x80+add);
        write_date(0x30+dat/10);
        write_date(0x30+dat%10);
}
 
void write_fms(unsigned char add,unsignedchar dat)
{
        write_com(0x80+0x40+add);
        write_date(0x30+dat/10);
        write_date(0x30+dat%10);
}
                 
void time_init()
{
        ds1307_write(0x06,0x18);
        ds1307_write(0x05,0x05);
        ds1307_write(0x04,0x31);
        ds1307_write(0x03,0x04);
        ds1307_write(0x02,0x23);
        ds1307_write(0x01,0x59);
        ds1307_write(0x00,0x55);
}
 
void key()
{
                                  if(keyflag==1)
                         {
                                  if(mode1==1)
                                  {
                                          if(s1==0)
                                          {
                                                           mode1=0;
                                                           mode2=1;
                                                  
                                                           setcount=0;
                                          }
                                                           if(s4==0)
                            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值