51单片机用ds1302芯片闹钟。要求按键k1,k2,k3控制调节时分秒。 135

为什么我写出来程序后按键按下数码管上显示的时间没有改变#include"reg52.h"#include"ds1302.h"typedefunsignedcharu8;t... 为什么我写出来程序后按键按下 数码管上显示的时间没有改变
#include"reg52.h"
#include"ds1302.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;

u8 smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 datapro[8];
u8 datusart[6];
void delay(u16 i)
{
while(i--);
}

void keydown()
{
ds1302write(0x8e,0x00);
if(k1==0)
{
delay(1000);
if(k1==0)
{
TIME[0]++;
if(TIME[0]==0x24)
{
TIME[0]=0X00;
}
}
while(!k1);
ds1302write(0x8e,0x80);
}

if(k2==0)
{
delay(1000);
if(k2==0)
{
TIME[1]++;
if(TIME[1]==0X60)
{
TIME[1]=0X00;
}
}
while(!k2);
}

if(k3==0)
{
delay(1000);
if(k3==0)
{
TIME[2]++;
if(TIME[2]==0X60)
{
TIME[2]=0X00;
}
}
while(!k3);
}
if(k4==0)
{
delay(1000);
if(k4==0)
{
TIME[0]=0x00;
TIME[1]=0x00;
TIME[2]=0x00;
}
while(!k4);
}
}
void datapros()
{
ds1302readtime();
datapro[0]=smgduan[TIME[0]/16]; //时
datapro[1]=smgduan[TIME[0]%16];
datapro[2]=0X40;
datapro[3]=smgduan[TIME[1]/16];
datapro[4]=smgduan[TIME[1]%16];
datapro[5]=0X40;
datapro[6]=smgduan[TIME[2]/16];
datapro[7]=smgduan[TIME[2]%16];
}
void display()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case 0:LSA=0;LSB=0;LSC=0;break;
case 1:LSA=1;LSB=0;LSC=0;break;
case 2:LSA=0;LSB=1;LSC=0;break;
case 3:LSA=1;LSB=1;LSC=0;break;
case 4:LSA=0;LSB=0;LSC=1;break;
case 5:LSA=1;LSB=0;LSC=1;break;
case 6:LSA=0;LSB=1;LSC=1;break;
case 7:LSA=1;LSB=1;LSC=1;break;
}
P0=datapro[7-i];
delay(100);
P0=0x00;
}
}
void main()
{
ds1302Init();
while(1)
{
dataprosUsart();
keydown();
datapros();
display();
}
}
展开
 我来答
百度网友32545d5
2018-12-09
知道答主
回答量:14
采纳率:50%
帮助的人:3.5万
展开全部
给你提供个思路,你这闹钟系统是单片机读取时钟芯片的数据进行显示从而完成时钟功能的。

你现在需要更改时间,其实是要通过单片机更改时钟芯片内部的数据。
这样就需要你看下是否更改了时钟芯片的数据,以及程序是否正确。
追问
谢谢你了 我好好再看看
深圳市兴威帆电子技术有限公司
2020-04-21 广告
同步时钟芯片建议选择深圳市兴威帆电子技术有限公司,本公司具有经验丰富的开发工程师和应用工程师,致力于公司自主知识产权IC等产品的研发和技术支持,已开发出多款成熟的产品并大量生产、销售及出口,我公司高精度实时时钟模块产品获得多项国家专利,打破... 点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
tony_sgt
2018-12-09 · TA获得超过8423个赞
知道大有可为答主
回答量:5330
采纳率:66%
帮助的人:1209万
展开全部
你的改变是在time数组里面,找不到那个数组的声明…
追问
time数组在ds1302.h文件里面 这里没放出来。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤傲何妨CG
2018-12-08 · TA获得超过106个赞
知道小有建树答主
回答量:343
采纳率:79%
帮助的人:37.9万
展开全部
同感同感,我也在proteus加了DS12C887也不行,时间不走。
追答
听他们说要keil5与proteus调连
上面说错了是联调
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式