完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` #include #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 uchar i=0,j=0,k=0, s=0,f=0,m=0,lbbz=0,a[7]; //定义变量 ***it tz=P3^0; //位定义 ***it sz1=P3^1; //位定义 ***it fz1 =P3^2; //位定义 ***it mz1 =P3^3; //位定义 ***it ss =P3^4; //位定义 ***it lb =P3^5; //位定义 ***it dula=P1^6; ***it wela=P1^7; uchar code sz[]={0x3f,0x06,0xdb,0x4f, //数字编码表 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71} ; uchar code xw[]={ 0xff,0xfe,0xfd,0xfb,0xf7, //选位编码表 0xef,0xdf,0xbf,0x7f }; void pf() //区分出个位和十位 { a[1]=s/10; a[2]=s%10; a[3]=f/10; a[4]=f%10; a[5]=m/10; a[6]=m%10; } void ys ( int d ) //延时函数 { int b ,c ; for (b = d;b>0;b--) for (c=110;c>0;c--) ; } void xs() //显视函数 { pf() ; for (k=1;k<=6;k++) { P0=sz[a[k]]; dula=1; dula=0; P2=xw[k]; wela=1; wela=0; ys(3); } 基于C语言的51单片机可调数字钟的设计 } void dczd() interrupt 1 //定时中断 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; i++; if (i==4) { ss=1; if (lbbz==1) { lbbz=0; lb=0; } } if (i==20) { i=0; ss=0; m++; if (m==60) { m=0; f++; if (f==60) { f=0; s++; lbbz=1; if (s==24) s=0; } } } } void cs() //初始函数 { TMOD=0x01; //设置为定时工作方式 TH0=(65535-50000)/256; //定时器装初值 TL0=(65535-50000)%256; //定时器装初值 EA=1; //打开总中断 ET0=1; //打开定时中断 TR0=1; //起用定时器 P3=0X0f; 基于C语言的51单片机可调数字钟的设计 } void main () { cs(); lb=0; while (1) { xs(); if (lbbz==1) lb=~lb; if( tz==0) { j++; while (!tz) ; TR0=0; while (j>0) { xs(); if( tz==0) { ys(5); if( tz==0) j=0; while (!tz); } if( sz1==0) { ys(5); if( sz1==0) { while (!sz1); s++; if (s==24) s=0; } } if( fz1==0) { ys(5); if( fz1==0) { while (!fz1); f++; if (f==60) 基于C语言的51单片机可调数字钟的设计 f=0; } } if( mz1==0) { ys(5); if( mz1==0) { while (!mz1); m++; if (m==60) m=0; } } } if (j==0) TR0=1; } } } 这个程序本是没有用锁存器的,完全可以正常工作,但是当我加上那点锁存器的程序就不行了, ` |
|
相关推荐
15个回答
|
|
file:///C:/Users/Administrator/Desktop/QQ截图20150424225851.png
|
|
|
|
没图,具体目的没说清,程序是根据硬件写的,硬件不一样,程序很可能就不一样
|
|
|
|
|
|
|
|
|
|
|
|
数字时钟是用数码管?锁存74hc573?
|
|
|
|
没有对的。。。。。。。。。。。。。
|
|
|
|
简单时钟,第一个按键选择调整时间,第二三四个就是调整时分秒的 |
|
|
|
|
|
|
|
|
|
|
|
程序看的很纠结。。。能不能再仔细注释下,看的醉了。。。仿真的话确实有时候不正常,以实物为准
|
|
|
|
算了,我干脆就用三极管驱动得了 |
|
|
|
仿真里面出的问题是秒的个位变,十位也跟着变,但是都不是正确的码,类推,秒的十位变分的个位就变,但是当我把按键一直按下,显示就正常了,但是不是延时的问题 |
|
|
|
for (k=1;k<=6;k++)
{ P0=sz[a[k]]; dula=1; dula=0; P2=xw[k]; wela=1; wela=0; ys(3); } for (k=1;k<=6;k++) { P0 = 0xFF; P0=sz[a[k]]; dula=1; dula=0; P2=xw[k]; wela=1; wela=0; ys(3); } 试试! |
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 11:11 , Processed in 1.273231 second(s), Total 103, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号