找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1453|回复: 2
打印 上一主题 下一主题
收起左侧

不知道哪里出了问题,LCD有显示但是按键不能进行校准,闹钟响程序也不会写,求大神...

[复制链接]
跳转到指定楼层
楼主
ID:321480 发表于 2018-5-3 18:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DATAPINS P0
sbit DSIO=P3^4;
sbit RST=P3^5;
sbit SCLK=P3^6;
sbit beep=P1^5;       
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;                                                                                                                                                         
sbit LCD1602_RS=P2^6;
sbit s1=P2^0;  //s1为功能键
sbit s2=P2^1;        //s2为增加键
sbit s3=P2^2;        //s3为减少键         
int i, t0_num,s1num,rd,flag_ri,flag,count;     //flag_ri为闹钟响标志,flag为时间调整标志
uchar year,month,day,week,sec,min,hou,c_day,c_week,c_month,c_year,c_sec,c_min,c_hou;
uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
uchar TIME[7] = {0, 0, 0x00, 0x01, 0x01, 0x01, 0x18};
uchar CLOCK[3]={0x00,0x01,0x00};
void Ds1302ReadTime();//hanshushengming
void LcdWriteCom(uchar com)        ;



void delay(unsigned int i)                                                //延时程序
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}

void init()
{
        flag=0;                           //时间调整标志
        s1num=0;                  //s1按下的次数
        flag_ri=0;                  //闹钟响标志


}
void Ds1302Write(uchar addr, uchar dat)                   //
{
        uchar n;
        RST = 0;
        _nop_();//延时一个机器周期的意思

        SCLK = 0;//先将SCLK置低电平。
        _nop_();
        RST = 1; //然后将RST(CE)置高电平。
        _nop_();

        for (n=0; n<8; n++)//开始传送八位地址命令
        {
                DSIO = addr & 0x01;//数据从低位开始传送
                addr >>= 1;
                SCLK = 1;//数据在上升沿时,DS1302读取数据
                _nop_();
                SCLK = 0;
                _nop_();
        }
        for (n=0; n<8; n++)//写入8位数据
        {
                DSIO = dat & 0x01;
                dat >>= 1;
                SCLK = 1;//数据在上升沿时,DS1302读取数据
                _nop_();
                SCLK = 0;
                _nop_();       
        }       
                 
        RST = 0;//传送数据结束
        _nop_();
}
uchar Ds1302Read(uchar addr)
{
        uchar n,dat,dat1;
        RST = 0;
        _nop_();

        SCLK = 0;//先将SCLK置低电平。
        _nop_();
        RST = 1;//然后将RST(CE)置高电平。
        _nop_();

        for(n=0; n<8; n++)//开始传送八位地址命令
        {
                DSIO = addr & 0x01;//数据从低位开始传送
                addr >>= 1;
                SCLK = 1;//数据在上升沿时,DS1302读取数据
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }
        _nop_();
        for(n=0; n<8; n++)//读取8位数据
        {
                dat1 = DSIO;//从最低位开始接收
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }

        RST = 0;
        _nop_();        //以下为DS1302复位的稳定时间,必须的。
        SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();
        return dat;       
}
void Ds1302Init()                                                                                //1302初始化
{
        uchar n;
        Ds1302Write(0x8E,0X00);                 //禁止写保护,就是关闭写保护功能
        for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
        {
                Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);
       
               
        }
        Ds1302Write(0x8E,0x80);                 //打开写保护功能
        Ds1302ReadTime();


}
void Ds1302ReadTime()
{
        uchar n;
        for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
        {
                TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
        }
               
}

                /*    readbyteds1302()                                                                          //从ds1302读一个字节
                                        {
                                                uchar i;
                                                uchar tempdata;
                                                for(i=0;i<8;i++)
                                                {
                                      //        if(DSIO)
                                        //         tempdata=(tempdata>>1)|0x80;
                                        //        else
                                        //        tempdata>>=1;          
                                                if(DSIO)
                                                tempdata|=(1<<i);                        //读到高电平,置位相应位
                                                else
                                                 tempdata&=(~(1<<i));                  //读到低电平,清零相应位
                                                         SCLK=0;
                                                SCLK=1;
                                                }
                                                return tempdata;
                                                }       
                                                 writebyteds1302(uchar ds1302dat)                         //向ds1302写入一个字节
                                 {
                                         uchar i;
                                        uchar tempdata=ds1302dat;
                                         for(i=8;i>0;i--)
                                         {
                                                 DSIO=tempdata&&0x01;
                                                tempdata>>=1;
                                                SCLK=0;
                                                SCLK=1;
                                                }
                                                return tempdata;}                                 */
               
                                                                                  
void LcdWriteCom(uchar com)          //写入命令
{
        LCD1602_E = 0;         //使能清零
        LCD1602_RS = 0;         //选择写入命令
        LCD1602_RW = 0;         //选择写入

        LCD1602_DATAPINS = com;        //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
delay(1);

        LCD1602_E = 1;         //写入时序
        delay(1);
        LCD1602_E = 0;

//        Lcd1602_Delay1ms(1);
        LCD1602_DATAPINS = com << 4; //发送低四位
        delay(1);

        LCD1602_E = 1;         //写入时序
        delay(1);
        LCD1602_E = 0;
}
void LcdInit()                                                  //LCD初始化子程序
{
        LcdWriteCom(0x32);         //将8位总线转为4位总线
        LcdWriteCom(0x28);         //在四位线下的初始化
        LcdWriteCom(0x0c);  //开显示不显示光标
        LcdWriteCom(0x06);  //写一个指针加1
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //设置数据指针起点
}
void LcdWriteData(uchar dat)                        //写入数据
{
        LCD1602_E = 0;          //使能清零
        LCD1602_RS = 1;          //选择写入数据
        LCD1602_RW = 0;          //选择写入

        LCD1602_DATAPINS = dat;        //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
delay(5);

        LCD1602_E = 1;          //写入时序
delay(5);
        LCD1602_E = 0;

        LCD1602_DATAPINS = dat << 4; //写入低四位
delay(5);

        LCD1602_E = 1;          //写入时序
delay(5);
        LCD1602_E = 0;
}
                  void Lcddisplay()
                {                                                                                          
                                LcdWriteCom(0x80+0X40);                                                   //第二行显示
                                                                LcdWriteData('0'+TIME[2]/16);                                //时的高位
                                                                LcdWriteData('0'+(TIME[2]&0x0f));                        //时的低位         
                                                                LcdWriteData('-');                                                         //显示时-分-秒的连接符
                                                                LcdWriteData('0'+TIME[1]/16);                                //分
                                                                LcdWriteData('0'+(TIME[1]&0x0f));       
                                                                LcdWriteData('-');
                                                                LcdWriteData('0'+TIME[0]/16);                                //秒
                                                                LcdWriteData('0'+(TIME[0]&0x0f));
                                                       
                                                                LcdWriteCom(0x80);                                                   //1602第一行显示
                                                                LcdWriteData('2');
                                                                LcdWriteData('0');
                                                                LcdWriteData('0'+TIME[6]/16);                        //年
                                                                LcdWriteData('0'+(TIME[6]&0x0f));
                                                                LcdWriteData('-');
                                                                LcdWriteData('0'+TIME[4]/16);                        //月
                                                                LcdWriteData('0'+(TIME[4]&0x0f));
                                                                LcdWriteData('-');
                                                                LcdWriteData('0'+TIME[3]/16);                        //日
                                                                LcdWriteData('0'+(TIME[3]&0x0f));
                                                                switch('0'+TIME[5])
                                                                {       
                                                                        case '1':LcdWriteCom(0x80+13);//0x80+13意思为在第一行第13列开始显示星期几
                                                                        LcdWriteData('M');
                                                                        LcdWriteData('o');
                                                                        LcdWriteData('n');
                                                                        break;
                                                                        case '2':LcdWriteCom(0x80+13);
                                                                        LcdWriteData('T');
                                                                        LcdWriteData('u');
                                                                        LcdWriteData('e');
                                                                        break;
                                                                        case '3':LcdWriteCom(0x80+13);
                                                                        LcdWriteData('W');
                                                                        LcdWriteData('e');
                                                                        LcdWriteData('d');
                                                                        break;
                                                                        case '4':LcdWriteCom(0x80+13);
                                                                        LcdWriteData('T');
                                                                        LcdWriteData('h');
                                                                        LcdWriteData('u');
                                                                        break;
                                                                        case '5':LcdWriteCom(0x80+13);
                                                                        LcdWriteData('F');
                                                                        LcdWriteData('r');
                                                                        LcdWriteData('i');
                                                                        break;
                                                                        case '6':LcdWriteCom(0x80+13);
                                                                        LcdWriteData('S');
                                                                        LcdWriteData('a');
                                                                        LcdWriteData('t');
                                                                        break;
                                                                        case '7':LcdWriteCom(0x80+13);
                                                                        LcdWriteData('S');
                                                                        LcdWriteData('u');
                                                                        LcdWriteData('n');
                                                                        break;
                                                        }
                                       
                                                LcdWriteCom(0x80+0x40+8);
                                                LcdWriteData('0'+(CLOCK[2]/16));                                                         //显示闹钟时高位       
                                                                        LcdWriteData('0'+(CLOCK[2]&0x0f));       
                                                                        LcdWriteData('-');
                                                                        LcdWriteData('0'+CLOCK[1]/16);                       
                                                                        LcdWriteData('0'+(CLOCK[1]&0x0f));
                                                                        LcdWriteData('-');
                                                                        LcdWriteData('0'+CLOCK[0]/16);                       
                                                                        LcdWriteData('0'+(CLOCK[0]&0x0f));
                                                                }          
                                                                       
                                void write1(uchar add,uchar dat)                         //写时分秒函数
                                {  
                                        char former,latter;
                                         former=dat/10;
                                           latter=dat%10;
                                           LcdWriteCom(0x80+0X40+add);
                                           LcdWriteData(0x30+former);
                                           LcdWriteData(0x30+latter);
                                  }
                                        void write2(uchar add,uchar dat)           //写年月日函数
                                        {
                                                char former,latter;
                                            former=dat/10;
                                                latter=dat%10;
                                                LcdWriteCom(0x80+add);
                                                LcdWriteData(0x30+former);
                                            LcdWriteData(0x30+latter);
                                    }
                                        void write3(char dat)                //星期函数
                                        {         LcdWriteCom(0x80+13);
                                                switch(dat)
                                                        {         case 1:        LcdWriteData('M');
                                                                                LcdWriteData('o');
                                                                                LcdWriteData('n');
                                                                                break;
                                                                case 2:        LcdWriteData('T');
                                                                                LcdWriteData('u');
                                                                                LcdWriteData('e');
                                                                                break;
                                                                case 3:        LcdWriteData('W');
                                                                                LcdWriteData('e');
                                                                                LcdWriteData('d');
                                                                                break;
                                                                case 4:        LcdWriteData('T');
                                                                                LcdWriteData('h');
                                                                                LcdWriteData('u');
                                                                                break;
                                                                case 5:        LcdWriteData('F');
                                                                                LcdWriteData('r');
                                                                                LcdWriteData('i');
                                                                                break;
                                                                case 6:        LcdWriteData('S');
                                                                                LcdWriteData('a');
                                                                                LcdWriteData('t');
                                                                                break;
                                                                case 7:        LcdWriteData('S');
                                                                                LcdWriteData('u');
                                                                                LcdWriteData('n');
                                                                                break;
                                                                        }
                                                }         
                                void keyscan()                                                                        //键盘扫描函数
                                {
                                 /*                if(flag_ri==1)                                                          //闹钟响标志flag_ri
                                        {
                                                   if((s1==0)||(s2==0)||(s3==0))         //如果任意一个按键按下
                                                        {
                                                                delay(10);                                                                           //去抖动
                                                                if((s1==0)||(s2==0)||(s3==0))                //在此判断是否按键真正按下
                                                                        {
                                                                                 while(!(s1&&s2&&s3));                                          //检测是否松手
                                                                                 beep=0;
                                                                                  flag_ri=0;
                                                                                 }                                                                                                                                                  
                                                        }
                                                  }  */
                                                  if(s1==0)                                          //s1按下
                                                        {
                                                                delay(10);                        //去抖
                                                                if(s1==0)                        //再次判断s1是否真正按下
                                                                        {        
                                                                                delay(10);
                                                                                while(!s1);
                                                                                s1num++;
                                                                                flag=1;       
                                                                                switch(s1num)
                                                                             {
                                                                                case 1:LcdWriteCom(0x80+0X40);//光标定位到“时”
                                                                                                LcdWriteCom(0x0f);                //光标闪烁0000 1111 /0000 1DCB D为开显示C为显示光标B为光标闪烁
                                                                                                    
                                                                                                         break;
                                                                                        case 2: LcdWriteCom(0x80+0X40+3);//光标定位到“分”
                                                                                                    LcdWriteCom(0x0f);       
                                                                                                       
                                                                                                        break;
                                                                                        case 3:        LcdWriteCom(0x80+0X40+6);//光标定位到“秒”
                                                                                                        LcdWriteCom(0x0f);                                                                                                                        
                                                                                                                                                                                                                                                
                                                                                                        break;
                                                                                        case 4:        LcdWriteCom(0x80);//光标定位到“年”
                                                                                                        LcdWriteCom(0x0f);
                                                                                                                       
                                                                                                        break;
                                                                                        case 5:        LcdWriteCom(0x80+5);//光标定位到“月”
                                                                                                        LcdWriteCom(0x0f);
                                                                                                                       
                                                                                                        break;
                                                                                        case 6:        LcdWriteCom(0x80+8);//光标定位到“日”
                                                                                                        LcdWriteCom(0x0f);
                                                                                                         delay(1000);                       
                                                                                                        break;
                                                                                        case 7:        LcdWriteCom(0x80+13);//光标定位到“周”
                                                                                                        LcdWriteCom(0x0f);
                                                                                                                       
                                                                                                        break;
                                                                                        case 8: LcdWriteCom(0x80+0x40+8);//光标定位到闹钟的时
                                                                                                       LcdWriteCom(0x0f);
                                                                                                       
                                                                                                        break;
                                                                                        case 9: LcdWriteCom(0x80+0x40+11);//光标定位到闹钟的分
                                                                                                       LcdWriteCom(0x0f);
                                                                                                               
                                                                                                        break;
                                                                                        case 10: LcdWriteCom(0x80+0x40+14);//光标定位到闹钟的秒
                                                                                                       LcdWriteCom(0x0f);
                                                                                                       
                                                                                                        break;
                                                                                        case 11:LcdWriteCom(0x01);//清全屏
                                                                                                       LcdWriteCom(0x0c); //关闪烁
                                                                                               
                                                                                                        Ds1302Write(0x8E,0X00);                 //禁止写保护,就是关闭写保护功能
                                                                                                        Ds1302Write(0x80, sec);
                                                                                                        Ds1302Write(0x82,min);
                                                                                                        Ds1302Write(0x84,hou);
                                                                                                        Ds1302Write(0x86,day);
                                                                                                        Ds1302Write(0x88,month);
                                                                                                        Ds1302Write(0x8a,week);
                                                                                                        Ds1302Write(0x8c,year);
                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                        break;
                                                                                                                flag=0;
                                                                                                        }
                                                                                                }
                                                                                         if(s1num!=0)         //         按下s1之后才能进行时间的加减
                                                                                           {
                                                                                                   if(s2==0)
                                                                                                  {
                                                                                                          delay(10);                                          // 去抖
                                                                                                        if(s2==0)
                                                                                                        Ds1302Write(0x8E,0X00);                 //禁止写保护,就是关闭写保护功能
                                                                                                        while(!s2==0);                                 
                                                                                                        switch(s1num)
                                                                                                        {
                                                                                                            case 1:hou++;
                                                                                                                if(hou==24)
                                                                                                                   hou=0;
                                                                                                                LcdWriteCom(0x80);
                                                                                                                write1(0,hou);
                                                                                                                Ds1302Write(0x84,hou);
                                                                                                                Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                               
                                                                                                                case 2:min++;
                                                                                                                if(min==60)
                                                                                                                   min=0;
                                                                                                                LcdWriteCom(0x80+0X40+3);
                                                                                                                write1(3,min);
                                                                                                                        Ds1302Write(0x82,min);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                case 3:sec++;
                                                                                                                if(sec==60)
                                                                                                                   sec=0;
                                                                                                                LcdWriteCom(0x80+0X40+6);
                                                                                                                write1(6,sec);
                                                                                                                        Ds1302Write(0x80,sec);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                case 4:year++;
                                                                                                                if(year==100)
                                                                                                                 year=0;
                                                                                                                LcdWriteCom(0x80);
                                                                                                                write2(0,year);
                                                                                                                        Ds1302Write(0x8c,year);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                case 5:month++;
                                                                                                                if(month==13)
                                                                                                                   month=1;
                                                                                                                LcdWriteCom(0x80+5);
                                                                                                                write2(5,month);
                                                                                                                        Ds1302Write(0x88,month);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                case 6:day++;
                                                                                                                if(day==32)
                                                                                                                 day=0;
                                                                                                                LcdWriteCom(0x80+8);
                                                                                                                write2(8,day);
                                                                                                                        Ds1302Write(0x86,day);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                               
                                                                                                                case 7:week++;
                                                                                                                if(week==8)
                                                                                                                   week=1;
                                                                                                                LcdWriteCom(0x80+13);
                                                                                                                write3(week);
                                                                                                                        Ds1302Write(0x8a,week);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                 case 8:c_hou++;
                                                                                                                if(c_hou==24)
                                                                                                                   hou=0;
                                                                                                                LcdWriteCom(0x80+0x40+8);
                                                                                                                write1(8,hou);
                                                                                                                Ds1302Write(0x8E,0x80);                 //打开写保护功能

                                                                                                                break;
                                                                                                                        case 9:c_min++;
                                                                                                                if(c_min==60)
                                                                                                                   c_min=0;
                                                                                                                LcdWriteCom(0x80+0X40+11);
                                                                                                                write1(11,c_min);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                       
                                                                                                       
                                                                                                                case 10:c_sec++;
                                                                                                                if(c_sec==60)
                                                                                                                   c_sec=0;
                                                                                                                LcdWriteCom(0x80+0X40+14);
                                                                                                                write1(14,c_sec);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                       
                                                                                                               
                                                                                                                }
                                                                                                      }
                                                                                                 if(s3==0)
                                                                                                  {
                                                                                                          delay(10);                                          // 去抖
                                                                                                        if(s3==0)
                                                                                                        Ds1302Write(0x8E,0X00);                 //禁止写保护,就是关闭写保护功能
                                                                                                        while(!s3==0);                                 
                                                                                                       
                                                                                                        switch(s1num)          
                                                                                                         {        case 1:hou--;
                                                                                                                if(hou==-1)
                                                                                                                   hou=23;
                                                                                                                LcdWriteCom(0x80);
                                                                                                                write1(0,hou);
                                                                                                                        Ds1302Write(0x84,hou);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                case 2:min--;
                                                                                                                if(min==-1)
                                                                                                                   min=59;
                                                                                                                LcdWriteCom(0x80+0X40+3);
                                                                                                                write1(3,min);
                                                                                                                        Ds1302Write(0x82,min);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;

                                                                                                                case 3:sec--;
                                                                                                                if(sec==-1)
                                                                                                                   sec=59;
                                                                                                                LcdWriteCom(0x80+0X40+6);
                                                                                                                write1(6,sec);
                                                                                                                        Ds1302Write(0x80,sec);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                case 4:year--;
                                                                                                                if(year==-1)
                                                                                                                   year=99;
                                                                                                                LcdWriteCom(0x80);
                                                                                                                write1(0,year);
                                                                                                                        Ds1302Write(0x8c,year);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                case 5:month--;
                                                                                                                if(month==0)
                                                                                                                   month=11;
                                                                                                                LcdWriteCom(0x80+5);
                                                                                                                write2(5,month);
                                                                                                                        Ds1302Write(0x88,month);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                        case 6:day--;
                                                                                                                if(day==0)
                                                                                                                   day=31;
                                                                                                                LcdWriteCom(0x80+8);
                                                                                                                write2(8,day);
                                                                                                                        Ds1302Write(0x86,day);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                               
                                                                                                                case 7:week--;
                                                                                                                if(week==0)
                                                                                                                   week=7;
                                                                                                                LcdWriteCom(0x80+13);
                                                                                                                write3(week);
                                                                                                                        Ds1302Write(0x8a,week);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                                        case 8:hou--;
                                                                                                                if(hou==-1)
                                                                                                                   hou=23;
                                                                                                                LcdWriteCom(0x80+0x40+8);
                                                                                                                write1(8,c_hou);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;       
                                                                                                                case 9:c_min--;
                                                                                                                if(min==-1)
                                                                                                                   min=59;
                                                                                                                LcdWriteCom(0x80+0X40+11);
                                                                                                            write1(11,c_min);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                               
                                                                                                                case 10:c_sec--;
                                                                                                                if(c_sec==-1)
                                                                                                                 c_sec=59;
                                                                                                                LcdWriteCom(0x80+0X40+14);
                                                                                                                write1(14,c_sec);
                                                                                                                        Ds1302Write(0x8E,0x80);                 //打开写保护功能
                                                                                                                break;
                                                                                                               
                                                                                                       
                                                                                                         }
                                                                                                    }
                                                                                                }
                                                                                        }       
                                                                                }          
                                        void main ()
                                                 {
                                                    init();
                                                        LcdInit();
                                                        Ds1302Init();
                                                    while(1)
                                                        {         
                                                        if(flag_ri==1)
                                                        {
                                                        beep=1;
                                                        delay(60000);
                                                        beep=0;
                                                        }
                                                        Ds1302ReadTime();
                                                        Lcddisplay();        //初始时刻
                                                        keyscan();
                                                        if(flag==0&&flag_ri==0)
                                                        {
                                                                keyscan();
                                                                  }
                                                    Ds1302ReadTime();
                        /* if(sec==c_sec)
                                                   {
                                                           if(min==c_min)
                                                        {
                                                        if(hou==c_hou)
                                                                { flag_ri=1;
                                    beep=1;
                                                                        delay(60000);                //响一分钟
                                                                        beep=0;
                                                          keyscan();
                                                                        }
                                                                                }
                                                                       
                                                                }        */                 
                                                                        }
                                                                }
                                                          
                       
                               


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:321557 发表于 2018-5-3 20:16 | 只看该作者
硬件电路看看
回复

使用道具 举报

板凳
ID:321480 发表于 2018-5-4 09:09 | 只看该作者

用的是普中的开发板
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表