文档介绍:基于单片机的智能数字闹钟程序代码
 
#include <>
#include <>
#include <> 
 
unsigned char clock_data[4];
sbit speaker  = P2^4;//  蜂鸣器
sbit bell = P2^2;   //铃响
bit bell_on=0;
bit key_ok=0;
unsigned char bell_time=0x20;
uchar week_clock_set;
#define FIRST_ADDR 0
//定义全局变量
unsigned char yy,mo,dd,xq,hh,mm,ss;//  定义时间映射全局变量(专用寄存器)
uchar j;
/****************************************************************************/
//函数声明
extern  unsigned char read_clock(unsigned char ord);
extern void lcdwc(unsigned char cmdcode);
extern void hzkdis(unsigned char code *s);
extern void hzkdis2(unsigned char *s);
extern char Read_One_Byte(unsigned char addr);
extern void Write_One_Byte(unsigned char addr,unsigned char thedata);
void lcm_w_ss(void);
extern void lcdreset(void);
extern void Init_DS18B20(void);
extern char gotkey();
extern void Init_1302(void);
extern unsigned int ReadTemperature(void);
extern void write_clock(unsigned char ord, unsigned char dd);
extern void disp_hz(uchar x,uchar *c_str,uchar w);
extern void
delay(unsigned int t);
void new_time(void);
void read_clockss(x);
 
//void lcm_w_temp(void) ;
void read_clockS(void)
{
 ss = read_clock(0x81);//读取秒数据
 mm = read_clock(0x83);//读取分钟数据
 hh = read_clock(0x85);//小时
 dd = read_clock(0x87);//日
 mo = read_clock(0x89);//月
 xq = read_clock(0x8b);//星期
 yy = read_clock(0x8d);//年
}
/*void Set_time(unsigned char sel){ //根据选择调整的相应项目加1并写入DS1302
  signed char address,item;
  signed char max,mini;
    if(sel==7)  {address=0x80; max=0;mini=0;}     //秒
  if(sel==6)  {address=0x82; max=59;mini=0;}    //分钟
  if(sel==5)  {address=0x84; max=23;mini=0;}    //小时
  if(sel==3)  {address=0x86; max=31;mini=1;}    //日
  if(sel==2)  {address=0x88; max=12;mini=1;}    //月
  if(sel==1)  {address=0x8c; max=99; mini=0;}    //年
  if(sel==4)  {address=0x8a; max=7;mini=1;}    //星期
  
  //读取1302某地址上的数值转换成10进制赋给item 
  item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
  if