嵌入式电子闹钟()时钟课程设计(15 页)Good is good, but better carries it.精益求精,善益求善。#include //头文件#include#define uchar unsigned char //宏定义#define uint unsigned int//位定义sbit rs=P2^5; //液晶位定义 sbit lcden=P2^7;sbit s1=P2^0; //时间功能切换按键sbit s2=P2^1; //按键加sbit s3=P2^3; //按键减sbit s4=P2^4; //闹钟功能切换键sbit rst=P1^5; //ds1302 引脚定义sbit io=P1^6;sbit sclk=P1^7;sbit beep=P3^0; //蜂鸣器uchar num,count,shi,fen,miao,s1num,s2num,year,month,day,week,flag,flag1,year1,month1,day1,week1,shi1,fen1,miao1,year2,month2,day2,week2,shi2,fen2,miao2,year5,month5,day5,week5,shi5,fen5,miao5,wk,ashi,afen; //参数定义uchar code table[]="20 - - "; //液晶固定显示uchar code table1[]=" : : 00:00";/*uchar time_dat[7]={12,1,6,6,12,59,59}; //年周月日时分秒uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};*/void write_com(uchar com); //液晶写指令函数void write_data(uchar date); //液晶写数据函数void write_ds1302(uchar add,uchar dat); //ds1302 芯片写指令函数void set_rtc(); //ds1302 时间设置函数void time_pros(); //ds1302 进制转换函数void read_rtc(); //ds1302 读时间函数void alarm(); //闹钟函数void delay(uint z) //延时函数{ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void init() //初始化{ lcden=0; flag=0; flag1=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); //液晶固定显示,第一行 for(num=0;num<14;num++) { write_data(table[num]); delay(5); } write_com(0x80+0x40); //液晶显示第二行 for(num=0;num<20;num++) { write_data(table1[num]); delay(5); }}void write_com(uchar com)//1602 液晶写指令{ rs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;}void write_data(uchar date)//1602 液晶写写数据{ rs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0;}void write_sfm(uchar add,uchar date)//时分秒{ uchar shi3,ge; shi3=date/10; ge=date%10;...